@aws-cdk-testing/cli-integ 3.16.0 → 3.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/integ-test.js CHANGED
@@ -21,6 +21,9 @@ let failed = false;
21
21
  */
22
22
  function integTest(name, callback, timeoutMillis) {
23
23
  const runner = shouldSkip(name) ? test.skip : test;
24
+ // we're quite a bit of sporadic failures due to environmental causes.
25
+ // lets retry 3 times to try and mitigate that.
26
+ jest.retryTimes(3);
24
27
  runner(name, async () => {
25
28
  const output = new corking_1.MemoryStream();
26
29
  output.write('================================================================\n');
@@ -189,4 +192,4 @@ async function atomicWrite(fileName, contents) {
189
192
  await fs.promises.writeFile(tmp, contents);
190
193
  await fs.promises.rename(tmp, fileName);
191
194
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsOEJBOEZDO0FBa0JELG9DQUdDO0FBakpELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBQXlDO0FBRXpDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDcEcsS0FBSyxDQUFDLElBQUksQ0FBQztLQUNYLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUVuRCxzRUFBc0U7QUFDdEUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBVW5COztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBaUQsRUFDakQsYUFBc0I7SUFFdEIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFbkQs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RyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBRTlCLDJDQUEyQztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN4QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELEtBQUssVUFBVSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxRQUFnQjtJQUMzRCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRSxNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBNZW1vcnlTdHJlYW0gfSBmcm9tICcuL2NvcmtpbmcnO1xuXG5jb25zdCBTS0lQX1RFU1RTID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdza2lwLXRlc3RzLnR4dCcpLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pXG4gIC5zcGxpdCgnXFxuJylcbiAgLm1hcCh4ID0+IHgudHJpbSgpKVxuICAuZmlsdGVyKHggPT4geCAmJiAheC5zdGFydHNXaXRoKCcjJykpO1xuXG5pZiAoU0tJUF9URVNUUy5sZW5ndGggPiAwKSB7XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGDihLnvuI8gU2tpcHBpbmcgdGVzdHM6ICR7SlNPTi5zdHJpbmdpZnkoU0tJUF9URVNUUyl9XFxuYCk7XG59XG5cbi8vIFdoZXRoZXIgd2Ugd2FudCB0byBzdG9wIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlLCBmb3IgcXVpY2tlciBkZWJ1Z2dpbmcgKGhvcGVmdWxseSkuXG5jb25zdCBGQUlMX0ZBU1QgPSBwcm9jZXNzLmVudi5GQUlMX0ZBU1QgPT09ICd0cnVlJztcblxuLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBzdWl0ZSBoYXMgZmFpbGVkLiBJZiBzbywgd2Ugc3RvcCBydW5uaW5nLlxubGV0IGZhaWxlZCA9IGZhbHNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb250ZXh0IHtcbiAgcmVhZG9ubHkgcmFuZG9tU3RyaW5nOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW07XG4gIGxvZyhzOiBzdHJpbmcpOiB2b2lkO1xuICByZXBvcnRXYWl0VGltZShtczogbnVtYmVyKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGplc3QncyAndGVzdCcgd2hpY2ggdGFrZXMgcmVncmVzc2lvbi1kaXNhYmxlZCB0ZXN0cyBpbnRvIGFjY291bnQgYW5kIHByaW50cyBhIGJhbm5lclxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZWdUZXN0KFxuICBuYW1lOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiAoY29udGV4dDogVGVzdENvbnRleHQpID0+IFByb21pc2U8dm9pZD4sXG4gIHRpbWVvdXRNaWxsaXM/OiBudW1iZXIsXG4pOiB2b2lkIHtcbiAgY29uc3QgcnVubmVyID0gc2hvdWxkU2tpcChuYW1lKSA/IHRlc3Quc2tpcCA6IHRlc3Q7XG5cbiAgcnVubmVyKG5hbWUsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvdXRwdXQgPSBuZXcgTWVtb3J5U3RyZWFtKCk7XG5cbiAgICBvdXRwdXQud3JpdGUoJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4nKTtcbiAgICBvdXRwdXQud3JpdGUoYCR7bmFtZX1cXG5gKTtcbiAgICBvdXRwdXQud3JpdGUoJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG4nKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgd2FpdFRpbWUgPSAwO1xuXG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYFtJTlRFRyBURVNUOjoke25hbWV9XSBTdGFydGluZyAocGlkICR7cHJvY2Vzcy5waWR9KS4uLlxcbmApO1xuICAgIG1heWJlUHJpbnRNZW1vcnlVc2FnZShuYW1lKTtcbiAgICB0cnkge1xuICAgICAgaWYgKEZBSUxfRkFTVCAmJiBmYWlsZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGQUlMX0ZBU1QgcmVxdWVzdGVkIGFuZCBjdXJyZW50bHkgZmFpbGluZy4gU3RvcHBpbmcgdGVzdCBlYXJseS4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV0ID0gYXdhaXQgY2FsbGJhY2soe1xuICAgICAgICBvdXRwdXQsXG4gICAgICAgIHJhbmRvbVN0cmluZzogcmFuZG9tU3RyaW5nKCksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxvZyhzOiBzdHJpbmcpIHtcbiAgICAgICAgICBvdXRwdXQud3JpdGUoYCR7c31cXG5gKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVwb3J0V2FpdFRpbWUobikge1xuICAgICAgICAgIHdhaXRUaW1lICs9IG47XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgd3JpdGVMb2cobmFtZSwge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAvLyBQcmludCB0aGUgYnVmZmVyZWQgb3V0cHV0LCBvbmx5IGlmIHRoZSB0ZXN0IGZhaWxzLlxuICAgICAgZmFpbGVkID0gdHJ1ZTtcblxuICAgICAgb3V0cHV0LndyaXRlKGUubWVzc2FnZSk7XG4gICAgICBvdXRwdXQud3JpdGUoZS5zdGFjayk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG91dHB1dDogb3V0cHV0LnRvU3RyaW5nKCksXG4gICAgICAgIHRvdGFsRHVyYXRpb246IERhdGUubm93KCkgLSBzdGFydCxcbiAgICAgICAgd2FpdFRpbWUsXG4gICAgICB9KTtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gRmFpbGVkOiAke2V9XFxuYCk7XG5cbiAgICAgIGNvbnN0IGlzR2l0SHViID0gISFwcm9jZXNzLmVudi5HSVRIVUJfUlVOX0lEO1xuXG4gICAgICBpZiAoaXNHaXRIdWIpIHtcbiAgICAgICAgLy8gR2l0SHViIEFjdGlvbnMgY29tcGF0aWJsZSBvdXRwdXQgZm9ybWF0dGluZ1xuICAgICAgICAvLyBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hY3Rpb25zL3dyaXRpbmctd29ya2Zsb3dzL2Nob29zaW5nLXdoYXQteW91ci13b3JrZmxvdy1kb2VzL3dvcmtmbG93LWNvbW1hbmRzLWZvci1naXRodWItYWN0aW9ucyNzZXR0aW5nLWFuLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgbGV0IHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZGVyci53cml0ZShgOjplcnJvciB0aXRsZT1GYWlsZWQgJHtuYW1lfTo6JHtlLm1lc3NhZ2V9XFxuYCk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZGVyci5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmludCBvdXRwdXQgb25seSBpZiB0aGUgdGVzdCBmYWlscy4gVXNlICdjb25zb2xlLmxvZycgc28gdGhlIG91dHB1dCBpcyBidWZmZXJlZCBieVxuICAgICAgICAvLyBqZXN0IGFuZCBwcmludHMgd2l0aG91dCBhIHN0YWNrIHRyYWNlIChpZiB2ZXJib3NlOiBmYWxzZSkuXG4gICAgICAgIHdyaXR0ZW4gPSBwcm9jZXNzLnN0ZG91dC53cml0ZShbXG4gICAgICAgICAgYDo6Z3JvdXA6OkZhaWx1cmUgZGV0YWlsczogJHtuYW1lfSAoY2xpY2sgdG8gZXhwYW5kKVxcbmAsXG4gICAgICAgICAgYCR7b3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCl9XFxuYCxcbiAgICAgICAgICAnOjplbmRncm91cDo6XFxuJyxcbiAgICAgICAgXS5qb2luKCcnKSk7XG4gICAgICAgIGlmICghd3JpdHRlbikge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIGRyYWluXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKG9rKSA9PiBwcm9jZXNzLnN0ZG91dC5vbmNlKCdkcmFpbicsIG9rKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZyhvdXRwdXQuYnVmZmVyKCkudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydDtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gRG9uZSAoJHtodW1hblRpbWUoZHVyYXRpb24pfSkuXFxuYCk7XG4gICAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgfVxuICB9LCB0aW1lb3V0TWlsbGlzKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkU2tpcCh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBTS0lQX1RFU1RTLmluY2x1ZGVzKHRlc3ROYW1lKTtcbn1cblxuZnVuY3Rpb24gbWF5YmVQcmludE1lbW9yeVVzYWdlKHRlc3ROYW1lOiBzdHJpbmcpIHtcbiAgaWYgKHByb2Nlc3MuZW52LklOVEVHX01FTU9SWV9ERUJVRyAhPT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG1lbW9yeVVzYWdlID0gcHJvY2Vzcy5tZW1vcnlVc2FnZSgpIGFzIGFueTtcbiAgY29uc3QgcmVwb3J0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWVtb3J5VXNhZ2UpKSB7XG4gICAgcmVwb3J0W2tleV0gPSBgJHtNYXRoLnJvdW5kKHZhbHVlIGFzIG51bWJlciAvIDEwMjQgLyAxMDI0KX0gTUJgO1xuICB9XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHt0ZXN0TmFtZX1dIE1lbW9yeSBVc2FnZTogJHtKU09OLnN0cmluZ2lmeShyZXBvcnQpfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyaW5nKCkge1xuICAvLyBDcmF6eVxuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikucmVwbGFjZSgvW15hLXowLTldKy9nLCAnJyk7XG59XG5cbi8qKlxuICogV3JpdGUgbG9nIGZpbGVzXG4gKlxuICogV3JpdGUgYSB0ZXh0IGxvZyB0byBgJHtJTlRFR19MT0dTfS9bRkFJTEVELV1kZXNjcmlwdGlvbi1vZi10ZXN0LnR4dGAsIGFuZCBhIHNpbmdsZVxuICogbGluZSBvZiBhIE1hcmtkb3duIHRhYmxlIHRvIGAke0lOVEVHX0xPR1N9L21kLzEtZGVzY3JpcHRpb24tb2YtdGVzdC5tZGAuXG4gKlxuICogVGhlIGxhdHRlciBhcmUgZGVzaWduZWQgdG8gYmUgZ2xvYmNhdHRlZCB0byAkR0lUSFVCX1NURVBfU1VNTUFSWSBhZnRlciB0ZXN0c1xuICogKHdlIGRvbid0IHdyaXRlIHRoZXJlIGRpcmVjdGx5IHRvIGF2b2lkIGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIG11bHRpcGxlIHByb2Nlc3Nlc1xuICogcmVhZGluZyBhbmQgbXV0YXRpbmcgdGhlIHNhbWUgZmlsZSkuXG4gKlxuICogV2UgZG8gdXNlIGBhdG9taWNXcml0ZWAgdG8gd3JpdGUgZmlsZXMgLS0gaXQncyBvbmx5IG5lY2Vzc2FyeSBmb3IgdGhlIGhlYWRlciBmaWxlLFxuICogd2hpY2ggZ2V0cyBvdmVyd3JpdHRlbiBieSBldmVyeSB0ZXN0LCBqdXN0IHRvIG1ha2Ugc3VyZSBpdCBwcm9wZXJseSBleGlzdHMgKHNob3VsZG4ndFxuICogZW5kIHVwIGVtcHR5IG9yIHdpdGggaW50ZXJsZWF2ZWQgY29udGVudHMpLiBUaGUgb3RoZXIgd3JpdGVzIGFyZSBub3RcbiAqIGNvbnRlbmRlZCBhbmQgZG9uJ3QgbmVlZCB0byBiZSBhdG9taWMsIGJ1dCB0aGUgZnVuY3Rpb24gaXMganVzdCBlcmdvbm9taWMgdG8gdXNlLlxuICovXG5hc3luYyBmdW5jdGlvbiB3cml0ZUxvZyh0ZXN0TmFtZTogc3RyaW5nLCByZXN1bHQ6IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgb3V0cHV0OiBzdHJpbmc7XG4gIHRvdGFsRHVyYXRpb246IG51bWJlcjtcbiAgd2FpdFRpbWU6IG51bWJlcjtcbn0pIHtcbiAgaWYgKHByb2Nlc3MuZW52LklOVEVHX0xPR1MpIHtcbiAgICAvLyBXcml0ZSB0aGUgbG9nIGZpbGVcbiAgICBjb25zdCBzbHVnID0gc2x1Z2lmeSh0ZXN0TmFtZSk7XG4gICAgY29uc3QgbG9nRmlsZU5hbWUgPSBgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS8ke3Jlc3VsdC5zdWNjZXNzID8gJycgOiAnRkFJTEVELSd9JHtzbHVnfS50eHRgO1xuICAgIGF3YWl0IGF0b21pY1dyaXRlKGxvZ0ZpbGVOYW1lLCByZXN1bHQub3V0cHV0KTtcblxuICAgIC8vIFdyaXRlIGEgcm93IGZvciB0aGUgbWFya2Rvd24gdGFibGVcbiAgICAvLyBTb3J0IGZhaWx1cmVzIGJlZm9yZSBzdWNjZXNzZXMsIGFuZCB0aGUgdGFibGUgaGVhZGVyIGJlZm9yZSBhbGxcbiAgICBjb25zdCBtZEZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vbWQvJHtyZXN1bHQuc3VjY2VzcyA/ICcyJyA6ICcxJ30tJHtzbHVnfS5tZGA7XG4gICAgY29uc3QgY29sdW1uczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4gPSBbXG4gICAgICBbJ1Jlc3VsdCcsIHJlc3VsdC5zdWNjZXNzID8gJ3Bhc3Mg4pyFJyA6ICdmYWlsIOKdjCddLFxuICAgICAgWydUZXN0IE5hbWUnLCB0ZXN0TmFtZV0sXG4gICAgICBbJ1Rlc3QgRHVyYXRpb24nLCBodW1hblRpbWUocmVzdWx0LnRvdGFsRHVyYXRpb24gLSByZXN1bHQud2FpdFRpbWUpXSxcbiAgICAgIFsnV2FpdCBUaW1lJywgcmVzdWx0LndhaXRUaW1lID4gMCA/IGh1bWFuVGltZShyZXN1bHQud2FpdFRpbWUpIDogJy0nXSxcbiAgICBdO1xuICAgIGF3YWl0IGF0b21pY1dyaXRlKGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLzAtaGVhZGVyLm1kYCwgW1xuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoW2NvbCwgX3ZhbF0pID0+IGNvbCkuam9pbignIHwgJyl9IHxgLFxuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoKSA9PiAnLS0tLS0tLS0tLS0nKS5qb2luKCcgfCAnKX0gfGAsXG4gICAgXS5tYXAoeCA9PiBgJHt4fVxcbmApLmpvaW4oJycpKTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShtZEZpbGVOYW1lLFxuICAgICAgYHwgJHtjb2x1bW5zLm1hcCgoW19jb2wsIHZhbF0pID0+IHZhbCkuam9pbignIHwgJyl9IHxcXG5gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW1hblRpbWUoZGVsdGE6IG51bWJlcikge1xuICBjb25zdCBjb21wb25lbnRzID0gW107XG5cbiAgY29uc3QgUyA9IDEwMDA7XG4gIGNvbnN0IE0gPSA2MCAqIFM7XG4gIGNvbnN0IEggPSA2MCAqIE07XG5cbiAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKGRlbHRhIC8gSCk7XG4gIGlmIChob3VycyA+IDApIHtcbiAgICBjb21wb25lbnRzLnB1c2goYCR7aG91cnN9aGApO1xuICAgIGRlbHRhIC09IGhvdXJzICogSDtcbiAgfVxuICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihkZWx0YSAvIE0pO1xuICBpZiAobWludXRlcyA+IDApIHtcbiAgICBjb21wb25lbnRzLnB1c2goYCR7bWludXRlc31tYCk7XG4gICAgZGVsdGEgLT0gbWludXRlcyAqIE07XG4gIH1cbiAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBTKTtcbiAgaWYgKHNlY29uZHMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke3NlY29uZHN9c2ApO1xuICAgIGRlbHRhIC09IHNlY29uZHMgKiBTO1xuICB9XG4gIGNvbXBvbmVudHMucHVzaChgJHtkZWx0YX1tc2ApO1xuXG4gIC8vIFJldGFpbiB0aGUgMiBtb3N0IHNpZ25pZmljYW50IGNvbXBvbmVudHNcbiAgcmV0dXJuIGNvbXBvbmVudHMuc2xpY2UoMCwgMikuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKSB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05XyxdKy9nLCAnLScpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBhdG9taWNXcml0ZShmaWxlTmFtZTogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKSB7XG4gIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZShmaWxlTmFtZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHRtcCA9IGAke2ZpbGVOYW1lfS4ke3Byb2Nlc3MucGlkfWA7XG4gIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZSh0bXAsIGNvbnRlbnRzKTtcbiAgYXdhaXQgZnMucHJvbWlzZXMucmVuYW1lKHRtcCwgZmlsZU5hbWUpO1xufVxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsOEJBa0dDO0FBa0JELG9DQUdDO0FBckpELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBQXlDO0FBRXpDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDcEcsS0FBSyxDQUFDLElBQUksQ0FBQztLQUNYLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUVuRCxzRUFBc0U7QUFDdEUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBVW5COztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBaUQsRUFDakQsYUFBc0I7SUFFdEIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFbkQs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QUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUU5QiwyQ0FBMkM7SUFDM0MsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLENBQVM7SUFDeEIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7SUFDM0QsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFckUsTUFBTSxHQUFHLEdBQUcsR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTWVtb3J5U3RyZWFtIH0gZnJvbSAnLi9jb3JraW5nJztcblxuY29uc3QgU0tJUF9URVNUUyA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2tpcC10ZXN0cy50eHQnKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KVxuICAuc3BsaXQoJ1xcbicpXG4gIC5tYXAoeCA9PiB4LnRyaW0oKSlcbiAgLmZpbHRlcih4ID0+IHggJiYgIXguc3RhcnRzV2l0aCgnIycpKTtcblxuaWYgKFNLSVBfVEVTVFMubGVuZ3RoID4gMCkge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShg4oS577iPIFNraXBwaW5nIHRlc3RzOiAke0pTT04uc3RyaW5naWZ5KFNLSVBfVEVTVFMpfVxcbmApO1xufVxuXG4vLyBXaGV0aGVyIHdlIHdhbnQgdG8gc3RvcCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSwgZm9yIHF1aWNrZXIgZGVidWdnaW5nIChob3BlZnVsbHkpLlxuY29uc3QgRkFJTF9GQVNUID0gcHJvY2Vzcy5lbnYuRkFJTF9GQVNUID09PSAndHJ1ZSc7XG5cbi8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGUgc3VpdGUgaGFzIGZhaWxlZC4gSWYgc28sIHdlIHN0b3AgcnVubmluZy5cbmxldCBmYWlsZWQgPSBmYWxzZTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtO1xuICBsb2coczogc3RyaW5nKTogdm9pZDtcbiAgcmVwb3J0V2FpdFRpbWUobXM6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IHNob3VsZFNraXAobmFtZSkgPyB0ZXN0LnNraXAgOiB0ZXN0O1xuXG4gIC8vIHdlJ3JlIHF1aXRlIGEgYml0IG9mIHNwb3JhZGljIGZhaWx1cmVzIGR1ZSB0byBlbnZpcm9ubWVudGFsIGNhdXNlcy5cbiAgLy8gbGV0cyByZXRyeSAzIHRpbWVzIHRvIHRyeSBhbmQgbWl0aWdhdGUgdGhhdC5cbiAgamVzdC5yZXRyeVRpbWVzKDMpO1xuXG4gIHJ1bm5lcihuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IE1lbW9yeVN0cmVhbSgpO1xuXG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG4gICAgb3V0cHV0LndyaXRlKGAke25hbWV9XFxuYCk7XG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IHdhaXRUaW1lID0gMDtcblxuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gU3RhcnRpbmcgKHBpZCAke3Byb2Nlc3MucGlkfSkuLi5cXG5gKTtcbiAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChGQUlMX0ZBU1QgJiYgZmFpbGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRkFJTF9GQVNUIHJlcXVlc3RlZCBhbmQgY3VycmVudGx5IGZhaWxpbmcuIFN0b3BwaW5nIHRlc3QgZWFybHkuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGNhbGxiYWNrKHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICByYW5kb21TdHJpbmc6IHJhbmRvbVN0cmluZygpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsb2coczogc3RyaW5nKSB7XG4gICAgICAgICAgb3V0cHV0LndyaXRlKGAke3N9XFxuYCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydFdhaXRUaW1lKG4pIHtcbiAgICAgICAgICB3YWl0VGltZSArPSBuO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgb3V0cHV0OiBvdXRwdXQudG9TdHJpbmcoKSxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogRGF0ZS5ub3coKSAtIHN0YXJ0LFxuICAgICAgICB3YWl0VGltZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gUHJpbnQgdGhlIGJ1ZmZlcmVkIG91dHB1dCwgb25seSBpZiB0aGUgdGVzdCBmYWlscy5cbiAgICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICAgIG91dHB1dC53cml0ZShlLm1lc3NhZ2UpO1xuICAgICAgb3V0cHV0LndyaXRlKGUuc3RhY2spO1xuXG4gICAgICBhd2FpdCB3cml0ZUxvZyhuYW1lLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIEZhaWxlZDogJHtlfVxcbmApO1xuXG4gICAgICBjb25zdCBpc0dpdEh1YiA9ICEhcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRDtcblxuICAgICAgaWYgKGlzR2l0SHViKSB7XG4gICAgICAgIC8vIEdpdEh1YiBBY3Rpb25zIGNvbXBhdGlibGUgb3V0cHV0IGZvcm1hdHRpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy93b3JrZmxvdy1jb21tYW5kcy1mb3ItZ2l0aHViLWFjdGlvbnMjc2V0dGluZy1hbi1lcnJvci1tZXNzYWdlXG4gICAgICAgIGxldCB3cml0dGVuID0gcHJvY2Vzcy5zdGRlcnIud3JpdGUoYDo6ZXJyb3IgdGl0bGU9RmFpbGVkICR7bmFtZX06OiR7ZS5tZXNzYWdlfVxcbmApO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRlcnIub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbnQgb3V0cHV0IG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICB3cml0dGVuID0gcHJvY2Vzcy5zdGRvdXQud3JpdGUoW1xuICAgICAgICAgIGA6Omdyb3VwOjpGYWlsdXJlIGRldGFpbHM6ICR7bmFtZX0gKGNsaWNrIHRvIGV4cGFuZClcXG5gLFxuICAgICAgICAgIGAke291dHB1dC5idWZmZXIoKS50b1N0cmluZygpfVxcbmAsXG4gICAgICAgICAgJzo6ZW5kZ3JvdXA6OlxcbicsXG4gICAgICAgIF0uam9pbignJykpO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRvdXQub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2UgJ2NvbnNvbGUubG9nJyBzbyB0aGUgb3V0cHV0IGlzIGJ1ZmZlcmVkIGJ5XG4gICAgICAgIC8vIGplc3QgYW5kIHByaW50cyB3aXRob3V0IGEgc3RhY2sgdHJhY2UgKGlmIHZlcmJvc2U6IGZhbHNlKS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIERvbmUgKCR7aHVtYW5UaW1lKGR1cmF0aW9uKX0pLlxcbmApO1xuICAgICAgbWF5YmVQcmludE1lbW9yeVVzYWdlKG5hbWUpO1xuICAgIH1cbiAgfSwgdGltZW91dE1pbGxpcyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXAodGVzdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gU0tJUF9URVNUUy5pbmNsdWRlcyh0ZXN0TmFtZSk7XG59XG5cbmZ1bmN0aW9uIG1heWJlUHJpbnRNZW1vcnlVc2FnZSh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19NRU1PUllfREVCVUcgIT09ICd0cnVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSBhcyBhbnk7XG4gIGNvbnN0IHJlcG9ydDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1lbW9yeVVzYWdlKSkge1xuICAgIHJlcG9ydFtrZXldID0gYCR7TWF0aC5yb3VuZCh2YWx1ZSBhcyBudW1iZXIgLyAxMDI0IC8gMTAyNCl9IE1CYDtcbiAgfVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7dGVzdE5hbWV9XSBNZW1vcnkgVXNhZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmVwb3J0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgLy8gQ3JhenlcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuXG4vKipcbiAqIFdyaXRlIGxvZyBmaWxlc1xuICpcbiAqIFdyaXRlIGEgdGV4dCBsb2cgdG8gYCR7SU5URUdfTE9HU30vW0ZBSUxFRC1dZGVzY3JpcHRpb24tb2YtdGVzdC50eHRgLCBhbmQgYSBzaW5nbGVcbiAqIGxpbmUgb2YgYSBNYXJrZG93biB0YWJsZSB0byBgJHtJTlRFR19MT0dTfS9tZC8xLWRlc2NyaXB0aW9uLW9mLXRlc3QubWRgLlxuICpcbiAqIFRoZSBsYXR0ZXIgYXJlIGRlc2lnbmVkIHRvIGJlIGdsb2JjYXR0ZWQgdG8gJEdJVEhVQl9TVEVQX1NVTU1BUlkgYWZ0ZXIgdGVzdHNcbiAqICh3ZSBkb24ndCB3cml0ZSB0aGVyZSBkaXJlY3RseSB0byBhdm9pZCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXNcbiAqIHJlYWRpbmcgYW5kIG11dGF0aW5nIHRoZSBzYW1lIGZpbGUpLlxuICpcbiAqIFdlIGRvIHVzZSBgYXRvbWljV3JpdGVgIHRvIHdyaXRlIGZpbGVzIC0tIGl0J3Mgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBoZWFkZXIgZmlsZSxcbiAqIHdoaWNoIGdldHMgb3ZlcndyaXR0ZW4gYnkgZXZlcnkgdGVzdCwganVzdCB0byBtYWtlIHN1cmUgaXQgcHJvcGVybHkgZXhpc3RzIChzaG91bGRuJ3RcbiAqIGVuZCB1cCBlbXB0eSBvciB3aXRoIGludGVybGVhdmVkIGNvbnRlbnRzKS4gVGhlIG90aGVyIHdyaXRlcyBhcmUgbm90XG4gKiBjb250ZW5kZWQgYW5kIGRvbid0IG5lZWQgdG8gYmUgYXRvbWljLCBidXQgdGhlIGZ1bmN0aW9uIGlzIGp1c3QgZXJnb25vbWljIHRvIHVzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVMb2codGVzdE5hbWU6IHN0cmluZywgcmVzdWx0OiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG91dHB1dDogc3RyaW5nO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIHdhaXRUaW1lOiBudW1iZXI7XG59KSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19MT0dTKSB7XG4gICAgLy8gV3JpdGUgdGhlIGxvZyBmaWxlXG4gICAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkodGVzdE5hbWUpO1xuICAgIGNvbnN0IGxvZ0ZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vJHtyZXN1bHQuc3VjY2VzcyA/ICcnIDogJ0ZBSUxFRC0nfSR7c2x1Z30udHh0YDtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShsb2dGaWxlTmFtZSwgcmVzdWx0Lm91dHB1dCk7XG5cbiAgICAvLyBXcml0ZSBhIHJvdyBmb3IgdGhlIG1hcmtkb3duIHRhYmxlXG4gICAgLy8gU29ydCBmYWlsdXJlcyBiZWZvcmUgc3VjY2Vzc2VzLCBhbmQgdGhlIHRhYmxlIGhlYWRlciBiZWZvcmUgYWxsXG4gICAgY29uc3QgbWRGaWxlTmFtZSA9IGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLyR7cmVzdWx0LnN1Y2Nlc3MgPyAnMicgOiAnMSd9LSR7c2x1Z30ubWRgO1xuICAgIGNvbnN0IGNvbHVtbnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1xuICAgICAgWydSZXN1bHQnLCByZXN1bHQuc3VjY2VzcyA/ICdwYXNzIOKchScgOiAnZmFpbCDinYwnXSxcbiAgICAgIFsnVGVzdCBOYW1lJywgdGVzdE5hbWVdLFxuICAgICAgWydUZXN0IER1cmF0aW9uJywgaHVtYW5UaW1lKHJlc3VsdC50b3RhbER1cmF0aW9uIC0gcmVzdWx0LndhaXRUaW1lKV0sXG4gICAgICBbJ1dhaXQgVGltZScsIHJlc3VsdC53YWl0VGltZSA+IDAgPyBodW1hblRpbWUocmVzdWx0LndhaXRUaW1lKSA6ICctJ10sXG4gICAgXTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS9tZC8wLWhlYWRlci5tZGAsIFtcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtjb2wsIF92YWxdKSA9PiBjb2wpLmpvaW4oJyB8ICcpfSB8YCxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKCkgPT4gJy0tLS0tLS0tLS0tJykuam9pbignIHwgJyl9IHxgLFxuICAgIF0ubWFwKHggPT4gYCR7eH1cXG5gKS5qb2luKCcnKSk7XG4gICAgYXdhaXQgYXRvbWljV3JpdGUobWRGaWxlTmFtZSxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtfY29sLCB2YWxdKSA9PiB2YWwpLmpvaW4oJyB8ICcpfSB8XFxuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVtYW5UaW1lKGRlbHRhOiBudW1iZXIpIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuXG4gIGNvbnN0IFMgPSAxMDAwO1xuICBjb25zdCBNID0gNjAgKiBTO1xuICBjb25zdCBIID0gNjAgKiBNO1xuXG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvIEgpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgICBkZWx0YSAtPSBob3VycyAqIEg7XG4gIH1cbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBNKTtcbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICAgIGRlbHRhIC09IG1pbnV0ZXMgKiBNO1xuICB9XG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhIC8gUyk7XG4gIGlmIChzZWNvbmRzID4gMCkge1xuICAgIGNvbXBvbmVudHMucHVzaChgJHtzZWNvbmRzfXNgKTtcbiAgICBkZWx0YSAtPSBzZWNvbmRzICogUztcbiAgfVxuICBjb21wb25lbnRzLnB1c2goYCR7ZGVsdGF9bXNgKTtcblxuICAvLyBSZXRhaW4gdGhlIDIgbW9zdCBzaWduaWZpY2FudCBjb21wb25lbnRzXG4gIHJldHVybiBjb21wb25lbnRzLnNsaWNlKDAsIDIpLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZykge1xuICByZXR1cm4geC5yZXBsYWNlKC9bXmEtekEtWjAtOV8sXSsvZywgJy0nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXRvbWljV3JpdGUoZmlsZU5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCB0bXAgPSBgJHtmaWxlTmFtZX0uJHtwcm9jZXNzLnBpZH1gO1xuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUodG1wLCBjb250ZW50cyk7XG4gIGF3YWl0IGZzLnByb21pc2VzLnJlbmFtZSh0bXAsIGZpbGVOYW1lKTtcbn1cbiJdfQ==