oxygen-cli 1.44.0 → 1.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.44.1 (2026-03-26)
4
+
5
+ #### :beetle: Bug Fix
6
+ * Fix hooks defined in `oxygen.conf.js` not being executed.
7
+
3
8
  ## v1.44.0 (2026-03-02)
4
9
 
5
10
  #### :beetle: Bug Fix
package/build/lib/cli.js CHANGED
@@ -120,4 +120,4 @@ Web test options:
120
120
  Mobile test options:
121
121
  -s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
122
122
  }
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwiY2xpdXRpbCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xhdW5jaGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9wYXJhbGxlbExhdW5jaGVyIiwiX1JlcG9ydEFnZ3JlZ2F0b3IiLCJfV2ViU29ja2V0UmVwb3J0ZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJwcm9jZXNzIiwib24iLCJoYW5kbGVTaWdJbnQiLCJlcnJvciIsImNvbnNvbGUiLCJhcmd2Iiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJwcm9jZXNzVGFyZ2V0UGF0aCIsImN3ZCIsImNvbmZpZyIsImdldENvbmZpZ3VyYXRpb25zIiwiZ2VuZXJhdGVUZXN0T3B0aW9ucyIsInRoZW4iLCJvcHRpb25zIiwicHJlcGFyZUFuZFN0YXJ0VGhlVGVzdCIsImNvZGUiLCJmcmFtZXdvcmsiLCJzdWl0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJFcnJvciIsImNhcHNBcnIiLCJjYXBhYmlsaXRpZXMiLCJleGl0Q29kZSIsInJlcG9ydGVyIiwiUmVwb3J0QWdncmVnYXRvciIsImluaXQiLCJ3c1JlcG9ydGVyIiwid3NQb3J0IiwidW5kZWZpbmVkIiwiV2ViU29ja2V0UmVwb3J0ZXIiLCJsYXVuY2hlciIsInBhcmFsbGVsIiwid29ya2VycyIsImlzTmFOIiwiUGFyYWxsZWxMYXVuY2hlciIsIkxhdW5jaGVyIiwic3RhcnRBbmRXYWl0Rm9yQ2xpZW50Iiwib25MYXVuY2hTdGFydCIsInJ1biIsIm9uTGF1bmNoRW5kIiwiZ2VuZXJhdGVSZXBvcnRzIiwic3RvcCIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jbGkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcclxuLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcbmltcG9ydCAqIGFzIGNsaXV0aWwgZnJvbSAnLi9jbGktdXRpbCc7XHJcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcclxuaW1wb3J0IFBhcmFsbGVsTGF1bmNoZXIgZnJvbSAnLi9wYXJhbGxlbC1sYXVuY2hlcic7XHJcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xyXG5pbXBvcnQgV2ViU29ja2V0UmVwb3J0ZXIgZnJvbSAnLi4vcmVwb3J0ZXIvV2ViU29ja2V0UmVwb3J0ZXInO1xyXG5cclxucHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2lnSW50KTtcclxucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmNhdWdodEV4Y2VwdGlvbicsIGVycm9yKTtcclxufSk7XHJcblxyXG5wcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvciA9PiB7XHJcbiAgICBjb25zb2xlLmVycm9yKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxuLy8gcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xyXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xyXG5cclxuaWYgKGFyZ3YudiB8fCBhcmd2LnZlcnNpb24pIHtcclxuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xyXG4gICAgcHJvY2Vzcy5leGl0KDApO1xyXG59IGVsc2UgaWYgKHR5cGVvZihhcmd2Ll9bMF0pID09PSAndW5kZWZpbmVkJyB8fCBhcmd2LmhlbHApIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5pZiAoYXJndi5kIHx8IGFyZ3YuZGVsYXkpIHtcclxuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XHJcbiAgICBpZiAoIShwYXJzZUludChkZWxheSkgPiAwKSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ2RlbGF5JyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICBwcmludFVzYWdlKCk7XHJcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCB0YXJnZXRGaWxlID0gY2xpdXRpbC5wcm9jZXNzVGFyZ2V0UGF0aChhcmd2Ll9bMF0sIGFyZ3YuY3dkKTtcclxuaWYgKHRhcmdldEZpbGUgPT0gbnVsbCkge1xyXG4gICAgcHJpbnRVc2FnZSgpO1xyXG4gICAgcHJvY2Vzcy5leGl0KDEpO1xyXG59XHJcblxyXG5jb25zdCBjb25maWcgPSBjbGl1dGlsLmdldENvbmZpZ3VyYXRpb25zKHRhcmdldEZpbGUsIGFyZ3YpO1xyXG5cclxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcclxuICAgIChvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgcHJlcGFyZUFuZFN0YXJ0VGhlVGVzdChvcHRpb25zKS50aGVuKFxyXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RvbmUhJyk7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZDogJywgZSk7XHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSxcclxuICAgIChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQgb24gZ2VuZXJhdGUgc3RhdGU6ICcsIGUpO1xyXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICAgIH1cclxuKTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMuZnJhbWV3b3JrID09PSAnb3h5Z2VuJyAmJiAoIW9wdGlvbnMuc3VpdGVzIHx8ICFBcnJheS5pc0FycmF5KG9wdGlvbnMuc3VpdGVzKSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xyXG4gICAgfVxyXG4gICAgbGV0IGNhcHNBcnIgPSBvcHRpb25zLmNhcGFiaWxpdGllcyB8fCBbe31dO1xyXG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxyXG4gICAgaWYgKCEoY2Fwc0FyciBpbnN0YW5jZW9mIEFycmF5KSkge1xyXG4gICAgICAgIGNhcHNBcnIgPSBbY2Fwc0Fycl07XHJcbiAgICB9XHJcbiAgICBsZXQgZXhpdENvZGUgPSAwO1xyXG4gICAgLy8gc3RhcnQgbGF1bmNoZXJcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVwb3J0ZXIgPSBuZXcgUmVwb3J0QWdncmVnYXRvcihvcHRpb25zKTtcclxuICAgICAgICBhd2FpdCByZXBvcnRlci5pbml0KCk7XHJcbiAgICAgICAgY29uc3Qgd3NSZXBvcnRlciA9IG9wdGlvbnMud3NQb3J0ICE9PSB1bmRlZmluZWQgP1xyXG4gICAgICAgICAgICBuZXcgV2ViU29ja2V0UmVwb3J0ZXIocmVwb3J0ZXIpIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gb3B0aW9ucy5wYXJhbGxlbCAmJiBvcHRpb25zLnBhcmFsbGVsLndvcmtlcnMgJiYgIWlzTmFOKG9wdGlvbnMucGFyYWxsZWwud29ya2VycykgJiYgb3B0aW9ucy5wYXJhbGxlbC53b3JrZXJzID4gMVxyXG4gICAgICAgICAgICA/IG5ldyBQYXJhbGxlbExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKSA6IG5ldyBMYXVuY2hlcihvcHRpb25zLCByZXBvcnRlcik7XHJcbiAgICAgICAgYXdhaXQgd3NSZXBvcnRlcj8uc3RhcnRBbmRXYWl0Rm9yQ2xpZW50KG9wdGlvbnMud3NQb3J0KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVGVzdCBzdGFydGVkLi4uJyk7XHJcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hTdGFydChvcHRpb25zKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hFbmQoKTtcclxuICAgICAgICAvLyBHZW5lcmF0ZSBmaWxlIHJlcG9ydCBvbmx5IHdoZW4gbm8gd3Nwb3J0IGFyZ3VtZW50IGlzIHByb3ZpZGVkXHJcbiAgICAgICAgaWYgKCF3c1JlcG9ydGVyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3c1JlcG9ydGVyPy5zdG9wKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0td3Nwb3J0PVBPUlQgICAgICAgICAgV2ViU29ja2V0IGV2ZW50cyByZXBvcnRlciBwb3J0LlxyXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcclxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgRGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0LlxyXG5cclxuV2ViIHRlc3Qgb3B0aW9uczpcclxuICAtYiwgLS1icm93c2VyPXtjaHJvbWV8aWV8c2FmYXJpfGZpcmVmb3h9ICBCcm93c2VyIG5hbWUuIERlZmF1bHQgaXMgY2hyb21lLlxyXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cclxuICAgICAgLS1yZW9wZW49e3RydWV8ZmFsc2V9ICBSZW9wZW4gYnJvd3NlciBvbiBlYWNoIGl0ZXJhdGlvbi4gRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgICAgXHJcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XHJcbiAgICAtcywgLS1zZXJ2ZXI9U0VSVkVSX1VSTCAgQXBwaXVtIHNlcnZlciBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1Yi5gKTtcclxufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBb0I7O0FBQUFBLE9BQUE7QUFTcEIsSUFB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
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwiY2xpdXRpbCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xhdW5jaGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9wYXJhbGxlbExhdW5jaGVyIiwiX1JlcG9ydEFnZ3JlZ2F0b3IiLCJfV2ViU29ja2V0UmVwb3J0ZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJwcm9jZXNzIiwib24iLCJoYW5kbGVTaWdJbnQiLCJlcnJvciIsImNvbnNvbGUiLCJhcmd2Iiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJwcm9jZXNzVGFyZ2V0UGF0aCIsImN3ZCIsImNvbmZpZyIsImdldENvbmZpZ3VyYXRpb25zIiwiZ2VuZXJhdGVUZXN0T3B0aW9ucyIsInRoZW4iLCJvcHRpb25zIiwicHJlcGFyZUFuZFN0YXJ0VGhlVGVzdCIsImNvZGUiLCJmcmFtZXdvcmsiLCJzdWl0ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJFcnJvciIsImNhcHNBcnIiLCJjYXBhYmlsaXRpZXMiLCJleGl0Q29kZSIsInJlcG9ydGVyIiwiUmVwb3J0QWdncmVnYXRvciIsImluaXQiLCJ3c1JlcG9ydGVyIiwid3NQb3J0IiwidW5kZWZpbmVkIiwiV2ViU29ja2V0UmVwb3J0ZXIiLCJsYXVuY2hlciIsInBhcmFsbGVsIiwid29ya2VycyIsImlzTmFOIiwiUGFyYWxsZWxMYXVuY2hlciIsIkxhdW5jaGVyIiwic3RhcnRBbmRXYWl0Rm9yQ2xpZW50Iiwib25MYXVuY2hTdGFydCIsInJ1biIsIm9uTGF1bmNoRW5kIiwiZ2VuZXJhdGVSZXBvcnRzIiwic3RvcCIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jbGkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEgL3Vzci9iaW4vZW52IG5vZGVcbi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKi9cbmltcG9ydCAqIGFzIGNsaXV0aWwgZnJvbSAnLi9jbGktdXRpbCc7XG5pbXBvcnQgTGF1bmNoZXIgZnJvbSAnLi9sYXVuY2hlcic7XG5pbXBvcnQgUGFyYWxsZWxMYXVuY2hlciBmcm9tICcuL3BhcmFsbGVsLWxhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuaW1wb3J0IFdlYlNvY2tldFJlcG9ydGVyIGZyb20gJy4uL3JlcG9ydGVyL1dlYlNvY2tldFJlcG9ydGVyJztcblxucHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2lnSW50KTtcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IpO1xufSk7XG5cbnByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCd1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnJvcik7XG59KTtcblxuLy8gcGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcblxuaWYgKGFyZ3YudiB8fCBhcmd2LnZlcnNpb24pIHtcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcbiAgICBwcm9jZXNzLmV4aXQoMCk7XG59IGVsc2UgaWYgKHR5cGVvZihhcmd2Ll9bMF0pID09PSAndW5kZWZpbmVkJyB8fCBhcmd2LmhlbHApIHtcbiAgICBwcmludFVzYWdlKCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxuaWYgKGFyZ3YuZCB8fCBhcmd2LmRlbGF5KSB7XG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcbiAgICBpZiAoIShwYXJzZUludChkZWxheSkgPiAwKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhcmd1bWVudCAtICdkZWxheScgc2hvdWxkIGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5cIik7XG4gICAgICAgIHByaW50VXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbn1cblxuY29uc3QgdGFyZ2V0RmlsZSA9IGNsaXV0aWwucHJvY2Vzc1RhcmdldFBhdGgoYXJndi5fWzBdLCBhcmd2LmN3ZCk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGF3YWl0IHJlcG9ydGVyLmluaXQoKTtcbiAgICAgICAgY29uc3Qgd3NSZXBvcnRlciA9IG9wdGlvbnMud3NQb3J0ICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgbmV3IFdlYlNvY2tldFJlcG9ydGVyKHJlcG9ydGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBvcHRpb25zLnBhcmFsbGVsICYmIG9wdGlvbnMucGFyYWxsZWwud29ya2VycyAmJiAhaXNOYU4ob3B0aW9ucy5wYXJhbGxlbC53b3JrZXJzKSAmJiBvcHRpb25zLnBhcmFsbGVsLndvcmtlcnMgPiAxXG4gICAgICAgICAgICA/IG5ldyBQYXJhbGxlbExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKSA6IG5ldyBMYXVuY2hlcihvcHRpb25zLCByZXBvcnRlcik7XG4gICAgICAgIGF3YWl0IHdzUmVwb3J0ZXI/LnN0YXJ0QW5kV2FpdEZvckNsaWVudChvcHRpb25zLndzUG9ydCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIub25MYXVuY2hTdGFydChvcHRpb25zKTtcbiAgICAgICAgYXdhaXQgbGF1bmNoZXIucnVuKGNhcHNBcnIpO1xuICAgICAgICBhd2FpdCByZXBvcnRlci5vbkxhdW5jaEVuZCgpO1xuICAgICAgICAvLyBHZW5lcmF0ZSBmaWxlIHJlcG9ydCBvbmx5IHdoZW4gbm8gd3Nwb3J0IGFyZ3VtZW50IGlzIHByb3ZpZGVkXG4gICAgICAgIGlmICghd3NSZXBvcnRlcikge1xuICAgICAgICAgICAgYXdhaXQgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgd3NSZXBvcnRlcj8uc3RvcCgpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXdzcG9ydD1QT1JUICAgICAgICAgIFdlYlNvY2tldCBldmVudHMgcmVwb3J0ZXIgcG9ydC5cbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxuICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaW5mb3JtYXRpb24gYW5kIGV4aXQuXG4gIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cblxuV2ViIHRlc3Qgb3B0aW9uczpcbiAgLWIsIC0tYnJvd3Nlcj17Y2hyb21lfGllfHNhZmFyaXxmaXJlZm94fSAgQnJvd3NlciBuYW1lLiBEZWZhdWx0IGlzIGNocm9tZS5cbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxuICAgICAgLS1yZW9wZW49e3RydWV8ZmFsc2V9ICBSZW9wZW4gYnJvd3NlciBvbiBlYWNoIGl0ZXJhdGlvbi4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICAgIFxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcbiAgICAtcywgLS1zZXJ2ZXI9U0VSVkVSX1VSTCAgQXBwaXVtIHNlcnZlciBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1Yi5gKTtcbn0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQW9COztBQUFBQSxPQUFBO0FBU3BCLElBQUFDLE9BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8sa0JBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQUE4RCxTQUFBSSx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFOLHdCQUFB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
package/build/lib/util.js CHANGED
@@ -226,15 +226,15 @@ var self = module.exports = {
226
226
  return false;
227
227
  },
228
228
  loadTestHooks: function (options) {
229
- let hooks = DUMMY_HOOKS;
230
- if (options && options.target && options.target.name === 'oxygen.conf') {
229
+ let hooks;
230
+ if (options && options.target && options.target.configPath.endsWith('oxygen.conf.js')) {
231
231
  try {
232
- hooks = require(options.target.path).hooks || DUMMY_HOOKS;
232
+ hooks = require(options.target.configPath).hooks;
233
233
  } catch (e) {
234
234
  console.warn('Error loading user hooks:', e);
235
235
  }
236
236
  }
237
- return hooks;
237
+ return hooks || DUMMY_HOOKS;
238
238
  },
239
239
  executeTestHook: async function (hooks, method, args) {
240
240
  if (!hooks || !method || !hooks[method] || typeof hooks[method] !== 'function') {
@@ -375,4 +375,4 @@ var self = module.exports = {
375
375
  }
376
376
  }
377
377
  };
378
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3h5Z2VuRXJyb3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9oZWxwZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJwYXRoIiwiZnMiLCJtb21lbnQiLCJjcnlwdG8iLCJ1dGlsIiwicGFzc3dvcmQiLCJlbmNyeXB0aW9uS2V5Iiwia2V5Iiwic2NyeXB0U3luYyIsIml2IiwiQnVmZmVyIiwiYWxsb2MiLCJhbGdvcml0aG0iLCJkb3dubG9hZCIsInJlcXVlc3QiLCJEZWNyeXB0UmVzdWx0IiwicmVzdWx0IiwiZGVjcnlwdFJlc3VsdCIsImdldERlY3J5cHRSZXN1bHQiLCJEVU1NWV9IT09LUyIsImJlZm9yZVRlc3QiLCJiZWZvcmVTdWl0ZSIsImJlZm9yZUNhc2UiLCJiZWZvcmVDb21tYW5kIiwiYWZ0ZXJDb21tYW5kIiwiYWZ0ZXJUZXN0IiwiYWZ0ZXJTdWl0ZSIsImFmdGVyQ2FzZSIsIkNCX0FUVEFDSE1FTlRTX0RJUl9OQU1FIiwiRE9XTkxPQURfUkVUUklFUyIsIkRPV05MT0FEX1JFVFJZX1dBSVRfVElNRSIsImdldEN3ZCIsIm9wdGlvbnMiLCJjd2QiLCJwcm9jZXNzIiwicm9vdFBhdGgiLCJ0cmltIiwic2VsZiIsIm1vZHVsZSIsImV4cG9ydHMiLCJnZXRBdHRhY2htZW50UGF0aCIsImZpbGVOYW1lIiwiYXR0YWNobWVudHNEaXJQYXRoIiwiam9pbiIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJnZW5lcmF0ZVVuaXF1ZUlkIiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsImdldFRpbWVTdGFtcCIsInV0YyIsInZhbHVlT2YiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uIiwic3VpdGVEZWYiLCJ0ZXN0Q29uZmlnIiwiaXRlcmF0aW9uQ291bnQiLCJzdWl0ZSIsImlkIiwibmFtZSIsIml0ZXJhdGlvbnMiLCJzdWl0ZUZpbGVQYXRoIiwidGFyZ2V0IiwicGFyYW1NYW5hZ2VyIiwiZ2V0UGFyYW1ldGVyTWFuYWdlciIsInBhcmFtZXRlcnMiLCJnZXRNb2RlIiwicm93cyIsImNhcGFiaWxpdGllcyIsImVudmlyb25tZW50IiwicGFyYWxsZWwiLCJjb25jdXJyZW5jeSIsImNhc2VzIiwiZm9yRWFjaCIsImNhc2VEZWYiLCJ0YyIsImdldEZpbGVOYW1lV2l0aG91dEV4dCIsInJlc29sdmVQYXRoIiwiZm9ybWF0IiwicHVzaCIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZSIsImZpbGVQYXRoIiwicGFyYW1GaWxlIiwicGFyYW1Nb2RlIiwibm9QYXJhbUF1dG9TZWFyY2giLCJmaWxlTmFtZU5vRXh0IiwidGVzdGNhc2UiLCJyZW9wZW5TZXNzaW9uIiwiZGlybmFtZSIsImZpbGUiLCJtb2RlIiwibWFpbkZpbGVQYXRoIiwicGFyYW1PcHRzIiwiYXV0b1NlYXJjaCIsInBhcmFtRmlsZVBhdGgiLCJpc0Fic29sdXRlIiwibG9hZFBhcmFtZXRlck1hbmFnZXIiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSIsImJhc2VuYW1lIiwiZmlsZUV4dCIsImV4dG5hbWUiLCJmaWxlUGF0aE5vRXh0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJtYWluRmlsZSIsImNzdlBhcmFtRmlsZSIsInR4dFBhcmFtRmlsZSIsInhsc1BhcmFtRmlsZSIsInhsc3hQYXJhbUZpbGUiLCJpbml0IiwicGF0aFRvUmVzb2x2ZSIsImJhc2VGb2xkZXIiLCJyZXNvbHZlIiwibWFrZVNlcmlhbGl6YWJsZSIsImVyciIsImRlc3Ryb3lDaXJjdWxhciIsImZyb20iLCJzZWVuIiwidG8iLCJBcnJheSIsImlzQXJyYXkiLCJPYmplY3QiLCJrZXlzIiwiaW5kZXhPZiIsInNsaWNlIiwiZ2V0TWV0aG9kU2lnbmF0dXJlIiwibW9kdWxlTmFtZSIsIm1ldGhvZE5hbWUiLCJtZXRob2RBcmdzIiwic3RyaW5naWZ5IiwiYXJncyIsImluZGVudGF0aW9uIiwiU3RyaW5nIiwibGVuZ3RoIiwic3RyIiwiSlNPTiIsInZhbHVlIiwiRXJyb3IiLCJSZWdFeHAiLCJzb3VyY2UiLCJmbGFncyIsInJlcGxhY2UiLCJlbmRzV2l0aCIsImNvbnNvbGUiLCJ3YXJuIiwiaW5zcGVjdCIsImRlcHRoIiwiaXNJbkRlYnVnTW9kZSIsImxvYWRUZXN0SG9va3MiLCJob29rcyIsImV4ZWN1dGVUZXN0SG9vayIsIm1ldGhvZCIsImluY2x1ZGVzIiwiZ2xvYmFsIiwiX2xhc3RUcmFuc2FjdGlvbk5hbWUiLCJjaGFpQW5kTW9ja2VyeUxvYWRlZCIsImNoYWkiLCJtb2NrZXJ5IiwiZW5hYmxlIiwidXNlQ2xlYW5DYWNoZSIsIndhcm5PblJlcGxhY2UiLCJ3YXJuT25VbnJlZ2lzdGVyZWQiLCJyZWdpc3Rlck1vY2siLCJhcHBseSIsInVuZGVmaW5lZCIsImVycm9yIiwiZ2V0T3hNb2R1bGVzRGlyIiwiX19kaXJuYW1lIiwiaG9va0xvZ3MiLCJsb2dnZXIiLCJvcmlnbG9nIiwibG9nIiwib3JpZ0RlYnVnIiwiZGVidWciLCJvcmlnSW5mbyIsImluZm8iLCJvcmlnV2FybiIsIm9yaWdFcnJvciIsInByb2Nlc3NBcmdzIiwiYXJndW1lbnRBcnJheSIsIm1hcCIsIml0ZW0iLCJtYWtlVHJhbnNhY3Rpb25GYWlsZWRJZlN0ZXBGYWlsZWQiLCJzdGVwcyIsImxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4IiwibmV3U3RlcHMiLCJpZHgiLCJzdGF0dXMiLCJkZWNyeXB0IiwidGV4dCIsImVuY3J5cHRlZFRleHQiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJkZWNyeXB0ZWQiLCJ1cGRhdGUiLCJjb25jYXQiLCJmaW5hbCIsInJldFZhbCIsIk94eWdlbkVycm9yIiwiZXJyb3JIZWxwZXIiLCJlcnJvckNvZGUiLCJDUllQVE9fRVJST1IiLCJlbmNyeXB0IiwiY2lwaGVyIiwiY3JlYXRlQ2lwaGVyaXYiLCJlbmNyeXB0ZWQiLCJzbGVlcCIsInRpbWVvdXQiLCJQcm9taXNlIiwic2V0VGltZW91dCIsImRvd25sb2FkVmlkZW8iLCJ2aWRlb1VybCIsImxvY2FsVmlkZW9GaWxlUGF0aCIsImkiLCJ3cml0ZUZpbGVTeW5jIiwidXJsIiwianNvbiIsInJlamVjdFVuYXV0aG9yaXplZCIsInJlamVjdCIsInJlcyIsImJvZHkiLCJtZXNzYWdlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi91dGlsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBtb2R1bGUgZm9yIGludGVybmFsIE94eWdlbiB1c2VcclxuICovXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XHJcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5jb25zdCBwYXNzd29yZCA9IHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLmVuY3J5cHRpb25LZXk7XHJcbmNvbnN0IGtleSA9IGNyeXB0by5zY3J5cHRTeW5jKHBhc3N3b3JkLCAnR2ZHJywgMjQpO1xyXG5jb25zdCBpdiA9IEJ1ZmZlci5hbGxvYygxNiwgMCk7XHJcbmNvbnN0IGFsZ29yaXRobSA9ICdhZXMtMTkyLWNiYyc7XHJcbmNvbnN0IGRvd25sb2FkID0gcmVxdWlyZSgnZG93bmxvYWQnKTtcclxuY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJ3JlcXVlc3QnKTtcclxuXHJcbmltcG9ydCBPeHlnZW5FcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgZXJyb3JIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcblxyXG5mdW5jdGlvbiBEZWNyeXB0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgY29uc3QgZGVjcnlwdFJlc3VsdCA9IHJlc3VsdDtcclxuXHJcbiAgICB0aGlzLmdldERlY3J5cHRSZXN1bHQgPSAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGRlY3J5cHRSZXN1bHQ7XHJcbiAgICB9O1xyXG59XHJcblxyXG5jb25zdCBEVU1NWV9IT09LUyA9IHtcclxuICAgIGJlZm9yZVRlc3Q6ICgpID0+IHt9LFxyXG4gICAgYmVmb3JlU3VpdGU6ICgpID0+IHt9LFxyXG4gICAgYmVmb3JlQ2FzZTogKCkgPT4ge30sXHJcbiAgICBiZWZvcmVDb21tYW5kOiAoKSA9PiB7fSxcclxuICAgIGFmdGVyQ29tbWFuZDogKCkgPT4ge30sXHJcbiAgICBhZnRlclRlc3Q6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJTdWl0ZTogKCkgPT4ge30sXHJcbiAgICBhZnRlckNhc2U6ICgpID0+IHt9LFxyXG59O1xyXG5cclxuY29uc3QgQ0JfQVRUQUNITUVOVFNfRElSX05BTUUgPSAnLmNiLWF0dGFjaG1lbnRzJztcclxuY29uc3QgRE9XTkxPQURfUkVUUklFUyA9IDQwO1xyXG5jb25zdCBET1dOTE9BRF9SRVRSWV9XQUlUX1RJTUUgPSAyNTAwO1xyXG5cclxuY29uc3QgZ2V0Q3dkID0gKG9wdGlvbnMpID0+IHtcclxuICAgIGxldCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xyXG5cclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuY3dkKSB7XHJcbiAgICAgICAgY3dkID0gb3B0aW9ucy5jd2Q7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChvcHRpb25zICYmIG9wdGlvbnMucm9vdFBhdGgpIHtcclxuICAgICAgICBjd2QgPSBvcHRpb25zLnJvb3RQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjd2QudHJpbSgpO1xyXG59O1xyXG5cclxudmFyIHNlbGYgPSBtb2R1bGUuZXhwb3J0cyA9IHtcclxuXHJcbiAgICBnZXRBdHRhY2htZW50UGF0aDogZnVuY3Rpb24oZmlsZU5hbWUsIG9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBjd2QgPSBnZXRDd2Qob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudHNEaXJQYXRoID0gcGF0aC5qb2luKGN3ZCwgQ0JfQVRUQUNITUVOVFNfRElSX05BTUUpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhhdHRhY2htZW50c0RpclBhdGgpKSB7XHJcbiAgICAgICAgICAgIGZzLm1rZGlyU3luYyhhdHRhY2htZW50c0RpclBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aC5qb2luKGF0dGFjaG1lbnRzRGlyUGF0aCwgZmlsZU5hbWUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVVuaXF1ZUlkOiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKCdoZXgnKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0VGltZVN0YW1wOiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50LnV0YygpLnZhbHVlT2YoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbjogYXN5bmMgZnVuY3Rpb24oc3VpdGVEZWYsIHRlc3RDb25maWcsIGl0ZXJhdGlvbkNvdW50ID0gMSkge1xyXG4gICAgICAgIHZhciBzdWl0ZSA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0c3VpdGUuanMnKSgpO1xyXG4gICAgICAgIHN1aXRlLmlkID0gbnVsbDtcclxuICAgICAgICBzdWl0ZS5uYW1lID0gc3VpdGVEZWYubmFtZTtcclxuICAgICAgICBzdWl0ZS5pZCA9IHN1aXRlRGVmLmlkO1xyXG4gICAgICAgIHN1aXRlLml0ZXJhdGlvbkNvdW50ID0gc3VpdGVEZWYuaXRlcmF0aW9ucyB8fCBzdWl0ZURlZi5pdGVyYXRpb25Db3VudCB8fCB0ZXN0Q29uZmlnLml0ZXJhdGlvbnMgfHwgaXRlcmF0aW9uQ291bnQ7XHJcbiAgICAgICAgY29uc3Qgc3VpdGVGaWxlUGF0aCA9IHN1aXRlRGVmLnBhdGggfHwgcGF0aC5qb2luKHRlc3RDb25maWcudGFyZ2V0LmN3ZCwgJ3N1aXRlcycsIGAke3N1aXRlRGVmLm5hbWV9Lmpzb25gKTtcclxuICAgICAgICBzdWl0ZS5wYXJhbU1hbmFnZXIgPSBhd2FpdCBzZWxmLmdldFBhcmFtZXRlck1hbmFnZXIoc3VpdGVGaWxlUGF0aCwgdGVzdENvbmZpZy5wYXJhbWV0ZXJzLCB0ZXN0Q29uZmlnLnRhcmdldC5jd2QpO1xyXG4gICAgICAgIGlmIChzdWl0ZS5wYXJhbU1hbmFnZXIgJiYgc3VpdGUucGFyYW1NYW5hZ2VyLmdldE1vZGUoKSA9PSAnYWxsJykge1xyXG4gICAgICAgICAgICBzdWl0ZS5pdGVyYXRpb25Db3VudCA9IHN1aXRlLnBhcmFtTWFuYWdlci5yb3dzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdWl0ZS5jYXBhYmlsaXRpZXMgPSBzdWl0ZURlZi5jYXBhYmlsaXRpZXMgfHwgdGVzdENvbmZpZy5jYXBhYmlsaXRpZXMgfHwge307XHJcbiAgICAgICAgc3VpdGUuZW52aXJvbm1lbnQgPSB0ZXN0Q29uZmlnLmVudmlyb25tZW50IHx8IG51bGw7XHJcbiAgICAgICAgc3VpdGUub3B0aW9ucyA9IHRlc3RDb25maWcub3B0aW9ucyB8fCBudWxsO1xyXG4gICAgICAgIHN1aXRlLnBhcmFsbGVsID0gc3VpdGVEZWYucGFyYWxsZWwgfHwgdGVzdENvbmZpZy5wYXJhbGxlbCB8fCB0ZXN0Q29uZmlnLmNvbmN1cnJlbmN5IHx8IDE7XHJcbiAgICAgICAgLy8gaW5pdGlhbGl6ZSBlYWNoIHRlc3QgY2FzZVxyXG4gICAgICAgIHN1aXRlRGVmLmNhc2VzLmZvckVhY2goY2FzZURlZiA9PiB7XHJcbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgdGVzdGNhc2Ugb2JqZWN0XHJcbiAgICAgICAgICAgIGNvbnN0IHRjID0gbmV3IHJlcXVpcmUoJy4uL21vZGVsL3Rlc3RjYXNlLmpzJykoKTtcclxuICAgICAgICAgICAgaWYgKGNhc2VEZWYubmFtZSlcclxuICAgICAgICAgICAgICAgIHRjLm5hbWUgPSBjYXNlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRjLm5hbWUgPSBzZWxmLmdldEZpbGVOYW1lV2l0aG91dEV4dChjYXNlRGVmLnBhdGgpO1xyXG4gICAgICAgICAgICB0Yy5wYXRoID0gc2VsZi5yZXNvbHZlUGF0aChjYXNlRGVmLnBhdGgsIHRlc3RDb25maWcudGFyZ2V0LmN3ZCk7XHJcbiAgICAgICAgICAgIHRjLmZvcm1hdCA9ICdqcyc7XHJcbiAgICAgICAgICAgIHRjLml0ZXJhdGlvbkNvdW50ID0gY2FzZURlZi5pdGVyYXRpb25zIHx8IGNhc2VEZWYuaXRlcmF0aW9uQ291bnQgfHwgMTtcclxuICAgICAgICAgICAgc3VpdGUuY2FzZXMucHVzaCh0Yyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHN1aXRlO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVRlc3RTdWl0ZUZyb21KU0ZpbGU6IGFzeW5jIGZ1bmN0aW9uIChmaWxlUGF0aCwgcGFyYW1GaWxlID0gbnVsbCwgcGFyYW1Nb2RlID0gbnVsbCwgbm9QYXJhbUF1dG9TZWFyY2ggPSB0cnVlLCBpdGVyYXRpb25Db3VudCA9IDEpIHtcclxuICAgICAgICB2YXIgZmlsZU5hbWVOb0V4dCA9IHNlbGYuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KGZpbGVQYXRoKTtcclxuXHJcbiAgICAgICAgdmFyIHRlc3RjYXNlID0gbmV3IHJlcXVpcmUoJy4uL21vZGVsL3Rlc3RjYXNlLmpzJykoKTtcclxuICAgICAgICB0ZXN0Y2FzZS5uYW1lID0gZmlsZU5hbWVOb0V4dDtcclxuICAgICAgICB0ZXN0Y2FzZS5wYXRoID0gZmlsZVBhdGg7XHJcbiAgICAgICAgdGVzdGNhc2UuZm9ybWF0ID0gJ2pzJztcclxuICAgICAgICB0ZXN0Y2FzZS5pdGVyYXRpb25Db3VudCA9IDE7XHJcblxyXG4gICAgICAgIHZhciBzdWl0ZSA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0c3VpdGUuanMnKSgpO1xyXG4gICAgICAgIHN1aXRlLm5hbWUgPSB0ZXN0Y2FzZS5uYW1lO1xyXG4gICAgICAgIHN1aXRlLmlkID0gdGVzdGNhc2UuaWQ7XHJcbiAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBpdGVyYXRpb25Db3VudDtcclxuICAgICAgICBzdWl0ZS5jYXNlcy5wdXNoKHRlc3RjYXNlKTtcclxuICAgICAgICBpZiAodGVzdGNhc2UucmVvcGVuU2Vzc2lvbikge1xyXG4gICAgICAgICAgICBzdWl0ZS5yZW9wZW5TZXNzaW9uID0gdGVzdGNhc2UucmVvcGVuU2Vzc2lvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3dkID0gcGF0aC5kaXJuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICBzdWl0ZS5wYXJhbU1hbmFnZXIgPSBhd2FpdCBzZWxmLmdldFBhcmFtZXRlck1hbmFnZXIoZmlsZVBhdGgsIHsgZmlsZTogcGFyYW1GaWxlLCBtb2RlOiBwYXJhbU1vZGUgfSwgY3dkKTtcclxuICAgICAgICAvLyBpZiBwYXJhbWV0ZXIgcmVhZGluZyBtb2RlIGlzICdhbGwnIHRoZW4gY2hhbmdlIGl0ZXJhdGlvbkNvdW50IHRvIHRoZSBhbW91bnQgb2Ygcm93cyBpbiB0aGUgcGFyYW0gZmlsZVxyXG4gICAgICAgIGlmIChzdWl0ZS5wYXJhbU1hbmFnZXIgJiYgcGFyYW1Nb2RlID09ICdhbGwnKSB7XHJcbiAgICAgICAgICAgIHN1aXRlLml0ZXJhdGlvbkNvdW50ID0gc3VpdGUucGFyYW1NYW5hZ2VyLnJvd3M7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdWl0ZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0UGFyYW1ldGVyTWFuYWdlcjogYXN5bmMgZnVuY3Rpb24obWFpbkZpbGVQYXRoLCBwYXJhbU9wdHMgPSBudWxsLCBjd2QgPSBudWxsLCBhdXRvU2VhcmNoID0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwYXJhbUZpbGVQYXRoID0gcGFyYW1PcHRzICYmIHBhcmFtT3B0cy5maWxlID8gcGFyYW1PcHRzLmZpbGUgOiBudWxsO1xyXG4gICAgICAgIGxldCBwYXJhbU1vZGUgPSBwYXJhbU9wdHMgJiYgcGFyYW1PcHRzLm1vZGUgPyBwYXJhbU9wdHMubW9kZSA6ICdzZXEnO1xyXG5cclxuICAgICAgICBpZiAocGFyYW1GaWxlUGF0aCAmJiBjd2QgJiYgIXBhdGguaXNBYnNvbHV0ZShwYXJhbUZpbGVQYXRoKSkge1xyXG4gICAgICAgICAgICBwYXJhbUZpbGVQYXRoID0gcGF0aC5qb2luKGN3ZCwgcGFyYW1GaWxlUGF0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5sb2FkUGFyYW1ldGVyTWFuYWdlcihtYWluRmlsZVBhdGgsIHBhcmFtRmlsZVBhdGgsIHBhcmFtTW9kZSwgYXV0b1NlYXJjaCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb25GaWxlOiBhc3luYyBmdW5jdGlvbiAoZmlsZVBhdGgsIHBhcmFtRmlsZSwgcGFyYW1Nb2RlID0gbnVsbCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcclxuICAgICAgICAgICAgLi4ub3B0aW9ucyB8fCB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChwYXJhbUZpbGUpIHtcclxuICAgICAgICAgICAgdGVzdENvbmZpZy5wYXJhbWV0ZXJzID0ge1xyXG4gICAgICAgICAgICAgICAgZmlsZTogcGFyYW1GaWxlLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogcGFyYW1Nb2RlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5nZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uKHJlcXVpcmUoZmlsZVBhdGgpLCB0ZXN0Q29uZmlnKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RmlsZU5hbWVXaXRob3V0RXh0OiBmdW5jdGlvbiAoZmlsZVBhdGgpIHtcclxuICAgICAgICB2YXIgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICB2YXIgZmlsZUV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgdmFyIGZpbGVQYXRoTm9FeHQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWUubGFzdEluZGV4T2YoZmlsZUV4dCkpO1xyXG4gICAgICAgIHJldHVybiBmaWxlUGF0aE5vRXh0O1xyXG4gICAgfSxcclxuXHJcbiAgICBsb2FkUGFyYW1ldGVyTWFuYWdlcjogYXN5bmMgZnVuY3Rpb24obWFpbkZpbGUsIHBhcmFtRmlsZSwgcGFyYW1Nb2RlLCBhdXRvU2VhcmNoID0gZmFsc2UpIHtcclxuICAgICAgICB2YXIgcGFyYW1NYW5hZ2VyID0gbnVsbDtcclxuICAgICAgICAvLyBpZiBwYXJhbSBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gY2hlY2sgaWYgSlMgZmlsZSBpcyBjb21pbmcgaW4gcGFpciB3aXRoIGEgcGFyYW1ldGVyIGZpbGUgXHJcbiAgICAgICAgLy8gKGN1cnJlbnRseSBzdXBwb3J0aW5nIENTViBvciBUWFQpXHJcbiAgICAgICAgaWYgKCFwYXJhbUZpbGUgJiYgYXV0b1NlYXJjaCkge1xyXG4gICAgICAgICAgICB2YXIgZmlsZU5hbWVOb0V4dCA9IHNlbGYuZ2V0RmlsZU5hbWVXaXRob3V0RXh0KG1haW5GaWxlKTtcclxuICAgICAgICAgICAgdmFyIGNzdlBhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy5jc3YnKTtcclxuICAgICAgICAgICAgdmFyIHR4dFBhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy50eHQnKTtcclxuICAgICAgICAgICAgdmFyIHhsc1BhcmFtRmlsZSA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUobWFpbkZpbGUpLCBmaWxlTmFtZU5vRXh0ICsgJy54bHMnKTtcclxuICAgICAgICAgICAgdmFyIHhsc3hQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcueGxzeCcpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY3N2UGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0gY3N2UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmModHh0UGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0gdHh0UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoeGxzUGFyYW1GaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1GaWxlID0geGxzUGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmMoeGxzeFBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHhsc3hQYXJhbUZpbGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmFtRmlsZSkge1xyXG4gICAgICAgICAgICBwYXJhbU1hbmFnZXIgPSBuZXcgcmVxdWlyZSgnLi9wYXJhbS1tYW5hZ2VyJykocGFyYW1GaWxlLCBwYXJhbU1vZGUgfHwgJ3NlcScpO1xyXG4gICAgICAgICAgICBhd2FpdCBwYXJhbU1hbmFnZXIuaW5pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyYW1NYW5hZ2VyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgcmVzb2x2ZVBhdGg6IGZ1bmN0aW9uKHBhdGhUb1Jlc29sdmUsIGJhc2VGb2xkZXIpIHtcclxuICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKHBhdGhUb1Jlc29sdmUpKVxyXG4gICAgICAgICAgICByZXR1cm4gcGF0aFRvUmVzb2x2ZTtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKGJhc2VGb2xkZXIsIHBhdGhUb1Jlc29sdmUpO1xyXG4gICAgfSxcclxuXHJcbiAgICBtYWtlU2VyaWFsaXphYmxlOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGVyciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlc3Ryb3lDaXJjdWxhcihlcnIsIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVycjtcclxuXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2pvbnBhY2tlci9kZXN0cm95LWNpcmN1bGFyXHJcbiAgICAgICAgZnVuY3Rpb24gZGVzdHJveUNpcmN1bGFyKGZyb20sIHNlZW4pIHtcclxuICAgICAgICAgICAgdmFyIHRvID0gQXJyYXkuaXNBcnJheShmcm9tKSA/IFtdIDoge307XHJcbiAgICAgICAgICAgIHNlZW4ucHVzaChmcm9tKTtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZnJvbSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZnJvbVtrZXldIHx8ICh0eXBlb2YgZnJvbVtrZXldICE9ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGZyb21ba2V5XSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9ba2V5XSA9IGZyb21ba2V5XTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2Vlbi5pbmRleE9mKGZyb21ba2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b1trZXldID0gZGVzdHJveUNpcmN1bGFyKGZyb21ba2V5XSwgc2Vlbi5zbGljZSgwKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgdG9ba2V5XSA9ICdbQ2lyY3VsYXJdJztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0bztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE1ldGhvZFNpZ25hdHVyZTogZnVuY3Rpb24obW9kdWxlTmFtZSwgbWV0aG9kTmFtZSwgbWV0aG9kQXJncykge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGVOYW1lICsgJy4nICsgbWV0aG9kTmFtZSArICcoJyArIHNlbGYuc3RyaW5naWZ5KG1ldGhvZEFyZ3MsIDApICsgJyknO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKlxyXG4gICAgICogVXNlZCB0byBzZXJpYWxpemUgb3h5Z2VuIGNvbW1hbmQgcGFyYW1ldGVycy4gUHJvZHVjZXMgYSBub24tY29tcGxpYW50IEpTT04gc2VyaWFsaXphdGlvbi5cclxuICAgICAqL1xyXG4gICAgc3RyaW5naWZ5OiBmdW5jdGlvbiAoYXJncywgaW5kZW50YXRpb24gPSAwKSB7XHJcbiAgICAgICAgLy8gcmV0dXJuIHN0cmluZ3MgYXMgaXMgKG90aGVyd2lzZSBpZiB3ZSBzZXJpYWxpemUgc3RyaW5nIGl0IHdpbGwgZ2V0IHdyYXBwZWQgaW4gZG91YmxlIHF1b3RlcylcclxuICAgICAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdzdHJpbmcnIHx8IGFyZ3MgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnIHx8IGFyZ3NbMF0gaW5zdGFuY2VvZiBTdHJpbmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0cjtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBzdHIgPSBKU09OLnN0cmluZ2lmeShhcmdzLCAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcpIHsgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvanNiaS9pc3N1ZXMvMzBcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB1bmRlZmluZWQgaXMgaW5zaWRlIGFuIGFycmF5IHRoZW4gaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFzIG51bGwuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaG93ZXZlciBpZiB3ZSBqdXN0IHJldHVybiAndW5kZWZpbmVkJyBoZXJlIGFzIHN0cmluZywgaXQgd2lsbCBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gcmV0dXJuIG1hZ2ljIHN0cmluZyBpbnN0ZWFkIGFuZCB0cmltIHRoZSBxdW90ZXMgbGF0ZXIgb25cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ19fVU5ERUZJTkVEJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnLycgKyB2YWx1ZS5zb3VyY2UgKyAnLycgKyB2YWx1ZS5mbGFncztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgfSwgaW5kZW50YXRpb24pO1xyXG4gICAgICAgICAgICAvLyB0cmltIHRoZSBlbmNsb3NpbmcgYXJyYXkgYW5kIGFueSB3aGl0ZXNwYWNlXHJcbiAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9eXFxbezF9XFxzKnxcXHMqXFxdezF9JC9nLCAnJyk7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSBzcGFjZSBiZWZvcmUgbGFzdCB9IGFuZCBdLCB0byBtYWtlIGluZGVudGF0aW9uIG10Y2ggdGhlIG9wZW5pbmcgYnJhY2tldFxyXG4gICAgICAgICAgICBpZiAoc3RyLmVuZHNXaXRoKCcgIH0nKSkge1xyXG4gICAgICAgICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBzdHIubGVuZ3RoIC0gMykgKyAnfSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0ci5lbmRzV2l0aCgnICBdJykpIHtcclxuICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDMpICsgJ10nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnZlcnQgbWFnaWMgJ3VuZGVmaW5lZCcgc3RyaW5nIHRvIHByb3BlciByZXByZXNlbnRhdGlvblxyXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXCJfX1VOREVGSU5FRFwiL2csICd1bmRlZmluZWQnKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNlcmlhbGl6ZSBjb21tYW5kIGFyZ3VtZW50czogJywgZSk7XHJcbiAgICAgICAgICAgIC8vIGlmIEpTT04uc3RyaW5naWZ5IGZhaWxzLCB0aGVuIGZhbGxiYWNrIHRvIHV0aWwuaW5zcGVjdC5cclxuICAgICAgICAgICAgLy8gKHdlIGRvbid0IHVzZSB1dGlsLmluc3BlY3QgaW5pdGlhbHkgYmVjYXVzZSBpdCBkb2Vzbid0IHN1cHBvcnQgb3V0cHV0IGluZGVudGF0aW9uKVxyXG4gICAgICAgICAgICByZXR1cm4gdXRpbC5pbnNwZWN0KGFyZ3NbMF0sIHsgZGVwdGg6IDMgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzSW5EZWJ1Z01vZGU6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIC8vIHRoaXMgYWx3YXlzIHRydWU7XHJcbiAgICAgICAgLy8gY29uc3QgYXJndiA9IHByb2Nlc3MuZXhlY0FyZ3Yuam9pbigpO1xyXG5cclxuICAgICAgICAvLyBjb25zb2xlLmxvZygncHJvY2Vzcy5kZWJ1Z1BvcnQnLCBwcm9jZXNzLmRlYnVnUG9ydCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhcmd2LmluY2x1ZGVzKCdpbnNwZWN0JylcIiwgYXJndi5pbmNsdWRlcygnaW5zcGVjdCcpKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcImFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QtYnJrJylcIiwgYXJndi5pbmNsdWRlcygnaW5zcGVjdC1icmsnKSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhcmd2LmluY2x1ZGVzKCdkZWJ1ZycpXCIsIGFyZ3YuaW5jbHVkZXMoJ2RlYnVnJykpO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gcHJvY2Vzcy5kZWJ1Z1BvcnQgfHwgYXJndi5pbmNsdWRlcygnaW5zcGVjdCcpIHx8IGFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QtYnJrJykgfHwgYXJndi5pbmNsdWRlcygnZGVidWcnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcbiAgICBsb2FkVGVzdEhvb2tzOiBmdW5jdGlvbihvcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IGhvb2tzID0gRFVNTVlfSE9PS1M7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50YXJnZXQgJiYgb3B0aW9ucy50YXJnZXQubmFtZSA9PT0gJ294eWdlbi5jb25mJykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaG9va3MgPSByZXF1aXJlKG9wdGlvbnMudGFyZ2V0LnBhdGgpLmhvb2tzIHx8IERVTU1ZX0hPT0tTO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIGxvYWRpbmcgdXNlciBob29rczonLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaG9va3M7XHJcbiAgICB9LFxyXG5cclxuICAgIGV4ZWN1dGVUZXN0SG9vazogYXN5bmMgZnVuY3Rpb24oaG9va3MsIG1ldGhvZCwgYXJncykge1xyXG4gICAgICAgIC8vIGlmIGhvb2sgaXMgbm90IGRlZmluZWQsIGp1c3QgcXVpZXRseSBpZ25vcmUgaXRcclxuICAgICAgICBpZiAoIWhvb2tzIHx8ICFtZXRob2QgfHwgIWhvb2tzW21ldGhvZF0gfHwgdHlwZW9mIGhvb2tzW21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjbGVhciB0cmFuc2FjdGlvbiBuYW1lIHdoZW4gZXhlY3V0aW5nIGhvb2tzIChleGNlcHQgY29tbWFuZCBzdGFydC9lbmQgaG9va3MpXHJcbiAgICAgICAgLy8gb3RoZXJ3aXNlIHRlc3Qgc3RlcHMgd2lsbCBiZSBtZXNzZWQgdXAuIGUuZy4gdHJhbnNhY3Rpb24gZnJvbSBjYXNlIDEgd2lsbCBiZSBzaG93biBpbiBjYXNlIDIsIGV0Yy5cclxuICAgICAgICBpZiAoWydiZWZvcmVUZXN0JywgJ2JlZm9yZVN1aXRlJywgJ2JlZm9yZUNhc2UnLCAnYWZ0ZXJDYXNlJywgJ2FmdGVyU3VpdGUnLCAnYWZ0ZXJUZXN0J10uaW5jbHVkZXMobWV0aG9kKSkge1xyXG4gICAgICAgICAgICBnbG9iYWwuX2xhc3RUcmFuc2FjdGlvbk5hbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGdsb2JhbC5jaGFpQW5kTW9ja2VyeUxvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFpID0gcmVxdWlyZSgnY2hhaScpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9ja2VyeSA9IHJlcXVpcmUoJ21vY2tlcnknKTtcclxuICAgICAgICAgICAgICAgIG1vY2tlcnkuZW5hYmxlKHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VDbGVhbkNhY2hlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm5PblJlcGxhY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHdhcm5PblVucmVnaXN0ZXJlZDogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgbW9ja2VyeS5yZWdpc3Rlck1vY2soJ2NoYWknLCBjaGFpKTtcclxuICAgICAgICAgICAgICAgIGdsb2JhbC5jaGFpQW5kTW9ja2VyeUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGF3YWl0IGhvb2tzW21ldGhvZF0uYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSG9vayBcIiR7bWV0aG9kfVwiIGhhcyB0aHJvd24gYW4gZXJyb3I6ICR7ZS50b1N0cmluZygpfWApO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0T3hNb2R1bGVzRGlyOiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ294X21vZHVsZXMnKTtcclxuICAgIH0sXHJcblxyXG4gICAgaG9va0xvZ3MobG9nZ2VyKSB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2xvZyA9IGNvbnNvbGUubG9nO1xyXG4gICAgICAgIGNvbnN0IG9yaWdEZWJ1ZyA9IGNvbnNvbGUuZGVidWc7XHJcbiAgICAgICAgY29uc3Qgb3JpZ0luZm8gPSBjb25zb2xlLmluZm87XHJcbiAgICAgICAgY29uc3Qgb3JpZ1dhcm4gPSBjb25zb2xlLndhcm47XHJcbiAgICAgICAgY29uc3Qgb3JpZ0Vycm9yID0gY29uc29sZS5lcnJvcjtcclxuXHJcbiAgICAgICAgY29uc3QgcHJvY2Vzc0FyZ3MgPSAoYXJndW1lbnRBcnJheSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAoYXJndW1lbnRBcnJheSAmJiBhcmd1bWVudEFycmF5Lm1hcCkge1xyXG4gICAgICAgICAgICAgICAgYXJndW1lbnRBcnJheS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2l0ZW19YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7dXRpbC5pbnNwZWN0KGl0ZW0pfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJyAnKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdsb2cuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcgPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnRGVidWcuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1Zyhwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmluZm8gPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnSW5mby5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8ocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc29sZS53YXJuID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ1dhcm4uYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IgPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnRXJyb3IuYXBwbHkodGhpcywgYXJndW1lbnRBcnJheSk7XHJcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcblxyXG4gICAgbWFrZVRyYW5zYWN0aW9uRmFpbGVkSWZTdGVwRmFpbGVkKHN0ZXBzKSB7XHJcbiAgICAgICAgaWYgKHN0ZXBzICYmIHN0ZXBzLmxlbmd0aCAmJiBzdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTdGVwcyA9IFsuLi5zdGVwc107XHJcbiAgICAgICAgICAgIHN0ZXBzLm1hcCgoaXRlbSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lICYmIGl0ZW0ubmFtZS5pbmNsdWRlcyAmJiBpdGVtLm5hbWUuaW5jbHVkZXMoJy50cmFuc2FjdGlvbignKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4ID0gaWR4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGFzdEZpbmRlZFRyYW5zYWN0aW9uSW5kZXggPT09ICdudW1iZXInICYmIGl0ZW0uc3RhdHVzICYmIGl0ZW0uc3RhdHVzID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1N0ZXBzW2xhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4XVsnc3RhdHVzJ10gPSAnZmFpbGVkJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbmV3U3RlcHM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gc3RlcHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGRlY3J5cHQodGV4dCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWRUZXh0ID0gQnVmZmVyLmZyb20odGV4dCwgJ2hleCcpO1xyXG4gICAgICAgICAgICBsZXQgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdihhbGdvcml0aG0sIGtleSwgaXYpO1xyXG4gICAgICAgICAgICBsZXQgZGVjcnlwdGVkID0gZGVjaXBoZXIudXBkYXRlKGVuY3J5cHRlZFRleHQpO1xyXG4gICAgICAgICAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtkZWNyeXB0ZWQsIGRlY2lwaGVyLmZpbmFsKCldKTtcclxuICAgICAgICAgICAgY29uc3QgcmV0VmFsID0gZGVjcnlwdGVkLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjcnlwdFJlc3VsdChyZXRWYWwpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94eWdlbkVycm9yKGVycm9ySGVscGVyLmVycm9yQ29kZS5DUllQVE9fRVJST1IsIFwiVGhlIHByb3ZpZGVkIGFyZ3VtZW50IGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHZhbGlkIGNpcGhlciBwcm9kdWNlZCBieSAndXRpbHMuZW5jcnlwdCdcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBlbmNyeXB0KHRleHQpIHtcclxuICAgICAgICBsZXQgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KGFsZ29yaXRobSwga2V5LCBpdik7XHJcbiAgICAgICAgbGV0IGVuY3J5cHRlZCA9IGNpcGhlci51cGRhdGUodGV4dCk7XHJcbiAgICAgICAgZW5jcnlwdGVkID0gQnVmZmVyLmNvbmNhdChbZW5jcnlwdGVkLCBjaXBoZXIuZmluYWwoKV0pO1xyXG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoJ2hleCcpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzbGVlcDogZnVuY3Rpb24odGltZW91dCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0KSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGRvd25sb2FkVmlkZW86IGFzeW5jIGZ1bmN0aW9uKGZpbGVOYW1lLCB2aWRlb1VybCwgb3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGxvY2FsVmlkZW9GaWxlUGF0aCA9IHNlbGYuZ2V0QXR0YWNobWVudFBhdGgoZmlsZU5hbWUsIG9wdGlvbnMpO1xyXG4gICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8RE9XTkxPQURfUkVUUklFUzsgaSsrKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhsb2NhbFZpZGVvRmlsZVBhdGgsIGF3YWl0IGRvd25sb2FkKHZpZGVvVXJsKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZXJyb3IgPSBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNlbGYuc2xlZXAoRE9XTkxPQURfUkVUUllfV0FJVF9USU1FKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFlcnJvcikge1xyXG4gICAgICAgICAgICAvLyBkZWxldGUgdGhlIHZpZGVvIGZpbGUgZnJvbSB0aGUgc2VydmVyXHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsLFxyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcclxuICAgICAgICAgICAgICAgIGpzb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qob3B0aW9ucywgKGVyciwgcmVzLCBib2R5KSA9PiB7IHJlc29sdmUoZXJyID8gbnVsbCA6IGxvY2FsVmlkZW9GaWxlUGF0aCk7IH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIGRlbGV0ZSB2aWRlbyBmaWxlIGZyb20gdGhlIHJlbW90ZSBzZXJ2ZXI6ICcsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5hYmxlIHRvIGRvd25sb2FkIGFuZCBzYXZlIHZpZGVvIGF0dGFjaG1lbnQ6ICcsIGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBd0JBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxTQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQWIzQyxNQUFNRyxJQUFJLEdBQUdMLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDNUIsTUFBTU0sRUFBRSxHQUFHTixPQUFPLENBQUMsSUFBSSxDQUFDO0FB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
378
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3h5Z2VuRXJyb3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9oZWxwZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJwYXRoIiwiZnMiLCJtb21lbnQiLCJjcnlwdG8iLCJ1dGlsIiwicGFzc3dvcmQiLCJlbmNyeXB0aW9uS2V5Iiwia2V5Iiwic2NyeXB0U3luYyIsIml2IiwiQnVmZmVyIiwiYWxsb2MiLCJhbGdvcml0aG0iLCJkb3dubG9hZCIsInJlcXVlc3QiLCJEZWNyeXB0UmVzdWx0IiwicmVzdWx0IiwiZGVjcnlwdFJlc3VsdCIsImdldERlY3J5cHRSZXN1bHQiLCJEVU1NWV9IT09LUyIsImJlZm9yZVRlc3QiLCJiZWZvcmVTdWl0ZSIsImJlZm9yZUNhc2UiLCJiZWZvcmVDb21tYW5kIiwiYWZ0ZXJDb21tYW5kIiwiYWZ0ZXJUZXN0IiwiYWZ0ZXJTdWl0ZSIsImFmdGVyQ2FzZSIsIkNCX0FUVEFDSE1FTlRTX0RJUl9OQU1FIiwiRE9XTkxPQURfUkVUUklFUyIsIkRPV05MT0FEX1JFVFJZX1dBSVRfVElNRSIsImdldEN3ZCIsIm9wdGlvbnMiLCJjd2QiLCJwcm9jZXNzIiwicm9vdFBhdGgiLCJ0cmltIiwic2VsZiIsIm1vZHVsZSIsImV4cG9ydHMiLCJnZXRBdHRhY2htZW50UGF0aCIsImZpbGVOYW1lIiwiYXR0YWNobWVudHNEaXJQYXRoIiwiam9pbiIsImV4aXN0c1N5bmMiLCJta2RpclN5bmMiLCJnZW5lcmF0ZVVuaXF1ZUlkIiwicmFuZG9tQnl0ZXMiLCJ0b1N0cmluZyIsImdldFRpbWVTdGFtcCIsInV0YyIsInZhbHVlT2YiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uIiwic3VpdGVEZWYiLCJ0ZXN0Q29uZmlnIiwiaXRlcmF0aW9uQ291bnQiLCJzdWl0ZSIsImlkIiwibmFtZSIsIml0ZXJhdGlvbnMiLCJzdWl0ZUZpbGVQYXRoIiwidGFyZ2V0IiwicGFyYW1NYW5hZ2VyIiwiZ2V0UGFyYW1ldGVyTWFuYWdlciIsInBhcmFtZXRlcnMiLCJnZXRNb2RlIiwicm93cyIsImNhcGFiaWxpdGllcyIsImVudmlyb25tZW50IiwicGFyYWxsZWwiLCJjb25jdXJyZW5jeSIsImNhc2VzIiwiZm9yRWFjaCIsImNhc2VEZWYiLCJ0YyIsImdldEZpbGVOYW1lV2l0aG91dEV4dCIsInJlc29sdmVQYXRoIiwiZm9ybWF0IiwicHVzaCIsImdlbmVyYXRlVGVzdFN1aXRlRnJvbUpTRmlsZSIsImZpbGVQYXRoIiwicGFyYW1GaWxlIiwicGFyYW1Nb2RlIiwibm9QYXJhbUF1dG9TZWFyY2giLCJmaWxlTmFtZU5vRXh0IiwidGVzdGNhc2UiLCJyZW9wZW5TZXNzaW9uIiwiZGlybmFtZSIsImZpbGUiLCJtb2RlIiwibWFpbkZpbGVQYXRoIiwicGFyYW1PcHRzIiwiYXV0b1NlYXJjaCIsInBhcmFtRmlsZVBhdGgiLCJpc0Fic29sdXRlIiwibG9hZFBhcmFtZXRlck1hbmFnZXIiLCJnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZSIsImJhc2VuYW1lIiwiZmlsZUV4dCIsImV4dG5hbWUiLCJmaWxlUGF0aE5vRXh0Iiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJtYWluRmlsZSIsImNzdlBhcmFtRmlsZSIsInR4dFBhcmFtRmlsZSIsInhsc1BhcmFtRmlsZSIsInhsc3hQYXJhbUZpbGUiLCJpbml0IiwicGF0aFRvUmVzb2x2ZSIsImJhc2VGb2xkZXIiLCJyZXNvbHZlIiwibWFrZVNlcmlhbGl6YWJsZSIsImVyciIsImRlc3Ryb3lDaXJjdWxhciIsImZyb20iLCJzZWVuIiwidG8iLCJBcnJheSIsImlzQXJyYXkiLCJPYmplY3QiLCJrZXlzIiwiaW5kZXhPZiIsInNsaWNlIiwiZ2V0TWV0aG9kU2lnbmF0dXJlIiwibW9kdWxlTmFtZSIsIm1ldGhvZE5hbWUiLCJtZXRob2RBcmdzIiwic3RyaW5naWZ5IiwiYXJncyIsImluZGVudGF0aW9uIiwiU3RyaW5nIiwibGVuZ3RoIiwic3RyIiwiSlNPTiIsInZhbHVlIiwiRXJyb3IiLCJSZWdFeHAiLCJzb3VyY2UiLCJmbGFncyIsInJlcGxhY2UiLCJlbmRzV2l0aCIsImNvbnNvbGUiLCJ3YXJuIiwiaW5zcGVjdCIsImRlcHRoIiwiaXNJbkRlYnVnTW9kZSIsImxvYWRUZXN0SG9va3MiLCJob29rcyIsImNvbmZpZ1BhdGgiLCJleGVjdXRlVGVzdEhvb2siLCJtZXRob2QiLCJpbmNsdWRlcyIsImdsb2JhbCIsIl9sYXN0VHJhbnNhY3Rpb25OYW1lIiwiY2hhaUFuZE1vY2tlcnlMb2FkZWQiLCJjaGFpIiwibW9ja2VyeSIsImVuYWJsZSIsInVzZUNsZWFuQ2FjaGUiLCJ3YXJuT25SZXBsYWNlIiwid2Fybk9uVW5yZWdpc3RlcmVkIiwicmVnaXN0ZXJNb2NrIiwiYXBwbHkiLCJ1bmRlZmluZWQiLCJlcnJvciIsImdldE94TW9kdWxlc0RpciIsIl9fZGlybmFtZSIsImhvb2tMb2dzIiwibG9nZ2VyIiwib3JpZ2xvZyIsImxvZyIsIm9yaWdEZWJ1ZyIsImRlYnVnIiwib3JpZ0luZm8iLCJpbmZvIiwib3JpZ1dhcm4iLCJvcmlnRXJyb3IiLCJwcm9jZXNzQXJncyIsImFyZ3VtZW50QXJyYXkiLCJtYXAiLCJpdGVtIiwibWFrZVRyYW5zYWN0aW9uRmFpbGVkSWZTdGVwRmFpbGVkIiwic3RlcHMiLCJsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCIsIm5ld1N0ZXBzIiwiaWR4Iiwic3RhdHVzIiwiZGVjcnlwdCIsInRleHQiLCJlbmNyeXB0ZWRUZXh0IiwiZGVjaXBoZXIiLCJjcmVhdGVEZWNpcGhlcml2IiwiZGVjcnlwdGVkIiwidXBkYXRlIiwiY29uY2F0IiwiZmluYWwiLCJyZXRWYWwiLCJPeHlnZW5FcnJvciIsImVycm9ySGVscGVyIiwiZXJyb3JDb2RlIiwiQ1JZUFRPX0VSUk9SIiwiZW5jcnlwdCIsImNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiZW5jcnlwdGVkIiwic2xlZXAiLCJ0aW1lb3V0IiwiUHJvbWlzZSIsInNldFRpbWVvdXQiLCJkb3dubG9hZFZpZGVvIiwidmlkZW9VcmwiLCJsb2NhbFZpZGVvRmlsZVBhdGgiLCJpIiwid3JpdGVGaWxlU3luYyIsInVybCIsImpzb24iLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJyZWplY3QiLCJyZXMiLCJib2R5IiwibWVzc2FnZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBIZWxwZXIgbW9kdWxlIGZvciBpbnRlcm5hbCBPeHlnZW4gdXNlXHJcbiAqL1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xyXG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcclxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuY29uc3QgcGFzc3dvcmQgPSByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS5lbmNyeXB0aW9uS2V5O1xyXG5jb25zdCBrZXkgPSBjcnlwdG8uc2NyeXB0U3luYyhwYXNzd29yZCwgJ0dmRycsIDI0KTtcclxuY29uc3QgaXYgPSBCdWZmZXIuYWxsb2MoMTYsIDApO1xyXG5jb25zdCBhbGdvcml0aG0gPSAnYWVzLTE5Mi1jYmMnO1xyXG5jb25zdCBkb3dubG9hZCA9IHJlcXVpcmUoJ2Rvd25sb2FkJyk7XHJcbmNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKCdyZXF1ZXN0Jyk7XHJcblxyXG5pbXBvcnQgT3h5Z2VuRXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuaW1wb3J0IGVycm9ySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuZnVuY3Rpb24gRGVjcnlwdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIGNvbnN0IGRlY3J5cHRSZXN1bHQgPSByZXN1bHQ7XHJcblxyXG4gICAgdGhpcy5nZXREZWNyeXB0UmVzdWx0ID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBkZWNyeXB0UmVzdWx0O1xyXG4gICAgfTtcclxufVxyXG5cclxuY29uc3QgRFVNTVlfSE9PS1MgPSB7XHJcbiAgICBiZWZvcmVUZXN0OiAoKSA9PiB7fSxcclxuICAgIGJlZm9yZVN1aXRlOiAoKSA9PiB7fSxcclxuICAgIGJlZm9yZUNhc2U6ICgpID0+IHt9LFxyXG4gICAgYmVmb3JlQ29tbWFuZDogKCkgPT4ge30sXHJcbiAgICBhZnRlckNvbW1hbmQ6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJUZXN0OiAoKSA9PiB7fSxcclxuICAgIGFmdGVyU3VpdGU6ICgpID0+IHt9LFxyXG4gICAgYWZ0ZXJDYXNlOiAoKSA9PiB7fSxcclxufTtcclxuXHJcbmNvbnN0IENCX0FUVEFDSE1FTlRTX0RJUl9OQU1FID0gJy5jYi1hdHRhY2htZW50cyc7XHJcbmNvbnN0IERPV05MT0FEX1JFVFJJRVMgPSA0MDtcclxuY29uc3QgRE9XTkxPQURfUkVUUllfV0FJVF9USU1FID0gMjUwMDtcclxuXHJcbmNvbnN0IGdldEN3ZCA9IChvcHRpb25zKSA9PiB7XHJcbiAgICBsZXQgY3dkID0gcHJvY2Vzcy5jd2QoKTtcclxuXHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN3ZCkge1xyXG4gICAgICAgIGN3ZCA9IG9wdGlvbnMuY3dkO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJvb3RQYXRoKSB7XHJcbiAgICAgICAgY3dkID0gb3B0aW9ucy5yb290UGF0aDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3dkLnRyaW0oKTtcclxufTtcclxuXHJcbnZhciBzZWxmID0gbW9kdWxlLmV4cG9ydHMgPSB7XHJcblxyXG4gICAgZ2V0QXR0YWNobWVudFBhdGg6IGZ1bmN0aW9uKGZpbGVOYW1lLCBvcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgY3dkID0gZ2V0Q3dkKG9wdGlvbnMpO1xyXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzRGlyUGF0aCA9IHBhdGguam9pbihjd2QsIENCX0FUVEFDSE1FTlRTX0RJUl9OQU1FKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYXR0YWNobWVudHNEaXJQYXRoKSkge1xyXG4gICAgICAgICAgICBmcy5ta2RpclN5bmMoYXR0YWNobWVudHNEaXJQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhdGguam9pbihhdHRhY2htZW50c0RpclBhdGgsIGZpbGVOYW1lKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2VuZXJhdGVVbmlxdWVJZDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyg0KS50b1N0cmluZygnaGV4Jyk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpbWVTdGFtcDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudC51dGMoKS52YWx1ZU9mKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdlbmVyYXRlVGVzdFN1aXRlRnJvbUpzb246IGFzeW5jIGZ1bmN0aW9uKHN1aXRlRGVmLCB0ZXN0Q29uZmlnLCBpdGVyYXRpb25Db3VudCA9IDEpIHtcclxuICAgICAgICB2YXIgc3VpdGUgPSBuZXcgcmVxdWlyZSgnLi4vbW9kZWwvdGVzdHN1aXRlLmpzJykoKTtcclxuICAgICAgICBzdWl0ZS5pZCA9IG51bGw7XHJcbiAgICAgICAgc3VpdGUubmFtZSA9IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgc3VpdGUuaWQgPSBzdWl0ZURlZi5pZDtcclxuICAgICAgICBzdWl0ZS5pdGVyYXRpb25Db3VudCA9IHN1aXRlRGVmLml0ZXJhdGlvbnMgfHwgc3VpdGVEZWYuaXRlcmF0aW9uQ291bnQgfHwgdGVzdENvbmZpZy5pdGVyYXRpb25zIHx8IGl0ZXJhdGlvbkNvdW50O1xyXG4gICAgICAgIGNvbnN0IHN1aXRlRmlsZVBhdGggPSBzdWl0ZURlZi5wYXRoIHx8IHBhdGguam9pbih0ZXN0Q29uZmlnLnRhcmdldC5jd2QsICdzdWl0ZXMnLCBgJHtzdWl0ZURlZi5uYW1lfS5qc29uYCk7XHJcbiAgICAgICAgc3VpdGUucGFyYW1NYW5hZ2VyID0gYXdhaXQgc2VsZi5nZXRQYXJhbWV0ZXJNYW5hZ2VyKHN1aXRlRmlsZVBhdGgsIHRlc3RDb25maWcucGFyYW1ldGVycywgdGVzdENvbmZpZy50YXJnZXQuY3dkKTtcclxuICAgICAgICBpZiAoc3VpdGUucGFyYW1NYW5hZ2VyICYmIHN1aXRlLnBhcmFtTWFuYWdlci5nZXRNb2RlKCkgPT0gJ2FsbCcpIHtcclxuICAgICAgICAgICAgc3VpdGUuaXRlcmF0aW9uQ291bnQgPSBzdWl0ZS5wYXJhbU1hbmFnZXIucm93cztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3VpdGUuY2FwYWJpbGl0aWVzID0gc3VpdGVEZWYuY2FwYWJpbGl0aWVzIHx8IHRlc3RDb25maWcuY2FwYWJpbGl0aWVzIHx8IHt9O1xyXG4gICAgICAgIHN1aXRlLmVudmlyb25tZW50ID0gdGVzdENvbmZpZy5lbnZpcm9ubWVudCB8fCBudWxsO1xyXG4gICAgICAgIHN1aXRlLm9wdGlvbnMgPSB0ZXN0Q29uZmlnLm9wdGlvbnMgfHwgbnVsbDtcclxuICAgICAgICBzdWl0ZS5wYXJhbGxlbCA9IHN1aXRlRGVmLnBhcmFsbGVsIHx8IHRlc3RDb25maWcucGFyYWxsZWwgfHwgdGVzdENvbmZpZy5jb25jdXJyZW5jeSB8fCAxO1xyXG4gICAgICAgIC8vIGluaXRpYWxpemUgZWFjaCB0ZXN0IGNhc2VcclxuICAgICAgICBzdWl0ZURlZi5jYXNlcy5mb3JFYWNoKGNhc2VEZWYgPT4ge1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIHRlc3RjYXNlIG9iamVjdFxyXG4gICAgICAgICAgICBjb25zdCB0YyA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0Y2FzZS5qcycpKCk7XHJcbiAgICAgICAgICAgIGlmIChjYXNlRGVmLm5hbWUpXHJcbiAgICAgICAgICAgICAgICB0Yy5uYW1lID0gY2FzZURlZi5uYW1lO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0Yy5uYW1lID0gc2VsZi5nZXRGaWxlTmFtZVdpdGhvdXRFeHQoY2FzZURlZi5wYXRoKTtcclxuICAgICAgICAgICAgdGMucGF0aCA9IHNlbGYucmVzb2x2ZVBhdGgoY2FzZURlZi5wYXRoLCB0ZXN0Q29uZmlnLnRhcmdldC5jd2QpO1xyXG4gICAgICAgICAgICB0Yy5mb3JtYXQgPSAnanMnO1xyXG4gICAgICAgICAgICB0Yy5pdGVyYXRpb25Db3VudCA9IGNhc2VEZWYuaXRlcmF0aW9ucyB8fCBjYXNlRGVmLml0ZXJhdGlvbkNvdW50IHx8IDE7XHJcbiAgICAgICAgICAgIHN1aXRlLmNhc2VzLnB1c2godGMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzdWl0ZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSlNGaWxlOiBhc3luYyBmdW5jdGlvbiAoZmlsZVBhdGgsIHBhcmFtRmlsZSA9IG51bGwsIHBhcmFtTW9kZSA9IG51bGwsIG5vUGFyYW1BdXRvU2VhcmNoID0gdHJ1ZSwgaXRlcmF0aW9uQ291bnQgPSAxKSB7XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lTm9FeHQgPSBzZWxmLmdldEZpbGVOYW1lV2l0aG91dEV4dChmaWxlUGF0aCk7XHJcblxyXG4gICAgICAgIHZhciB0ZXN0Y2FzZSA9IG5ldyByZXF1aXJlKCcuLi9tb2RlbC90ZXN0Y2FzZS5qcycpKCk7XHJcbiAgICAgICAgdGVzdGNhc2UubmFtZSA9IGZpbGVOYW1lTm9FeHQ7XHJcbiAgICAgICAgdGVzdGNhc2UucGF0aCA9IGZpbGVQYXRoO1xyXG4gICAgICAgIHRlc3RjYXNlLmZvcm1hdCA9ICdqcyc7XHJcbiAgICAgICAgdGVzdGNhc2UuaXRlcmF0aW9uQ291bnQgPSAxO1xyXG5cclxuICAgICAgICB2YXIgc3VpdGUgPSBuZXcgcmVxdWlyZSgnLi4vbW9kZWwvdGVzdHN1aXRlLmpzJykoKTtcclxuICAgICAgICBzdWl0ZS5uYW1lID0gdGVzdGNhc2UubmFtZTtcclxuICAgICAgICBzdWl0ZS5pZCA9IHRlc3RjYXNlLmlkO1xyXG4gICAgICAgIHN1aXRlLml0ZXJhdGlvbkNvdW50ID0gaXRlcmF0aW9uQ291bnQ7XHJcbiAgICAgICAgc3VpdGUuY2FzZXMucHVzaCh0ZXN0Y2FzZSk7XHJcbiAgICAgICAgaWYgKHRlc3RjYXNlLnJlb3BlblNlc3Npb24pIHtcclxuICAgICAgICAgICAgc3VpdGUucmVvcGVuU2Vzc2lvbiA9IHRlc3RjYXNlLnJlb3BlblNlc3Npb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN3ZCA9IHBhdGguZGlybmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgc3VpdGUucGFyYW1NYW5hZ2VyID0gYXdhaXQgc2VsZi5nZXRQYXJhbWV0ZXJNYW5hZ2VyKGZpbGVQYXRoLCB7IGZpbGU6IHBhcmFtRmlsZSwgbW9kZTogcGFyYW1Nb2RlIH0sIGN3ZCk7XHJcbiAgICAgICAgLy8gaWYgcGFyYW1ldGVyIHJlYWRpbmcgbW9kZSBpcyAnYWxsJyB0aGVuIGNoYW5nZSBpdGVyYXRpb25Db3VudCB0byB0aGUgYW1vdW50IG9mIHJvd3MgaW4gdGhlIHBhcmFtIGZpbGVcclxuICAgICAgICBpZiAoc3VpdGUucGFyYW1NYW5hZ2VyICYmIHBhcmFtTW9kZSA9PSAnYWxsJykge1xyXG4gICAgICAgICAgICBzdWl0ZS5pdGVyYXRpb25Db3VudCA9IHN1aXRlLnBhcmFtTWFuYWdlci5yb3dzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3VpdGU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFBhcmFtZXRlck1hbmFnZXI6IGFzeW5jIGZ1bmN0aW9uKG1haW5GaWxlUGF0aCwgcGFyYW1PcHRzID0gbnVsbCwgY3dkID0gbnVsbCwgYXV0b1NlYXJjaCA9IHRydWUpIHtcclxuICAgICAgICBsZXQgcGFyYW1GaWxlUGF0aCA9IHBhcmFtT3B0cyAmJiBwYXJhbU9wdHMuZmlsZSA/IHBhcmFtT3B0cy5maWxlIDogbnVsbDtcclxuICAgICAgICBsZXQgcGFyYW1Nb2RlID0gcGFyYW1PcHRzICYmIHBhcmFtT3B0cy5tb2RlID8gcGFyYW1PcHRzLm1vZGUgOiAnc2VxJztcclxuXHJcbiAgICAgICAgaWYgKHBhcmFtRmlsZVBhdGggJiYgY3dkICYmICFwYXRoLmlzQWJzb2x1dGUocGFyYW1GaWxlUGF0aCkpIHtcclxuICAgICAgICAgICAgcGFyYW1GaWxlUGF0aCA9IHBhdGguam9pbihjd2QsIHBhcmFtRmlsZVBhdGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYubG9hZFBhcmFtZXRlck1hbmFnZXIobWFpbkZpbGVQYXRoLCBwYXJhbUZpbGVQYXRoLCBwYXJhbU1vZGUsIGF1dG9TZWFyY2gpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZW5lcmF0ZVRlc3RTdWl0ZUZyb21Kc29uRmlsZTogYXN5bmMgZnVuY3Rpb24gKGZpbGVQYXRoLCBwYXJhbUZpbGUsIHBhcmFtTW9kZSA9IG51bGwsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocGFyYW1GaWxlKSB7XHJcbiAgICAgICAgICAgIHRlc3RDb25maWcucGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgICAgIGZpbGU6IHBhcmFtRmlsZSxcclxuICAgICAgICAgICAgICAgIG1vZGU6IHBhcmFtTW9kZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYuZ2VuZXJhdGVUZXN0U3VpdGVGcm9tSnNvbihyZXF1aXJlKGZpbGVQYXRoKSwgdGVzdENvbmZpZyk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEZpbGVOYW1lV2l0aG91dEV4dDogZnVuY3Rpb24gKGZpbGVQYXRoKSB7XHJcbiAgICAgICAgdmFyIGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgdmFyIGZpbGVFeHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgIHZhciBmaWxlUGF0aE5vRXh0ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lLmxhc3RJbmRleE9mKGZpbGVFeHQpKTtcclxuICAgICAgICByZXR1cm4gZmlsZVBhdGhOb0V4dDtcclxuICAgIH0sXHJcblxyXG4gICAgbG9hZFBhcmFtZXRlck1hbmFnZXI6IGFzeW5jIGZ1bmN0aW9uKG1haW5GaWxlLCBwYXJhbUZpbGUsIHBhcmFtTW9kZSwgYXV0b1NlYXJjaCA9IGZhbHNlKSB7XHJcbiAgICAgICAgdmFyIHBhcmFtTWFuYWdlciA9IG51bGw7XHJcbiAgICAgICAgLy8gaWYgcGFyYW0gZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGNoZWNrIGlmIEpTIGZpbGUgaXMgY29taW5nIGluIHBhaXIgd2l0aCBhIHBhcmFtZXRlciBmaWxlIFxyXG4gICAgICAgIC8vIChjdXJyZW50bHkgc3VwcG9ydGluZyBDU1Ygb3IgVFhUKVxyXG4gICAgICAgIGlmICghcGFyYW1GaWxlICYmIGF1dG9TZWFyY2gpIHtcclxuICAgICAgICAgICAgdmFyIGZpbGVOYW1lTm9FeHQgPSBzZWxmLmdldEZpbGVOYW1lV2l0aG91dEV4dChtYWluRmlsZSk7XHJcbiAgICAgICAgICAgIHZhciBjc3ZQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcuY3N2Jyk7XHJcbiAgICAgICAgICAgIHZhciB0eHRQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcudHh0Jyk7XHJcbiAgICAgICAgICAgIHZhciB4bHNQYXJhbUZpbGUgPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKG1haW5GaWxlKSwgZmlsZU5hbWVOb0V4dCArICcueGxzJyk7XHJcbiAgICAgICAgICAgIHZhciB4bHN4UGFyYW1GaWxlID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShtYWluRmlsZSksIGZpbGVOYW1lTm9FeHQgKyAnLnhsc3gnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNzdlBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IGNzdlBhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHR4dFBhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHR4dFBhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHhsc1BhcmFtRmlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtRmlsZSA9IHhsc1BhcmFtRmlsZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHhsc3hQYXJhbUZpbGUpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbUZpbGUgPSB4bHN4UGFyYW1GaWxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJhbUZpbGUpIHtcclxuICAgICAgICAgICAgcGFyYW1NYW5hZ2VyID0gbmV3IHJlcXVpcmUoJy4vcGFyYW0tbWFuYWdlcicpKHBhcmFtRmlsZSwgcGFyYW1Nb2RlIHx8ICdzZXEnKTtcclxuICAgICAgICAgICAgYXdhaXQgcGFyYW1NYW5hZ2VyLmluaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmFtTWFuYWdlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9LFxyXG5cclxuICAgIHJlc29sdmVQYXRoOiBmdW5jdGlvbihwYXRoVG9SZXNvbHZlLCBiYXNlRm9sZGVyKSB7XHJcbiAgICAgICAgaWYgKHBhdGguaXNBYnNvbHV0ZShwYXRoVG9SZXNvbHZlKSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhdGhUb1Jlc29sdmU7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZShiYXNlRm9sZGVyLCBwYXRoVG9SZXNvbHZlKTtcclxuICAgIH0sXHJcblxyXG4gICAgbWFrZVNlcmlhbGl6YWJsZTogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlcnIgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZXN0cm95Q2lyY3VsYXIoZXJyLCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcnI7XHJcblxyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qb25wYWNrZXIvZGVzdHJveS1jaXJjdWxhclxyXG4gICAgICAgIGZ1bmN0aW9uIGRlc3Ryb3lDaXJjdWxhcihmcm9tLCBzZWVuKSB7XHJcbiAgICAgICAgICAgIHZhciB0byA9IEFycmF5LmlzQXJyYXkoZnJvbSkgPyBbXSA6IHt9O1xyXG4gICAgICAgICAgICBzZWVuLnB1c2goZnJvbSk7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZyb20pLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZyb21ba2V5XSB8fCAodHlwZW9mIGZyb21ba2V5XSAhPSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmcm9tW2tleV0pKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvW2tleV0gPSBmcm9tW2tleV07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlZW4uaW5kZXhPZihmcm9tW2tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9ba2V5XSA9IGRlc3Ryb3lDaXJjdWxhcihmcm9tW2tleV0sIHNlZW4uc2xpY2UoMCkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHRvW2tleV0gPSAnW0NpcmN1bGFyXSc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdG87XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRNZXRob2RTaWduYXR1cmU6IGZ1bmN0aW9uKG1vZHVsZU5hbWUsIG1ldGhvZE5hbWUsIG1ldGhvZEFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlTmFtZSArICcuJyArIG1ldGhvZE5hbWUgKyAnKCcgKyBzZWxmLnN0cmluZ2lmeShtZXRob2RBcmdzLCAwKSArICcpJztcclxuICAgIH0sXHJcblxyXG4gICAgLypcclxuICAgICAqIFVzZWQgdG8gc2VyaWFsaXplIG94eWdlbiBjb21tYW5kIHBhcmFtZXRlcnMuIFByb2R1Y2VzIGEgbm9uLWNvbXBsaWFudCBKU09OIHNlcmlhbGl6YXRpb24uXHJcbiAgICAgKi9cclxuICAgIHN0cmluZ2lmeTogZnVuY3Rpb24gKGFyZ3MsIGluZGVudGF0aW9uID0gMCkge1xyXG4gICAgICAgIC8vIHJldHVybiBzdHJpbmdzIGFzIGlzIChvdGhlcndpc2UgaWYgd2Ugc2VyaWFsaXplIHN0cmluZyBpdCB3aWxsIGdldCB3cmFwcGVkIGluIGRvdWJsZSBxdW90ZXMpXHJcbiAgICAgICAgaWYgKHR5cGVvZiBhcmdzID09PSAnc3RyaW5nJyB8fCBhcmdzIGluc3RhbmNlb2YgU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcmdzO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyB8fCBhcmdzWzBdIGluc3RhbmNlb2YgU3RyaW5nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnc1swXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdHI7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RyID0gSlNPTi5zdHJpbmdpZnkoYXJncywgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKSB7ICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL2pzYmkvaXNzdWVzLzMwXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdW5kZWZpbmVkIGlzIGluc2lkZSBhbiBhcnJheSB0aGVuIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhcyBudWxsLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhvd2V2ZXIgaWYgd2UganVzdCByZXR1cm4gJ3VuZGVmaW5lZCcgaGVyZSBhcyBzdHJpbmcsIGl0IHdpbGwgYmUgZW5jbG9zZWQgaW4gcXVvdGVzLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHJldHVybiBtYWdpYyBzdHJpbmcgaW5zdGVhZCBhbmQgdHJpbSB0aGUgcXVvdGVzIGxhdGVyIG9uXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdfX1VOREVGSU5FRCc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJy8nICsgdmFsdWUuc291cmNlICsgJy8nICsgdmFsdWUuZmxhZ3M7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH0sIGluZGVudGF0aW9uKTtcclxuICAgICAgICAgICAgLy8gdHJpbSB0aGUgZW5jbG9zaW5nIGFycmF5IGFuZCBhbnkgd2hpdGVzcGFjZVxyXG4gICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXlxcW3sxfVxccyp8XFxzKlxcXXsxfSQvZywgJycpO1xyXG4gICAgICAgICAgICAvLyByZW1vdmUgc3BhY2UgYmVmb3JlIGxhc3QgfSBhbmQgXSwgdG8gbWFrZSBpbmRlbnRhdGlvbiBtdGNoIHRoZSBvcGVuaW5nIGJyYWNrZXRcclxuICAgICAgICAgICAgaWYgKHN0ci5lbmRzV2l0aCgnICB9JykpIHtcclxuICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDMpICsgJ30nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzdHIuZW5kc1dpdGgoJyAgXScpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAzKSArICddJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBjb252ZXJ0IG1hZ2ljICd1bmRlZmluZWQnIHN0cmluZyB0byBwcm9wZXIgcmVwcmVzZW50YXRpb25cclxuICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1wiX19VTkRFRklORURcIi9nLCAndW5kZWZpbmVkJyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBzZXJpYWxpemUgY29tbWFuZCBhcmd1bWVudHM6ICcsIGUpO1xyXG4gICAgICAgICAgICAvLyBpZiBKU09OLnN0cmluZ2lmeSBmYWlscywgdGhlbiBmYWxsYmFjayB0byB1dGlsLmluc3BlY3QuXHJcbiAgICAgICAgICAgIC8vICh3ZSBkb24ndCB1c2UgdXRpbC5pbnNwZWN0IGluaXRpYWx5IGJlY2F1c2UgaXQgZG9lc24ndCBzdXBwb3J0IG91dHB1dCBpbmRlbnRhdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuIHV0aWwuaW5zcGVjdChhcmdzWzBdLCB7IGRlcHRoOiAzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfSxcclxuXHJcbiAgICBpc0luRGVidWdNb2RlOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAvLyB0aGlzIGFsd2F5cyB0cnVlO1xyXG4gICAgICAgIC8vIGNvbnN0IGFyZ3YgPSBwcm9jZXNzLmV4ZWNBcmd2LmpvaW4oKTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Byb2Nlc3MuZGVidWdQb3J0JywgcHJvY2Vzcy5kZWJ1Z1BvcnQpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYXJndi5pbmNsdWRlcygnaW5zcGVjdCcpXCIsIGFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QnKSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJhcmd2LmluY2x1ZGVzKCdpbnNwZWN0LWJyaycpXCIsIGFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QtYnJrJykpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYXJndi5pbmNsdWRlcygnZGVidWcnKVwiLCBhcmd2LmluY2x1ZGVzKCdkZWJ1ZycpKTtcclxuXHJcbiAgICAgICAgLy8gcmV0dXJuIHByb2Nlc3MuZGVidWdQb3J0IHx8IGFyZ3YuaW5jbHVkZXMoJ2luc3BlY3QnKSB8fCBhcmd2LmluY2x1ZGVzKCdpbnNwZWN0LWJyaycpIHx8IGFyZ3YuaW5jbHVkZXMoJ2RlYnVnJyk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG4gICAgbG9hZFRlc3RIb29rczogZnVuY3Rpb24ob3B0aW9ucykge1xyXG4gICAgICAgIGxldCBob29rcztcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRhcmdldCAmJiBvcHRpb25zLnRhcmdldC5jb25maWdQYXRoLmVuZHNXaXRoKCdveHlnZW4uY29uZi5qcycpKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBob29rcyA9IHJlcXVpcmUob3B0aW9ucy50YXJnZXQuY29uZmlnUGF0aCkuaG9va3M7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgbG9hZGluZyB1c2VyIGhvb2tzOicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBob29rcyB8fCBEVU1NWV9IT09LUztcclxuICAgIH0sXHJcblxyXG4gICAgZXhlY3V0ZVRlc3RIb29rOiBhc3luYyBmdW5jdGlvbihob29rcywgbWV0aG9kLCBhcmdzKSB7XHJcbiAgICAgICAgLy8gaWYgaG9vayBpcyBub3QgZGVmaW5lZCwganVzdCBxdWlldGx5IGlnbm9yZSBpdFxyXG4gICAgICAgIGlmICghaG9va3MgfHwgIW1ldGhvZCB8fCAhaG9va3NbbWV0aG9kXSB8fCB0eXBlb2YgaG9va3NbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNsZWFyIHRyYW5zYWN0aW9uIG5hbWUgd2hlbiBleGVjdXRpbmcgaG9va3MgKGV4Y2VwdCBjb21tYW5kIHN0YXJ0L2VuZCBob29rcylcclxuICAgICAgICAvLyBvdGhlcndpc2UgdGVzdCBzdGVwcyB3aWxsIGJlIG1lc3NlZCB1cC4gZS5nLiB0cmFuc2FjdGlvbiBmcm9tIGNhc2UgMSB3aWxsIGJlIHNob3duIGluIGNhc2UgMiwgZXRjLlxyXG4gICAgICAgIGlmIChbJ2JlZm9yZVRlc3QnLCAnYmVmb3JlU3VpdGUnLCAnYmVmb3JlQ2FzZScsICdhZnRlckNhc2UnLCAnYWZ0ZXJTdWl0ZScsICdhZnRlclRlc3QnXS5pbmNsdWRlcyhtZXRob2QpKSB7XHJcbiAgICAgICAgICAgIGdsb2JhbC5fbGFzdFRyYW5zYWN0aW9uTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZ2xvYmFsLmNoYWlBbmRNb2NrZXJ5TG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYWkgPSByZXF1aXJlKCdjaGFpJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2NrZXJ5ID0gcmVxdWlyZSgnbW9ja2VyeScpO1xyXG4gICAgICAgICAgICAgICAgbW9ja2VyeS5lbmFibGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsZWFuQ2FjaGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgd2Fybk9uUmVwbGFjZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgd2Fybk9uVW5yZWdpc3RlcmVkOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBtb2NrZXJ5LnJlZ2lzdGVyTW9jaygnY2hhaScsIGNoYWkpO1xyXG4gICAgICAgICAgICAgICAgZ2xvYmFsLmNoYWlBbmRNb2NrZXJ5TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYXdhaXQgaG9va3NbbWV0aG9kXS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBIb29rIFwiJHttZXRob2R9XCIgaGFzIHRocm93biBhbiBlcnJvcjogJHtlLnRvU3RyaW5nKCl9YCk7XHJcbiAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRPeE1vZHVsZXNEaXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnb3hfbW9kdWxlcycpO1xyXG4gICAgfSxcclxuXHJcbiAgICBob29rTG9ncyhsb2dnZXIpIHtcclxuICAgICAgICBjb25zdCBvcmlnbG9nID0gY29uc29sZS5sb2c7XHJcbiAgICAgICAgY29uc3Qgb3JpZ0RlYnVnID0gY29uc29sZS5kZWJ1ZztcclxuICAgICAgICBjb25zdCBvcmlnSW5mbyA9IGNvbnNvbGUuaW5mbztcclxuICAgICAgICBjb25zdCBvcmlnV2FybiA9IGNvbnNvbGUud2FybjtcclxuICAgICAgICBjb25zdCBvcmlnRXJyb3IgPSBjb25zb2xlLmVycm9yO1xyXG5cclxuICAgICAgICBjb25zdCBwcm9jZXNzQXJncyA9IChhcmd1bWVudEFycmF5KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcmd1bWVudEFycmF5ICYmIGFyZ3VtZW50QXJyYXkubWFwKSB7XHJcbiAgICAgICAgICAgICAgICBhcmd1bWVudEFycmF5Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7aXRlbX1gKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHt1dGlsLmluc3BlY3QoaXRlbSl9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuam9pbignICcpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nID0gZnVuY3Rpb24gKC4uLmFyZ3VtZW50QXJyYXkpIHtcclxuICAgICAgICAgICAgb3JpZ2xvZy5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8ocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZyA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdEZWJ1Zy5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUuaW5mbyA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdJbmZvLmFwcGx5KHRoaXMsIGFyZ3VtZW50QXJyYXkpO1xyXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhwcm9jZXNzQXJncyhhcmd1bWVudEFycmF5KSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLndhcm4gPSBmdW5jdGlvbiAoLi4uYXJndW1lbnRBcnJheSkge1xyXG4gICAgICAgICAgICBvcmlnV2Fybi5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLndhcm4ocHJvY2Vzc0FyZ3MoYXJndW1lbnRBcnJheSkpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc29sZS5lcnJvciA9IGZ1bmN0aW9uICguLi5hcmd1bWVudEFycmF5KSB7XHJcbiAgICAgICAgICAgIG9yaWdFcnJvci5hcHBseSh0aGlzLCBhcmd1bWVudEFycmF5KTtcclxuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHByb2Nlc3NBcmdzKGFyZ3VtZW50QXJyYXkpKTtcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuXHJcbiAgICBtYWtlVHJhbnNhY3Rpb25GYWlsZWRJZlN0ZXBGYWlsZWQoc3RlcHMpIHtcclxuICAgICAgICBpZiAoc3RlcHMgJiYgc3RlcHMubGVuZ3RoICYmIHN0ZXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGxhc3RGaW5kZWRUcmFuc2FjdGlvbkluZGV4ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1N0ZXBzID0gWy4uLnN0ZXBzXTtcclxuICAgICAgICAgICAgc3RlcHMubWFwKChpdGVtLCBpZHgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgJiYgaXRlbS5uYW1lLmluY2x1ZGVzICYmIGl0ZW0ubmFtZS5pbmNsdWRlcygnLnRyYW5zYWN0aW9uKCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdEZpbmRlZFRyYW5zYWN0aW9uSW5kZXggPSBpZHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsYXN0RmluZGVkVHJhbnNhY3Rpb25JbmRleCA9PT0gJ251bWJlcicgJiYgaXRlbS5zdGF0dXMgJiYgaXRlbS5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3U3RlcHNbbGFzdEZpbmRlZFRyYW5zYWN0aW9uSW5kZXhdWydzdGF0dXMnXSA9ICdmYWlsZWQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBuZXdTdGVwcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdGVwcztcclxuICAgIH0sXHJcblxyXG4gICAgZGVjcnlwdCh0ZXh0KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGVuY3J5cHRlZFRleHQgPSBCdWZmZXIuZnJvbSh0ZXh0LCAnaGV4Jyk7XHJcbiAgICAgICAgICAgIGxldCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KGFsZ29yaXRobSwga2V5LCBpdik7XHJcbiAgICAgICAgICAgIGxldCBkZWNyeXB0ZWQgPSBkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkVGV4dCk7XHJcbiAgICAgICAgICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY3J5cHRlZCwgZGVjaXBoZXIuZmluYWwoKV0pO1xyXG4gICAgICAgICAgICBjb25zdCByZXRWYWwgPSBkZWNyeXB0ZWQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWNyeXB0UmVzdWx0KHJldFZhbCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3h5Z2VuRXJyb3IoZXJyb3JIZWxwZXIuZXJyb3JDb2RlLkNSWVBUT19FUlJPUiwgXCJUaGUgcHJvdmlkZWQgYXJndW1lbnQgZG9lc24ndCBzZWVtIHRvIGJlIGEgdmFsaWQgY2lwaGVyIHByb2R1Y2VkIGJ5ICd1dGlscy5lbmNyeXB0J1wiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGVuY3J5cHQodGV4dCkge1xyXG4gICAgICAgIGxldCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoYWxnb3JpdGhtLCBrZXksIGl2KTtcclxuICAgICAgICBsZXQgZW5jcnlwdGVkID0gY2lwaGVyLnVwZGF0ZSh0ZXh0KTtcclxuICAgICAgICBlbmNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtlbmNyeXB0ZWQsIGNpcGhlci5maW5hbCgpXSk7XHJcbiAgICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygnaGV4Jyk7XHJcbiAgICB9LFxyXG5cclxuICAgIHNsZWVwOiBmdW5jdGlvbih0aW1lb3V0KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpKTtcclxuICAgIH0sXHJcblxyXG4gICAgZG93bmxvYWRWaWRlbzogYXN5bmMgZnVuY3Rpb24oZmlsZU5hbWUsIHZpZGVvVXJsLCBvcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxWaWRlb0ZpbGVQYXRoID0gc2VsZi5nZXRBdHRhY2htZW50UGF0aChmaWxlTmFtZSwgb3B0aW9ucyk7XHJcbiAgICAgICAgbGV0IGVycm9yO1xyXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxET1dOTE9BRF9SRVRSSUVTOyBpKyspIHtcclxuICAgICAgICAgICAgZXJyb3IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGxvY2FsVmlkZW9GaWxlUGF0aCwgYXdhaXQgZG93bmxvYWQodmlkZW9VcmwpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgc2VsZi5zbGVlcChET1dOTE9BRF9SRVRSWV9XQUlUX1RJTUUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGUgdmlkZW8gZmlsZSBmcm9tIHRoZSBzZXJ2ZXJcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsXHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxyXG4gICAgICAgICAgICAgICAganNvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdChvcHRpb25zLCAoZXJyLCByZXMsIGJvZHkpID0+IHsgcmVzb2x2ZShlcnIgPyBudWxsIDogbG9jYWxWaWRlb0ZpbGVQYXRoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gZGVsZXRlIHZpZGVvIGZpbGUgZnJvbSB0aGUgcmVtb3RlIHNlcnZlcjogJywgZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmFibGUgdG8gZG93bmxvYWQgYW5kIHNhdmUgdmlkZW8gYXR0YWNobWVudDogJywgZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7QUF3QkEsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTJDLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBYjNDLE1BQU1HLElBQUksR0FBR0wsT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUM1QixNQUFNTSxFQUFFLEdBQUdOLE9B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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.44.0",
3
+ "version": "1.44.1",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {