construct-hub 0.4.11 → 0.4.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"npmjs-package-canary.lambda.d.ts","sourceRoot":"","sources":["../../../../src/package-sources/npmjs/canary/npmjs-package-canary.lambda.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmL3D;AA8ED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAE/C;;OAEG;IACU,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAezD;;OAEG;IACU,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAiCxE;;OAEG;IACU,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAkB3D,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IASjD;;;OAGG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmD9B,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,GAAG;CAGZ;AAED,qBAAa,SAAU,SAAQ,KAAK;aAEhB,cAAc,EAAE,MAAM,GAAG,SAAS;gBAAlC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClD,OAAO,EAAE,MAAM;CAKlB;AAED,qBAAa,YAAa,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM;CAInC;AAED,UAAU,WAAW;IACnB;;OAEG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAEzB;;WAEG;QACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;QAE3B;;WAEG;QACH,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE;QACP,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB;;eAEG;YACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YAEzB;;eAEG;YACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;YAE3B;;eAEG;YACH,WAAW,EAAE,SAAS,CAAC;SACxB,CAAC;KACH,CAAC;CACH"}
1
+ {"version":3,"file":"npmjs-package-canary.lambda.d.ts","sourceRoot":"","sources":["../../../../src/package-sources/npmjs/canary/npmjs-package-canary.lambda.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmL3D;AA8ED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAE/C;;OAEG;IACU,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAezD;;OAEG;IACU,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAiCxE;;OAEG;IACU,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAkB3D,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAWjD;;;OAGG;IACU,oBAAoB,CAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmD9B,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,GAAG;CAGZ;AAED,qBAAa,SAAU,SAAQ,KAAK;aAEhB,cAAc,EAAE,MAAM,GAAG,SAAS;gBAAlC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClD,OAAO,EAAE,MAAM;CAKlB;AAED,qBAAa,YAAa,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM;CAInC;AAED,UAAU,WAAW;IACnB;;OAEG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAEzB;;WAEG;QACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;QAE3B;;WAEG;QACH,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,CAAC;IAEF;;OAEG;IACH,OAAO,EAAE;QACP,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB;;eAEG;YACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YAEzB;;eAEG;YACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;YAE3B;;eAEG;YACH,WAAW,EAAE,SAAS,CAAC;SACxB,CAAC;KACH,CAAC;CACH"}
@@ -23,6 +23,7 @@ const aws = require("../../../backend/shared/aws.lambda-shared");
23
23
  const env_lambda_shared_1 = require("../../../backend/shared/env.lambda-shared");
24
24
  const constants_1 = require("./constants");
25
25
  aws_embedded_metrics_1.Configuration.namespace = constants_1.METRICS_NAMESPACE;
26
+ const REPLICA_REQUEST_TIMEOUT_MS = 30000;
26
27
  /**
27
28
  * This package canary monitors the availability of the versions of a specified
28
29
  * package in the ConstructHub catalog. It publishes metrics that help
@@ -280,7 +281,9 @@ class CanaryStateService {
280
281
  }
281
282
  async isNpmReplicaDown() {
282
283
  try {
283
- await getJSON('https://replicate.npmjs.com/', { timeoutMillis: 5000 });
284
+ await getJSON('https://replicate.npmjs.com/', {
285
+ timeoutMillis: REPLICA_REQUEST_TIMEOUT_MS,
286
+ });
284
287
  return false;
285
288
  }
286
289
  catch (e) {
@@ -297,7 +300,7 @@ class CanaryStateService {
297
300
  const primaryDate = await getModifiedTimestamp(`registry.npmjs.org`);
298
301
  let replicaDate;
299
302
  try {
300
- replicaDate = await getModifiedTimestamp(`replicate.npmjs.com/registry`, 5000);
303
+ replicaDate = await getModifiedTimestamp(`replicate.npmjs.com/registry`, REPLICA_REQUEST_TIMEOUT_MS);
301
304
  }
302
305
  catch (e) {
303
306
  if (e instanceof Error && e.message.includes('HTTP 504')) {
@@ -414,4 +417,4 @@ function gunzip(readable) {
414
417
  readable.pipe(gz, { end: true });
415
418
  return gz;
416
419
  }
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvbnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBRS9CLCtCQUFvQztBQUNwQywrREFBd0U7QUFFeEUseUNBQXlDO0FBRXpDLGlFQUFpRTtBQUNqRSxpRkFBdUU7QUFDdkUsMkNBS3FCO0FBRXJCLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBYzs7SUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEQsTUFBTSxXQUFXLEdBQUcsOEJBQVUsbUNBQTBCLENBQUM7SUFDekQsTUFBTSxXQUFXLEdBQUcsOEJBQVUsK0RBQXdDLENBQUM7SUFDdkUsTUFBTSxvQkFBb0IsR0FBRyw4QkFBVSx1REFBb0MsQ0FBQztJQUU1RSxNQUFNLFlBQVksR0FBRyxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFNUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxNQUFNLEtBQUssU0FBZ0IsQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsbUNBQUk7WUFDbkUsa0ZBQWtGO1lBQ2xGLE1BQU0sRUFBRTtnQkFDTixHQUFHLE1BQU07Z0JBQ1Qs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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGh0dHBzIGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IGNyZWF0ZUd1bnppcCB9IGZyb20gJ3psaWInO1xuaW1wb3J0IHsgbWV0cmljU2NvcGUsIENvbmZpZ3VyYXRpb24sIFVuaXQgfSBmcm9tICdhd3MtZW1iZWRkZWQtbWV0cmljcyc7XG5pbXBvcnQgdHlwZSB7IEFXU0Vycm9yLCBTMyB9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgSlNPTlN0cmVhbSBmcm9tICdKU09OU3RyZWFtJztcbmltcG9ydCB7IENhdGFsb2dNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2JhY2tlbmQnO1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJy4uLy4uLy4uL2JhY2tlbmQvc2hhcmVkL2F3cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IHJlcXVpcmVFbnYgfSBmcm9tICcuLi8uLi8uLi9iYWNrZW5kL3NoYXJlZC9lbnYubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQge1xuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbiAgRW52aXJvbm1lbnQsXG4gIE9iamVjdEtleSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5Db25maWd1cmF0aW9uLm5hbWVzcGFjZSA9IE1FVFJJQ1NfTkFNRVNQQUNFO1xuXG4vKipcbiAqIFRoaXMgcGFja2FnZSBjYW5hcnkgbW9uaXRvcnMgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgdmVyc2lvbnMgb2YgYSBzcGVjaWZpZWRcbiAqIHBhY2thZ2UgaW4gdGhlIENvbnN0cnVjdEh1YiBjYXRhbG9nLiBJdCBwdWJsaXNoZXMgbWV0cmljcyB0aGF0IGhlbHBcbiAqIHVuZGVyc3RhbmQgaG93IG11Y2ggdGltZSBwYXNzZXMgYmV0d2VlbiBhIHBha2NhZ2UgYXBwZWFyaW5nIGluIHRoZSBwdWJsaWNcbiAqIHJlZ2lzdHJ5IGFuZCBpdCdzIGF2YWlsYWJpbGl0eSBpbiB0aGUgQ29uc3RydWN0SHViIGluc3RhbmNlLlxuICpcbiAqIEZyb20gdGhlIG1vbWVudCBhIHBhY2thZ2UgaGFzIGJlZW4gcHVibGlzaGVkLCBhbmQgdW50aWwgaXQgYXBwZWFyZWQgaW5cbiAqIGNhdGFsb2csIHRoZSBgTWV0cmljTmFtZS5EV0VMTF9USU1FYCBtZXRyaWMgaXMgZW1pdHRlZC5cbiAqXG4gKiBPbmNlIHRoZSBwYWNrYWdlIGhhcyBhcHBlYXJlZCBpbiBjYXRhbG9nLCBhbmQgdW50aWwgYSBuZXcgcGFja2FnZSB2ZXJzaW9uIGlzXG4gKiBpZGVudGlmaWVkIGluIG5wbWpzLmNvbSwgdGhlIGBNZXRyaWNOYW1lLlRJTUVfVE9fQ0FUQUxPR2AgbWV0cmljIGlzIGVtaXR0ZWQuXG4gKlxuICogSWYgYSBuZXcgcGFja2FnZSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMgYXBwZWFyZWRcbiAqIGluIGNhdGFsb2csIGJvdGggdmVyc2lvbnMgd2lsbCBiZSB0cmFja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGFuZCB0aGUgbWV0cmljc1xuICogd2lsbCByZWNlaXZlIG9uZSBzYW1wbGUgcGVyIHRyYWNrZWQgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc29sZS5sb2coYEV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50LCBudWxsLCAyKX1gKTtcblxuICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuUEFDS0FHRV9OQU1FKTtcbiAgY29uc3Qgc3RhdGVCdWNrZXQgPSByZXF1aXJlRW52KEVudmlyb25tZW50LlBBQ0tBR0VfQ0FOQVJZX0JVQ0tFVF9OQU1FKTtcbiAgY29uc3QgY29uc3RydWN0SHViRW5kcG9pbnQgPSByZXF1aXJlRW52KEVudmlyb25tZW50LkNPTlNUUlVDVF9IVUJfQkFTRV9VUkwpO1xuXG4gIGNvbnN0IHN0YXRlU2VydmljZSA9IG5ldyBDYW5hcnlTdGF0ZVNlcnZpY2Uoc3RhdGVCdWNrZXQpO1xuICBjb25zdCBjb25zdHJ1Y3RIdWIgPSBuZXcgQ29uc3RydWN0SHViKGNvbnN0cnVjdEh1YkVuZHBvaW50KTtcblxuICB0cnkge1xuICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IHN0YXRlU2VydmljZS5sYXRlc3QocGFja2FnZU5hbWUpO1xuICAgIGNvbnN0IHN0YXRlOiBDYW5hcnlTdGF0ZSA9IChhd2FpdCBzdGF0ZVNlcnZpY2UubG9hZChwYWNrYWdlTmFtZSkpID8/IHtcbiAgICAgIC8vIElmIHdlIGRpZCBub3QgaGF2ZSBhbnkgc3RhdGUsIHdlJ2xsIGJvb3RzdHJhcCB1c2luZyB0aGUgY3VycmVudCBsYXRlc3QgdmVyc2lvbi5cbiAgICAgIGxhdGVzdDoge1xuICAgICAgICAuLi5sYXRlc3QsXG4gICAgICAgIC8vIElmIHRoYXQgbGF0ZXN0IHZlcnNpb24gaXMgQUxSRUFEWSBpbiBjYXRhbG9nLCBwcmV0ZW5kIGl0IHdhc1xuICAgICAgICAvLyBcImluc3RhbnRhbmVvdXNseVwiIHRoZXJlLCBzbyB3ZSBhdm9pZCBwb3NzaWJseSByZXBvcnRpbmcgYW4gYnJlYWNoIG9mXG4gICAgICAgIC8vIFNMQSBhbGFybSwgd2hlbiB3ZSByZWFsbHkganVzdCBvYnNlcnZlZCBwcmVzZW5jZSBvZiB0aGUgcGFja2FnZSBpblxuICAgICAgICAvLyBjYXRhbG9nIHRvbyBsYXRlLCBmb3IgZXhhbXBsZSBvbiBmaXJzdCBkZXBsb3ltZW50IG9mIHRoZSBjYW5hcnkuXG4gICAgICAgIGF2YWlsYWJsZUF0OiAoYXdhaXQgY29uc3RydWN0SHViLmlzSW5DYXRhbG9nKFxuICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgIGxhdGVzdC52ZXJzaW9uXG4gICAgICAgICkpXG4gICAgICAgICAgPyBsYXRlc3QucHVibGlzaGVkQXRcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBwZW5kaW5nOiB7fSxcbiAgICB9O1xuXG4gICAgY29uc29sZS5sb2coYEluaXRpYWwgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUsIG51bGwsIDIpfWApO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgXCJsYXRlc3RcIiBpc24ndCB0aGUgb25lIGZyb20gc3RhdGUsIGl0IG5lZWRzIHVwZGF0aW5nLlxuICAgIHVwZGF0ZUxhdGVzdElmTmVlZGVkKHN0YXRlLCBsYXRlc3QpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcGxpY2FMYWcgPSBhd2FpdCBzdGF0ZVNlcnZpY2UubnBtUmVwbGljYUxhZ1NlY29uZHMocGFja2FnZU5hbWUpO1xuXG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuVFJBQ0tFRF9WRVJTSU9OX0NPVU5ULFxuICAgICAgICAgIE9iamVjdC5rZXlzKHN0YXRlLnBlbmRpbmcpLmxlbmd0aCArIDEsXG4gICAgICAgICAgVW5pdC5Db3VudFxuICAgICAgICApO1xuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICBNZXRyaWNOYW1lLk5QTV9SRVBMSUNBX0RPV04sXG4gICAgICAgICAgKGF3YWl0IHN0YXRlU2VydmljZS5pc05wbVJlcGxpY2FEb3duKCkpID8gMSA6IDAsXG4gICAgICAgICAgVW5pdC5Ob25lXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSWYgd2Ugd2VyZW4ndCBhYmxlIHRvIGNhbGN1bGF0ZSB0aGUgcmVwbGljYSdzIGxhZywgdGhlbiBzaW1wbHlcbiAgICAgICAgLy8gZG9uJ3QgcmVwb3J0IHRoZSBtZXRyaWMuXG4gICAgICAgIGlmIChyZXBsaWNhTGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgIE1ldHJpY05hbWUuTlBNX1JFUExJQ0FfTEFHLFxuICAgICAgICAgICAgcmVwbGljYUxhZyxcbiAgICAgICAgICAgIFVuaXQuU2Vjb25kc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG5cbiAgICAgIGZvciAoY29uc3QgdmVyc2lvblN0YXRlIG9mIFtcbiAgICAgICAgc3RhdGUubGF0ZXN0LFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKHN0YXRlLnBlbmRpbmcgPz8ge30pLFxuICAgICAgXSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgQ2hlY2tpbmcgc3RhdGUgb2YgJHt2ZXJzaW9uU3RhdGUudmVyc2lvbn0sIGN1cnJlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB2ZXJzaW9uU3RhdGUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICl9YFxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQ2xlYXIgb3V0IGRlZmF1bHQgZGltZW5zaW9ucyBhcyB3ZSBkb24ndCBuZWVkIHRob3NlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWVtYmVkZGVkLW1ldHJpY3Mtbm9kZS9pc3N1ZXMvNzMuXG4gICAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnUGFja2FnZU5hbWUnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnUGFja2FnZVZlcnNpb24nLCB2ZXJzaW9uU3RhdGUudmVyc2lvbik7XG4gICAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICdJc0xhdGVzdCcsXG4gICAgICAgICAgICBzdGF0ZS5sYXRlc3QudmVyc2lvbiA9PT0gdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCF2ZXJzaW9uU3RhdGUuYXZhaWxhYmxlQXQpIHtcbiAgICAgICAgICAgIGlmICh2ZXJzaW9uU3RhdGUudmVyc2lvbiA9PT0gc3RhdGUubGF0ZXN0LnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbnN0cnVjdEh1Yi5pc0luQ2F0YWxvZyhcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE5vbi1jdXJyZW50IHZlcnNpb25zIHdpbGwgcHJvYmFibHkgbmV2ZXIgbWFrZSBpdCB0byBjYXRhbG9nICh0aGV5J3JlIG9sZGVyIHRoYW4gdGhlXG4gICAgICAgICAgICAgIC8vIGN1cnJlbnQgdmVyc2lvbiksIHNvIGluc3RlYWQsIHdlIGNoZWNrIHdoZXRoZXIgdGhleSBoYXZlIFR5cGVTY3JpcHQgZG9jdW1lbnRhdGlvbi5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGF3YWl0IGNvbnN0cnVjdEh1Yi5oYXNUeXBlU2NyaXB0RG9jdW1lbnRhdGlvbihcbiAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnZlcnNpb25cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0KSB7XG4gICAgICAgICAgICAvLyBUZWxscyB1cyBob3cgbG9uZyBpdCdzIHRha2VuIGZvciB0aGUgcGFja2FnZSB0byBtYWtlIGl0IHRvIGNhdGFsb2cgYWZ0ZXIgaXQgd2FzIHB1Ymxpc2hlZC5cbiAgICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgICBNZXRyaWNOYW1lLlRJTUVfVE9fQ0FUQUxPRyxcbiAgICAgICAgICAgICAgKHZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdC5nZXRUaW1lKCkgLVxuICAgICAgICAgICAgICAgIHZlcnNpb25TdGF0ZS5wdWJsaXNoZWRBdC5nZXRUaW1lKCkpIC9cbiAgICAgICAgICAgICAgICAxXzAwMCxcbiAgICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBTdG9wIHRyYWNraW5nIHRoYXQgdmVyc2lvbiwgYXMgaXQncyBub3cgYXZhaWxhYmxlLlxuICAgICAgICAgICAgaWYgKHZlcnNpb25TdGF0ZS52ZXJzaW9uIGluIHN0YXRlLnBlbmRpbmcpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0YXRlLnBlbmRpbmdbdmVyc2lvblN0YXRlLnZlcnNpb25dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUZWxscyB1cyBob3cgbG9uZyB3ZSd2ZSBiZWVuIHdhaXRpbmcgZm9yIHRoaXMgdmVyc2lvbiB0byBzaG93IHVwLCBzbyBmYXIuXG4gICAgICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhcbiAgICAgICAgICAgICAgTWV0cmljTmFtZS5EV0VMTF9USU1FLFxuICAgICAgICAgICAgICAoRGF0ZS5ub3coKSAtIHZlcnNpb25TdGF0ZS5wdWJsaXNoZWRBdC5nZXRUaW1lKCkpIC8gMV8wMDAsXG4gICAgICAgICAgICAgIFVuaXQuU2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBOb3RpbmcgdGhhdCB3ZSBkaWQgbm90IGVub2N1bnRlciBhIGdhdGV3YXkgZXJyb3IsIHNvIHRoZSBtZXRyaWMgaGFzIGEgbmljZSBhbmQgY2xlYW4gMFxuICAgICAgICAgIC8vIHZhbHVlIGluc3RlYWQgb2YgaGF2aW5nIHRvIHRyZWF0IG1pc3NpbmcgZGF0YSBhcyBub3QgYnJlYWNoaW5nLlxuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKE1ldHJpY05hbWUuSFRUUF9HQVRFV0FZX0VSUk9SUywgMCwgVW5pdC5Db3VudCk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHN0YXRlU2VydmljZS5zYXZlKHBhY2thZ2VOYW1lLCBzdGF0ZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChcbiAgICAgIGVycm9yIGluc3RhbmNlb2YgSFRUUEVycm9yICYmXG4gICAgICAoZXJyb3IuaHR0cFN0YXR1c0NvZGUgPT09IDUwMiB8fCBlcnJvci5odHRwU3RhdHVzQ29kZSA9PT0gNTA0KVxuICAgICkge1xuICAgICAgLy8gVGhpcyBpcyBhbiBIVFRQIDVYWCBmcm9tIGEgZGVwZW5kZW5jeSwgc28gd2UnbGwgbG9nIHRoaXMgb3V0LCBhbmQgcHJldGVuZCBpdCBkaWQgbm90IGZhaWwuLi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdIVFRQIDVYWCBmcm9tIGEgZGVwZW5kZW5jeSwgYXNzdW1pbmcgdGhpcyBpcyB0cmFuc2llbnQ6JyxcbiAgICAgICAgZXJyb3JcbiAgICAgICk7XG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yQ29kZScsIGVycm9yLmh0dHBTdGF0dXNDb2RlKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JNZXNzYWdlJywgZXJyb3IubWVzc2FnZSk7XG5cbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIH0pKCk7XG4gICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFJlcXVlc3QgdGltZW91dCBmcm9tIGEgZGVwZW5kZW5jeSwgYXNzdW1pbmcgdGhpcyBpcyB0cmFuc2llbnQ6YCxcbiAgICAgICAgZXJyb3JcbiAgICAgICk7XG4gICAgICBhd2FpdCBtZXRyaWNTY29wZSgobWV0cmljcykgPT4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgbWV0cmljcy5zZXREaW1lbnNpb25zKCk7XG4gICAgICAgIG1ldHJpY3Muc2V0UHJvcGVydHkoJ0Vycm9yQ29kZScsICdSRVFVRVNUX1RJTUVPVVQnKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JNZXNzYWdlJywgZXJyb3IubWVzc2FnZSk7XG5cbiAgICAgICAgLy8gVGhpcyBpcyBzbGlndGhseSBhYnVzaXZlLCBidXQuLi4gSFRUUCA1MDQgKEdhdGV3YXkgVGltZW91dCkgZnJvbSB0aGUgbnBtIHJlcGxpY2EgYXJlXG4gICAgICAgIC8vIHJldHVybmVkIGFmdGVyIG1vcmUgdGhhbiAzMCBzZWNvbmRzIGhhcyBwYXNzZWQgYW5kIHRoaXMgaXMgd2F5IHRvbyBsb25nLi4uIHNvIHdlXG4gICAgICAgIC8vIGFwcHJveGltYXRlIGEgYml0IGhlcmUuLi5cbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAxLCBVbml0LkNvdW50KTtcbiAgICAgIH0pKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgbm90IGFuIEhUVFAgNVhYIGZyb20gYSBkZXBlbmRlbmN5LCBzbyB3ZSdsbCBqdXN0IHJldGhyb3cgYW5kIGZhaWwuLi5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBDb25zdHJ1Y3RIdWIge1xuICAjY2F0YWxvZz86IENhdGFsb2dNb2RlbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZykge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcGFja2FnZSB2ZXJzaW9uIGlzIHByZXNlbnQgaW4gdGhlIGNhdGFsb2dcbiAgICogb2JqZWN0IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHBhY2thZ2VOYW1lICAgIHRoZSBuYW1lIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqIEBwYXJhbSBwYWNrYWdlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgSUlGIHRoZSBleGFjdCBwYWNrYWdlIHZlcnNpb24gaXMgZm91bmQgaW4gdGhlIGNhdGFsb2cuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNJbkNhdGFsb2coXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBwYWNrYWdlVmVyc2lvbjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhdGFsb2cgPSBhd2FpdCB0aGlzLmdldENhdGFsb2coKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGNhdGFsb2cucGFja2FnZXMuZmlsdGVyKFxuICAgICAgKHA6IGFueSkgPT4gcC5uYW1lID09PSBwYWNrYWdlTmFtZSAmJiBwLnZlcnNpb24gPT09IHBhY2thZ2VWZXJzaW9uXG4gICAgKTtcblxuICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGb3VuZCBtdWx0aXBsZSBlbnRyaWVzIGZvciAke3BhY2thZ2VOYW1lfUAke3BhY2thZ2VWZXJzaW9ufSBpbiBjYXRhbG9nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWQubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIFR5cGVTY3JpcHQgZG9jdW1lbnRhdGlvbiBleGlzdHMgaW4gQ29uc3RydWN0SHViIGZvciB0aGVcbiAgICogc3BlY2lmaWVkIHBhY2thZ2UgdmVyc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHBhY2thZ2VOYW1lICAgIHRoZSBuYW1lIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqIEBwYXJhbSBwYWNrYWdlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgY2hlY2tlZCBwYWNrYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgSUlGIHRoZSBgZG9jcy10eXBlc2NyaXB0Lm1kYCBkb2N1bWVudCBleGlzdHMgZm9yIHRoZVxuICAgKiAgICAgICAgICBzcGVjaWZpZWQgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNUeXBlU2NyaXB0RG9jdW1lbnRhdGlvbihcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vZGF0YS8ke3BhY2thZ2VOYW1lfS92JHtwYWNrYWdlVmVyc2lvbn0vZG9jcy10eXBlc2NyaXB0Lm1kYDtcbiAgICAgIGh0dHBzXG4gICAgICAgIC5yZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdIRUFEJyB9LCAocmVzKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBIVFRQIDIwMCB3aXRoIHRleHQvaHRtbCBpZiBpdCdzIGEgNDA0LCBkdWUgdG8gaG93XG4gICAgICAgICAgICAvLyB3ZSBjb25maWd1cmVkIENsb3VkRnJvbnQgYmVoYXZpb3JzLlxuICAgICAgICAgICAgcmV0dXJuIG9rKFxuICAgICAgICAgICAgICAhIXJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXT8uc3RhcnRzV2l0aCgndGV4dC9tYXJrZG93bicpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgSFRUUEVycm9yKFxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBgSEVBRCAke3VybH0gLS0gSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAoJHtyZXMuc3RhdHVzTWVzc2FnZX0pYFxuICAgICAgICAgICk7XG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyKTtcbiAgICAgICAgICBrbyhlcnIpO1xuICAgICAgICB9KVxuICAgICAgICAuZW5kKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhdGFsb2coKTogUHJvbWlzZTxDYXRhbG9nTW9kZWw+IHtcbiAgICBpZiAodGhpcy4jY2F0YWxvZykge1xuICAgICAgcmV0dXJuIHRoaXMuI2NhdGFsb2c7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy4jY2F0YWxvZyA9IGF3YWl0IGdldEpTT04oYCR7dGhpcy5iYXNlVXJsfS9jYXRhbG9nLmpzb25gKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhbmFyeVN0YXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nKSB7fVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBzdGF0ZSB0byB0aGUgYnVja2V0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmUocGFja2FnZU5hbWU6IHN0cmluZywgc3RhdGU6IENhbmFyeVN0YXRlKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cmwocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc29sZS5sb2coYFNhdmluZyB0byAke3VybH06ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUsIG51bGwsIDIpfWApO1xuICAgIGF3YWl0IGF3c1xuICAgICAgLnMzKClcbiAgICAgIC5wdXRPYmplY3Qoe1xuICAgICAgICBCdWNrZXQ6IHRoaXMuYnVja2V0TmFtZSxcbiAgICAgICAgS2V5OiB0aGlzLmtleShwYWNrYWdlTmFtZSksXG4gICAgICAgIEJvZHk6IEpTT04uc3RyaW5naWZ5KHN0YXRlLCBudWxsLCAyKSxcbiAgICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIHN0YXRlIGZpbGUgZm9yIHRoaXMgcGFja2FnZSBmcm9tIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZChwYWNrYWdlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYW5hcnlTdGF0ZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIHN0YXRlIGZvciBwYWNrYWdlICcke3BhY2thZ2VOYW1lfSdgKTtcblxuICAgIGNvbnN0IG9iamVjdEtleSA9IHRoaXMua2V5KHBhY2thZ2VOYW1lKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybChwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmc6ICR7dXJsfWApO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhd3NcbiAgICAgIC5zMygpXG4gICAgICAuZ2V0T2JqZWN0KHsgQnVja2V0OiB0aGlzLmJ1Y2tldE5hbWUsIEtleTogb2JqZWN0S2V5IH0pXG4gICAgICAucHJvbWlzZSgpXG4gICAgICAuY2F0Y2goKGVycjogQVdTRXJyb3IpID0+XG4gICAgICAgIGVyci5jb2RlICE9PSAnTm9TdWNoS2V5J1xuICAgICAgICAgID8gUHJvbWlzZS5yZWplY3QoZXJyKVxuICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgLyogbm8gZGF0YSAqL1xuICAgICAgICAgICAgfSBhcyBTMy5HZXRPYmplY3RPdXRwdXQpXG4gICAgICApO1xuXG4gICAgaWYgKCFkYXRhPy5Cb2R5KSB7XG4gICAgICBjb25zb2xlLmxvZyhgTm90IGZvdW5kOiAke3VybH1gKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYExvYWRlZDogJHt1cmx9YCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YS5Cb2R5LnRvU3RyaW5nKCd1dGYtOCcpLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJ3B1Ymxpc2hlZEF0JyB8fCBrZXkgPT09ICdhdmFpbGFibGVBdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGF0ZSBmcm9tIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsYXRlc3QocGFja2FnZU5hbWU6IHN0cmluZyk6IFByb21pc2U8Q2FuYXJ5U3RhdGVbJ2xhdGVzdCddPiB7XG4gICAgY29uc29sZS5sb2coYEZldGNoaW5nIGxhdGVzdCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gTlBNOiAke3BhY2thZ2VOYW1lfWApO1xuICAgIGNvbnN0IHZlcnNpb24gPSBhd2FpdCBnZXRKU09OKFxuICAgICAgYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhY2thZ2VOYW1lKX0vbGF0ZXN0YCxcbiAgICAgIHsganNvblBhdGg6IFsndmVyc2lvbiddIH1cbiAgICApO1xuICAgIGNvbnN0IHB1Ymxpc2hlZEF0ID0gYXdhaXQgZ2V0SlNPTihcbiAgICAgIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke2VuY29kZVVSSUNvbXBvbmVudChwYWNrYWdlTmFtZSl9YCxcbiAgICAgIHsganNvblBhdGg6IFsndGltZScsIHZlcnNpb25dIH1cbiAgICApO1xuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgUGFja2FnZTogJHtwYWNrYWdlTmFtZX0gfCBWZXJzaW9uIDogJHt2ZXJzaW9ufSB8IFB1Ymxpc2hlZCBBdDogJHtwdWJsaXNoZWRBdH1gXG4gICAgKTtcblxuICAgIHJldHVybiB7IHZlcnNpb24sIHB1Ymxpc2hlZEF0OiBuZXcgRGF0ZShwdWJsaXNoZWRBdCkgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc05wbVJlcGxpY2FEb3duKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBnZXRKU09OKCdodHRwczovL3JlcGxpY2F0ZS5ucG1qcy5jb20vJywgeyB0aW1lb3V0TWlsbGlzOiA1XzAwMCB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXN0aW1hdGUgaG93IGZhciBiZWhpbmQgdGhlIE5QTSByZXBsaWNhIGlzIGNvbXBhcmVkIHRvIHRoZSBsaXZlIE5QTVxuICAgKiByZWdpc3RyeS4gSWYgdGhlIE5QTSByZXBsaWNhIGlzIGRvd24sIHJldHVybiB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbnBtUmVwbGljYUxhZ1NlY29uZHMoXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGVuY29kZWRQYWNrYWdlTmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgTWVhc3VyaW5nIE5QTSByZXBsaWNhIGxhZyB1c2luZyAke3BhY2thZ2VOYW1lfS4uLmApO1xuXG4gICAgY29uc3QgcHJpbWFyeURhdGUgPSBhd2FpdCBnZXRNb2RpZmllZFRpbWVzdGFtcChgcmVnaXN0cnkubnBtanMub3JnYCk7XG5cbiAgICBsZXQgcmVwbGljYURhdGU7XG4gICAgdHJ5IHtcbiAgICAgIHJlcGxpY2FEYXRlID0gYXdhaXQgZ2V0TW9kaWZpZWRUaW1lc3RhbXAoXG4gICAgICAgIGByZXBsaWNhdGUubnBtanMuY29tL3JlZ2lzdHJ5YCxcbiAgICAgICAgNV8wMDBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ0hUVFAgNTA0JykpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYFdhcm5pbmc6IGVycm9yIGZldGNoaW5nIHJlcGxpY2F0ZS5ucG1qcy5jb206ICR7ZS50b1N0cmluZygpfWBcbiAgICAgICAgKTtcbiAgICAgICAgLy8gVGhlcmUgaXMgbm8gdmFsdWUgdG8gcmVwb3J0XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlbHRhTXMgPSBwcmltYXJ5RGF0ZS5nZXRUaW1lKCkgLSByZXBsaWNhRGF0ZS5nZXRUaW1lKCk7XG5cbiAgICBjb25zb2xlLmxvZyhgVGltZXN0YW1wIG9uIHByaW1hcnk6ICR7cHJpbWFyeURhdGUudG9JU09TdHJpbmcoKX1gKTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBUaW1lc3RhbXAgb24gcmVwbGljYTogJHtyZXBsaWNhRGF0ZS50b0lTT1N0cmluZygpfSAoJHtcbiAgICAgICAgZGVsdGFNcyAvIDNfNjAwXzAwMFxuICAgICAgfSBob3VycyBiZWhpbmQpYFxuICAgICk7XG5cbiAgICAvLyBXZSByZXR1cm4gaW4gc2Vjb25kcy4uLiBUaGUgbWlsbGlzZWNvbmQgcmVzb2x1dGlvbiBpcyBzaWxseSBoZXJlIHNpbmNlIHRoZSBwcm9iZSBwYWNrYWdlIGlzXG4gICAgLy8gb25seSBwdWJsaXNoZWQgYXBwcm94aW1hdGVseSBvbmNlIGV2ZXJ5IHRocmVlIGhvdXJzLiBXZSB1c2Ugc2Vjb25kcyBvbmx5IGJlY2F1c2UgdGhpcyBpcyB0aGVcbiAgICAvLyBsYXJnZXN0IGF2YWlsYWJsZSB0aW1lIHVuaXQgaW4gQ2xvdWRXYXRjaC5cbiAgICByZXR1cm4gZGVsdGFNcyAvIDFfMDAwO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0TW9kaWZpZWRUaW1lc3RhbXAoXG4gICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyXG4gICAgKSB7XG4gICAgICBjb25zdCBpc29EYXRlID0gYXdhaXQgZ2V0SlNPTihcbiAgICAgICAgYGh0dHBzOi8vJHtiYXNlVXJsfS8ke2VuY29kZWRQYWNrYWdlTmFtZX1gLFxuICAgICAgICB7IGpzb25QYXRoOiBbJ3RpbWUnLCAnbW9kaWZpZWQnXSwgdGltZW91dE1pbGxpcyB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGlzb0RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUga2V5KHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtPYmplY3RLZXkuU1RBVEVfUFJFRklYfSR7cGFja2FnZU5hbWV9JHtPYmplY3RLZXkuU1RBVEVfU1VGRklYfWA7XG4gIH1cblxuICBwcml2YXRlIHVybChwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGBzMzovLyR7dGhpcy5idWNrZXROYW1lfS8ke3RoaXMua2V5KHBhY2thZ2VOYW1lKX1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIVFRQRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cFN0YXR1c0NvZGU6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgSFRUUEVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgVGltZW91dEVycm9yKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ2FuYXJ5U3RhdGUge1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBwYWNrYWdlIHZlcnNpb24sIGFzIG9mIHRoZSBsYXN0IGV4ZWN1dGlvbiBvZiB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgbGF0ZXN0OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gd2UgYXJlIHRyYWNraW5nLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBwdWJsaXNoIGRhdGUgb2YgdGhlIHZlcnNpb24uXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHVibGlzaGVkQXQ6IERhdGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0ZSBhdCB3aGljaCB0aGUgdmVyc2lvbiBpcyBhdmFpbGFibGUgb24gdGhlIGh1Yi5cbiAgICAgKi9cbiAgICBhdmFpbGFibGVBdD86IERhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEVhY2ggZXhpc3RpbmcsIGJ1dCBub3QteWV0LWZvdW5kIHZlcnNpb25zIHRoYXQgYXJlIHN0aWxsIHRyYWNrZWQuXG4gICAqL1xuICBwZW5kaW5nOiB7XG4gICAgW3ZlcnNpb246IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIHZlcnNpb24gd2UgYXJlIHRyYWNraW5nLlxuICAgICAgICovXG4gICAgICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIHB1Ymxpc2ggZGF0ZSBvZiB0aGUgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcmVhZG9ubHkgcHVibGlzaGVkQXQ6IERhdGU7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlc2UgcGVuZGluZyBwYWNrYWdlcyBhcmUgTkVWRVIgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgKi9cbiAgICAgIGF2YWlsYWJsZUF0OiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIHJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIFVSTCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYWZ0ZXIgaGF2aW5nXG4gKiBwYXJzZWQgaXQgZnJvbSBKU09OLlxuICpcbiAqIEBwYXJhbSB1cmwgdGhlIFVSTCB0byBnZXQuXG4gKiBAcGFyYW0ganNvblBhdGggYSBKU09OIHBhdGggdG8gZXh0cmFjdCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gdGltZW91dE1pbGxpcyB0aGUgc29ja2V0IHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZnVuY3Rpb24gZ2V0SlNPTihcbiAgdXJsOiBzdHJpbmcsXG4gIHtcbiAgICBqc29uUGF0aCxcbiAgICB0aW1lb3V0TWlsbGlzLFxuICB9OiB7IGpzb25QYXRoPzogc3RyaW5nW107IHRpbWVvdXRNaWxsaXM/OiBudW1iZXIgfSA9IHt9XG4pOiBQcm9taXNlPGFueT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGh0dHBzXG4gICAgICAuZ2V0KFxuICAgICAgICB1cmwsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnaWRlbnRpdHknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZW91dDogdGltZW91dE1pbGxpcyxcbiAgICAgICAgfSxcbiAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBIVFRQRXJyb3IoXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgICBgR0VUICR7dXJsfSAtIEhUVFAgJHtyZXMuc3RhdHVzQ29kZX0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4ga28oZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgICAgICAgIHJlcy5vbmNlKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICAgICAgLy8gVXBvbiBzb2NrZXQgdGltZW91dCwgZmFpbCB3aXRoIGEgVGltZW91dEVycm9yXG4gICAgICAgICAgICBrbyhcbiAgICAgICAgICAgICAgbmV3IFRpbWVvdXRFcnJvcihcbiAgICAgICAgICAgICAgICBgUmVxdWVzdCB0aW1lZCBvdXQgKGFmdGVyICR7XG4gICAgICAgICAgICAgICAgICB0aW1lb3V0TWlsbGlzID8/ICdOL0EnXG4gICAgICAgICAgICAgICAgfSBtcyk6IEdFVCAke3VybH1gXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBqc29uID0gSlNPTlN0cmVhbS5wYXJzZShqc29uUGF0aCk7XG4gICAgICAgICAganNvbi5vbmNlKCdkYXRhJywgb2spO1xuICAgICAgICAgIGpzb24ub25jZSgnZXJyb3InLCBrbyk7XG5cbiAgICAgICAgICBjb25zdCBwbGFpblBheWxvYWQgPVxuICAgICAgICAgICAgcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSA9PT0gJ2d6aXAnID8gZ3VuemlwKHJlcykgOiByZXM7XG4gICAgICAgICAgcGxhaW5QYXlsb2FkLnBpcGUoanNvbiwgeyBlbmQ6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5vbmNlKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgICAvLyBVcG9uIHNvY2tldCB0aW1lb3V0LCBmYWlsIHdpdGggYSBUaW1lb3V0RXJyb3JcbiAgICAgICAga28oXG4gICAgICAgICAgbmV3IFRpbWVvdXRFcnJvcihcbiAgICAgICAgICAgIGBSZXF1ZXN0IHRpbWVkIG91dCAoYWZ0ZXIgJHt0aW1lb3V0TWlsbGlzID8/ICdOL0EnfSBtcyk6IEdFVCAke3VybH1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIGBsYXRlc3RgIHByb3BlcnR5IG9mIGBzdGF0ZWAgdGkgdGhlIHByb3ZpZGVkIGBsYXRlc3RgIHZhbHVlLFxuICogdW5sZXNzIHRoaXMgaXMgYWxyZWFkeSB0aGUgY3VycmVudCBsYXRlc3QuXG4gKlxuICogSWYgdGhlIHByZXZpb3VzIGxhdGVzdCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgdGhlIGBhdmFpbGFibGVBdGAgcHJvcGVydHksIGFkZHNcbiAqIHRoYXQgdG8gdGhlIGBwZW5kaW5nYCBzZXQuXG4gKlxuICogQHBhcmFtIHN0YXRlICB0aGUgc3RhdGUgdG8gYmUgdXBkYXRlZC5cbiAqIEBwYXJhbSBsYXRlc3QgdGhlIGN1cnJlbnQgXCJsYXRlc3RcIiB2ZXJzaW9uIG9mIHRoZSB0cmFja2VkIHBhY2thZ2UuXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZUxhdGVzdElmTmVlZGVkKFxuICBzdGF0ZTogQ2FuYXJ5U3RhdGUsXG4gIGxhdGVzdDogQ2FuYXJ5U3RhdGVbJ2xhdGVzdCddXG4pOiB2b2lkIHtcbiAgaWYgKHN0YXRlLmxhdGVzdC52ZXJzaW9uID09PSBsYXRlc3QudmVyc2lvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHRoZSBjdXJyZW50IFwibGF0ZXN0XCIgaXNuJ3QgYXZhaWxhYmxlIHlldCwgYWRkIGl0IHRvIHRoZSBgcGVuZGluZ2AgdmVyc2lvbnMuXG4gIGlmIChzdGF0ZS5sYXRlc3QuYXZhaWxhYmxlQXQgPT0gbnVsbCkge1xuICAgIC8vIFRoZSBUeXBlU2NyaXB0IHZlcnNpb24gb2YganNpaSBkb2Vzbid0IGRvIGNvbnRyb2wgZmxvdyBhbmFseXNpcyB3ZWxsIGVub3VnaCBoZXJlIHRvXG4gICAgLy8gZGV0ZXJtaW5lIHRoYXQgdGhlYGlmYCBicmFuY2ggZ3VhcmFudGVlcyBgYXZhaWxhYmxlQXRgIGlzIHVuZGVmaW5lZCBoZXJlLlxuICAgIHN0YXRlLnBlbmRpbmdbc3RhdGUubGF0ZXN0LnZlcnNpb25dID0ge1xuICAgICAgLi4uc3RhdGUubGF0ZXN0LFxuICAgICAgYXZhaWxhYmxlQXQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGUubGF0ZXN0ID0gbGF0ZXN0O1xufVxuXG5mdW5jdGlvbiBndW56aXAocmVhZGFibGU6IFJlYWRhYmxlKTogUmVhZGFibGUge1xuICBjb25zdCBneiA9IGNyZWF0ZUd1bnppcCgpO1xuICByZWFkYWJsZS5waXBlKGd6LCB7IGVuZDogdHJ1ZSB9KTtcbiAgcmV0dXJuIGd6O1xufVxuIl19
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jYW5hcnkvbnBtanMtcGFja2FnZS1jYW5hcnkubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBRS9CLCtCQUFvQztBQUNwQywrREFBd0U7QUFFeEUseUNBQXlDO0FBRXpDLGlFQUFpRTtBQUNqRSxpRkFBdUU7QUFDdkUsMkNBS3FCO0FBRXJCLG9DQUFhLENBQUMsU0FBUyxHQUFHLDZCQUFpQixDQUFDO0FBRTVDLE1BQU0sMEJBQTBCLEdBQUcsS0FBTSxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNJLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBYzs7SUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFeEQsTUFBTSxXQUFXLEdBQUcsOEJBQVUsbUNBQTBCLENBQUM7SUFDekQsTUFBTSxXQUFXLEdBQUcsOEJBQVUsK0RBQXdDLENBQUM7SUFDdkUsTUFBTSxvQkFBb0IsR0FBRyw4QkFBVSx1REFBb0MsQ0FBQztJQUU1RSxNQUFNLFlBQVksR0FBRyxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFNUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxNQUFNLEtBQUssU0FBZ0IsQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsbUNBQUk7WUFDbkUsa0ZBQWtGO1lBQ2xG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LENBQUMsQ0FBQztJQUNqQyxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBjcmVhdGVHdW56aXAgfSBmcm9tICd6bGliJztcbmltcG9ydCB7IG1ldHJpY1Njb3BlLCBDb25maWd1cmF0aW9uLCBVbml0IH0gZnJvbSAnYXdzLWVtYmVkZGVkLW1ldHJpY3MnO1xuaW1wb3J0IHR5cGUgeyBBV1NFcnJvciwgUzMgfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIEpTT05TdHJlYW0gZnJvbSAnSlNPTlN0cmVhbSc7XG5pbXBvcnQgeyBDYXRhbG9nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9iYWNrZW5kJztcbmltcG9ydCAqIGFzIGF3cyBmcm9tICcuLi8uLi8uLi9iYWNrZW5kL3NoYXJlZC9hd3MubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyByZXF1aXJlRW52IH0gZnJvbSAnLi4vLi4vLi4vYmFja2VuZC9zaGFyZWQvZW52LmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHtcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIEVudmlyb25tZW50LFxuICBPYmplY3RLZXksXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuQ29uZmlndXJhdGlvbi5uYW1lc3BhY2UgPSBNRVRSSUNTX05BTUVTUEFDRTtcblxuY29uc3QgUkVQTElDQV9SRVFVRVNUX1RJTUVPVVRfTVMgPSAzMF8wMDA7XG5cbi8qKlxuICogVGhpcyBwYWNrYWdlIGNhbmFyeSBtb25pdG9ycyB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSB2ZXJzaW9ucyBvZiBhIHNwZWNpZmllZFxuICogcGFja2FnZSBpbiB0aGUgQ29uc3RydWN0SHViIGNhdGFsb2cuIEl0IHB1Ymxpc2hlcyBtZXRyaWNzIHRoYXQgaGVscFxuICogdW5kZXJzdGFuZCBob3cgbXVjaCB0aW1lIHBhc3NlcyBiZXR3ZWVuIGEgcGFrY2FnZSBhcHBlYXJpbmcgaW4gdGhlIHB1YmxpY1xuICogcmVnaXN0cnkgYW5kIGl0J3MgYXZhaWxhYmlsaXR5IGluIHRoZSBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuXG4gKlxuICogRnJvbSB0aGUgbW9tZW50IGEgcGFja2FnZSBoYXMgYmVlbiBwdWJsaXNoZWQsIGFuZCB1bnRpbCBpdCBhcHBlYXJlZCBpblxuICogY2F0YWxvZywgdGhlIGBNZXRyaWNOYW1lLkRXRUxMX1RJTUVgIG1ldHJpYyBpcyBlbWl0dGVkLlxuICpcbiAqIE9uY2UgdGhlIHBhY2thZ2UgaGFzIGFwcGVhcmVkIGluIGNhdGFsb2csIGFuZCB1bnRpbCBhIG5ldyBwYWNrYWdlIHZlcnNpb24gaXNcbiAqIGlkZW50aWZpZWQgaW4gbnBtanMuY29tLCB0aGUgYE1ldHJpY05hbWUuVElNRV9UT19DQVRBTE9HYCBtZXRyaWMgaXMgZW1pdHRlZC5cbiAqXG4gKiBJZiBhIG5ldyBwYWNrYWdlIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSB0aGUgcHJldmlvdXMgb25lIGhhcyBhcHBlYXJlZFxuICogaW4gY2F0YWxvZywgYm90aCB2ZXJzaW9ucyB3aWxsIGJlIHRyYWNrZWQgYXQgdGhlIHNhbWUgdGltZSwgYW5kIHRoZSBtZXRyaWNzXG4gKiB3aWxsIHJlY2VpdmUgb25lIHNhbXBsZSBwZXIgdHJhY2tlZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZyhgRXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpfWApO1xuXG4gIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxdWlyZUVudihFbnZpcm9ubWVudC5QQUNLQUdFX05BTUUpO1xuICBjb25zdCBzdGF0ZUJ1Y2tldCA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuUEFDS0FHRV9DQU5BUllfQlVDS0VUX05BTUUpO1xuICBjb25zdCBjb25zdHJ1Y3RIdWJFbmRwb2ludCA9IHJlcXVpcmVFbnYoRW52aXJvbm1lbnQuQ09OU1RSVUNUX0hVQl9CQVNFX1VSTCk7XG5cbiAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gbmV3IENhbmFyeVN0YXRlU2VydmljZShzdGF0ZUJ1Y2tldCk7XG4gIGNvbnN0IGNvbnN0cnVjdEh1YiA9IG5ldyBDb25zdHJ1Y3RIdWIoY29uc3RydWN0SHViRW5kcG9pbnQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbGF0ZXN0ID0gYXdhaXQgc3RhdGVTZXJ2aWNlLmxhdGVzdChwYWNrYWdlTmFtZSk7XG4gICAgY29uc3Qgc3RhdGU6IENhbmFyeVN0YXRlID0gKGF3YWl0IHN0YXRlU2VydmljZS5sb2FkKHBhY2thZ2VOYW1lKSkgPz8ge1xuICAgICAgLy8gSWYgd2UgZGlkIG5vdCBoYXZlIGFueSBzdGF0ZSwgd2UnbGwgYm9vdHN0cmFwIHVzaW5nIHRoZSBjdXJyZW50IGxhdGVzdCB2ZXJzaW9uLlxuICAgICAgbGF0ZXN0OiB7XG4gICAgICAgIC4uLmxhdGVzdCxcbiAgICAgICAgLy8gSWYgdGhhdCBsYXRlc3QgdmVyc2lvbiBpcyBBTFJFQURZIGluIGNhdGFsb2csIHByZXRlbmQgaXQgd2FzXG4gICAgICAgIC8vIFwiaW5zdGFudGFuZW91c2x5XCIgdGhlcmUsIHNvIHdlIGF2b2lkIHBvc3NpYmx5IHJlcG9ydGluZyBhbiBicmVhY2ggb2ZcbiAgICAgICAgLy8gU0xBIGFsYXJtLCB3aGVuIHdlIHJlYWxseSBqdXN0IG9ic2VydmVkIHByZXNlbmNlIG9mIHRoZSBwYWNrYWdlIGluXG4gICAgICAgIC8vIGNhdGFsb2cgdG9vIGxhdGUsIGZvciBleGFtcGxlIG9uIGZpcnN0IGRlcGxveW1lbnQgb2YgdGhlIGNhbmFyeS5cbiAgICAgICAgYXZhaWxhYmxlQXQ6IChhd2FpdCBjb25zdHJ1Y3RIdWIuaXNJbkNhdGFsb2coXG4gICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgbGF0ZXN0LnZlcnNpb25cbiAgICAgICAgKSlcbiAgICAgICAgICA/IGxhdGVzdC5wdWJsaXNoZWRBdFxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIHBlbmRpbmc6IHt9LFxuICAgIH07XG5cbiAgICBjb25zb2xlLmxvZyhgSW5pdGlhbCBzdGF0ZTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZSwgbnVsbCwgMil9YCk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBcImxhdGVzdFwiIGlzbid0IHRoZSBvbmUgZnJvbSBzdGF0ZSwgaXQgbmVlZHMgdXBkYXRpbmcuXG4gICAgdXBkYXRlTGF0ZXN0SWZOZWVkZWQoc3RhdGUsIGxhdGVzdCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVwbGljYUxhZyA9IGF3YWl0IHN0YXRlU2VydmljZS5ucG1SZXBsaWNhTGFnU2Vjb25kcyhwYWNrYWdlTmFtZSk7XG5cbiAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIENsZWFyIG91dCBkZWZhdWx0IGRpbWVuc2lvbnMgYXMgd2UgZG9uJ3QgbmVlZCB0aG9zZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1lbWJlZGRlZC1tZXRyaWNzLW5vZGUvaXNzdWVzLzczLlxuICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgTWV0cmljTmFtZS5UUkFDS0VEX1ZFUlNJT05fQ09VTlQsXG4gICAgICAgICAgT2JqZWN0LmtleXMoc3RhdGUucGVuZGluZykubGVuZ3RoICsgMSxcbiAgICAgICAgICBVbml0LkNvdW50XG4gICAgICAgICk7XG4gICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgIE1ldHJpY05hbWUuTlBNX1JFUExJQ0FfRE9XTixcbiAgICAgICAgICAoYXdhaXQgc3RhdGVTZXJ2aWNlLmlzTnBtUmVwbGljYURvd24oKSkgPyAxIDogMCxcbiAgICAgICAgICBVbml0Lk5vbmVcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBJZiB3ZSB3ZXJlbid0IGFibGUgdG8gY2FsY3VsYXRlIHRoZSByZXBsaWNhJ3MgbGFnLCB0aGVuIHNpbXBseVxuICAgICAgICAvLyBkb24ndCByZXBvcnQgdGhlIG1ldHJpYy5cbiAgICAgICAgaWYgKHJlcGxpY2FMYWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgTWV0cmljTmFtZS5OUE1fUkVQTElDQV9MQUcsXG4gICAgICAgICAgICByZXBsaWNhTGFnLFxuICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcblxuICAgICAgZm9yIChjb25zdCB2ZXJzaW9uU3RhdGUgb2YgW1xuICAgICAgICBzdGF0ZS5sYXRlc3QsXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoc3RhdGUucGVuZGluZyA/PyB7fSksXG4gICAgICBdKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBDaGVja2luZyBzdGF0ZSBvZiAke3ZlcnNpb25TdGF0ZS52ZXJzaW9ufSwgY3VycmVudDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHZlcnNpb25TdGF0ZSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKX1gXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgbWV0cmljU2NvcGUoKG1ldHJpY3MpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyBDbGVhciBvdXQgZGVmYXVsdCBkaW1lbnNpb25zIGFzIHdlIGRvbid0IG5lZWQgdGhvc2UuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtZW1iZWRkZWQtbWV0cmljcy1ub2RlL2lzc3Vlcy83My5cbiAgICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdQYWNrYWdlTmFtZScsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdQYWNrYWdlVmVyc2lvbicsIHZlcnNpb25TdGF0ZS52ZXJzaW9uKTtcbiAgICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgJ0lzTGF0ZXN0JyxcbiAgICAgICAgICAgIHN0YXRlLmxhdGVzdC52ZXJzaW9uID09PSB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIXZlcnNpb25TdGF0ZS5hdmFpbGFibGVBdCkge1xuICAgICAgICAgICAgaWYgKHZlcnNpb25TdGF0ZS52ZXJzaW9uID09PSBzdGF0ZS5sYXRlc3QudmVyc2lvbikge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgY29uc3RydWN0SHViLmlzSW5DYXRhbG9nKFxuICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gTm9uLWN1cnJlbnQgdmVyc2lvbnMgd2lsbCBwcm9iYWJseSBuZXZlciBtYWtlIGl0IHRvIGNhdGFsb2cgKHRoZXkncmUgb2xkZXIgdGhhbiB0aGVcbiAgICAgICAgICAgICAgLy8gY3VycmVudCB2ZXJzaW9uKSwgc28gaW5zdGVhZCwgd2UgY2hlY2sgd2hldGhlciB0aGV5IGhhdmUgVHlwZVNjcmlwdCBkb2N1bWVudGF0aW9uLlxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXdhaXQgY29uc3RydWN0SHViLmhhc1R5cGVTY3JpcHREb2N1bWVudGF0aW9uKFxuICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICB2ZXJzaW9uU3RhdGUudmVyc2lvblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzaW9uU3RhdGUuYXZhaWxhYmxlQXQpIHtcbiAgICAgICAgICAgIC8vIFRlbGxzIHVzIGhvdyBsb25nIGl0J3MgdGFrZW4gZm9yIHRoZSBwYWNrYWdlIHRvIG1ha2UgaXQgdG8gY2F0YWxvZyBhZnRlciBpdCB3YXMgcHVibGlzaGVkLlxuICAgICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoXG4gICAgICAgICAgICAgIE1ldHJpY05hbWUuVElNRV9UT19DQVRBTE9HLFxuICAgICAgICAgICAgICAodmVyc2lvblN0YXRlLmF2YWlsYWJsZUF0LmdldFRpbWUoKSAtXG4gICAgICAgICAgICAgICAgdmVyc2lvblN0YXRlLnB1Ymxpc2hlZEF0LmdldFRpbWUoKSkgL1xuICAgICAgICAgICAgICAgIDFfMDAwLFxuICAgICAgICAgICAgICBVbml0LlNlY29uZHNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFN0b3AgdHJhY2tpbmcgdGhhdCB2ZXJzaW9uLCBhcyBpdCdzIG5vdyBhdmFpbGFibGUuXG4gICAgICAgICAgICBpZiAodmVyc2lvblN0YXRlLnZlcnNpb24gaW4gc3RhdGUucGVuZGluZykge1xuICAgICAgICAgICAgICBkZWxldGUgc3RhdGUucGVuZGluZ1t2ZXJzaW9uU3RhdGUudmVyc2lvbl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRlbGxzIHVzIGhvdyBsb25nIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgdGhpcyB2ZXJzaW9uIHRvIHNob3cgdXAsIHNvIGZhci5cbiAgICAgICAgICAgIG1ldHJpY3MucHV0TWV0cmljKFxuICAgICAgICAgICAgICBNZXRyaWNOYW1lLkRXRUxMX1RJTUUsXG4gICAgICAgICAgICAgIChEYXRlLm5vdygpIC0gdmVyc2lvblN0YXRlLnB1Ymxpc2hlZEF0LmdldFRpbWUoKSkgLyAxXzAwMCxcbiAgICAgICAgICAgICAgVW5pdC5TZWNvbmRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE5vdGluZyB0aGF0IHdlIGRpZCBub3QgZW5vY3VudGVyIGEgZ2F0ZXdheSBlcnJvciwgc28gdGhlIG1ldHJpYyBoYXMgYSBuaWNlIGFuZCBjbGVhbiAwXG4gICAgICAgICAgLy8gdmFsdWUgaW5zdGVhZCBvZiBoYXZpbmcgdG8gdHJlYXQgbWlzc2luZyBkYXRhIGFzIG5vdCBicmVhY2hpbmcuXG4gICAgICAgICAgbWV0cmljcy5wdXRNZXRyaWMoTWV0cmljTmFtZS5IVFRQX0dBVEVXQVlfRVJST1JTLCAwLCBVbml0LkNvdW50KTtcbiAgICAgICAgfSkoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgc3RhdGVTZXJ2aWNlLnNhdmUocGFja2FnZU5hbWUsIHN0YXRlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBIVFRQRXJyb3IgJiZcbiAgICAgIChlcnJvci5odHRwU3RhdHVzQ29kZSA9PT0gNTAyIHx8IGVycm9yLmh0dHBTdGF0dXNDb2RlID09PSA1MDQpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIGlzIGFuIEhUVFAgNVhYIGZyb20gYSBkZXBlbmRlbmN5LCBzbyB3ZSdsbCBsb2cgdGhpcyBvdXQsIGFuZCBwcmV0ZW5kIGl0IGRpZCBub3QgZmFpbC4uLlxuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0hUVFAgNVhYIGZyb20gYSBkZXBlbmRlbmN5LCBhc3N1bWluZyB0aGlzIGlzIHRyYW5zaWVudDonLFxuICAgICAgICBlcnJvclxuICAgICAgKTtcbiAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIENsZWFyIG91dCBkZWZhdWx0IGRpbWVuc2lvbnMgYXMgd2UgZG9uJ3QgbmVlZCB0aG9zZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1lbWJlZGRlZC1tZXRyaWNzLW5vZGUvaXNzdWVzLzczLlxuICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JDb2RlJywgZXJyb3IuaHR0cFN0YXR1c0NvZGUpO1xuICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFcnJvck1lc3NhZ2UnLCBlcnJvci5tZXNzYWdlKTtcblxuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkhUVFBfR0FURVdBWV9FUlJPUlMsIDEsIFVuaXQuQ291bnQpO1xuICAgICAgfSkoKTtcbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgVGltZW91dEVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgUmVxdWVzdCB0aW1lb3V0IGZyb20gYSBkZXBlbmRlbmN5LCBhc3N1bWluZyB0aGlzIGlzIHRyYW5zaWVudDpgLFxuICAgICAgICBlcnJvclxuICAgICAgKTtcbiAgICAgIGF3YWl0IG1ldHJpY1Njb3BlKChtZXRyaWNzKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIENsZWFyIG91dCBkZWZhdWx0IGRpbWVuc2lvbnMgYXMgd2UgZG9uJ3QgbmVlZCB0aG9zZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3NsYWJzL2F3cy1lbWJlZGRlZC1tZXRyaWNzLW5vZGUvaXNzdWVzLzczLlxuICAgICAgICBtZXRyaWNzLnNldERpbWVuc2lvbnMoKTtcbiAgICAgICAgbWV0cmljcy5zZXRQcm9wZXJ0eSgnRXJyb3JDb2RlJywgJ1JFUVVFU1RfVElNRU9VVCcpO1xuICAgICAgICBtZXRyaWNzLnNldFByb3BlcnR5KCdFcnJvck1lc3NhZ2UnLCBlcnJvci5tZXNzYWdlKTtcblxuICAgICAgICAvLyBUaGlzIGlzIHNsaWd0aGx5IGFidXNpdmUsIGJ1dC4uLiBIVFRQIDUwNCAoR2F0ZXdheSBUaW1lb3V0KSBmcm9tIHRoZSBucG0gcmVwbGljYSBhcmVcbiAgICAgICAgLy8gcmV0dXJuZWQgYWZ0ZXIgbW9yZSB0aGFuIDMwIHNlY29uZHMgaGFzIHBhc3NlZCBhbmQgdGhpcyBpcyB3YXkgdG9vIGxvbmcuLi4gc28gd2VcbiAgICAgICAgLy8gYXBwcm94aW1hdGUgYSBiaXQgaGVyZS4uLlxuICAgICAgICBtZXRyaWNzLnB1dE1ldHJpYyhNZXRyaWNOYW1lLkhUVFBfR0FURVdBWV9FUlJPUlMsIDEsIFVuaXQuQ291bnQpO1xuICAgICAgfSkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBub3QgYW4gSFRUUCA1WFggZnJvbSBhIGRlcGVuZGVuY3ksIHNvIHdlJ2xsIGp1c3QgcmV0aHJvdyBhbmQgZmFpbC4uLlxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIENvbnN0cnVjdEh1YiB7XG4gICNjYXRhbG9nPzogQ2F0YWxvZ01vZGVsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nKSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBwYWNrYWdlIHZlcnNpb24gaXMgcHJlc2VudCBpbiB0aGUgY2F0YWxvZ1xuICAgKiBvYmplY3Qgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgICAgdGhlIG5hbWUgb2YgdGhlIGNoZWNrZWQgcGFja2FnZS5cbiAgICogQHBhcmFtIHBhY2thZ2VWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBJSUYgdGhlIGV4YWN0IHBhY2thZ2UgdmVyc2lvbiBpcyBmb3VuZCBpbiB0aGUgY2F0YWxvZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0luQ2F0YWxvZyhcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2F0YWxvZyA9IGF3YWl0IHRoaXMuZ2V0Q2F0YWxvZygpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gY2F0YWxvZy5wYWNrYWdlcy5maWx0ZXIoXG4gICAgICAocDogYW55KSA9PiBwLm5hbWUgPT09IHBhY2thZ2VOYW1lICYmIHAudmVyc2lvbiA9PT0gcGFja2FnZVZlcnNpb25cbiAgICApO1xuXG4gICAgaWYgKGZpbHRlcmVkLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEZvdW5kIG11bHRpcGxlIGVudHJpZXMgZm9yICR7cGFja2FnZU5hbWV9QCR7cGFja2FnZVZlcnNpb259IGluIGNhdGFsb2dgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPT09IDE7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgVHlwZVNjcmlwdCBkb2N1bWVudGF0aW9uIGV4aXN0cyBpbiBDb25zdHJ1Y3RIdWIgZm9yIHRoZVxuICAgKiBzcGVjaWZpZWQgcGFja2FnZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgICAgdGhlIG5hbWUgb2YgdGhlIGNoZWNrZWQgcGFja2FnZS5cbiAgICogQHBhcmFtIHBhY2thZ2VWZXJzaW9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBjaGVja2VkIHBhY2thZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBJSUYgdGhlIGBkb2NzLXR5cGVzY3JpcHQubWRgIGRvY3VtZW50IGV4aXN0cyBmb3IgdGhlXG4gICAqICAgICAgICAgIHNwZWNpZmllZCBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhhc1R5cGVTY3JpcHREb2N1bWVudGF0aW9uKFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgcGFja2FnZVZlcnNpb246IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9kYXRhLyR7cGFja2FnZU5hbWV9L3Yke3BhY2thZ2VWZXJzaW9ufS9kb2NzLXR5cGVzY3JpcHQubWRgO1xuICAgICAgaHR0cHNcbiAgICAgICAgLnJlcXVlc3QodXJsLCB7IG1ldGhvZDogJ0hFQUQnIH0sIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgLy8gVGhpcyByZXR1cm5zIEhUVFAgMjAwIHdpdGggdGV4dC9odG1sIGlmIGl0J3MgYSA0MDQsIGR1ZSB0byBob3dcbiAgICAgICAgICAgIC8vIHdlIGNvbmZpZ3VyZWQgQ2xvdWRGcm9udCBiZWhhdmlvcnMuXG4gICAgICAgICAgICByZXR1cm4gb2soXG4gICAgICAgICAgICAgICEhcmVzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddPy5zdGFydHNXaXRoKCd0ZXh0L21hcmtkb3duJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBIVFRQRXJyb3IoXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGBIRUFEICR7dXJsfSAtLSBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICgke3Jlcy5zdGF0dXNNZXNzYWdlfSlgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIpO1xuICAgICAgICAgIGtvKGVycik7XG4gICAgICAgIH0pXG4gICAgICAgIC5lbmQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2F0YWxvZygpOiBQcm9taXNlPENhdGFsb2dNb2RlbD4ge1xuICAgIGlmICh0aGlzLiNjYXRhbG9nKSB7XG4gICAgICByZXR1cm4gdGhpcy4jY2F0YWxvZztcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLiNjYXRhbG9nID0gYXdhaXQgZ2V0SlNPTihgJHt0aGlzLmJhc2VVcmx9L2NhdGFsb2cuanNvbmApKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2FuYXJ5U3RhdGVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmcpIHt9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHN0YXRlIHRvIHRoZSBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2F2ZShwYWNrYWdlTmFtZTogc3RyaW5nLCBzdGF0ZTogQ2FuYXJ5U3RhdGUpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybChwYWNrYWdlTmFtZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgU2F2aW5nIHRvICR7dXJsfTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZSwgbnVsbCwgMil9YCk7XG4gICAgYXdhaXQgYXdzXG4gICAgICAuczMoKVxuICAgICAgLnB1dE9iamVjdCh7XG4gICAgICAgIEJ1Y2tldDogdGhpcy5idWNrZXROYW1lLFxuICAgICAgICBLZXk6IHRoaXMua2V5KHBhY2thZ2VOYW1lKSxcbiAgICAgICAgQm9keTogSlNPTi5zdHJpbmdpZnkoc3RhdGUsIG51bGwsIDIpLFxuICAgICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgc3RhdGUgZmlsZSBmb3IgdGhpcyBwYWNrYWdlIGZyb20gdGhlIGJ1Y2tldC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkKHBhY2thZ2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhbmFyeVN0YXRlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgc3RhdGUgZm9yIHBhY2thZ2UgJyR7cGFja2FnZU5hbWV9J2ApO1xuXG4gICAgY29uc3Qgb2JqZWN0S2V5ID0gdGhpcy5rZXkocGFja2FnZU5hbWUpO1xuICAgIGNvbnN0IHVybCA9IHRoaXMudXJsKHBhY2thZ2VOYW1lKTtcblxuICAgIGNvbnNvbGUubG9nKGBGZXRjaGluZzogJHt1cmx9YCk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGF3c1xuICAgICAgLnMzKClcbiAgICAgIC5nZXRPYmplY3QoeyBCdWNrZXQ6IHRoaXMuYnVja2V0TmFtZSwgS2V5OiBvYmplY3RLZXkgfSlcbiAgICAgIC5wcm9taXNlKClcbiAgICAgIC5jYXRjaCgoZXJyOiBBV1NFcnJvcikgPT5cbiAgICAgICAgZXJyLmNvZGUgIT09ICdOb1N1Y2hLZXknXG4gICAgICAgICAgPyBQcm9taXNlLnJlamVjdChlcnIpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgICAvKiBubyBkYXRhICovXG4gICAgICAgICAgICB9IGFzIFMzLkdldE9iamVjdE91dHB1dClcbiAgICAgICk7XG5cbiAgICBpZiAoIWRhdGE/LkJvZHkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBOb3QgZm91bmQ6ICR7dXJsfWApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgTG9hZGVkOiAke3VybH1gKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhLkJvZHkudG9TdHJpbmcoJ3V0Zi04JyksIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSAncHVibGlzaGVkQXQnIHx8IGtleSA9PT0gJ2F2YWlsYWJsZUF0Jykge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YXRlIGZyb20gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxhdGVzdChwYWNrYWdlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYW5hcnlTdGF0ZVsnbGF0ZXN0J10+IHtcbiAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgbGF0ZXN0IHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSBOUE06ICR7cGFja2FnZU5hbWV9YCk7XG4gICAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGdldEpTT04oXG4gICAgICBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJHtlbmNvZGVVUklDb21wb25lbnQocGFja2FnZU5hbWUpfS9sYXRlc3RgLFxuICAgICAgeyBqc29uUGF0aDogWyd2ZXJzaW9uJ10gfVxuICAgICk7XG4gICAgY29uc3QgcHVibGlzaGVkQXQgPSBhd2FpdCBnZXRKU09OKFxuICAgICAgYGh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhY2thZ2VOYW1lKX1gLFxuICAgICAgeyBqc29uUGF0aDogWyd0aW1lJywgdmVyc2lvbl0gfVxuICAgICk7XG5cbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBQYWNrYWdlOiAke3BhY2thZ2VOYW1lfSB8IFZlcnNpb24gOiAke3ZlcnNpb259IHwgUHVibGlzaGVkIEF0OiAke3B1Ymxpc2hlZEF0fWBcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgdmVyc2lvbiwgcHVibGlzaGVkQXQ6IG5ldyBEYXRlKHB1Ymxpc2hlZEF0KSB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzTnBtUmVwbGljYURvd24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGdldEpTT04oJ2h0dHBzOi8vcmVwbGljYXRlLm5wbWpzLmNvbS8nLCB7XG4gICAgICAgIHRpbWVvdXRNaWxsaXM6IFJFUExJQ0FfUkVRVUVTVF9USU1FT1VUX01TLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVzdGltYXRlIGhvdyBmYXIgYmVoaW5kIHRoZSBOUE0gcmVwbGljYSBpcyBjb21wYXJlZCB0byB0aGUgbGl2ZSBOUE1cbiAgICogcmVnaXN0cnkuIElmIHRoZSBOUE0gcmVwbGljYSBpcyBkb3duLCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIG5wbVJlcGxpY2FMYWdTZWNvbmRzKFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBlbmNvZGVkUGFja2FnZU5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc29sZS5sb2coYE1lYXN1cmluZyBOUE0gcmVwbGljYSBsYWcgdXNpbmcgJHtwYWNrYWdlTmFtZX0uLi5gKTtcblxuICAgIGNvbnN0IHByaW1hcnlEYXRlID0gYXdhaXQgZ2V0TW9kaWZpZWRUaW1lc3RhbXAoYHJlZ2lzdHJ5Lm5wbWpzLm9yZ2ApO1xuXG4gICAgbGV0IHJlcGxpY2FEYXRlO1xuICAgIHRyeSB7XG4gICAgICByZXBsaWNhRGF0ZSA9IGF3YWl0IGdldE1vZGlmaWVkVGltZXN0YW1wKFxuICAgICAgICBgcmVwbGljYXRlLm5wbWpzLmNvbS9yZWdpc3RyeWAsXG4gICAgICAgIFJFUExJQ0FfUkVRVUVTVF9USU1FT1VUX01TXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdIVFRQIDUwNCcpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBXYXJuaW5nOiBlcnJvciBmZXRjaGluZyByZXBsaWNhdGUubnBtanMuY29tOiAke2UudG9TdHJpbmcoKX1gXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRoZXJlIGlzIG5vIHZhbHVlIHRvIHJlcG9ydFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkZWx0YU1zID0gcHJpbWFyeURhdGUuZ2V0VGltZSgpIC0gcmVwbGljYURhdGUuZ2V0VGltZSgpO1xuXG4gICAgY29uc29sZS5sb2coYFRpbWVzdGFtcCBvbiBwcmltYXJ5OiAke3ByaW1hcnlEYXRlLnRvSVNPU3RyaW5nKCl9YCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVGltZXN0YW1wIG9uIHJlcGxpY2E6ICR7cmVwbGljYURhdGUudG9JU09TdHJpbmcoKX0gKCR7XG4gICAgICAgIGRlbHRhTXMgLyAzXzYwMF8wMDBcbiAgICAgIH0gaG91cnMgYmVoaW5kKWBcbiAgICApO1xuXG4gICAgLy8gV2UgcmV0dXJuIGluIHNlY29uZHMuLi4gVGhlIG1pbGxpc2Vjb25kIHJlc29sdXRpb24gaXMgc2lsbHkgaGVyZSBzaW5jZSB0aGUgcHJvYmUgcGFja2FnZSBpc1xuICAgIC8vIG9ubHkgcHVibGlzaGVkIGFwcHJveGltYXRlbHkgb25jZSBldmVyeSB0aHJlZSBob3Vycy4gV2UgdXNlIHNlY29uZHMgb25seSBiZWNhdXNlIHRoaXMgaXMgdGhlXG4gICAgLy8gbGFyZ2VzdCBhdmFpbGFibGUgdGltZSB1bml0IGluIENsb3VkV2F0Y2guXG4gICAgcmV0dXJuIGRlbHRhTXMgLyAxXzAwMDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldE1vZGlmaWVkVGltZXN0YW1wKFxuICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgdGltZW91dE1pbGxpcz86IG51bWJlclxuICAgICkge1xuICAgICAgY29uc3QgaXNvRGF0ZSA9IGF3YWl0IGdldEpTT04oXG4gICAgICAgIGBodHRwczovLyR7YmFzZVVybH0vJHtlbmNvZGVkUGFja2FnZU5hbWV9YCxcbiAgICAgICAgeyBqc29uUGF0aDogWyd0aW1lJywgJ21vZGlmaWVkJ10sIHRpbWVvdXRNaWxsaXMgfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShpc29EYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGtleShwYWNrYWdlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7T2JqZWN0S2V5LlNUQVRFX1BSRUZJWH0ke3BhY2thZ2VOYW1lfSR7T2JqZWN0S2V5LlNUQVRFX1NVRkZJWH1gO1xuICB9XG5cbiAgcHJpdmF0ZSB1cmwocGFja2FnZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBgczM6Ly8ke3RoaXMuYnVja2V0TmFtZX0vJHt0aGlzLmtleShwYWNrYWdlTmFtZSl9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSFRUUEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGh0dHBTdGF0dXNDb2RlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIEhUVFBFcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFRpbWVvdXRFcnJvcik7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENhbmFyeVN0YXRlIHtcbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgcGFja2FnZSB2ZXJzaW9uLCBhcyBvZiB0aGUgbGFzdCBleGVjdXRpb24gb2YgdGhlIGNhbmFyeS5cbiAgICovXG4gIGxhdGVzdDoge1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIHdlIGFyZSB0cmFja2luZy5cbiAgICAgKi9cbiAgICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcHVibGlzaCBkYXRlIG9mIHRoZSB2ZXJzaW9uLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHB1Ymxpc2hlZEF0OiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGUgYXQgd2hpY2ggdGhlIHZlcnNpb24gaXMgYXZhaWxhYmxlIG9uIHRoZSBodWIuXG4gICAgICovXG4gICAgYXZhaWxhYmxlQXQ/OiBEYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFYWNoIGV4aXN0aW5nLCBidXQgbm90LXlldC1mb3VuZCB2ZXJzaW9ucyB0aGF0IGFyZSBzdGlsbCB0cmFja2VkLlxuICAgKi9cbiAgcGVuZGluZzoge1xuICAgIFt2ZXJzaW9uOiBzdHJpbmddOiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSB2ZXJzaW9uIHdlIGFyZSB0cmFja2luZy5cbiAgICAgICAqL1xuICAgICAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwdWJsaXNoIGRhdGUgb2YgdGhlIHZlcnNpb24uXG4gICAgICAgKi9cbiAgICAgIHJlYWRvbmx5IHB1Ymxpc2hlZEF0OiBEYXRlO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZXNlIHBlbmRpbmcgcGFja2FnZXMgYXJlIE5FVkVSIGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50LlxuICAgICAgICovXG4gICAgICBhdmFpbGFibGVBdDogdW5kZWZpbmVkO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogTWFrZXMgYSByZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBVUkwgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGFmdGVyIGhhdmluZ1xuICogcGFyc2VkIGl0IGZyb20gSlNPTi5cbiAqXG4gKiBAcGFyYW0gdXJsIHRoZSBVUkwgdG8gZ2V0LlxuICogQHBhcmFtIGpzb25QYXRoIGEgSlNPTiBwYXRoIHRvIGV4dHJhY3Qgb25seSBhIHN1YnNldCBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIHRpbWVvdXRNaWxsaXMgdGhlIHNvY2tldCB0aW1lb3V0LCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmZ1bmN0aW9uIGdldEpTT04oXG4gIHVybDogc3RyaW5nLFxuICB7XG4gICAganNvblBhdGgsXG4gICAgdGltZW91dE1pbGxpcyxcbiAgfTogeyBqc29uUGF0aD86IHN0cmluZ1tdOyB0aW1lb3V0TWlsbGlzPzogbnVtYmVyIH0gPSB7fVxuKTogUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaywga28pID0+IHtcbiAgICBodHRwc1xuICAgICAgLmdldChcbiAgICAgICAgdXJsLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2lkZW50aXR5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpbWVvdXQ6IHRpbWVvdXRNaWxsaXMsXG4gICAgICAgIH0sXG4gICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgSFRUUEVycm9yKFxuICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgICAgYEdFVCAke3VybH0gLSBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICgke3Jlcy5zdGF0dXNNZXNzYWdlfSlgXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXMub25jZSgnZXJyb3InLCBrbyk7XG5cbiAgICAgICAgICByZXMub25jZSgndGltZW91dCcsICgpID0+IHtcbiAgICAgICAgICAgIC8vIFVwb24gc29ja2V0IHRpbWVvdXQsIGZhaWwgd2l0aCBhIFRpbWVvdXRFcnJvclxuICAgICAgICAgICAga28oXG4gICAgICAgICAgICAgIG5ldyBUaW1lb3V0RXJyb3IoXG4gICAgICAgICAgICAgICAgYFJlcXVlc3QgdGltZWQgb3V0IChhZnRlciAke1xuICAgICAgICAgICAgICAgICAgdGltZW91dE1pbGxpcyA/PyAnTi9BJ1xuICAgICAgICAgICAgICAgIH0gbXMpOiBHRVQgJHt1cmx9YFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QganNvbiA9IEpTT05TdHJlYW0ucGFyc2UoanNvblBhdGgpO1xuICAgICAgICAgIGpzb24ub25jZSgnZGF0YScsIG9rKTtcbiAgICAgICAgICBqc29uLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgICAgICAgY29uc3QgcGxhaW5QYXlsb2FkID1cbiAgICAgICAgICAgIHJlcy5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPT09ICdnemlwJyA/IGd1bnppcChyZXMpIDogcmVzO1xuICAgICAgICAgIHBsYWluUGF5bG9hZC5waXBlKGpzb24sIHsgZW5kOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICApXG4gICAgICAub25jZSgndGltZW91dCcsICgpID0+IHtcbiAgICAgICAgLy8gVXBvbiBzb2NrZXQgdGltZW91dCwgZmFpbCB3aXRoIGEgVGltZW91dEVycm9yXG4gICAgICAgIGtvKFxuICAgICAgICAgIG5ldyBUaW1lb3V0RXJyb3IoXG4gICAgICAgICAgICBgUmVxdWVzdCB0aW1lZCBvdXQgKGFmdGVyICR7dGltZW91dE1pbGxpcyA/PyAnTi9BJ30gbXMpOiBHRVQgJHt1cmx9YFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBgbGF0ZXN0YCBwcm9wZXJ0eSBvZiBgc3RhdGVgIHRpIHRoZSBwcm92aWRlZCBgbGF0ZXN0YCB2YWx1ZSxcbiAqIHVubGVzcyB0aGlzIGlzIGFscmVhZHkgdGhlIGN1cnJlbnQgbGF0ZXN0LlxuICpcbiAqIElmIHRoZSBwcmV2aW91cyBsYXRlc3QgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIHRoZSBgYXZhaWxhYmxlQXRgIHByb3BlcnR5LCBhZGRzXG4gKiB0aGF0IHRvIHRoZSBgcGVuZGluZ2Agc2V0LlxuICpcbiAqIEBwYXJhbSBzdGF0ZSAgdGhlIHN0YXRlIHRvIGJlIHVwZGF0ZWQuXG4gKiBAcGFyYW0gbGF0ZXN0IHRoZSBjdXJyZW50IFwibGF0ZXN0XCIgdmVyc2lvbiBvZiB0aGUgdHJhY2tlZCBwYWNrYWdlLlxuICovXG5mdW5jdGlvbiB1cGRhdGVMYXRlc3RJZk5lZWRlZChcbiAgc3RhdGU6IENhbmFyeVN0YXRlLFxuICBsYXRlc3Q6IENhbmFyeVN0YXRlWydsYXRlc3QnXVxuKTogdm9pZCB7XG4gIGlmIChzdGF0ZS5sYXRlc3QudmVyc2lvbiA9PT0gbGF0ZXN0LnZlcnNpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBJZiB0aGUgY3VycmVudCBcImxhdGVzdFwiIGlzbid0IGF2YWlsYWJsZSB5ZXQsIGFkZCBpdCB0byB0aGUgYHBlbmRpbmdgIHZlcnNpb25zLlxuICBpZiAoc3RhdGUubGF0ZXN0LmF2YWlsYWJsZUF0ID09IG51bGwpIHtcbiAgICAvLyBUaGUgVHlwZVNjcmlwdCB2ZXJzaW9uIG9mIGpzaWkgZG9lc24ndCBkbyBjb250cm9sIGZsb3cgYW5hbHlzaXMgd2VsbCBlbm91Z2ggaGVyZSB0b1xuICAgIC8vIGRldGVybWluZSB0aGF0IHRoZWBpZmAgYnJhbmNoIGd1YXJhbnRlZXMgYGF2YWlsYWJsZUF0YCBpcyB1bmRlZmluZWQgaGVyZS5cbiAgICBzdGF0ZS5wZW5kaW5nW3N0YXRlLmxhdGVzdC52ZXJzaW9uXSA9IHtcbiAgICAgIC4uLnN0YXRlLmxhdGVzdCxcbiAgICAgIGF2YWlsYWJsZUF0OiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRlLmxhdGVzdCA9IGxhdGVzdDtcbn1cblxuZnVuY3Rpb24gZ3VuemlwKHJlYWRhYmxlOiBSZWFkYWJsZSk6IFJlYWRhYmxlIHtcbiAgY29uc3QgZ3ogPSBjcmVhdGVHdW56aXAoKTtcbiAgcmVhZGFibGUucGlwZShneiwgeyBlbmQ6IHRydWUgfSk7XG4gIHJldHVybiBnejtcbn1cbiJdfQ==
@@ -407,7 +407,7 @@ class NpmJs {
407
407
  constructHubBaseUrl,
408
408
  packageName,
409
409
  });
410
- const period = aws_cdk_lib_1.Duration.minutes(1);
410
+ const period = aws_cdk_lib_1.Duration.minutes(5);
411
411
  const alarm = new aws_cloudwatch_1.MathExpression({
412
412
  // When the npm replica is sufficiently behind the primary, the package source will not be
413
413
  // able to register new canary package versions within the SLA. In such cases, there is
@@ -529,11 +529,11 @@ class NpmJs {
529
529
  }
530
530
  exports.NpmJs = NpmJs;
531
531
  _a = JSII_RTTI_SYMBOL_1;
532
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.11" };
532
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.12" };
533
533
  /**
534
534
  * How often 'rate' goes into 'duration' (rounded up)
535
535
  */
536
536
  function howOften(rate, duration) {
537
537
  return Math.ceil(duration.toSeconds() / rate.toSeconds());
538
538
  }
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVdvQztBQUNwQyx1REFBd0Q7QUFDeEQsdUVBQWdFO0FBQ2hFLHVEQUFpRDtBQUNqRCxtRkFBc0U7QUFDdEUsK0NBQWdFO0FBQ2hFLGlEQUE2RDtBQUU3RCw0Q0FBMkU7QUFDM0Usa0RBQTZDO0FBTzdDLGdEQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsMkNBQW9EO0FBQ3BELDZFQUt5QztBQUV6Qyw2REFBd0Q7QUFDeEQsK0RBQTBEO0FBRTFEOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlDOzs7Ozs7R0FNRztBQUNILE1BQU0seUJBQXlCLEdBQUcsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFvQ3BEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCLFlBQW9DLFFBQW9CLEVBQUU7UUFBdEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7SUFBRyxDQUFDO0lBRXZELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDUTs7UUFFM0IsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLHFCQUFxQixDQUFDLGNBQWMsRUFBRTtRQUVsRCxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFO2dCQUNyRCxp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UUFBUSxDQUFDLElBQWMsRUFBRSxRQUFrQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtUnVsZSxcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBDb21wb3NpdGVBbGFybSxcbiAgR3JhcGhXaWRnZXQsXG4gIElXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgbGFtYmRhRnVuY3Rpb25VcmwsIHMzT2JqZWN0VXJsLCBzcXNRdWV1ZVVybCB9IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi4vbW9uaXRvcmluZy9hcGknO1xuaW1wb3J0IHR5cGUge1xuICBJUGFja2FnZVNvdXJjZSxcbiAgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLFxuICBQYWNrYWdlU291cmNlQmluZFJlc3VsdCxcbn0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgUlVOQk9PS19VUkwgfSBmcm9tICcuLi9ydW5ib29rLXVybCc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi4vczMvc3RvcmFnZSc7XG5pbXBvcnQgeyBOcG1Kc1BhY2thZ2VDYW5hcnkgfSBmcm9tICcuL25wbWpzL2NhbmFyeSc7XG5pbXBvcnQge1xuICBNQVJLRVJfRklMRV9OQU1FLFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbiAgUzNLZXlQcmVmaXgsXG59IGZyb20gJy4vbnBtanMvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBOcG1Kc0ZvbGxvd2VyIH0gZnJvbSAnLi9ucG1qcy9ucG0tanMtZm9sbG93ZXInO1xuaW1wb3J0IHsgU3RhZ2VBbmROb3RpZnkgfSBmcm9tICcuL25wbWpzL3N0YWdlLWFuZC1ub3RpZnknO1xuXG4vKipcbiAqIFRoZSBwZXJpb2RpY2l0eSBhdCB3aGljaCB0aGUgTnBtSnMgZm9sbG93ZXIgd2lsbCBydW4uIFRoaXMgTVVTVCBiZSBhIHZhbGlkXG4gKiBDbG91ZFdhdGNoIE1ldHJpYyBncmFpbiwgYXMgdGhpcyB3aWxsIGFsc28gYmUgdGhlIHBlcmlvZCBvZiB0aGUgQ2xvdWRXYXRjaFxuICogYWxhcm0gdGhhdCBtb250aW9ycyB0aGUgaGVhbHRoIG9mIHRoZSBmb2xsb3dlci5cbiAqL1xuY29uc3QgRk9MTE9XRVJfUlVOX1JBVEUgPSBEdXJhdGlvbi5taW51dGVzKDUpO1xuXG4vKipcbiAqIEFsYXJtIGlmIHdlIGhhdmVuJ3Qgc2VlbiBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lXG4gKlxuICogVGhlIENvdWNoREIgbGVhZGVyIG9jY2FzaW9uYWxseSBqdXN0IHN0YXJ0cyB0b3NzaW5nIG91dCB0aW1lb3V0cyBhbmQgdGhleVxuICogbWF5IGxhc3QgZm9yIGEgZ29vZCB3aGlsZS4gV2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgd2l0aCBvdXIgYWxhcm1zXG4gKiBvdGhlcndpc2Ugd2UncmUganVzdCBnb2luZyB0byBiZSB0b28gc3BhbW15LlxuICovXG5jb25zdCBOT19DSEFOR0VTX0FMQVJNX0RVUkFUSU9OID0gRHVyYXRpb24uaG91cnMoMSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnBtSnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHRvIHVzZSBmb3Igc3RhZ2luZyBucG0gcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgYnVja2V0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYWNrYWdlIGNhbmFyeSwgd2hpY2ggd2lsbCB0cmFjayBhdmFpbGFiaWxpdHkgb2YgYSBjYW5hcnlcbiAgICogcGFja2FnZSBpbiBDb25zdHJ1Y3RIdWIsIGFuZCBlbWl0IGRlZGljYXRlZCBtZXRyaWNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDYW5hcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB0aGF0IGlzIG1vbml0b3JlZCBieSB0aGUgcGFja2FnZSBjYW5hcnksIGlmIGVuYWJsZWQgYnlcbiAgICogYGVuYWJsZUNhbmFyeWAuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5UGFja2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgaXQgaXMgc3VwcG9zZWQgdG8gdGFrZSBmb3IgcGFja2FnZXMgdG8gYmVjb21lXG4gICAqIHZpc2libGUgaW4gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuIElmIGBlbmFibGVDYW5hcnlgIGlzIGVuYWJsZWQsIGFuXG4gICAqIGFsYXJtIHdpbGwgdHJpZ2dlciBpZiB0aGlzIFNMQSBpcyBicmVhY2hlZCBieSB0aGUgYGNhbmFyeVBhY2thZ2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlTbGE/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgZ2V0cyBwYWNrYWdlIGRhdGEgZnJvbSB0aGUgbnBtanMuY29tIHBhY2thZ2UgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOcG1KcyBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5wbUpzUHJvcHMgPSB7fSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGJhc2VVcmwsXG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIHF1ZXVlLFxuICAgICAgcmVwb3NpdG9yeSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9uc1xuICApOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB7XG4gICAgcmVwb3NpdG9yeT8uYWRkRXh0ZXJuYWxDb25uZWN0aW9uKCdwdWJsaWM6bnBtanMnKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuc3RhZ2luZ0J1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCAnTnBtSnMvU3RhZ2luZ0J1Y2tldCcsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWdlciA9IG5ldyBTdGFnZUFuZE5vdGlmeShzY29wZSwgJ05wbUpzLVN0YWdlQW5kTm90aWZ5Jywge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsICdTdGFnZXJETFEnLCB7XG4gICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSlMtU3RhZ2VBbmROb3RpZnldIFN0YWdlcyB0YXJiYWxscyB0byBTMyBhbmQgbm90aWZpZXMgQ29uc3RydWN0SHViYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwR2lCXG4gICAgICByZXRyeUF0dGVtcHRzOiAyLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YWdlcik7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChzdGFnZXIpO1xuICAgIHF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHN0YWdlcik7XG5cbiAgICBzdGFnZXIuYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgU3FzRXZlbnRTb3VyY2Uoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEsIHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGZvbGxvd2VyID0gbmV3IE5wbUpzRm9sbG93ZXIoc2NvcGUsICdOcG1KcycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9OcG1Kc10gUGVyaW9kaWNhbGx5IHF1ZXJ5IG5wbWpzLmNvbSBpbmRleCBmb3IgbmV3IHBhY2thZ2VzYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgRlVOQ1RJT05fTkFNRTogc3RhZ2VyLmZ1bmN0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwIEdpQlxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogMSwgLy8gT25seSBvbmUgZXhlY3V0aW9uIGF0IGEgdGltZSwgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIG9uIHRoZSBTMyBtYXJrZXIgb2JqZWN0XG4gICAgICB0aW1lb3V0OiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvbGxvd2VyLCBNQVJLRVJfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsICdOcG1Kcy9TY2hlZHVsZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL1NjaGVkdWxlYCxcbiAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5yYXRlKEZPTExPV0VSX1JVTl9SQVRFKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9sbG93ZXIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJBbGFybXMoc2NvcGUsIGZvbGxvd2VyLCBzdGFnZXIsIG1vbml0b3JpbmcsIHJ1bGUpO1xuXG4gICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSAmJlxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICAgICdOUE0gSlMgU3RhZ2VyIERMUScsXG4gICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWVcbiAgICAgICk7XG4gICAgZm9sbG93ZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBGb2xsb3dlciBETFEnLFxuICAgICAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWVcbiAgICAgICk7XG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgZm9sbG93ZXIsXG4gICAgICAnTnBtSnNMYW1iZGEnXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBzdGFnZXIsXG4gICAgICAnTnBtSnMtU3RhZ2VBbmROb3RpZnlMYW1iZGEnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmb2xsb3dlci5ub2RlLnBhdGgsXG4gICAgICBsaW5rczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ05wbUpzIEZvbGxvd2VyJyxcbiAgICAgICAgICB1cmw6IGxhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7IG5hbWU6ICdNYXJrZXIgT2JqZWN0JywgdXJsOiBzM09iamVjdFVybChidWNrZXQsIE1BUktFUl9GSUxFX05BTUUpIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlcicsIHVybDogbGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKSB9LFxuICAgICAgICB7IG5hbWU6ICdTdGFnZXIgRExRJywgdXJsOiBzcXNRdWV1ZVVybChzdGFnZXIuZGVhZExldHRlclF1ZXVlISkgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGb2xsb3dlciBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvbGxvd2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvbGxvd2VyLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFt0aGlzLm1ldHJpY1JlbWFpbmluZ1RpbWUoeyBsYWJlbDogJ1JlbWFpbmluZyBUaW1lJyB9KV0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YWdlciBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhzdGFnZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3N0YWdlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIEZvbGxvd2VyJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0NoYW5nZUNvdW50KHsgbGFiZWw6ICdDaGFuZ2UgQ291bnQnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkoeyBsYWJlbDogJ1VucHJvY2Vzc2FibGUnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTnBtSnNDaGFuZ2VBZ2UoeyBsYWJlbDogJ0xhZyB0byBucG1qcy5jb20nIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNQYWNrYWdlVmVyc2lvbkFnZSh7IGxhYmVsOiAnUGFja2FnZSBWZXJzaW9uIEFnZScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IGxhYmVsOiAnTWlsbGlzZWNvbmRzJywgbWluOiAwLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnQ291Y2hEQiBDaGFuZ2VzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0xhc3RTZXEoeyBsYWJlbDogJ0xhc3QgU2VxdWVuY2UgTnVtYmVyJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YWdlciBEZWFkLUxldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZShcbiAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdWaXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZShcbiAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKHRoaXMucHJvcHMuZW5hYmxlQ2FuYXJ5ID8/IHRydWVcbiAgICAgICAgICAgID8gdGhpcy5yZWdpc3RlckNhbmFyeShcbiAgICAgICAgICAgICAgICBmb2xsb3dlcixcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVBhY2thZ2UgPz8gJ2NvbnN0cnVjdC1odWItcHJvYmUnLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5U2xhID8/IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgICAgICAgYnVja2V0LFxuICAgICAgICAgICAgICAgIGJhc2VVcmwsXG4gICAgICAgICAgICAgICAgbW9uaXRvcmluZ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSB0aW1lIGl0IHRvb2sgdG8gcHJvY2VzcyBhIGNoYW5nZXMgYmF0Y2guXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQmF0Y2hQcm9jZXNzaW5nVGltZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIGNoYW5nZXMgdGhhdCB3ZXJlIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNDaGFuZ2VDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQ0hBTkdFX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBudW1iZXIgdGhhdCB3YXMgcHJvY2Vzc2VkLiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCB0b1xuICAgKiBkaXNjb3ZlciB3aGVuIGEgc2VxdWVuY2UgcmVzZXQgaGFzIGhhcHBlbmVkIGluIHRoZSBDb3VjaERCIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhc3RTZXEob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljTnBtSnNDaGFuZ2VBZ2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5OUE1KU19DSEFOR0VfQUdFLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWdlIG9mIHRoZSBvbGRlc3QgcGFja2FnZSB2ZXJzaW9uIHRoYXQgd2FzIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpbnNwZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUGFja2FnZVZlcnNpb25Db3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVlbWVkIHJlbGV2YW50LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbGV2YW50UGFja2FnZVZlcnNpb25zKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRUxFVkFOVF9QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdGhhdCB3YXMgcmVtYWluaW5nIHdoZW4gdGhlIGxhbWJkYSByZXR1cm5lZCBpbiBvcmRlciB0b1xuICAgKiBhdm9pZCBoaXR0aW5nIGEgdGltZW91dC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNSZW1haW5pbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgbm90IHByb2Nlc3NlZCBkdWUgdG8gaGF2aW5nIGFuIGludmFsaWRcbiAgICogZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBbGFybXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBmb2xsb3dlcjogTnBtSnNGb2xsb3dlcixcbiAgICBzdGFnZXI6IFN0YWdlQW5kTm90aWZ5LFxuICAgIG1vbml0b3Jpbmc6IElNb25pdG9yaW5nLFxuICAgIHNjaGVkdWxlOiBSdWxlXG4gICkge1xuICAgIGNvbnN0IGZhaWx1cmVBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL0ZhaWx1cmVzJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXNgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKCdOcG1Kcy9Gb2xsb3dlciBGYWlsdXJlcycsIGZhaWx1cmVBbGFybSk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nQWxhcm0gPSBmb2xsb3dlclxuICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZycsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vdFJ1bm5pbmdgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBpcyBub3QgcnVubmluZyEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL0ZvbGxvd2VyIE5vdCBSdW5uaW5nJyxcbiAgICAgIG5vdFJ1bm5pbmdBbGFybVxuICAgICk7XG5cbiAgICAvLyBUaGUgcGVyaW9kIGZvciB0aGlzIGFsYXJtIG5lZWRzIHRvIG1hdGNoIHRoZSBzY2hlZHVsaW5nIGludGVydmFsIG9mIHRoZVxuICAgIC8vIGZvbGxvd2VyLCBvdGhlcndpc2UgdGhlIG1ldHJpYyB3aWxsIGJlIHRvbyBzcGFyc2UgdG8gcHJvcGVybHkgZGV0ZWN0XG4gICAgLy8gcHJvYmxlbXMuXG4gICAgY29uc3Qgbm9DaGFuZ2VBbGFybSA9IHRoaXMubWV0cmljQ2hhbmdlQ291bnQoe1xuICAgICAgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlcycsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9Ob0NoYW5nZXNgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBkaXNjb3ZlcmluZyBhbnkgY2hhbmdlcyBmcm9tIENvdWNoREIhJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogaG93T2Z0ZW4oRk9MTE9XRVJfUlVOX1JBVEUsIE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04pLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgLy8gSWYgdGhlIG1ldHJpYyBpcyBub3QgZW1pdHRlZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgemVyby5cbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcCBucG1qcy5jb20gY2hhbmdlcyBkaXNjb3ZlcmVkJyxcbiAgICAgIG5vQ2hhbmdlQWxhcm1cbiAgICApO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnbVZpc2libGUgKyBtSGlkZGVuJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtVmlzaWJsZTpcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgbUhpZGRlbjpcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHtcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oc2NvcGUsIGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCwge1xuICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL1N0YWdlci9ETFFOb3RFbXB0eWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSlMgcGFja2FnZSBzdGFnZXIgaXMgZmFpbGluZyAtIGl0cyBkZWFkIGxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHknLFxuICAgICAgICAnJyxcbiAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpfWAsXG4gICAgICAgIGBMaW5rIHRvIHRoZSBkZWFkIGxldHRlciBxdWV1ZTogJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIVxuICAgICAgICApfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1Kcy9TdGFnZXIgRExRIE5vdCBFbXB0eScsXG4gICAgICBkbHFOb3RFbXB0eUFsYXJtXG4gICAgKTtcblxuICAgIC8vIEZpbmFsbHkgLSB0aGUgXCJub3QgcnVubmluZ1wiIGFsYXJtIGRlcGVuZHMgb24gdGhlIHNjaGVkdWxlIChpdCB3b24ndCBydW4gdW50aWwgdGhlIHNjaGVkdWxlXG4gICAgLy8gZXhpc3RzISksIGFuZCB0aGUgc2NoZWR1bGUgZGVwZW5kcyBvbiB0aGUgZmFpbHVyZSBhbGFybSBleGlzdGluZyAod2UgZG9uJ3Qgd2FudCBpdCB0byBydW5cbiAgICAvLyBiZWZvcmUgd2UgY2FuIGtub3cgaXQgaXMgZmFpbGluZykuIFRoaXMgbWVhbnMgdGhlIHJldHVybmVkIGBJRGVwZW5kYWJsZWAgZWZmZWN0aXZlbHkgZW5zdXJlc1xuICAgIC8vIGFsbCBhbGFybXMgaGF2ZSBiZWVuIHByb3Zpc2lvbm5lZCBhbHJlYWR5ISBJc24ndCBpdCBuaWNlIVxuICAgIG5vdFJ1bm5pbmdBbGFybS5ub2RlLmFkZERlcGVuZGVuY3koc2NoZWR1bGUpO1xuICAgIHNjaGVkdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckNhbmFyeShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgcHJvYmUgcGFja2FnZSB0byBhcHBlYXIgb25cbiAgICAvLyBDb25zdHJ1Y3QgSHViIGFmdGVyIGl0IGdldHMgcHVibGlzaGVkIHRvIG5wbSwgYXNzdW1pbmcgdGhlIG5wbSByZXBsaWNhXG4gICAgLy8gaXMgdXAgdG8gZGF0ZSBldGMuXG4gICAgdmlzaWJpbGl0eVNsYTogRHVyYXRpb24sXG4gICAgYnVja2V0OiBJQnVja2V0LFxuICAgIGNvbnN0cnVjdEh1YkJhc2VVcmw6IHN0cmluZyxcbiAgICBtb25pdG9yaW5nOiBJTW9uaXRvcmluZ1xuICApOiBJV2lkZ2V0W10ge1xuICAgIGNvbnN0IGNhbmFyeSA9IG5ldyBOcG1Kc1BhY2thZ2VDYW5hcnkoc2NvcGUsICdDYW5hcnknLCB7XG4gICAgICBidWNrZXQsXG4gICAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwZXJpb2QgPSBEdXJhdGlvbi5taW51dGVzKDEpO1xuXG4gICAgY29uc3QgYWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLy8gV2hlbiB0aGUgbnBtIHJlcGxpY2EgaXMgc3VmZmljaWVudGx5IGJlaGluZCB0aGUgcHJpbWFyeSwgdGhlIHBhY2thZ2Ugc291cmNlIHdpbGwgbm90IGJlXG4gICAgICAvLyBhYmxlIHRvIHJlZ2lzdGVyIG5ldyBjYW5hcnkgcGFja2FnZSB2ZXJzaW9ucyB3aXRoaW4gdGhlIFNMQS4gSW4gc3VjaCBjYXNlcywgdGhlcmUgaXNcbiAgICAgIC8vIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZSBleGNlcHQgZm9yIHdhaXRpbmcgdW50aWwgdGhlIHJlcGxpY2EgaGFzIGZpbmFsbHkgY2F1Z2h0IHVwLiBXZVxuICAgICAgLy8gaGVuY2Ugc3VwcHJlc3MgdGhlIGFsYXJtIGlmIHRoZSByZXBsaWNhIGxhZyBpcyBnZXR0aW5nIHdpdGhpbiAzIGV2YWx1YXRpb24gcGVyaW9kcyBvZiB0aGVcbiAgICAgIC8vIHZpc2JpbGl0eSBTTEEuXG4gICAgICBleHByZXNzaW9uOiBgSUYoRklMTChtTGFnLCBSRVBFQVQpIDwgJHtNYXRoLm1heChcbiAgICAgICAgdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSAtIDMgKiBwZXJpb2QudG9TZWNvbmRzKCksXG4gICAgICAgIDMgKiBwZXJpb2QudG9TZWNvbmRzKClcbiAgICAgICl9LCBNQVgoW21Ed2VsbCwgbVRUQ10pKWAsXG4gICAgICBwZXJpb2QsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbUR3ZWxsOiBjYW5hcnkubWV0cmljRHdlbGxUaW1lKCksXG4gICAgICAgIG1UVEM6IGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKCksXG4gICAgICAgIG1MYWc6IGNhbmFyeS5tZXRyaWNFc3RpbWF0ZWROcG1SZXBsaWNhTGFnKCksXG4gICAgICB9LFxuICAgIH0pLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0FsYXJtJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9TTEEtQnJlYWNoZWRgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICBgTmV3IHZlcnNpb25zIG9mICR7cGFja2FnZU5hbWV9IGhhdmUgYmVlbiBwdWJsaXNoZWQgb3ZlciAke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSBhZ28gYW5kIGFyZSBzdGlsbCBub3QgdmlzaWJsZSBpbiBjb25zdHJ1Y3QgaHViYCxcbiAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB0aHJlc2hvbGQ6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgfSk7XG4gICAgLy8gVGhpcyBpcyBkZWVtZWQgbG93IHNldmVyaXR5LCBiZWNhdXNlIHRoZSBucG0gcmVnaXN0cnkgcmVwbGljYSAocmVwbGljYXRlLm5wbWpzLmNvbSkgY2FuXG4gICAgLy8gb2NjYXNpb25hbGx5IGxhZyBzZXZlcmFsIGhvdXJzIGJlaGluZCB0aGUgcHJpbWFyeSAocmVnaXN0cnkubnBtanMuY29tKSwgYW5kIHdlIGNhbm5vdCBlYXNpbHlcbiAgICAvLyB0ZWxsIGFib3V0IHRoYXQuIFNvbWVvbmUgc2hvdWxkIGhhdmUgYSBsb29rLCBidXQgaW4gdmlydHVhbGx5IGFsbCBjYXNlcyB3ZSBoYXZlIHNlZW4gc28gZmFyLFxuICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIG91ciBlbmQsIGJlc2lkZXMgd2FpdGluZyBmb3IgdGhlIHJlcGxpY2EgdG8gYmUgYWxsXG4gICAgLy8gY2F1Z2h0IHVwLlxuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOZXcgdmVyc2lvbiB2aXNpYmlsaXR5IFNMQSBicmVhY2hlZCcsXG4gICAgICBhbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICBjYW5hcnksXG4gICAgICAnTm90UnVubmluZ09yRmFpbGluZycsXG4gICAgICB7XG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0Vycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnRmFpbGluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9GYWlsaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMCxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBjYW5hcnlcbiAgICAgICAgICAgIC5tZXRyaWNJbnZvY2F0aW9ucyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnTm90UnVubmluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9Ob3RSdW5uaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBpcyBub3QgcnVubmluZyBvciBpcyBmYWlsaW5nLiBUaGlzIHByZXZlbnRzIGFsYXJtaW5nIHdoZW4gdGhpcyBpbnN0YW5jZSBvZicsXG4gICAgICAgICAgJ0NvbnN0cnVjdEh1YiBmYWxscyBvdXQgb2YgU0xBIGZvciBuZXcgcGFja2FnZSBpbmdlc3Rpb24hJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdPckZhaWxpbmdgLFxuICAgICAgfVxuICAgICk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgbm90IHJ1bm5pbmcgb3IgZmFpbHMnLFxuICAgICAgbm90UnVubmluZ09yRmFpbGluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIE1JTiBzdGF0aXN0aWMsIHNvIGlmIGEgcnVuIGlzIHN1Y2Nlc3NmdWwgKGFuZCBoZW5jZSBlbWl0cyBhIDApLCB0aGlzIGFsYXJtIHdpbGwgbm90IHRyaWdnZXIuXG4gICAgY29uc3QgZ2F0ZXdheUVycm9yc0FsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljSHR0cEdhdGV3YXlFcnJvcnMoeyBwZXJpb2QsIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0gfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdHYXRld2F5RXJyb3JzJywge1xuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBoYXMgYmVlbiBlbmNvdW50ZXJpbmcgY29uc2lzdGVudCBIVFRQIGdhdGV3YXkgZXJyb3JzIHdoZW4gY29udGFjdGluZyBucG1qcyBzZXJ2ZXJzJyxcbiAgICAgICAgICAnZm9yIGFuIGhvdXIgb3IgbW9yZS4gVGhpcyBtZWFucyB0aGUgY2FuYXJ5IGhhcyBiZWVuIHVuYWJsZSB0byBldmFsdWF0ZSBTTEEgY29tcGxpYW5jZSBmb3IgdGhhdCBtdWNoIHRpbWUuJyxcbiAgICAgICAgICAnSXQgaXMgcHJvYmFibGUgdGhhdCBub3RoaW5nIGNhbiBiZSBkb25lIGV4Y2VwdCBmb3Igd2FpdGluZyBmb3IgbnBtIHNlcnZlcnMgdG8gY29tZSBiYWNrIG9ubGluZSwgYnV0IHRoZScsXG4gICAgICAgICAgJ3NpdHVhdGlvbiBzaG91bGQgYmUgY2hlY2tlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm90IGFub3RoZXIgcHJvYmxlbS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vR2F0ZXdheUVycm9yc2AsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA2MCxcbiAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgZXhwZXJpZW5jaW5nIEhUVFAgR2F0ZXdheSBlcnJvcnMnLFxuICAgICAgZ2F0ZXdheUVycm9yc0FsYXJtXG4gICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdQYWNrYWdlIENhbmFyeScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRHdlbGxUaW1lKHsgbGFiZWw6ICdEd2VsbCBUaW1lJyB9KSxcbiAgICAgICAgICBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZyh7IGxhYmVsOiAnVGltZSB0byBDYXRhbG9nJyB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgIGxhYmVsOiBgU0xBICgke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUcmFja2VkVmVyc2lvbkNvdW50KHsgbGFiZWw6ICdUcmFja2VkIFZlcnNpb24gQ291bnQnIH0pLFxuICAgICAgICBdLFxuICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdPYnNlcnZlZCBsYWcgb2YgcmVwbGljYXRlLm5wbWpzLmNvbScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRXN0aW1hdGVkTnBtUmVwbGljYUxhZyh7XG4gICAgICAgICAgICBsYWJlbDogYFJlcGxpY2EgbGFnICgke3BhY2thZ2VOYW1lfSlgLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogJyNmZmE1MDAnLFxuICAgICAgICAgICAgbGFiZWw6IHZpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIEhvdyBvZnRlbiAncmF0ZScgZ29lcyBpbnRvICdkdXJhdGlvbicgKHJvdW5kZWQgdXApXG4gKi9cbmZ1bmN0aW9uIGhvd09mdGVuKHJhdGU6IER1cmF0aW9uLCBkdXJhdGlvbjogRHVyYXRpb24pIHtcbiAgcmV0dXJuIE1hdGguY2VpbChkdXJhdGlvbi50b1NlY29uZHMoKSAvIHJhdGUudG9TZWNvbmRzKCkpO1xufVxuIl19
539
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVdvQztBQUNwQyx1REFBd0Q7QUFDeEQsdUVBQWdFO0FBQ2hFLHVEQUFpRDtBQUNqRCxtRkFBc0U7QUFDdEUsK0NBQWdFO0FBQ2hFLGlEQUE2RDtBQUU3RCw0Q0FBMkU7QUFDM0Usa0RBQTZDO0FBTzdDLGdEQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsMkNBQW9EO0FBQ3BELDZFQUt5QztBQUV6Qyw2REFBd0Q7QUFDeEQsK0RBQTBEO0FBRTFEOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTlDOzs7Ozs7R0FNRztBQUNILE1BQU0seUJBQXlCLEdBQUcsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFvQ3BEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCLFlBQW9DLFFBQW9CLEVBQUU7UUFBdEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7SUFBRyxDQUFDO0lBRXZELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDUTs7UUFFM0IsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLHFCQUFxQixDQUFDLGNBQWMsRUFBRTtRQUVsRCxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFO2dCQUNyRCxp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UUFBUSxDQUFDLElBQWMsRUFBRSxRQUFrQjtJQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtUnVsZSxcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBDb21wb3NpdGVBbGFybSxcbiAgR3JhcGhXaWRnZXQsXG4gIElXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IFNxc0V2ZW50U291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgbGFtYmRhRnVuY3Rpb25VcmwsIHMzT2JqZWN0VXJsLCBzcXNRdWV1ZVVybCB9IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB7IElNb25pdG9yaW5nIH0gZnJvbSAnLi4vbW9uaXRvcmluZy9hcGknO1xuaW1wb3J0IHR5cGUge1xuICBJUGFja2FnZVNvdXJjZSxcbiAgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLFxuICBQYWNrYWdlU291cmNlQmluZFJlc3VsdCxcbn0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgUlVOQk9PS19VUkwgfSBmcm9tICcuLi9ydW5ib29rLXVybCc7XG5pbXBvcnQgeyBTM1N0b3JhZ2VGYWN0b3J5IH0gZnJvbSAnLi4vczMvc3RvcmFnZSc7XG5pbXBvcnQgeyBOcG1Kc1BhY2thZ2VDYW5hcnkgfSBmcm9tICcuL25wbWpzL2NhbmFyeSc7XG5pbXBvcnQge1xuICBNQVJLRVJfRklMRV9OQU1FLFxuICBNRVRSSUNTX05BTUVTUEFDRSxcbiAgTWV0cmljTmFtZSxcbiAgUzNLZXlQcmVmaXgsXG59IGZyb20gJy4vbnBtanMvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBOcG1Kc0ZvbGxvd2VyIH0gZnJvbSAnLi9ucG1qcy9ucG0tanMtZm9sbG93ZXInO1xuaW1wb3J0IHsgU3RhZ2VBbmROb3RpZnkgfSBmcm9tICcuL25wbWpzL3N0YWdlLWFuZC1ub3RpZnknO1xuXG4vKipcbiAqIFRoZSBwZXJpb2RpY2l0eSBhdCB3aGljaCB0aGUgTnBtSnMgZm9sbG93ZXIgd2lsbCBydW4uIFRoaXMgTVVTVCBiZSBhIHZhbGlkXG4gKiBDbG91ZFdhdGNoIE1ldHJpYyBncmFpbiwgYXMgdGhpcyB3aWxsIGFsc28gYmUgdGhlIHBlcmlvZCBvZiB0aGUgQ2xvdWRXYXRjaFxuICogYWxhcm0gdGhhdCBtb250aW9ycyB0aGUgaGVhbHRoIG9mIHRoZSBmb2xsb3dlci5cbiAqL1xuY29uc3QgRk9MTE9XRVJfUlVOX1JBVEUgPSBEdXJhdGlvbi5taW51dGVzKDUpO1xuXG4vKipcbiAqIEFsYXJtIGlmIHdlIGhhdmVuJ3Qgc2VlbiBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lXG4gKlxuICogVGhlIENvdWNoREIgbGVhZGVyIG9jY2FzaW9uYWxseSBqdXN0IHN0YXJ0cyB0b3NzaW5nIG91dCB0aW1lb3V0cyBhbmQgdGhleVxuICogbWF5IGxhc3QgZm9yIGEgZ29vZCB3aGlsZS4gV2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgd2l0aCBvdXIgYWxhcm1zXG4gKiBvdGhlcndpc2Ugd2UncmUganVzdCBnb2luZyB0byBiZSB0b28gc3BhbW15LlxuICovXG5jb25zdCBOT19DSEFOR0VTX0FMQVJNX0RVUkFUSU9OID0gRHVyYXRpb24uaG91cnMoMSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnBtSnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHRvIHVzZSBmb3Igc3RhZ2luZyBucG0gcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgYnVja2V0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYWNrYWdlIGNhbmFyeSwgd2hpY2ggd2lsbCB0cmFjayBhdmFpbGFiaWxpdHkgb2YgYSBjYW5hcnlcbiAgICogcGFja2FnZSBpbiBDb25zdHJ1Y3RIdWIsIGFuZCBlbWl0IGRlZGljYXRlZCBtZXRyaWNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDYW5hcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSB0aGF0IGlzIG1vbml0b3JlZCBieSB0aGUgcGFja2FnZSBjYW5hcnksIGlmIGVuYWJsZWQgYnlcbiAgICogYGVuYWJsZUNhbmFyeWAuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjb25zdHJ1Y3QtaHViLXByb2JlJ1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5UGFja2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgaXQgaXMgc3VwcG9zZWQgdG8gdGFrZSBmb3IgcGFja2FnZXMgdG8gYmVjb21lXG4gICAqIHZpc2libGUgaW4gdGhpcyBDb25zdHJ1Y3RIdWIgaW5zdGFuY2UuIElmIGBlbmFibGVDYW5hcnlgIGlzIGVuYWJsZWQsIGFuXG4gICAqIGFsYXJtIHdpbGwgdHJpZ2dlciBpZiB0aGlzIFNMQSBpcyBicmVhY2hlZCBieSB0aGUgYGNhbmFyeVBhY2thZ2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDUpXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlTbGE/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgZ2V0cyBwYWNrYWdlIGRhdGEgZnJvbSB0aGUgbnBtanMuY29tIHBhY2thZ2UgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBOcG1KcyBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5wbUpzUHJvcHMgPSB7fSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGJhc2VVcmwsXG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIHF1ZXVlLFxuICAgICAgcmVwb3NpdG9yeSxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9uc1xuICApOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB7XG4gICAgcmVwb3NpdG9yeT8uYWRkRXh0ZXJuYWxDb25uZWN0aW9uKCdwdWJsaWM6bnBtanMnKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuc3RhZ2luZ0J1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCAnTnBtSnMvU3RhZ2luZ0J1Y2tldCcsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLFxuICAgICAgICAgICAgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWdlciA9IG5ldyBTdGFnZUFuZE5vdGlmeShzY29wZSwgJ05wbUpzLVN0YWdlQW5kTm90aWZ5Jywge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsICdTdGFnZXJETFEnLCB7XG4gICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgfSksXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vTnBtSlMtU3RhZ2VBbmROb3RpZnldIFN0YWdlcyB0YXJiYWxscyB0byBTMyBhbmQgbm90aWZpZXMgQ29uc3RydWN0SHViYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgUVVFVUVfVVJMOiBxdWV1ZS5xdWV1ZVVybCxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwR2lCXG4gICAgICByZXRyeUF0dGVtcHRzOiAyLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YWdlcik7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChzdGFnZXIpO1xuICAgIHF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHN0YWdlcik7XG5cbiAgICBzdGFnZXIuYWRkRXZlbnRTb3VyY2UoXG4gICAgICBuZXcgU3FzRXZlbnRTb3VyY2Uoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEsIHtcbiAgICAgICAgYmF0Y2hTaXplOiAxLFxuICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGZvbGxvd2VyID0gbmV3IE5wbUpzRm9sbG93ZXIoc2NvcGUsICdOcG1KcycsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7c2NvcGUubm9kZS5wYXRofS9OcG1Kc10gUGVyaW9kaWNhbGx5IHF1ZXJ5IG5wbWpzLmNvbSBpbmRleCBmb3IgbmV3IHBhY2thZ2VzYCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgRlVOQ1RJT05fTkFNRTogc3RhZ2VyLmZ1bmN0aW9uTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZW1vcnlTaXplOiAxMF8wMjQsIC8vIDEwIEdpQlxuICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogMSwgLy8gT25seSBvbmUgZXhlY3V0aW9uIGF0IGEgdGltZSwgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIG9uIHRoZSBTMyBtYXJrZXIgb2JqZWN0XG4gICAgICB0aW1lb3V0OiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuXG4gICAgYnVja2V0LmdyYW50UmVhZFdyaXRlKGZvbGxvd2VyLCBNQVJLRVJfRklMRV9OQU1FKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9sbG93ZXIpO1xuICAgIHN0YWdlci5ncmFudEludm9rZShmb2xsb3dlcik7XG5cbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsICdOcG1Kcy9TY2hlZHVsZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL1NjaGVkdWxlYCxcbiAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5yYXRlKEZPTExPV0VSX1JVTl9SQVRFKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9sbG93ZXIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJBbGFybXMoc2NvcGUsIGZvbGxvd2VyLCBzdGFnZXIsIG1vbml0b3JpbmcsIHJ1bGUpO1xuXG4gICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSAmJlxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICAgICdOUE0gSlMgU3RhZ2VyIERMUScsXG4gICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWVcbiAgICAgICk7XG4gICAgZm9sbG93ZXIuZGVhZExldHRlclF1ZXVlICYmXG4gICAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRETFFNZXRyaWNUb0Rhc2hib2FyZChcbiAgICAgICAgJ05QTSBKUyBGb2xsb3dlciBETFEnLFxuICAgICAgICBmb2xsb3dlci5kZWFkTGV0dGVyUXVldWVcbiAgICAgICk7XG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgZm9sbG93ZXIsXG4gICAgICAnTnBtSnNMYW1iZGEnXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBzdGFnZXIsXG4gICAgICAnTnBtSnMtU3RhZ2VBbmROb3RpZnlMYW1iZGEnXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmb2xsb3dlci5ub2RlLnBhdGgsXG4gICAgICBsaW5rczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ05wbUpzIEZvbGxvd2VyJyxcbiAgICAgICAgICB1cmw6IGxhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7IG5hbWU6ICdNYXJrZXIgT2JqZWN0JywgdXJsOiBzM09iamVjdFVybChidWNrZXQsIE1BUktFUl9GSUxFX05BTUUpIH0sXG4gICAgICAgIHsgbmFtZTogJ1N0YWdlcicsIHVybDogbGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKSB9LFxuICAgICAgICB7IG5hbWU6ICdTdGFnZXIgRExRJywgdXJsOiBzcXNRdWV1ZVVybChzdGFnZXIuZGVhZExldHRlclF1ZXVlISkgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGb2xsb3dlciBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvbGxvd2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvbGxvd2VyLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFt0aGlzLm1ldHJpY1JlbWFpbmluZ1RpbWUoeyBsYWJlbDogJ1JlbWFpbmluZyBUaW1lJyB9KV0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YWdlciBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhzdGFnZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW3N0YWdlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIEZvbGxvd2VyJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0NoYW5nZUNvdW50KHsgbGFiZWw6ICdDaGFuZ2UgQ291bnQnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkoeyBsYWJlbDogJ1VucHJvY2Vzc2FibGUnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTnBtSnNDaGFuZ2VBZ2UoeyBsYWJlbDogJ0xhZyB0byBucG1qcy5jb20nIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNQYWNrYWdlVmVyc2lvbkFnZSh7IGxhYmVsOiAnUGFja2FnZSBWZXJzaW9uIEFnZScgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IGxhYmVsOiAnTWlsbGlzZWNvbmRzJywgbWluOiAwLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnQ291Y2hEQiBDaGFuZ2VzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0xhc3RTZXEoeyBsYWJlbDogJ0xhc3QgU2VxdWVuY2UgTnVtYmVyJyB9KSxcbiAgICAgICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YWdlciBEZWFkLUxldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZShcbiAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdWaXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZShcbiAgICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKHRoaXMucHJvcHMuZW5hYmxlQ2FuYXJ5ID8/IHRydWVcbiAgICAgICAgICAgID8gdGhpcy5yZWdpc3RlckNhbmFyeShcbiAgICAgICAgICAgICAgICBmb2xsb3dlcixcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVBhY2thZ2UgPz8gJ2NvbnN0cnVjdC1odWItcHJvYmUnLFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuY2FuYXJ5U2xhID8/IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgICAgICAgYnVja2V0LFxuICAgICAgICAgICAgICAgIGJhc2VVcmwsXG4gICAgICAgICAgICAgICAgbW9uaXRvcmluZ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSB0aW1lIGl0IHRvb2sgdG8gcHJvY2VzcyBhIGNoYW5nZXMgYmF0Y2guXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQmF0Y2hQcm9jZXNzaW5nVGltZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkJBVENIX1BST0NFU1NJTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIGNvdW50IG9mIGNoYW5nZXMgdGhhdCB3ZXJlIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNDaGFuZ2VDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuQ0hBTkdFX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzZXF1ZW5jZSBudW1iZXIgdGhhdCB3YXMgcHJvY2Vzc2VkLiBUaGlzIG1ldHJpYyBjYW4gYmUgdXNlZCB0b1xuICAgKiBkaXNjb3ZlciB3aGVuIGEgc2VxdWVuY2UgcmVzZXQgaGFzIGhhcHBlbmVkIGluIHRoZSBDb3VjaERCIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0xhc3RTZXEob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1BWElNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5MQVNUX1NFUSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbWV0cmljTnBtSnNDaGFuZ2VBZ2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5OUE1KU19DSEFOR0VfQUdFLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWdlIG9mIHRoZSBvbGRlc3QgcGFja2FnZSB2ZXJzaW9uIHRoYXQgd2FzIHByb2Nlc3NlZC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpbnNwZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljUGFja2FnZVZlcnNpb25Db3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUEFDS0FHRV9WRVJTSU9OX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVlbWVkIHJlbGV2YW50LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1JlbGV2YW50UGFja2FnZVZlcnNpb25zKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRUxFVkFOVF9QQUNLQUdFX1ZFUlNJT05TLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdGhhdCB3YXMgcmVtYWluaW5nIHdoZW4gdGhlIGxhbWJkYSByZXR1cm5lZCBpbiBvcmRlciB0b1xuICAgKiBhdm9pZCBoaXR0aW5nIGEgdGltZW91dC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNSZW1haW5pbmdUaW1lKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuUkVNQUlOSU5HX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgY2hhbmdlcyB0aGF0IHdlcmUgbm90IHByb2Nlc3NlZCBkdWUgdG8gaGF2aW5nIGFuIGludmFsaWRcbiAgICogZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlVOUFJPQ0VTU0FCTEVfRU5USVRZLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJBbGFybXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBmb2xsb3dlcjogTnBtSnNGb2xsb3dlcixcbiAgICBzdGFnZXI6IFN0YWdlQW5kTm90aWZ5LFxuICAgIG1vbml0b3Jpbmc6IElNb25pdG9yaW5nLFxuICAgIHNjaGVkdWxlOiBSdWxlXG4gICkge1xuICAgIGNvbnN0IGZhaWx1cmVBbGFybSA9IGZvbGxvd2VyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL0ZhaWx1cmVzJywge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvRmFpbHVyZXNgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBmYWlsZWQhJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBEaXJlY3QgbGluayB0byBMYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9sbG93ZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRMb3dTZXZlcml0eUFsYXJtKCdOcG1Kcy9Gb2xsb3dlciBGYWlsdXJlcycsIGZhaWx1cmVBbGFybSk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nQWxhcm0gPSBmb2xsb3dlclxuICAgICAgLm1ldHJpY0ludm9jYXRpb25zKHsgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSB9KVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCAnTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZycsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL0ZvbGxvd2VyL05vdFJ1bm5pbmdgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBpcyBub3QgcnVubmluZyEnLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgJ05wbUpzL0ZvbGxvd2VyIE5vdCBSdW5uaW5nJyxcbiAgICAgIG5vdFJ1bm5pbmdBbGFybVxuICAgICk7XG5cbiAgICAvLyBUaGUgcGVyaW9kIGZvciB0aGlzIGFsYXJtIG5lZWRzIHRvIG1hdGNoIHRoZSBzY2hlZHVsaW5nIGludGVydmFsIG9mIHRoZVxuICAgIC8vIGZvbGxvd2VyLCBvdGhlcndpc2UgdGhlIG1ldHJpYyB3aWxsIGJlIHRvbyBzcGFyc2UgdG8gcHJvcGVybHkgZGV0ZWN0XG4gICAgLy8gcHJvYmxlbXMuXG4gICAgY29uc3Qgbm9DaGFuZ2VBbGFybSA9IHRoaXMubWV0cmljQ2hhbmdlQ291bnQoe1xuICAgICAgcGVyaW9kOiBGT0xMT1dFUl9SVU5fUkFURSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL05vQ2hhbmdlcycsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9Ob0NoYW5nZXNgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAnVGhlIE5wbUpzIGZvbGxvd2VyIGZ1bmN0aW9uIGlzIG5vdCBkaXNjb3ZlcmluZyBhbnkgY2hhbmdlcyBmcm9tIENvdWNoREIhJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogaG93T2Z0ZW4oRk9MTE9XRVJfUlVOX1JBVEUsIE5PX0NIQU5HRVNfQUxBUk1fRFVSQVRJT04pLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgLy8gSWYgdGhlIG1ldHJpYyBpcyBub3QgZW1pdHRlZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgemVyby5cbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcCBucG1qcy5jb20gY2hhbmdlcyBkaXNjb3ZlcmVkJyxcbiAgICAgIG5vQ2hhbmdlQWxhcm1cbiAgICApO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnbVZpc2libGUgKyBtSGlkZGVuJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtVmlzaWJsZTpcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgbUhpZGRlbjpcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHtcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oc2NvcGUsIGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvU3RhZ2VyL0RMUU5vdEVtcHR5YCwge1xuICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL1N0YWdlci9ETFFOb3RFbXB0eWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSlMgcGFja2FnZSBzdGFnZXIgaXMgZmFpbGluZyAtIGl0cyBkZWFkIGxldHRlciBxdWV1ZSBpcyBub3QgZW1wdHknLFxuICAgICAgICAnJyxcbiAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChzdGFnZXIpfWAsXG4gICAgICAgIGBMaW5rIHRvIHRoZSBkZWFkIGxldHRlciBxdWV1ZTogJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICBzdGFnZXIuZGVhZExldHRlclF1ZXVlIVxuICAgICAgICApfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1Kcy9TdGFnZXIgRExRIE5vdCBFbXB0eScsXG4gICAgICBkbHFOb3RFbXB0eUFsYXJtXG4gICAgKTtcblxuICAgIC8vIEZpbmFsbHkgLSB0aGUgXCJub3QgcnVubmluZ1wiIGFsYXJtIGRlcGVuZHMgb24gdGhlIHNjaGVkdWxlIChpdCB3b24ndCBydW4gdW50aWwgdGhlIHNjaGVkdWxlXG4gICAgLy8gZXhpc3RzISksIGFuZCB0aGUgc2NoZWR1bGUgZGVwZW5kcyBvbiB0aGUgZmFpbHVyZSBhbGFybSBleGlzdGluZyAod2UgZG9uJ3Qgd2FudCBpdCB0byBydW5cbiAgICAvLyBiZWZvcmUgd2UgY2FuIGtub3cgaXQgaXMgZmFpbGluZykuIFRoaXMgbWVhbnMgdGhlIHJldHVybmVkIGBJRGVwZW5kYWJsZWAgZWZmZWN0aXZlbHkgZW5zdXJlc1xuICAgIC8vIGFsbCBhbGFybXMgaGF2ZSBiZWVuIHByb3Zpc2lvbm5lZCBhbHJlYWR5ISBJc24ndCBpdCBuaWNlIVxuICAgIG5vdFJ1bm5pbmdBbGFybS5ub2RlLmFkZERlcGVuZGVuY3koc2NoZWR1bGUpO1xuICAgIHNjaGVkdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckNhbmFyeShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgLy8gQSBkdXJhdGlvbiBzcGVjaWZ5aW5nIGhvdyBsb25nIHdlIGV4cGVjdCB0aGUgcHJvYmUgcGFja2FnZSB0byBhcHBlYXIgb25cbiAgICAvLyBDb25zdHJ1Y3QgSHViIGFmdGVyIGl0IGdldHMgcHVibGlzaGVkIHRvIG5wbSwgYXNzdW1pbmcgdGhlIG5wbSByZXBsaWNhXG4gICAgLy8gaXMgdXAgdG8gZGF0ZSBldGMuXG4gICAgdmlzaWJpbGl0eVNsYTogRHVyYXRpb24sXG4gICAgYnVja2V0OiBJQnVja2V0LFxuICAgIGNvbnN0cnVjdEh1YkJhc2VVcmw6IHN0cmluZyxcbiAgICBtb25pdG9yaW5nOiBJTW9uaXRvcmluZ1xuICApOiBJV2lkZ2V0W10ge1xuICAgIGNvbnN0IGNhbmFyeSA9IG5ldyBOcG1Kc1BhY2thZ2VDYW5hcnkoc2NvcGUsICdDYW5hcnknLCB7XG4gICAgICBidWNrZXQsXG4gICAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwZXJpb2QgPSBEdXJhdGlvbi5taW51dGVzKDUpO1xuXG4gICAgY29uc3QgYWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgLy8gV2hlbiB0aGUgbnBtIHJlcGxpY2EgaXMgc3VmZmljaWVudGx5IGJlaGluZCB0aGUgcHJpbWFyeSwgdGhlIHBhY2thZ2Ugc291cmNlIHdpbGwgbm90IGJlXG4gICAgICAvLyBhYmxlIHRvIHJlZ2lzdGVyIG5ldyBjYW5hcnkgcGFja2FnZSB2ZXJzaW9ucyB3aXRoaW4gdGhlIFNMQS4gSW4gc3VjaCBjYXNlcywgdGhlcmUgaXNcbiAgICAgIC8vIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZSBleGNlcHQgZm9yIHdhaXRpbmcgdW50aWwgdGhlIHJlcGxpY2EgaGFzIGZpbmFsbHkgY2F1Z2h0IHVwLiBXZVxuICAgICAgLy8gaGVuY2Ugc3VwcHJlc3MgdGhlIGFsYXJtIGlmIHRoZSByZXBsaWNhIGxhZyBpcyBnZXR0aW5nIHdpdGhpbiAzIGV2YWx1YXRpb24gcGVyaW9kcyBvZiB0aGVcbiAgICAgIC8vIHZpc2JpbGl0eSBTTEEuXG4gICAgICBleHByZXNzaW9uOiBgSUYoRklMTChtTGFnLCBSRVBFQVQpIDwgJHtNYXRoLm1heChcbiAgICAgICAgdmlzaWJpbGl0eVNsYS50b1NlY29uZHMoKSAtIDMgKiBwZXJpb2QudG9TZWNvbmRzKCksXG4gICAgICAgIDMgKiBwZXJpb2QudG9TZWNvbmRzKClcbiAgICAgICl9LCBNQVgoW21Ed2VsbCwgbVRUQ10pKWAsXG4gICAgICBwZXJpb2QsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbUR3ZWxsOiBjYW5hcnkubWV0cmljRHdlbGxUaW1lKCksXG4gICAgICAgIG1UVEM6IGNhbmFyeS5tZXRyaWNUaW1lVG9DYXRhbG9nKCksXG4gICAgICAgIG1MYWc6IGNhbmFyeS5tZXRyaWNFc3RpbWF0ZWROcG1SZXBsaWNhTGFnKCksXG4gICAgICB9LFxuICAgIH0pLmNyZWF0ZUFsYXJtKGNhbmFyeSwgJ0FsYXJtJywge1xuICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9TTEEtQnJlYWNoZWRgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICBgTmV3IHZlcnNpb25zIG9mICR7cGFja2FnZU5hbWV9IGhhdmUgYmVlbiBwdWJsaXNoZWQgb3ZlciAke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSBhZ28gYW5kIGFyZSBzdGlsbCBub3QgdmlzaWJsZSBpbiBjb25zdHJ1Y3QgaHViYCxcbiAgICAgICAgYFJ1bmJvb2s6ICR7UlVOQk9PS19VUkx9YCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk5PVF9CUkVBQ0hJTkcsXG4gICAgICB0aHJlc2hvbGQ6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgfSk7XG4gICAgLy8gVGhpcyBpcyBkZWVtZWQgbG93IHNldmVyaXR5LCBiZWNhdXNlIHRoZSBucG0gcmVnaXN0cnkgcmVwbGljYSAocmVwbGljYXRlLm5wbWpzLmNvbSkgY2FuXG4gICAgLy8gb2NjYXNpb25hbGx5IGxhZyBzZXZlcmFsIGhvdXJzIGJlaGluZCB0aGUgcHJpbWFyeSAocmVnaXN0cnkubnBtanMuY29tKSwgYW5kIHdlIGNhbm5vdCBlYXNpbHlcbiAgICAvLyB0ZWxsIGFib3V0IHRoYXQuIFNvbWVvbmUgc2hvdWxkIGhhdmUgYSBsb29rLCBidXQgaW4gdmlydHVhbGx5IGFsbCBjYXNlcyB3ZSBoYXZlIHNlZW4gc28gZmFyLFxuICAgIC8vIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIG91ciBlbmQsIGJlc2lkZXMgd2FpdGluZyBmb3IgdGhlIHJlcGxpY2EgdG8gYmUgYWxsXG4gICAgLy8gY2F1Z2h0IHVwLlxuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOZXcgdmVyc2lvbiB2aXNpYmlsaXR5IFNMQSBicmVhY2hlZCcsXG4gICAgICBhbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBub3RSdW5uaW5nT3JGYWlsaW5nQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICBjYW5hcnksXG4gICAgICAnTm90UnVubmluZ09yRmFpbGluZycsXG4gICAgICB7XG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIGNhbmFyeVxuICAgICAgICAgICAgLm1ldHJpY0Vycm9ycyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnRmFpbGluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9GYWlsaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMCxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBjYW5hcnlcbiAgICAgICAgICAgIC5tZXRyaWNJbnZvY2F0aW9ucyh7IHBlcmlvZCwgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNIH0pXG4gICAgICAgICAgICAuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnTm90UnVubmluZycsIHtcbiAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHtjYW5hcnkubm9kZS5wYXRofS9Ob3RSdW5uaW5nYCxcbiAgICAgICAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuTEVTU19USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDIsXG4gICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBpcyBub3QgcnVubmluZyBvciBpcyBmYWlsaW5nLiBUaGlzIHByZXZlbnRzIGFsYXJtaW5nIHdoZW4gdGhpcyBpbnN0YW5jZSBvZicsXG4gICAgICAgICAgJ0NvbnN0cnVjdEh1YiBmYWxscyBvdXQgb2YgU0xBIGZvciBuZXcgcGFja2FnZSBpbmdlc3Rpb24hJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L05vdFJ1bm5pbmdPckZhaWxpbmdgLFxuICAgICAgfVxuICAgICk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgbm90IHJ1bm5pbmcgb3IgZmFpbHMnLFxuICAgICAgbm90UnVubmluZ09yRmFpbGluZ0FsYXJtXG4gICAgKTtcblxuICAgIC8vIFVzaW5nIE1JTiBzdGF0aXN0aWMsIHNvIGlmIGEgcnVuIGlzIHN1Y2Nlc3NmdWwgKGFuZCBoZW5jZSBlbWl0cyBhIDApLCB0aGlzIGFsYXJtIHdpbGwgbm90IHRyaWdnZXIuXG4gICAgY29uc3QgZ2F0ZXdheUVycm9yc0FsYXJtID0gY2FuYXJ5XG4gICAgICAubWV0cmljSHR0cEdhdGV3YXlFcnJvcnMoeyBwZXJpb2QsIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0gfSlcbiAgICAgIC5jcmVhdGVBbGFybShjYW5hcnksICdHYXRld2F5RXJyb3JzJywge1xuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgJ1RoZSBOcG1KcyBwYWNrYWdlIGNhbmFyeSBoYXMgYmVlbiBlbmNvdW50ZXJpbmcgY29uc2lzdGVudCBIVFRQIGdhdGV3YXkgZXJyb3JzIHdoZW4gY29udGFjdGluZyBucG1qcyBzZXJ2ZXJzJyxcbiAgICAgICAgICAnZm9yIGFuIGhvdXIgb3IgbW9yZS4gVGhpcyBtZWFucyB0aGUgY2FuYXJ5IGhhcyBiZWVuIHVuYWJsZSB0byBldmFsdWF0ZSBTTEEgY29tcGxpYW5jZSBmb3IgdGhhdCBtdWNoIHRpbWUuJyxcbiAgICAgICAgICAnSXQgaXMgcHJvYmFibGUgdGhhdCBub3RoaW5nIGNhbiBiZSBkb25lIGV4Y2VwdCBmb3Igd2FpdGluZyBmb3IgbnBtIHNlcnZlcnMgdG8gY29tZSBiYWNrIG9ubGluZSwgYnV0IHRoZScsXG4gICAgICAgICAgJ3NpdHVhdGlvbiBzaG91bGQgYmUgY2hlY2tlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgbm90IGFub3RoZXIgcHJvYmxlbS4nLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBSdW5ib29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGFsYXJtTmFtZTogYCR7Y2FuYXJ5Lm5vZGUucGF0aH0vR2F0ZXdheUVycm9yc2AsXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA2MCxcbiAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgICdOcG1KcyBGb2xsb3dlciBDYW5hcnkgaXMgZXhwZXJpZW5jaW5nIEhUVFAgR2F0ZXdheSBlcnJvcnMnLFxuICAgICAgZ2F0ZXdheUVycm9yc0FsYXJtXG4gICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdQYWNrYWdlIENhbmFyeScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRHdlbGxUaW1lKHsgbGFiZWw6ICdEd2VsbCBUaW1lJyB9KSxcbiAgICAgICAgICBjYW5hcnkubWV0cmljVGltZVRvQ2F0YWxvZyh7IGxhYmVsOiAnVGltZSB0byBDYXRhbG9nJyB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgIGxhYmVsOiBgU0xBICgke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUcmFja2VkVmVyc2lvbkNvdW50KHsgbGFiZWw6ICdUcmFja2VkIFZlcnNpb24gQ291bnQnIH0pLFxuICAgICAgICBdLFxuICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdPYnNlcnZlZCBsYWcgb2YgcmVwbGljYXRlLm5wbWpzLmNvbScsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBjYW5hcnkubWV0cmljRXN0aW1hdGVkTnBtUmVwbGljYUxhZyh7XG4gICAgICAgICAgICBsYWJlbDogYFJlcGxpY2EgbGFnICgke3BhY2thZ2VOYW1lfSlgLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogJyNmZmE1MDAnLFxuICAgICAgICAgICAgbGFiZWw6IHZpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpLFxuICAgICAgICAgICAgdmFsdWU6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfVxufVxuXG4vKipcbiAqIEhvdyBvZnRlbiAncmF0ZScgZ29lcyBpbnRvICdkdXJhdGlvbicgKHJvdW5kZWQgdXApXG4gKi9cbmZ1bmN0aW9uIGhvd09mdGVuKHJhdGU6IER1cmF0aW9uLCBkdXJhdGlvbjogRHVyYXRpb24pIHtcbiAgcmV0dXJuIE1hdGguY2VpbChkdXJhdGlvbi50b1NlY29uZHMoKSAvIHJhdGUudG9TZWNvbmRzKCkpO1xufVxuIl19
@@ -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.11" };
53
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.12" };
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.11" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.12" };
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.11" };
150
+ TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.12" };
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.11" };
16
+ FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.12" };
17
17
  class FilterTypeRadio extends FilterType {
18
18
  bind() {
19
19
  return { type: 'radio' };
@@ -46,5 +46,5 @@ class PackageTagGroup {
46
46
  }
47
47
  exports.PackageTagGroup = PackageTagGroup;
48
48
  _b = JSII_RTTI_SYMBOL_1;
49
- PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.11" };
49
+ PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.12" };
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCOztRQUF4QyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxVQUFVLG1DQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDO0lBQ0osQ0FBQzs7QUFsQkgsMENBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJUeXBlVmFsdWUge1xuICByZWFkb25seSB0eXBlOiAnY2hlY2tib3gnIHwgJ3JhZGlvJztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbHRlclR5cGUge1xuICBzdGF0aWMgY2hlY2tib3goKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlQ2hlY2tib3goKTtcbiAgfVxuXG4gIHN0YXRpYyByYWRpbygpOiBGaWx0ZXJUeXBlIHtcbiAgICByZXR1cm4gbmV3IEZpbHRlclR5cGVSYWRpbygpO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IGJpbmQoKTogRmlsdGVyVHlwZVZhbHVlO1xufVxuXG5jbGFzcyBGaWx0ZXJUeXBlUmFkaW8gZXh0ZW5kcyBGaWx0ZXJUeXBlIHtcbiAgcHVibGljIGJpbmQoKTogRmlsdGVyVHlwZVZhbHVlIHtcbiAgICByZXR1cm4geyB0eXBlOiAncmFkaW8nIH07XG4gIH1cbn1cblxuY2xhc3MgRmlsdGVyVHlwZUNoZWNrYm94IGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ2NoZWNrYm94JyB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwUHJvcHMge1xuICAvKipcbiAgICogR3JvdXAgbGFiZWwgdG8gZGlzcGxheS4gRmFsbHMgYmFjayB0byBpZCBpZiBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgbWVzc2FnZSB0byBzaG93IHdpdGhpbiBhIHRvb2x0aXAgbmV4dCB0byB0aGUgZmlsdGVyIGxhYmVsXG4gICAqL1xuICByZWFkb25seSB0b29sdGlwPzogc3RyaW5nO1xuICAvKipcbiAgICogQWxsb3dzIHRvIHNwZWNpZnkgdGhlIGdyb3VwIGZpbHRlciB0eXBlLiBEZWZhdWx0cyB0byBjaGVja2JveCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJUeXBlPzogRmlsdGVyVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnR3JvdXBDb25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgY3VzdG9tIHBhY2thZ2UgdGFnIGdyb3VwXG4gKi9cbmV4cG9ydCBjbGFzcyBQYWNrYWdlVGFnR3JvdXAge1xuICBwdWJsaWMgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0b29sdGlwPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyVHlwZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZywgcHJvcHM/OiBQYWNrYWdlVGFnR3JvdXBQcm9wcykge1xuICAgIHRoaXMubGFiZWwgPSBwcm9wcz8ubGFiZWw7XG4gICAgdGhpcy50b29sdGlwID0gcHJvcHM/LnRvb2x0aXA7XG4gICAgdGhpcy5maWx0ZXJUeXBlID0gKHByb3BzPy5maWx0ZXJUeXBlID8/IEZpbHRlclR5cGUuY2hlY2tib3goKSkuYmluZCgpLnR5cGU7XG4gIH1cblxuICBwdWJsaWMgYmluZCgpOiBQYWNrYWdlVGFnR3JvdXBDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgdG9vbHRpcDogdGhpcy50b29sdGlwLFxuICAgICAgZmlsdGVyVHlwZTogdGhpcy5maWx0ZXJUeXBlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -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.11" };
34
+ PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.12" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQWdCdEIsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBZjdDOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGlCQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSU0sSUFBSTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOztBQXBCSCxrQ0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGphdmFzY3JpcHQgZmlsZSB0byBsb2FkIGJlZm9yZSB0aGUgd2ViYXBwLlxuICogVGhpcyBjYW4gYWxsb3cgb3BlcmF0b3JzIHRvIGFkZCB0aGVpciBvd24gY2xpZW50IG1vbml0b3JzIG9yIGFuYWx5dGljcyBpZiB0aGV5IHdpc2hcbiAqL1xuZXhwb3J0IGNsYXNzIFByZWxvYWRGaWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQcmVsb2FkRmlsZSBpbnN0YW5jZSBmcm9tIGEgZmlsZXBhdGggdG8gbG9hZFxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICBjb25zdCBkYXRhID0gcmVhZEZpbGVTeW5jKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZGlyZWN0bHkgZnJvbSBzb3VyY2UgY29kZVxuICAgKi9cbiAgc3RhdGljIGZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFByZWxvYWRGaWxlIHtcbiAgICByZXR1cm4gbmV3IFByZWxvYWRGaWxlKGNvZGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYXRhOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIGJpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG59XG4iXX0=