appium-uiautomator2-driver 2.4.7 → 2.4.8
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/build/lib/driver.js +6 -1
- package/lib/driver.js +4 -0
- package/npm-shrinkwrap.json +34 -61
- package/package.json +1 -1
package/build/lib/driver.js
CHANGED
|
@@ -425,6 +425,11 @@ class AndroidUiautomator2Driver extends _driver.BaseDriver {
|
|
|
425
425
|
this.log.info(`androidCoverage is configured. ` + ` Starting instrumentation of '${this.caps.androidCoverage}'...`);
|
|
426
426
|
await this.adb.androidCoverage(this.caps.androidCoverage, appWaitPackage, appWaitActivity);
|
|
427
427
|
} else {
|
|
428
|
+
if (this.opts.noReset && (await this.adb.processExists(this.opts.appPackage))) {
|
|
429
|
+
this.log.info(`'${this.opts.appPackage}' is already running`);
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
|
|
428
433
|
await this.adb.startApp({
|
|
429
434
|
pkg: this.opts.appPackage,
|
|
430
435
|
activity: this.opts.appActivity,
|
|
@@ -638,4 +643,4 @@ var _default = AndroidUiautomator2Driver;
|
|
|
638
643
|
exports.default = _default;require('source-map-support').install();
|
|
639
644
|
|
|
640
645
|
|
|
641
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ1aWF1dG9tYXRvcjJIZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJERVZJQ0VfUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJERVZJQ0VfUE9SVCIsIk1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCIsIkxPQ0FMSE9TVF9JUDQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIkFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInVpYXV0b21hdG9yMiIsImp3cFByb3h5QWN0aXZlIiwiZGVmYXVsdElNRSIsImp3cFByb3h5QXZvaWQiLCJhcGtTdHJpbmdzIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJhbGxvd0ludmlzaWJsZUVsZW1lbnRzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImZuIiwiXyIsIm1lbW9pemUiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwiY2FwcyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsImlzQ2hyb21lU2Vzc2lvbiIsImxvZyIsImluZm8iLCJwa2ciLCJhY3Rpdml0eSIsImdldENocm9tZVBrZyIsImJyb3dzZXJOYW1lIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwicmVib290Iiwic2V0QXZkRnJvbUNhcGFiaWxpdGllcyIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiIsImNoZWNrQXBwUHJlc2VudCIsInN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiIsImZpbGxEZXZpY2VEZXRhaWxzIiwibWpwZWdTY3JlZW5zaG90VXJsIiwibWpwZWdTdHJlYW0iLCJtanBlZyIsIk1KcGVnU3RyZWFtIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInBpeGVsUmF0aW8iLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwic3RhdEJhckhlaWdodCIsImdldFN0YXR1c0JhckhlaWdodCIsInZpZXdwb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsImRyaXZlckRhdGEiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJkZWJ1ZyIsInVpYTJEYXRhIiwiandwcm94eSIsImNvbW1hbmQiLCJpc0VtdWxhdG9yIiwiYWRiIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiYWxsb2NhdGVTeXN0ZW1Qb3J0IiwiZm9yd2FyZFBvcnQiLCJsb2NhbFBvcnQiLCJjaGVja1BvcnRTdGF0dXMiLCJzeXN0ZW1Qb3J0IiwiX2hhc1N5c3RlbVBvcnRJbkNhcHMiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJyZWxlYXNlU3lzdGVtUG9ydCIsInJlbW92ZVBvcnRGb3J3YXJkIiwiYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0IiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImNyZWF0ZUFEQiIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJzZXRIaWRkZW5BcGlQb2xpY3kiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsImhhc1ZhbHVlIiwiZ3BzRW5hYmxlZCIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJ3YXJuIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJpbml0RGV2aWNlIiwiaW5pdFVpQXV0b21hdG9yMlNlcnZlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwic3RhcnRTZXNzaW9uIiwiYWRkRGV2aWNlSW5mb1RvQ2FwcyIsInNraXBVbmxvY2siLCJ1bmxvY2siLCJzdGFydENocm9tZVNlc3Npb24iLCJlbnN1cmVBcHBTdGFydHMiLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJ1aWF1dG9tYXRvcjJPcHRzIiwiaG9zdCIsInJlbW90ZUFkYkhvc3QiLCJkZXZpY2VQb3J0IiwiYXBrIiwidG1wRGlyIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJyZWFkVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiVWlBdXRvbWF0b3IyU2VydmVyIiwicHJveHlSZXFSZXMiLCJwcm94eUNvbW1hbmQiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiaW5zdGFsbFNlcnZlckFwayIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIlNFUlZFUl9QQUNLQUdFX0lEIiwiU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCIsInN0ZGVyciIsIm1lc3NhZ2UiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwicGFyc2VBcnJheSIsIm90aGVyQXBwcyIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwibm9SZXNldCIsImlzQXBwSW5zdGFsbGVkIiwibm9TaWduIiwiY2hlY2tBcGtDZXJ0IiwicmVxdWlyZURlZmF1bHRDZXJ0Iiwic2lnbkFwcCIsInNraXBVbmluc3RhbGwiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsImFuZHJvaWRDb3ZlcmFnZSIsInN0YXJ0QXBwIiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJyZXRyeSIsInVzZXIiLCJ1c2VyUHJvZmlsZSIsInNjcmVlblJlY29yZGluZ1N0b3BUYXNrcyIsImlzRW1wdHkiLCJfc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJtb2JpbGVJc01lZGlhUHJvamVjdGlvblJlY29yZGluZ1J1bm5pbmciLCJtb2JpbGVTdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nIiwiX3NjcmVlblN0cmVhbWluZ1Byb3BzIiwibW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyIsInJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyIsInNlcnZlciIsInN0b3BDaHJvbWVkcml2ZXJQcm94aWVzIiwiZXJyIiwidGFzayIsImlnbiIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJzZXRJTUUiLCJlbmRBbmRyb2lkQ292ZXJhZ2UiLCJhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQiLCJicm9hZGNhc3QiLCJmb3JjZVN0b3AiLCJzdG9wTG9nY2F0IiwiZXJyb3IiLCJzZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5IiwiYXZkTmFtZSIsImtpbGxFbXVsYXRvciIsInN0b3AiLCJmcyIsImV4aXN0cyIsIndyYXBCb290c3RyYXBEaXNjb25uZWN0Iiwid3JhcHBlZCIsInJlc3RhcnQiLCJwcm94eUFjdGl2ZSIsImNhblByb3h5IiwiZ2V0UHJveHlBdm9pZExpc3QiLCJuYXRpdmVXZWJTY3JlZW5zaG90IiwiaXNDaHJvbWVCcm93c2VyIiwiY21kIiwidG9QYWlycyIsImFuZHJvaWRDb21tYW5kcyIsInByb3RvdHlwZSIsImNvbW1hbmRzIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2RyaXZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7XG4gIFVpQXV0b21hdG9yMlNlcnZlciwgU0VSVkVSX1BBQ0tBR0VfSUQsIFNFUlZFUl9URVNUX1BBQ0tBR0VfSURcbn0gZnJvbSAnLi91aWF1dG9tYXRvcjInO1xuaW1wb3J0IHsgZnMsIHV0aWwsIG1qcGVnIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzL2luZGV4JztcbmltcG9ydCB7IERFRkFVTFRfQURCX1BPUlQgfSBmcm9tICdhcHBpdW0tYWRiJztcbmltcG9ydCB1aWF1dG9tYXRvcjJIZWxwZXJzIGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge1xuICBhbmRyb2lkSGVscGVycywgYW5kcm9pZENvbW1hbmRzLCBTRVRUSU5HU19IRUxQRVJfUEtHX0lEXG59IGZyb20gJ2FwcGl1bS1hbmRyb2lkLWRyaXZlcic7XG5pbXBvcnQgZGVzaXJlZENhcENvbnN0cmFpbnRzIGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlLCBjaGVja1BvcnRTdGF0dXMgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTiB9IGZyb20gJy4vZXh0ZW5zaW9ucyc7XG5cblxuY29uc3QgaGVscGVycyA9IE9iamVjdC5hc3NpZ24oe30sIHVpYXV0b21hdG9yMkhlbHBlcnMsIGFuZHJvaWRIZWxwZXJzKTtcblxuLy8gVGhlIHJhbmdlIG9mIHBvcnRzIHdlIGNhbiB1c2Ugb24gdGhlIHN5c3RlbSBmb3IgY29tbXVuaWNhdGluZyB0byB0aGVcbi8vIFVpQXV0b21hdG9yMiBIVFRQIHNlcnZlciBvbiB0aGUgZGV2aWNlXG5jb25zdCBERVZJQ0VfUE9SVF9SQU5HRSA9IFs4MjAwLCA4Mjk5XTtcblxuLy8gVGhlIGd1YXJkIGlzIG5lZWRlZCB0byBhdm9pZCBkeW5hbWljIHN5c3RlbSBwb3J0IGFsbG9jYXRpb24gY29uZmxpY3RzIGZvclxuLy8gcGFyYWxsZWwgZHJpdmVyIHNlc3Npb25zXG5jb25zdCBERVZJQ0VfUE9SVF9BTExPQ0FUSU9OX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICd1aWEyX2RldmljZV9wb3J0X2d1YXJkJyksXG4gIHt0aW1lb3V0OiAyNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuXG4vLyBUaGlzIGlzIHRoZSBwb3J0IHRoYXQgVWlBdXRvbWF0b3IyIGxpc3RlbnMgdG8gb24gdGhlIGRldmljZS4gV2Ugd2lsbCBmb3J3YXJkXG4vLyBvbmUgb2YgdGhlIHBvcnRzIGFib3ZlIG9uIHRoZSBzeXN0ZW0gdG8gdGhpcyBwb3J0IG9uIHRoZSBkZXZpY2UuXG5jb25zdCBERVZJQ0VfUE9SVCA9IDY3OTA7XG4vLyBUaGlzIGlzIHRoZSBwb3J0IHRoYXQgdGhlIFVpQXV0b21hdG9yMiBNSlBFRyBzZXJ2ZXIgbGlzdGVucyB0byBvbiB0aGUgZGV2aWNlLlxuLy8gV2Ugd2lsbCBmb3J3YXJkIG9uZSBvZiB0aGUgcG9ydHMgYWJvdmUgb24gdGhlIHN5c3RlbSB0byB0aGlzIHBvcnQgb24gdGhlXG4vLyBkZXZpY2UuXG5jb25zdCBNSlBFR19TRVJWRVJfREVWSUNFX1BPUlQgPSA3ODEwO1xuXG5jb25zdCBMT0NBTEhPU1RfSVA0ID0gJzEyNy4wLjAuMSc7XG5cbi8vIE5PX1BST1hZIGNvbnRhaW5zIHRoZSBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gVWlBdXRvbWF0b3IyIHNlcnZlci5cbi8vIFRPRE86ICBBZGQgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIFVpQXV0b21hdG9yMiBzZXJ2ZXIuXG4vLyBUT0RPOiBOZWVkIHRvIHNlZ3JlZ2F0ZSB0aGUgcGF0aHMgYmV0dGVyIHdheSB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zIHdoZXJldmVyIGFwcGxpY2FibGUuXG4vLyAoTm90IHNlZ3JlZ2F0aW5nIHJpZ2h0IGF3YXkgYmVjYXVzZSBtb3JlIHBhdGhzIHRvIGJlIGFkZGVkIGluIHRoZSBOT19QUk9YWSBsaXN0KVxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uLyg/IS4qLyknKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0X1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydC9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL2N1cnJlbnRfYWN0aXZpdHknKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9bXi9dKy9jdXJyZW50X3BhY2thZ2UnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9hcHAvW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zZXR0aW5ncycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dHMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvYXR0cmlidXRlJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2Rpc3BsYXllZCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9lbmFibGVkJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2xvY2F0aW9uX2luX3ZpZXcnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvbmFtZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9zY3JlZW5zaG90JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3NlbGVjdGVkJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9pbWUvW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvY2F0aW9uJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NjcmVlbnNob3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9bXi9dK19hbGVydCQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hY3Rpb25zJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnQvW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHAvW14vXScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9bXi9dKy9zdGFydF9hY3Rpdml0eScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9hcHAvW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vY29tcGFyZV9pbWFnZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlLyg/IXNldF9jbGlwYm9hcmQpW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZWxlbWVudC9bXi9dKy9yZXBsYWNlX3ZhbHVlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2VsZW1lbnQvW14vXSsvdmFsdWUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZ2V0UGVyZm9ybWFuY2VEYXRhJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3BlcmZvcm1hbmNlRGF0YS90eXBlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zZXR0aW5ncycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9leGVjdXRlX2RyaXZlcicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zdGFydF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0b3BfcmVjb3JkaW5nX3NjcmVlbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS8uKmV2ZW50JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9pbWUvW14vXSsnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9rZXlzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9jYXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90aW1lb3V0cycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL211bHRpL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdXJsJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGVfYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2cnKV0sXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvd2luZG93L3JlY3QnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL2FzeW5jJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cnKV0sXG5dO1xuXG4vLyBUaGlzIGlzIGEgc2V0IG9mIG1ldGhvZHMgYW5kIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBDaHJvbWVkcml2ZXIuXG5jb25zdCBDSFJPTUVfTk9fUFJPWFkgPSBbXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9yZWN0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9vcmllbnRhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9vcmllbnRhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL211bHRpL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9wZXJmb3JtJyldLFxuXG4gIC8vIHRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgdGhlIG1vYmlsZTogY29tbWFuZHMgd29ya2luZyBpbiB3ZWIgY29udGV4dFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZSQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG5cbiAgLy8gTUpTT05XUCBjb21tYW5kc1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2cvdHlwZXMkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJCcpXSxcbiAgLy8gVzNDIGNvbW1hbmRzXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nL3R5cGVzJCcpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJCcpXSxcbl07XG5cbmNvbnN0IE1FTU9JWkVEX0ZVTkNUSU9OUyA9IFtcbiAgJ2dldFN0YXR1c0JhckhlaWdodCcsXG4gICdnZXREZXZpY2VQaXhlbFJhdGlvJyxcbl07XG5cbmNsYXNzIEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICAgIC8vIGBzaGVsbGAgb3ZlcndyaXRlcyBhZGIuc2hlbGwsIHNvIHJlbW92ZVxuICAgIGRlbGV0ZSBvcHRzLnNoZWxsO1xuXG4gICAgc3VwZXIob3B0cywgc2hvdWxkVmFsaWRhdGVDYXBzKTtcbiAgICB0aGlzLmxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ3hwYXRoJyxcbiAgICAgICdpZCcsXG4gICAgICAnY2xhc3MgbmFtZScsXG4gICAgICAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgICAnY3NzIHNlbGVjdG9yJyxcbiAgICAgICctYW5kcm9pZCB1aWF1dG9tYXRvcidcbiAgICBdO1xuICAgIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzID0gZGVzaXJlZENhcENvbnN0cmFpbnRzO1xuICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbnVsbDtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5kZWZhdWx0SU1FID0gbnVsbDtcbiAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBOT19QUk9YWTtcbiAgICB0aGlzLmFwa1N0cmluZ3MgPSB7fTsgLy8gbWFwIG9mIGxhbmd1YWdlIC0+IHN0cmluZ3Mgb2JqXG5cbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiBmYWxzZSwgYWxsb3dJbnZpc2libGVFbGVtZW50czogZmFsc2V9LFxuICAgICAgICB0aGlzLm9uU2V0dGluZ3NVcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgLy8gaGFuZGxlIHdlYnZpZXcgbWVjaGFuaWNzIGZyb20gQW5kcm9pZERyaXZlclxuICAgIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzID0ge307XG5cbiAgICAvLyBtZW1vaXplIGZ1bmN0aW9ucyBoZXJlLCBzbyB0aGF0IHRoZXkgYXJlIGRvbmUgb24gYSBwZXItaW5zdGFuY2UgYmFzaXNcbiAgICBmb3IgKGNvbnN0IGZuIG9mIE1FTU9JWkVEX0ZVTkNUSU9OUykge1xuICAgICAgdGhpc1tmbl0gPSBfLm1lbW9pemUodGhpc1tmbl0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRGVzaXJlZENhcHMgKGNhcHMpIHtcbiAgICByZXR1cm4gc3VwZXIudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKSAmJiBhbmRyb2lkSGVscGVycy52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2Vzc2lvbiAoLi4uYXJncykge1xuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPIGhhbmRsZSBvdGhlclNlc3Npb25EYXRhIGZvciBtdWx0aXBsZSBzZXNzaW9uc1xuICAgICAgbGV0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgc3VwZXIuY3JlYXRlU2Vzc2lvbiguLi5hcmdzKTtcblxuICAgICAgbGV0IHNlcnZlckRldGFpbHMgPSB7XG4gICAgICAgIHBsYXRmb3JtOiAnTElOVVgnLFxuICAgICAgICB3ZWJTdG9yYWdlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHRha2VzU2NyZWVuc2hvdDogdHJ1ZSxcbiAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGRhdGFiYXNlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIG5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgbG9jYXRpb25Db250ZXh0RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHdhcm5pbmdzOiB7fSxcbiAgICAgICAgZGVzaXJlZDogdGhpcy5jYXBzLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5jYXBzID0gT2JqZWN0LmFzc2lnbihzZXJ2ZXJEZXRhaWxzLCB0aGlzLmNhcHMpO1xuXG4gICAgICB0aGlzLmN1ckNvbnRleHQgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuXG4gICAgICBsZXQgZGVmYXVsdE9wdHMgPSB7XG4gICAgICAgIGZ1bGxSZXNldDogZmFsc2UsXG4gICAgICAgIGF1dG9MYXVuY2g6IHRydWUsXG4gICAgICAgIGFkYlBvcnQ6IERFRkFVTFRfQURCX1BPUlQsXG4gICAgICAgIGFuZHJvaWRJbnN0YWxsVGltZW91dDogOTAwMDBcbiAgICAgIH07XG4gICAgICBfLmRlZmF1bHRzKHRoaXMub3B0cywgZGVmYXVsdE9wdHMpO1xuXG4gICAgICBpZiAodGhpcy5pc0Nocm9tZVNlc3Npb24pIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhcIldlJ3JlIGdvaW5nIHRvIHJ1biBhIENocm9tZS1iYXNlZCBzZXNzaW9uXCIpO1xuICAgICAgICBsZXQge3BrZywgYWN0aXZpdHl9ID0gaGVscGVycy5nZXRDaHJvbWVQa2codGhpcy5vcHRzLmJyb3dzZXJOYW1lKTtcbiAgICAgICAgdGhpcy5vcHRzLmFwcFBhY2thZ2UgPSB0aGlzLmNhcHMuYXBwUGFja2FnZSA9IHBrZztcbiAgICAgICAgdGhpcy5vcHRzLmFwcEFjdGl2aXR5ID0gdGhpcy5jYXBzLmFwcEFjdGl2aXR5ID0gYWN0aXZpdHk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYENocm9tZS10eXBlIHBhY2thZ2UgYW5kIGFjdGl2aXR5IGFyZSAke3BrZ30gYW5kICR7YWN0aXZpdHl9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICAgIHRoaXMuc2V0QXZkRnJvbUNhcGFiaWxpdGllcyhjYXBzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5hcHApIHtcbiAgICAgICAgLy8gZmluZCBhbmQgY29weSwgb3IgZG93bmxvYWQgYW5kIHVuemlwIGFuIGFwcCB1cmwgb3IgcGF0aFxuICAgICAgICB0aGlzLm9wdHMuYXBwID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcCh0aGlzLm9wdHMuYXBwLCBbQVBLX0VYVEVOU0lPTiwgQVBLU19FWFRFTlNJT05dKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0FwcFByZXNlbnQoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgICAgLy8gdGhlIGFwcCBpc24ndCBhbiBhY3R1YWwgYXBwIGZpbGUgYnV0IHJhdGhlciBzb21ldGhpbmcgd2Ugd2FudCB0b1xuICAgICAgICAvLyBhc3N1bWUgaXMgb24gdGhlIGRldmljZSBhbmQganVzdCBsYXVuY2ggdmlhIHRoZSBhcHBQYWNrYWdlXG4gICAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfScgZGlyZWN0bHkgb24gdGhlIGRldmljZWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTmVpdGhlciAnYXBwJyBub3IgJ2FwcFBhY2thZ2UnIHdhcyBzZXQuIFN0YXJ0aW5nIFVpQXV0b21hdG9yMiBgICtcbiAgICAgICAgICAnd2l0aG91dCB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uJyk7XG4gICAgICB9XG4gICAgICB0aGlzLm9wdHMuYWRiUG9ydCA9IHRoaXMub3B0cy5hZGJQb3J0IHx8IERFRkFVTFRfQURCX1BPUlQ7XG5cbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRVaUF1dG9tYXRvcjJTZXNzaW9uKCk7XG4gICAgICBhd2FpdCB0aGlzLmZpbGxEZXZpY2VEZXRhaWxzKCk7XG4gICAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyBNSlBFRyBzdHJlYW0gcmVhZGluZyBVUkw6ICcke3RoaXMub3B0cy5tanBlZ1NjcmVlbnNob3RVcmx9J2ApO1xuICAgICAgICB0aGlzLm1qcGVnU3RyZWFtID0gbmV3IG1qcGVnLk1KcGVnU3RyZWFtKHRoaXMub3B0cy5tanBlZ1NjcmVlbnNob3RVcmwpO1xuICAgICAgICBhd2FpdCB0aGlzLm1qcGVnU3RyZWFtLnN0YXJ0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3Nlc3Npb25JZCwgdGhpcy5jYXBzXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZmlsbERldmljZURldGFpbHMgKCkge1xuICAgIHRoaXMuY2Fwcy5waXhlbFJhdGlvID0gYXdhaXQgdGhpcy5nZXREZXZpY2VQaXhlbFJhdGlvKCk7XG4gICAgdGhpcy5jYXBzLnN0YXRCYXJIZWlnaHQgPSBhd2FpdCB0aGlzLmdldFN0YXR1c0JhckhlaWdodCgpO1xuICAgIHRoaXMuY2Fwcy52aWV3cG9ydFJlY3QgPSBhd2FpdCB0aGlzLmdldFZpZXdQb3J0UmVjdCgpO1xuICB9XG5cbiAgZ2V0IGRyaXZlckRhdGEgKCkge1xuICAgIC8vIFRPRE8gZmlsbCBvdXQgcmVzb3VyY2UgaW5mbyBoZXJlXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgZ2V0U2Vzc2lvbiAoKSB7XG4gICAgbGV0IHNlc3Npb25EYXRhID0gYXdhaXQgc3VwZXIuZ2V0U2Vzc2lvbigpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdHZXR0aW5nIHNlc3Npb24gZGV0YWlscyBmcm9tIHNlcnZlciB0byBtaXggaW4nKTtcbiAgICBsZXQgdWlhMkRhdGEgPSBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoJy8nLCAnR0VUJywge30pO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzZXNzaW9uRGF0YSwgdWlhMkRhdGEpO1xuICB9XG5cbiAgaXNFbXVsYXRvciAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNFbXVsYXRvcih0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgfVxuXG4gIHNldEF2ZEZyb21DYXBhYmlsaXRpZXMgKGNhcHMpIHtcbiAgICBpZiAodGhpcy5vcHRzLmF2ZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnYXZkIG5hbWUgZGVmaW5lZCwgaWdub3JpbmcgZGV2aWNlIG5hbWUgYW5kIHBsYXRmb3JtIHZlcnNpb24nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjYXBzLmRldmljZU5hbWUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIGRldmljZU5hbWUgc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlcycpO1xuICAgICAgfVxuICAgICAgaWYgKCFjYXBzLnBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgcGxhdGZvcm1WZXJzaW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZWQnKTtcbiAgICAgIH1cbiAgICAgIGxldCBhdmREZXZpY2UgPSBjYXBzLmRldmljZU5hbWUucmVwbGFjZSgvW15hLXpBLVowLTlfLl0vZywgJy0nKTtcbiAgICAgIHRoaXMub3B0cy5hdmQgPSBgJHthdmREZXZpY2V9X18ke2NhcHMucGxhdGZvcm1WZXJzaW9ufWA7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWxsb2NhdGVTeXN0ZW1Qb3J0ICgpIHtcbiAgICBjb25zdCBmb3J3YXJkUG9ydCA9IGFzeW5jIChsb2NhbFBvcnQpID0+IHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBGb3J3YXJkaW5nIFVpQXV0b21hdG9yMiBTZXJ2ZXIgcG9ydCAke0RFVklDRV9QT1JUfSB0byBsb2NhbCBwb3J0ICR7bG9jYWxQb3J0fWApO1xuICAgICAgaWYgKChhd2FpdCBjaGVja1BvcnRTdGF0dXMobG9jYWxQb3J0LCBMT0NBTEhPU1RfSVA0KSkgPT09ICdvcGVuJykge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBVaUF1dG9tYXRvcjIgU2VydmVyIGNhbm5vdCBzdGFydCBiZWNhdXNlIHRoZSBsb2NhbCBwb3J0ICMke2xvY2FsUG9ydH0gaXMgYnVzeS4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSB0aGUgcG9ydCB5b3UgcHJvdmlkZSB2aWEgJ3N5c3RlbVBvcnQnIGNhcGFiaWxpdHkgaXMgbm90IG9jY3VwaWVkLiBgICtcbiAgICAgICAgICBgVGhpcyBzaXR1YXRpb24gbWlnaHQgb2Z0ZW4gYmUgYSByZXN1bHQgb2YgYW4gaW5hY2N1cmF0ZSBzZXNzaW9ucyBtYW5hZ2VtZW50LCBlLmcuIGAgK1xuICAgICAgICAgIGBvbGQgYXV0b21hdGlvbiBzZXNzaW9ucyBvbiB0aGUgc2FtZSBkZXZpY2UgbXVzdCBhbHdheXMgYmUgY2xvc2VkIGJlZm9yZSBzdGFydGluZyBuZXcgb25lcy5gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcndhcmRQb3J0KGxvY2FsUG9ydCwgREVWSUNFX1BPUlQpO1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRzLnN5c3RlbVBvcnQpIHtcbiAgICAgIHRoaXMuX2hhc1N5c3RlbVBvcnRJbkNhcHMgPSB0cnVlO1xuICAgICAgcmV0dXJuIGF3YWl0IGZvcndhcmRQb3J0KHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9XG5cbiAgICBhd2FpdCBERVZJQ0VfUE9SVF9BTExPQ0FUSU9OX0dVQVJEKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IFtzdGFydFBvcnQsIGVuZFBvcnRdID0gREVWSUNFX1BPUlRfUkFOR0U7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLm9wdHMuc3lzdGVtUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coXG4gICAgICAgICAgYENhbm5vdCBmaW5kIGFueSBmcmVlIHBvcnQgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9fS4gYCArXG4gICAgICAgICAgYFBsZWFzZSBzZXQgdGhlIGF2YWlsYWJsZSBwb3J0IG51bWJlciBieSBwcm92aWRpbmcgdGhlIHN5c3RlbVBvcnQgY2FwYWJpbGl0eSBvciBgICtcbiAgICAgICAgICBgZG91YmxlIGNoZWNrIHRoZSBwcm9jZXNzZXMgdGhhdCBhcmUgbG9ja2luZyBwb3J0cyB3aXRoaW4gdGhpcyByYW5nZSBhbmQgdGVybWluYXRlIGAgK1xuICAgICAgICAgIGB0aGVzZSB3aGljaCBhcmUgbm90IG5lZWRlZCBhbnltb3JlYCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBmb3J3YXJkUG9ydCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZWxlYXNlU3lzdGVtUG9ydCAoKSB7XG4gICAgaWYgKCF0aGlzLm9wdHMuc3lzdGVtUG9ydCB8fCAhdGhpcy5hZGIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faGFzU3lzdGVtUG9ydEluQ2Fwcykge1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBERVZJQ0VfUE9SVF9BTExPQ0FUSU9OX0dVQVJEKGFzeW5jICgpID0+IGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5zeXN0ZW1Qb3J0KSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQgKCkge1xuICAgIGlmICh0aGlzLm9wdHMubWpwZWdTZXJ2ZXJQb3J0KSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5mb3J3YXJkUG9ydCh0aGlzLm9wdHMubWpwZWdTZXJ2ZXJQb3J0LCBNSlBFR19TRVJWRVJfREVWSUNFX1BPUlQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbGVhc2VNanBlZ1NlcnZlclBvcnQgKCkge1xuICAgIGlmICh0aGlzLm9wdHMubWpwZWdTZXJ2ZXJQb3J0KSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMubWpwZWdTZXJ2ZXJQb3J0KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdGFydFVpQXV0b21hdG9yMlNlc3Npb24gKCkge1xuICAgIC8vIGdldCBkZXZpY2UgdWRpZCBmb3IgdGhpcyBzZXNzaW9uXG4gICAgbGV0IHt1ZGlkLCBlbVBvcnR9ID0gYXdhaXQgaGVscGVycy5nZXREZXZpY2VJbmZvRnJvbUNhcHModGhpcy5vcHRzKTtcbiAgICB0aGlzLm9wdHMudWRpZCA9IHVkaWQ7XG4gICAgdGhpcy5vcHRzLmVtUG9ydCA9IGVtUG9ydDtcblxuICAgIC8vIG5vdyB0aGF0IHdlIGtub3cgb3VyIGphdmEgdmVyc2lvbiBhbmQgZGV2aWNlIGluZm8sIHdlIGNhbiBjcmVhdGUgb3VyXG4gICAgLy8gQURCIGluc3RhbmNlXG4gICAgdGhpcy5hZGIgPSBhd2FpdCBhbmRyb2lkSGVscGVycy5jcmVhdGVBREIodGhpcy5vcHRzKTtcblxuICAgIGNvbnN0IGFwaUxldmVsID0gYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKTtcblxuICAgIGlmIChhcGlMZXZlbCA8IDIxKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdVSUF1dG9tYXRvcjIgaXMgb25seSBzdXBwb3J0ZWQgc2luY2UgQW5kcm9pZCA1LjAgKExvbGxpcG9wKS4gJyArXG4gICAgICAgICdZb3UgY291bGQgc3RpbGwgdXNlIG90aGVyIHN1cHBvcnRlZCBiYWNrZW5kcyBpbiBvcmRlciB0byBhdXRvbWF0ZSBvbGRlciBBbmRyb2lkIHZlcnNpb25zLicpO1xuICAgIH1cblxuICAgIGlmIChhcGlMZXZlbCA+PSAyOCkgeyAvLyBBbmRyb2lkIFBcbiAgICAgIHRoaXMubG9nLmluZm8oJ1JlbGF4aW5nIGhpZGRlbiBhcGkgcG9saWN5Jyk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXRIaWRkZW5BcGlQb2xpY3koJzEnLCAhIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSB0byBlbmFibGUvZGlzYWJsZSBncHMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLmdwc0VuYWJsZWQpKSB7XG4gICAgICBpZiAodGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgVHJ5aW5nIHRvICR7dGhpcy5vcHRzLmdwc0VuYWJsZWQgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ30gZ3BzIGxvY2F0aW9uIHByb3ZpZGVyYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIodGhpcy5vcHRzLmdwc0VuYWJsZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgU29ycnkhICdncHNFbmFibGVkJyBjYXBhYmlsaXR5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnNgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBnZXQgYXBwUGFja2FnZSBldCBhbCBmcm9tIG1hbmlmZXN0IGlmIG5lY2Vzc2FyeVxuICAgIGNvbnN0IGFwcEluZm8gPSBhd2FpdCBoZWxwZXJzLmdldExhdW5jaEluZm8odGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgLy8gYW5kIGdldCBpdCBvbnRvIG91ciAnb3B0cycgb2JqZWN0IHNvIHdlIHVzZSBpdCBmcm9tIG5vdyBvblxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCBhcHBJbmZvIHx8IHt9KTtcblxuICAgIC8vIHNldCBhY3R1YWwgZGV2aWNlIG5hbWUsIHVkaWQsIHBsYXRmb3JtIHZlcnNpb24sIHNjcmVlbiBzaXplLCBzY3JlZW4gZGVuc2l0eSwgbW9kZWwgYW5kIG1hbnVmYWN0dXJlciBkZXRhaWxzXG4gICAgdGhpcy5jYXBzLmRldmljZU5hbWUgPSB0aGlzLmFkYi5jdXJEZXZpY2VJZDtcbiAgICB0aGlzLmNhcHMuZGV2aWNlVURJRCA9IHRoaXMub3B0cy51ZGlkO1xuXG4gICAgLy8gc3RhcnQgYW4gYXZkLCBzZXQgdGhlIGxhbmd1YWdlL2xvY2FsZSwgcGljayBhbiBlbXVsYXRvciwgZXRjLi4uXG4gICAgLy8gVE9ETyB3aXRoIG11bHRpcGxlIGRldmljZXMgd2UnbGwgbmVlZCB0byBwYXJhbWV0ZXJpemUgdGhpc1xuICAgIHRoaXMuZGVmYXVsdElNRSA9IGF3YWl0IGhlbHBlcnMuaW5pdERldmljZSh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcblxuICAgIC8vIFByZXBhcmUgdGhlIGRldmljZSBieSBmb3J3YXJkaW5nIHRoZSBVaUF1dG9tYXRvcjIgcG9ydFxuICAgIC8vIFRoaXMgY2FsbCBtdXRhdGVzIHRoaXMub3B0cy5zeXN0ZW1Qb3J0IGlmIGl0IGlzIG5vdCBzZXQgZXhwbGljaXRseVxuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVTeXN0ZW1Qb3J0KCk7XG5cbiAgICAvLyBQcmVwYXJlIHRoZSBkZXZpY2UgYnkgZm9yd2FyZGluZyB0aGUgVWlBdXRvbWF0b3IyIE1KUEVHIHNlcnZlciBwb3J0IChpZlxuICAgIC8vIGFwcGxpY2FibGUpXG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZU1qcGVnU2VydmVyUG9ydCgpO1xuXG4gICAgLy8gc2V0IHVwIHRoZSBtb2RpZmllZCBVaUF1dG9tYXRvcjIgc2VydmVyIGV0Y1xuICAgIGF3YWl0IHRoaXMuaW5pdFVpQXV0b21hdG9yMlNlcnZlcigpO1xuXG4gICAgLy8gU2hvdWxkIGJlIGFmdGVyIGluc3RhbGxpbmcgaW8uYXBwaXVtLnNldHRpbmdzIGluIGhlbHBlcnMuaW5pdERldmljZVxuICAgIGlmICh0aGlzLm9wdHMuZGlzYWJsZVdpbmRvd0FuaW1hdGlvbiAmJiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IDI2KSkgeyAvLyBBUEkgbGV2ZWwgMjYgaXMgQW5kcm9pZCA4LjAuXG4gICAgICAvLyBHcmFudGluZyBhbmRyb2lkLnBlcm1pc3Npb24uU0VUX0FOSU1BVElPTl9TQ0FMRSBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGFuaW1hdGlvbnMgdW5kZXIgQVBJIGxldmVsIDI2XG4gICAgICAvLyBSZWFkIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL3B1bGwvMTE2NDAjaXNzdWVjb21tZW50LTQzODI2MDQ3N1xuICAgICAgLy8gYC0tbm8td2luZG93LWFuaW1hdGlvbmAgd29ya3Mgb3ZlciBBbmRyb2lkIDggdG8gZGlzYWJsZSBhbGwgb2YgYW5pbWF0aW9uc1xuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmlzQW5pbWF0aW9uT24oKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdEaXNhYmxpbmcgYW5pbWF0aW9uIHZpYSBpby5hcHBpdW0uc2V0dGluZ3MnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUoZmFsc2UpO1xuICAgICAgICB0aGlzLl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdXaW5kb3cgYW5pbWF0aW9uIGlzIGFscmVhZHkgZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXQgdXAgYXBwIHVuZGVyIHRlc3RcbiAgICAvLyBwcmVwYXJlIG91ciBhY3R1YWwgQVVULCBnZXQgaXQgb24gdGhlIGRldmljZSwgZXRjLi4uXG4gICAgYXdhaXQgdGhpcy5pbml0QVVUKCk7XG5cbiAgICAvLyBBZGRpbmcgQVVUIHBhY2thZ2UgbmFtZSBpbiB0aGUgY2FwYWJpbGl0aWVzIGlmIHBhY2thZ2UgbmFtZSBub3QgZXhpc3QgaW4gY2Fwc1xuICAgIGlmICghdGhpcy5jYXBzLmFwcFBhY2thZ2UgJiYgYXBwSW5mbykge1xuICAgICAgdGhpcy5jYXBzLmFwcFBhY2thZ2UgPSBhcHBJbmZvLmFwcFBhY2thZ2U7XG4gICAgfVxuXG4gICAgLy8gbGF1bmNoIFVpQXV0b21hdG9yMiBhbmQgd2FpdCB0aWxsIGl0cyBvbmxpbmUgYW5kIHdlIGhhdmUgYSBzZXNzaW9uXG4gICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuc3RhcnRTZXNzaW9uKHRoaXMuY2Fwcyk7XG5cbiAgICBhd2FpdCB0aGlzLmFkZERldmljZUluZm9Ub0NhcHMoKTtcblxuICAgIC8vIFVubG9jayB0aGUgZGV2aWNlIGFmdGVyIHRoZSBzZXNzaW9uIGlzIHN0YXJ0ZWQuXG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVubG9jaykge1xuICAgICAgLy8gdW5sb2NrIHRoZSBkZXZpY2UgdG8gcHJlcGFyZSBpdCBmb3IgdGVzdGluZ1xuICAgICAgYXdhaXQgaGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGAnc2tpcFVubG9jaycgY2FwYWJpbGl0eSBzZXQsIHNvIHNraXBwaW5nIGRldmljZSB1bmxvY2tgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Nocm9tZVNlc3Npb24pIHsgLy8gc3RhcnQgYSBjaHJvbWVkcml2ZXIgc2Vzc2lvblxuICAgICAgYXdhaXQgdGhpcy5zdGFydENocm9tZVNlc3Npb24odGhpcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMuYXV0b0xhdW5jaCAmJiB0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgYXdhaXQgdGhpcy5lbnN1cmVBcHBTdGFydHMoKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgaW5pdGlhbCBvcmllbnRhdGlvbiBpcyByZXF1ZXN0ZWQsIHNldCBpdFxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5vcmllbnRhdGlvbikpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBTZXR0aW5nIGluaXRpYWwgb3JpZW50YXRpb24gdG8gJyR7dGhpcy5vcHRzLm9yaWVudGF0aW9ufSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0T3JpZW50YXRpb24odGhpcy5vcHRzLm9yaWVudGF0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBpZiB3ZSB3YW50IHRvIGltbWVkaWF0ZWx5IGdldCBpbnRvIGEgd2Vidmlldywgc2V0IG91ciBjb250ZXh0XG4gICAgLy8gYXBwcm9wcmlhdGVseVxuICAgIGlmICh0aGlzLm9wdHMuYXV0b1dlYnZpZXcpIHtcbiAgICAgIGNvbnN0IHZpZXdOYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLm9wdHMuYXV0b1dlYnZpZXdUaW1lb3V0IHx8IDIwMDA7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBTZXR0aW5nIGF1dG8gd2VidmlldyB0byBjb250ZXh0ICcke3ZpZXdOYW1lfScgd2l0aCB0aW1lb3V0ICR7dGltZW91dH1tc2ApO1xuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IC8gNTAwLCA1MDAsIHRoaXMuc2V0Q29udGV4dC5iaW5kKHRoaXMpLCB2aWV3TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gbm93IHRoYXQgZXZlcnl0aGluZyBoYXMgc3RhcnRlZCBzdWNjZXNzZnVsbHksIHR1cm4gb24gcHJveHlpbmcgc28gYWxsXG4gICAgLy8gc3Vic2VxdWVudCBzZXNzaW9uIHJlcXVlc3RzIGdvIHN0cmFpZ2h0IHRvL2Zyb20gdWlhdXRvbWF0b3IyXG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBhc3luYyBhZGREZXZpY2VJbmZvVG9DYXBzICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uLFxuICAgICAgbWFudWZhY3R1cmVyLFxuICAgICAgbW9kZWwsXG4gICAgICByZWFsRGlzcGxheVNpemUsXG4gICAgICBkaXNwbGF5RGVuc2l0eSxcbiAgICB9ID0gYXdhaXQgdGhpcy5tb2JpbGVHZXREZXZpY2VJbmZvKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZUFwaUxldmVsID0gcGFyc2VJbnQoYXBpVmVyc2lvbiwgMTApO1xuICAgIHRoaXMuY2Fwcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG4gICAgdGhpcy5jYXBzLmRldmljZVNjcmVlblNpemUgPSByZWFsRGlzcGxheVNpemU7XG4gICAgdGhpcy5jYXBzLmRldmljZVNjcmVlbkRlbnNpdHkgPSBkaXNwbGF5RGVuc2l0eTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTW9kZWwgPSBtb2RlbDtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTWFudWZhY3R1cmVyID0gbWFudWZhY3R1cmVyO1xuICB9XG5cbiAgYXN5bmMgaW5pdFVpQXV0b21hdG9yMlNlcnZlciAoKSB7XG4gICAgLy8gYnJva2VuIG91dCBmb3IgcmVhZGFiaWxpdHlcbiAgICBjb25zdCB1aWF1dG9tYXRvcjJPcHRzID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRzLnJlbW90ZUFkYkhvc3QgfHwgdGhpcy5vcHRzLmhvc3QgfHwgTE9DQUxIT1NUX0lQNCxcbiAgICAgIHN5c3RlbVBvcnQ6IHRoaXMub3B0cy5zeXN0ZW1Qb3J0LFxuICAgICAgZGV2aWNlUG9ydDogREVWSUNFX1BPUlQsXG4gICAgICBhZGI6IHRoaXMuYWRiLFxuICAgICAgYXBrOiB0aGlzLm9wdHMuYXBwLFxuICAgICAgdG1wRGlyOiB0aGlzLm9wdHMudG1wRGlyLFxuICAgICAgYXBwUGFja2FnZTogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICBhcHBBY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgICAgZGlzYWJsZVdpbmRvd0FuaW1hdGlvbjogISF0aGlzLm9wdHMuZGlzYWJsZVdpbmRvd0FuaW1hdGlvbixcbiAgICAgIGRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlOiB0aGlzLm9wdHMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UsXG4gICAgICByZWFkVGltZW91dDogdGhpcy5vcHRzLnVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0LFxuICAgIH07XG4gICAgLy8gbm93IHRoYXQgd2UgaGF2ZSBwYWNrYWdlIGFuZCBhY3Rpdml0eSwgd2UgY2FuIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZlxuICAgIC8vIHVpYXV0b21hdG9yMiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zXG4gICAgdGhpcy51aWF1dG9tYXRvcjIgPSBuZXcgVWlBdXRvbWF0b3IyU2VydmVyKHRoaXMubG9nLCB1aWF1dG9tYXRvcjJPcHRzKTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy51aWF1dG9tYXRvcjIucHJveHlSZXFSZXMuYmluZCh0aGlzLnVpYXV0b21hdG9yMik7XG4gICAgdGhpcy5wcm94eUNvbW1hbmQgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eUNvbW1hbmQuYmluZCh0aGlzLnVpYXV0b21hdG9yMik7XG5cbiAgICBpZiAodGhpcy5vcHRzLnNraXBTZXJ2ZXJJbnN0YWxsYXRpb24pIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYCdza2lwU2VydmVySW5zdGFsbGF0aW9uJyBpcyBzZXQuIFNraXBwaW5nIFVJQXV0b21hdG9yMiBzZXJ2ZXIgaW5zdGFsbGF0aW9uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5pbnN0YWxsU2VydmVyQXBrKHRoaXMub3B0cy51aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5hZGRUb0RldmljZUlkbGVXaGl0ZWxpc3QoXG4gICAgICAgICAgU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgU0VSVkVSX1BBQ0tBR0VfSUQsIFNFUlZFUl9URVNUX1BBQ0tBR0VfSUQsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCBhZGQgc2VydmVyIHBhY2thZ2VzIHRvIHRoZSBEb3plIHdoaXRlbGlzdC4gT3JpZ2luYWwgZXJyb3I6IGAgK1xuICAgICAgICAgIChlLnN0ZGVyciB8fCBlLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0QVVUICgpIHtcbiAgICAvLyBVbmluc3RhbGwgYW55IHVuaW5zdGFsbE90aGVyUGFja2FnZXMgd2hpY2ggd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcykge1xuICAgICAgYXdhaXQgaGVscGVycy51bmluc3RhbGxPdGhlclBhY2thZ2VzKFxuICAgICAgICB0aGlzLmFkYixcbiAgICAgICAgaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSxcbiAgICAgICAgW1NFVFRJTkdTX0hFTFBFUl9QS0dfSUQsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJbnN0YWxsIGFueSBcIm90aGVyQXBwc1wiIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMub3RoZXJBcHBzKSB7XG4gICAgICBsZXQgb3RoZXJBcHBzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgb3RoZXJBcHBzID0gaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy5vdGhlckFwcHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgXCJvdGhlckFwcHNcIiBjYXBhYmlsaXR5OiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIG90aGVyQXBwcyA9IGF3YWl0IEIuYWxsKG90aGVyQXBwc1xuICAgICAgICAubWFwKChhcHApID0+IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCBbQVBLX0VYVEVOU0lPTiwgQVBLU19FWFRFTlNJT05dKSkpO1xuICAgICAgYXdhaXQgaGVscGVycy5pbnN0YWxsT3RoZXJBcGtzKG90aGVyQXBwcywgdGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5hcHApIHtcbiAgICAgIGlmICh0aGlzLm9wdHMubm9SZXNldCAmJiAhKGF3YWl0IHRoaXMuYWRiLmlzQXBwSW5zdGFsbGVkKHRoaXMub3B0cy5hcHBQYWNrYWdlKSlcbiAgICAgICAgICB8fCAhdGhpcy5vcHRzLm5vUmVzZXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdHMubm9TaWduICYmICFhd2FpdCB0aGlzLmFkYi5jaGVja0Fwa0NlcnQodGhpcy5vcHRzLmFwcCwgdGhpcy5vcHRzLmFwcFBhY2thZ2UsIHtcbiAgICAgICAgICByZXF1aXJlRGVmYXVsdENlcnQ6IGZhbHNlLFxuICAgICAgICB9KSkge1xuICAgICAgICAgIGF3YWl0IGhlbHBlcnMuc2lnbkFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzLmFwcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgaGVscGVycy5pbnN0YWxsQXBrKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoJ25vUmVzZXQgaGFzIGJlZW4gcmVxdWVzdGVkIGFuZCB0aGUgYXBwIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBEb2luZyBub3RoaW5nJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0KSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ0Z1bGwgcmVzZXQgcmVxdWlyZXMgYW4gYXBwIGNhcGFiaWxpdHksIHVzZSBmYXN0UmVzZXQgaWYgYXBwIGlzIG5vdCBwcm92aWRlZCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ05vIGFwcCBjYXBhYmlsaXR5LiBBc3N1bWluZyBpdCBpcyBhbHJlYWR5IG9uIHRoZSBkZXZpY2UnKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuZmFzdFJlc2V0ICYmIHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICAgIGF3YWl0IGhlbHBlcnMucmVzZXRBcHAodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZW5zdXJlQXBwU3RhcnRzICgpIHtcbiAgICAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBhY3Rpdml0eSBhbmQgcGFja2FnZSB0byB3YWl0IGZvclxuICAgIGNvbnN0IGFwcFdhaXRQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlIHx8IHRoaXMub3B0cy5hcHBQYWNrYWdlO1xuICAgIGNvbnN0IGFwcFdhaXRBY3Rpdml0eSA9IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgdGhpcy5vcHRzLmFwcEFjdGl2aXR5O1xuXG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9LyR7dGhpcy5vcHRzLmFwcEFjdGl2aXR5fSBgICtcbiAgICAgIGBhbmQgd2FpdGluZyBmb3IgJyR7YXBwV2FpdFBhY2thZ2V9LyR7YXBwV2FpdEFjdGl2aXR5fSdgKTtcblxuICAgIGlmICh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBhbmRyb2lkQ292ZXJhZ2UgaXMgY29uZmlndXJlZC4gYCArXG4gICAgICAgIGAgU3RhcnRpbmcgaW5zdHJ1bWVudGF0aW9uIG9mICcke3RoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2V9Jy4uLmApO1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYW5kcm9pZENvdmVyYWdlKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UsIGFwcFdhaXRQYWNrYWdlLCBhcHBXYWl0QWN0aXZpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbiB8fCAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4nLFxuICAgICAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5IHx8ICdhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUicsXG4gICAgICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MgfHwgJzB4MTAyMDAwMDAnLCAvLyBGTEFHX0FDVElWSVRZX05FV19UQVNLIHwgRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRFxuICAgICAgICB3YWl0UGtnOiB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UsXG4gICAgICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICAgICAgd2FpdEZvckxhdW5jaDogdGhpcy5vcHRzLmFwcFdhaXRGb3JMYXVuY2gsXG4gICAgICAgIHdhaXREdXJhdGlvbjogdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbixcbiAgICAgICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICAgICAgc3RvcEFwcDogIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQsXG4gICAgICAgIHJldHJ5OiB0cnVlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBVaUF1dG9tYXRvcjIgc2Vzc2lvbicpO1xuXG4gICAgY29uc3Qgc2NyZWVuUmVjb3JkaW5nU3RvcFRhc2tzID0gW2FzeW5jICgpID0+IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbigpO1xuICAgICAgfVxuICAgIH0sIGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChhd2FpdCB0aGlzLm1vYmlsZUlzTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nUnVubmluZygpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubW9iaWxlU3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZygpO1xuICAgICAgfVxuICAgIH0sIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblN0cmVhbWluZ1Byb3BzKSkge1xuICAgICAgICBhd2FpdCB0aGlzLm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcoKTtcbiAgICAgIH1cbiAgICB9XTtcblxuICAgIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgaWYgKHRoaXMudWlhdXRvbWF0b3IyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3BDaHJvbWVkcml2ZXJQcm94aWVzKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHN0b3AgQ2hyb21lRHJpdmVyIHByb3hpZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5qd3BQcm94eUFjdGl2ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHByb3h5IGRlbGV0ZVNlc3Npb24gdG8gVWlBdXRvbWF0b3IyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmFkYikge1xuICAgICAgYXdhaXQgQi5hbGwoc2NyZWVuUmVjb3JkaW5nU3RvcFRhc2tzLm1hcCgodGFzaykgPT4ge1xuICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0YXNrKCk7XG4gICAgICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgICAgICB9KSgpO1xuICAgICAgfSkpO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCAmJiB0aGlzLm9wdHMucmVzZXRLZXlib2FyZCAmJiB0aGlzLmRlZmF1bHRJTUUpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlc2V0dGluZyBJTUUgdG8gJyR7dGhpcy5kZWZhdWx0SU1FfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUodGhpcy5kZWZhdWx0SU1FKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlc2V0IElNRTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnU2h1dHRpbmcgZG93biB0aGUgYWRiIHByb2Nlc3Mgb2YgaW5zdHJ1bWVudGF0aW9uLi4uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmVuZEFuZHJvaWRDb3ZlcmFnZSgpO1xuICAgICAgICAvLyBVc2UgdGhpcyBicm9hZGNhc3QgaW50ZW50IHRvIG5vdGlmeSBpdCdzIHRpbWUgdG8gZHVtcCBjb3ZlcmFnZSB0byBmaWxlXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50KSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgU2VuZGluZyBpbnRlbnQgYnJvYWRjYXN0ICcke3RoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnR9JyBhdCB0aGUgZW5kIG9mIGluc3RydW1lbnRpbmcuYCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0KHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ05vIGFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCBpcyBjb25maWd1cmVkIGluIGNhcHMuIFBvc3NpYmx5IHlvdSBjYW5ub3QgZ2V0IGNvdmVyYWdlIGZpbGUuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uXG4gICAgICAgICAgICAmJiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldFxuICAgICAgICAgICAgJiYgIXRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gZm9yY2Ugc3RvcCBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBDYXBhYmlsaXR5ICdmdWxsUmVzZXQnIHNldCB0byAndHJ1ZScsIFVuaW5zdGFsbGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nYCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gdW5pbnN0YWxsIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgdmFsdWUgY2FuIGJlIHRydWUgaWYgdGVzdCB0YXJnZXQgZGV2aWNlIGlzIDw9IDI2XG4gICAgICBpZiAodGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIHdpbmRvdyBhbmltYXRpb24gc3RhdGUnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUodHJ1ZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zdG9wTG9nY2F0KCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VTeXN0ZW1Qb3J0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVtb3ZlIHN5c3RlbSBwb3J0IGZvcndhcmQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgLy8gSWdub3JlLCB0aGlzIGJsb2NrIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbiB3ZSBmYWxsIGluIGNhdGNoIGJsb2NrXG4gICAgICAgIC8vIGFuZCBiZWZvcmUgZXZlbiBwb3J0IGZvcndhcmQuXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VNanBlZ1NlcnZlclBvcnQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZW1vdmUgTUpQRUcgc2VydmVyIHBvcnQgZm9yd2FyZDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBJZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyBoaWRkZW4gYXBpIHBvbGljeSB0byB0aGUgZGV2aWNlIGRlZmF1bHQgY29uZmlndXJhdGlvbicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgbGV0IGF2ZE5hbWUgPSB0aGlzLm9wdHMuYXZkLnJlcGxhY2UoJ0AnLCAnJyk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDbG9zaW5nIGVtdWxhdG9yICcke2F2ZE5hbWV9J2ApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmtpbGxFbXVsYXRvcihhdmROYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIGNsb3NlIGVtdWxhdG9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm1qcGVnU3RyZWFtKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdDbG9zaW5nIE1KUEVHIHN0cmVhbScpO1xuICAgICAgdGhpcy5tanBlZ1N0cmVhbS5zdG9wKCk7XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrQXBwUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgYXBwIGlzIGFjdHVhbGx5IHByZXNlbnQnKTtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5vcHRzLmFwcCkpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgZmluZCBhcHAgYXBrIGF0ICcke3RoaXMub3B0cy5hcHB9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKCkge1xuICAgIC8vIGludGVudGlvbmFsbHkgZG8gbm90aGluZyBoZXJlLCBzaW5jZSBjb21tYW5kcy51cGRhdGVTZXR0aW5ncyBwcm94aWVzXG4gICAgLy8gc2V0dGluZ3MgdG8gdGhlIHVpYXV0bzIgc2VydmVyIGFscmVhZHlcbiAgfVxuXG4gIC8vIE5lZWQgdG8gb3ZlcnJpZGUgYW5kcm9pZC1kcml2ZXIncyB2ZXJzaW9uIG9mIHRoaXMgc2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHlcbiAgLy8gaGF2ZSBhIGJvb3RzdHJhcDsgaW5zdGVhZCB3ZSBqdXN0IHJlc3RhcnQgYWRiIGFuZCByZS1mb3J3YXJkIHRoZSBVaUF1dG9tYXRvcjJcbiAgLy8gcG9ydFxuICBhc3luYyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICAgIGF3YWl0IHdyYXBwZWQoKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5yZXN0YXJ0KCk7XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIucHJveHlBY3RpdmUoc2Vzc2lvbklkKTtcblxuICAgIC8vIHdlIGFsd2F5cyBoYXZlIGFuIGFjdGl2ZSBwcm94eSB0byB0aGUgVWlBdXRvbWF0b3IyIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuUHJveHkgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmNhblByb3h5KHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBjYW4gYWx3YXlzIHByb3h5IHRvIHRoZSB1aWF1dG9tYXRvcjIgc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc2lvbklkKTtcbiAgICAvLyB3ZSBhcmUgbWFpbnRhaW5pbmcgdHdvIHNldHMgb2YgTk9fUFJPWFkgbGlzdHMsIG9uZSBmb3IgY2hyb21lZHJpdmVyKENIUk9NRV9OT19QUk9YWSlcbiAgICAvLyBhbmQgb25lIGZvciB1aWF1dG9tYXRvcjIoTk9fUFJPWFkpLCBiYXNlZCBvbiBjdXJyZW50IGNvbnRleHQgd2lsbCByZXR1cm4gcmVsYXRlZCBOT19QUk9YWSBsaXN0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5jaHJvbWVkcml2ZXIpKSB7XG4gICAgICAvLyBpZiB0aGUgY3VycmVudCBjb250ZXh0IGlzIHdlYnZpZXcoY2hyb21lZHJpdmVyKSwgdGhlbiByZXR1cm4gQ0hST01FX05PX1BST1hZIGxpc3RcbiAgICAgIHRoaXMuandwUHJveHlBdm9pZCA9IENIUk9NRV9OT19QUk9YWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMubmF0aXZlV2ViU2NyZWVuc2hvdCkge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gWy4uLnRoaXMuandwUHJveHlBdm9pZCwgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGdldCBpc0Nocm9tZVNlc3Npb24gKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzQ2hyb21lQnJvd3Nlcih0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICB9XG59XG5cbi8vIGZpcnN0IGFkZCB0aGUgYW5kcm9pZC1kcml2ZXIgY29tbWFuZHMgd2hpY2ggd2Ugd2lsbCBmYWxsIGJhY2sgdG9cbmZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoYW5kcm9pZENvbW1hbmRzKSkge1xuICBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG59XG5cbi8vIHRoZW4gb3ZlcndyaXRlIHdpdGggYW55IHVpYXV0b21hdG9yMi1zcGVjaWZpYyBjb21tYW5kc1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xufVxuXG5leHBvcnQgeyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLE9BQU8sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsZ0JBQWxCLEVBQXVDQyxtQ0FBdkMsQ0FBaEI7QUFJQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLElBQUQsRUFBTyxJQUFQLENBQTFCOztBQUlBLE1BQU1DLDRCQUE0QixHQUFHQyxhQUFBLENBQUtDLGdCQUFMLENBQ25DQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsV0FBQSxDQUFHQyxNQUFILEVBQWIsRUFBMEIsd0JBQTFCLENBRG1DLEVBRW5DO0VBQUNDLE9BQU8sRUFBRSxFQUFWO0VBQWNDLFdBQVcsRUFBRTtBQUEzQixDQUZtQyxDQUFyQzs7QUFPQSxNQUFNQyxXQUFXLEdBQUcsSUFBcEI7QUFJQSxNQUFNQyx3QkFBd0IsR0FBRyxJQUFqQztBQUVBLE1BQU1DLGFBQWEsR0FBRyxXQUF0QjtBQU1BLE1BQU1DLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyxtQkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsNkJBQVgsQ0FBUixDQUZlLEVBR2YsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLDZCQUFYLENBQVIsQ0FIZSxFQUlmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVywrQ0FBWCxDQUFSLENBSmUsRUFLZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBUixDQUxlLEVBTWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLGtDQUFYLENBQVIsQ0FOZSxFQU9mLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVyxxQ0FBWCxDQUFSLENBUGUsRUFRZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBUixDQVJlLEVBU2YsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLHlCQUFYLENBQVIsQ0FUZSxFQVVmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVywwQkFBWCxDQUFSLENBVmUsRUFXZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcseUNBQVgsQ0FBUixDQVhlLEVBWWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLHlDQUFYLENBQVIsQ0FaZSxFQWFmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVyx1Q0FBWCxDQUFSLENBYmUsRUFjZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsZ0RBQVgsQ0FBUixDQWRlLEVBZWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLG9DQUFYLENBQVIsQ0FmZSxFQWdCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMENBQVgsQ0FBUixDQWhCZSxFQWlCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsd0NBQVgsQ0FBUixDQWpCZSxFQWtCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBUixDQWxCZSxFQW1CZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBUixDQW5CZSxFQW9CZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsb0NBQVgsQ0FBUixDQXBCZSxFQXFCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsNEJBQVgsQ0FBUixDQXJCZSxFQXNCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBUixDQXRCZSxFQXVCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcscUJBQVgsQ0FBUixDQXZCZSxFQXdCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOEJBQVgsQ0FBVCxDQXhCZSxFQXlCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQXpCZSxFQTBCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkJBQVgsQ0FBVCxDQTFCZSxFQTJCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQTNCZSxFQTRCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkNBQVgsQ0FBVCxDQTVCZSxFQTZCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsa0NBQVgsQ0FBVCxDQTdCZSxFQThCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQTlCZSxFQStCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0RBQVgsQ0FBVCxDQS9CZSxFQWdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsb0RBQVgsQ0FBVCxDQWhDZSxFQWlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNENBQVgsQ0FBVCxDQWpDZSxFQWtDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkNBQVgsQ0FBVCxDQWxDZSxFQW1DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQW5DZSxFQW9DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBVCxDQXBDZSxFQXFDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQXJDZSxFQXNDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0NBQVgsQ0FBVCxDQXRDZSxFQXVDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQXZDZSxFQXdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsZ0NBQVgsQ0FBVCxDQXhDZSxFQXlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQXpDZSxFQTBDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQTFDZSxFQTJDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBVCxDQTNDZSxFQTRDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0JBQVgsQ0FBVCxDQTVDZSxFQTZDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQTdDZSxFQThDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsb0NBQVgsQ0FBVCxDQTlDZSxFQStDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQS9DZSxFQWdEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcscUNBQVgsQ0FBVCxDQWhEZSxFQWlEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0JBQVgsQ0FBVCxDQWpEZSxFQWtEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcscUJBQVgsQ0FBVCxDQWxEZSxFQXFEZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBUixDQXJEZSxFQXNEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFK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
|
|
646
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ1aWF1dG9tYXRvcjJIZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJERVZJQ0VfUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJERVZJQ0VfUE9SVCIsIk1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCIsIkxPQ0FMSE9TVF9JUDQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIkFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInVpYXV0b21hdG9yMiIsImp3cFByb3h5QWN0aXZlIiwiZGVmYXVsdElNRSIsImp3cFByb3h5QXZvaWQiLCJhcGtTdHJpbmdzIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJhbGxvd0ludmlzaWJsZUVsZW1lbnRzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImZuIiwiXyIsIm1lbW9pemUiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwiY2FwcyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsImlzQ2hyb21lU2Vzc2lvbiIsImxvZyIsImluZm8iLCJwa2ciLCJhY3Rpdml0eSIsImdldENocm9tZVBrZyIsImJyb3dzZXJOYW1lIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwicmVib290Iiwic2V0QXZkRnJvbUNhcGFiaWxpdGllcyIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiIsImNoZWNrQXBwUHJlc2VudCIsInN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiIsImZpbGxEZXZpY2VEZXRhaWxzIiwibWpwZWdTY3JlZW5zaG90VXJsIiwibWpwZWdTdHJlYW0iLCJtanBlZyIsIk1KcGVnU3RyZWFtIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInBpeGVsUmF0aW8iLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwic3RhdEJhckhlaWdodCIsImdldFN0YXR1c0JhckhlaWdodCIsInZpZXdwb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsImRyaXZlckRhdGEiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJkZWJ1ZyIsInVpYTJEYXRhIiwiandwcm94eSIsImNvbW1hbmQiLCJpc0VtdWxhdG9yIiwiYWRiIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiYWxsb2NhdGVTeXN0ZW1Qb3J0IiwiZm9yd2FyZFBvcnQiLCJsb2NhbFBvcnQiLCJjaGVja1BvcnRTdGF0dXMiLCJzeXN0ZW1Qb3J0IiwiX2hhc1N5c3RlbVBvcnRJbkNhcHMiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJyZWxlYXNlU3lzdGVtUG9ydCIsInJlbW92ZVBvcnRGb3J3YXJkIiwiYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0IiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImNyZWF0ZUFEQiIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJzZXRIaWRkZW5BcGlQb2xpY3kiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsImhhc1ZhbHVlIiwiZ3BzRW5hYmxlZCIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJ3YXJuIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJpbml0RGV2aWNlIiwiaW5pdFVpQXV0b21hdG9yMlNlcnZlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwic3RhcnRTZXNzaW9uIiwiYWRkRGV2aWNlSW5mb1RvQ2FwcyIsInNraXBVbmxvY2siLCJ1bmxvY2siLCJzdGFydENocm9tZVNlc3Npb24iLCJlbnN1cmVBcHBTdGFydHMiLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJ1aWF1dG9tYXRvcjJPcHRzIiwiaG9zdCIsInJlbW90ZUFkYkhvc3QiLCJkZXZpY2VQb3J0IiwiYXBrIiwidG1wRGlyIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJyZWFkVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiVWlBdXRvbWF0b3IyU2VydmVyIiwicHJveHlSZXFSZXMiLCJwcm94eUNvbW1hbmQiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiaW5zdGFsbFNlcnZlckFwayIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIlNFUlZFUl9QQUNLQUdFX0lEIiwiU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCIsInN0ZGVyciIsIm1lc3NhZ2UiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwicGFyc2VBcnJheSIsIm90aGVyQXBwcyIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwibm9SZXNldCIsImlzQXBwSW5zdGFsbGVkIiwibm9TaWduIiwiY2hlY2tBcGtDZXJ0IiwicmVxdWlyZURlZmF1bHRDZXJ0Iiwic2lnbkFwcCIsInNraXBVbmluc3RhbGwiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsImFuZHJvaWRDb3ZlcmFnZSIsInByb2Nlc3NFeGlzdHMiLCJzdGFydEFwcCIsImFjdGlvbiIsImludGVudEFjdGlvbiIsImNhdGVnb3J5IiwiaW50ZW50Q2F0ZWdvcnkiLCJmbGFncyIsImludGVudEZsYWdzIiwid2FpdFBrZyIsIndhaXRBY3Rpdml0eSIsIndhaXRGb3JMYXVuY2giLCJhcHBXYWl0Rm9yTGF1bmNoIiwid2FpdER1cmF0aW9uIiwiYXBwV2FpdER1cmF0aW9uIiwib3B0aW9uYWxJbnRlbnRBcmd1bWVudHMiLCJzdG9wQXBwIiwiZG9udFN0b3BBcHBPblJlc2V0IiwicmV0cnkiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJzY3JlZW5SZWNvcmRpbmdTdG9wVGFza3MiLCJpc0VtcHR5IiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwibW9iaWxlSXNNZWRpYVByb2plY3Rpb25SZWNvcmRpbmdSdW5uaW5nIiwibW9iaWxlU3RvcE1lZGlhUHJvamVjdGlvblJlY29yZGluZyIsIl9zY3JlZW5TdHJlYW1pbmdQcm9wcyIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJzdG9wQ2hyb21lZHJpdmVyUHJveGllcyIsImVyciIsInRhc2siLCJpZ24iLCJ1bmljb2RlS2V5Ym9hcmQiLCJyZXNldEtleWJvYXJkIiwic2V0SU1FIiwiZW5kQW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwiYnJvYWRjYXN0IiwiZm9yY2VTdG9wIiwic3RvcExvZ2NhdCIsImVycm9yIiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzdG9wIiwiZnMiLCJleGlzdHMiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJyZXN0YXJ0IiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImlzQ2hyb21lQnJvd3NlciIsImNtZCIsInRvUGFpcnMiLCJhbmRyb2lkQ29tbWFuZHMiLCJwcm90b3R5cGUiLCJjb21tYW5kcyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQge1xuICBVaUF1dG9tYXRvcjJTZXJ2ZXIsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXG59IGZyb20gJy4vdWlhdXRvbWF0b3IyJztcbmltcG9ydCB7IGZzLCB1dGlsLCBtanBlZyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgY29tbWFuZHMgZnJvbSAnLi9jb21tYW5kcy9pbmRleCc7XG5pbXBvcnQgeyBERUZBVUxUX0FEQl9QT1JUIH0gZnJvbSAnYXBwaXVtLWFkYic7XG5pbXBvcnQgdWlhdXRvbWF0b3IySGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgYW5kcm9pZEhlbHBlcnMsIGFuZHJvaWRDb21tYW5kcywgU0VUVElOR1NfSEVMUEVSX1BLR19JRFxufSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuaW1wb3J0IGRlc2lyZWRDYXBDb25zdHJhaW50cyBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSwgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQVBLX0VYVEVOU0lPTiwgQVBLU19FWFRFTlNJT04gfSBmcm9tICcuL2V4dGVuc2lvbnMnO1xuXG5cbmNvbnN0IGhlbHBlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB1aWF1dG9tYXRvcjJIZWxwZXJzLCBhbmRyb2lkSGVscGVycyk7XG5cbi8vIFRoZSByYW5nZSBvZiBwb3J0cyB3ZSBjYW4gdXNlIG9uIHRoZSBzeXN0ZW0gZm9yIGNvbW11bmljYXRpbmcgdG8gdGhlXG4vLyBVaUF1dG9tYXRvcjIgSFRUUCBzZXJ2ZXIgb24gdGhlIGRldmljZVxuY29uc3QgREVWSUNFX1BPUlRfUkFOR0UgPSBbODIwMCwgODI5OV07XG5cbi8vIFRoZSBndWFyZCBpcyBuZWVkZWQgdG8gYXZvaWQgZHluYW1pYyBzeXN0ZW0gcG9ydCBhbGxvY2F0aW9uIGNvbmZsaWN0cyBmb3Jcbi8vIHBhcmFsbGVsIGRyaXZlciBzZXNzaW9uc1xuY29uc3QgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRCA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChcbiAgcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCAndWlhMl9kZXZpY2VfcG9ydF9ndWFyZCcpLFxuICB7dGltZW91dDogMjUsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuLy8gVGhpcyBpcyB0aGUgcG9ydCB0aGF0IFVpQXV0b21hdG9yMiBsaXN0ZW5zIHRvIG9uIHRoZSBkZXZpY2UuIFdlIHdpbGwgZm9yd2FyZFxuLy8gb25lIG9mIHRoZSBwb3J0cyBhYm92ZSBvbiB0aGUgc3lzdGVtIHRvIHRoaXMgcG9ydCBvbiB0aGUgZGV2aWNlLlxuY29uc3QgREVWSUNFX1BPUlQgPSA2NzkwO1xuLy8gVGhpcyBpcyB0aGUgcG9ydCB0aGF0IHRoZSBVaUF1dG9tYXRvcjIgTUpQRUcgc2VydmVyIGxpc3RlbnMgdG8gb24gdGhlIGRldmljZS5cbi8vIFdlIHdpbGwgZm9yd2FyZCBvbmUgb2YgdGhlIHBvcnRzIGFib3ZlIG9uIHRoZSBzeXN0ZW0gdG8gdGhpcyBwb3J0IG9uIHRoZVxuLy8gZGV2aWNlLlxuY29uc3QgTUpQRUdfU0VSVkVSX0RFVklDRV9QT1JUID0gNzgxMDtcblxuY29uc3QgTE9DQUxIT1NUX0lQNCA9ICcxMjcuMC4wLjEnO1xuXG4vLyBOT19QUk9YWSBjb250YWlucyB0aGUgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIFVpQXV0b21hdG9yMiBzZXJ2ZXIuXG4vLyBUT0RPOiAgQWRkIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBVaUF1dG9tYXRvcjIgc2VydmVyLlxuLy8gVE9ETzogTmVlZCB0byBzZWdyZWdhdGUgdGhlIHBhdGhzIGJldHRlciB3YXkgdXNpbmcgcmVndWxhciBleHByZXNzaW9ucyB3aGVyZXZlciBhcHBsaWNhYmxlLlxuLy8gKE5vdCBzZWdyZWdhdGluZyByaWdodCBhd2F5IGJlY2F1c2UgbW9yZSBwYXRocyB0byBiZSBhZGRlZCBpbiB0aGUgTk9fUFJPWFkgbGlzdClcbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi8oPyEuKi8pJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydF9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnQvW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9bXi9dKy9jdXJyZW50X2FjdGl2aXR5JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvY3VycmVudF9wYWNrYWdlJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc2V0dGluZ3MnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHRzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2F0dHJpYnV0ZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9kaXNwbGF5ZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZW5hYmxlZCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9sb2NhdGlvbl9pbl92aWV3JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL25hbWUnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvc2NyZWVuc2hvdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9zZWxlY3RlZCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90aW1lb3V0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdXJsJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvW14vXStfYWxlcnQkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWN0aW9ucycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0L1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwL1teL10nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvc3RhcnRfYWN0aXZpdHknKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2NvbXBhcmVfaW1hZ2VzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS8oPyFzZXRfY2xpcGJvYXJkKVteL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2VsZW1lbnQvW14vXSsvcmVwbGFjZV92YWx1ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9lbGVtZW50L1teL10rL3ZhbHVlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2dldFBlcmZvcm1hbmNlRGF0YScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9wZXJmb3JtYW5jZURhdGEvdHlwZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc2V0dGluZ3MnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZXhlY3V0ZV9kcml2ZXInKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc3RhcnRfcmVjb3JkaW5nX3NjcmVlbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zdG9wX3JlY29yZGluZ19zY3JlZW4nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vLipldmVudCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsva2V5cycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvY2F0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdGltZW91dHMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3VybCcpXSxcblxuICAvLyBNSlNPTldQIGNvbW1hbmRzXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZy90eXBlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlX2FzeW5jJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuICAvLyBXM0MgY29tbWFuZHNcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cvdHlwZXMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3dpbmRvdy9yZWN0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gQ2hyb21lZHJpdmVyLlxuY29uc3QgQ0hST01FX05PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvcmVjdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcblxuICAvLyB0aGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSBtb2JpbGU6IGNvbW1hbmRzIHdvcmtpbmcgaW4gd2ViIGNvbnRleHRcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZyQnKV0sXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcyQnKV0sXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZyQnKV0sXG5dO1xuXG5jb25zdCBNRU1PSVpFRF9GVU5DVElPTlMgPSBbXG4gICdnZXRTdGF0dXNCYXJIZWlnaHQnLFxuICAnZ2V0RGV2aWNlUGl4ZWxSYXRpbycsXG5dO1xuXG5jbGFzcyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgICAvLyBgc2hlbGxgIG92ZXJ3cml0ZXMgYWRiLnNoZWxsLCBzbyByZW1vdmVcbiAgICBkZWxldGUgb3B0cy5zaGVsbDtcblxuICAgIHN1cGVyKG9wdHMsIHNob3VsZFZhbGlkYXRlQ2Fwcyk7XG4gICAgdGhpcy5sb2NhdG9yU3RyYXRlZ2llcyA9IFtcbiAgICAgICd4cGF0aCcsXG4gICAgICAnaWQnLFxuICAgICAgJ2NsYXNzIG5hbWUnLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgICAnLWFuZHJvaWQgdWlhdXRvbWF0b3InXG4gICAgXTtcbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGVmYXVsdElNRSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG4gICAgdGhpcy5hcGtTdHJpbmdzID0ge307IC8vIG1hcCBvZiBsYW5ndWFnZSAtPiBzdHJpbmdzIG9ialxuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2UsIGFsbG93SW52aXNpYmxlRWxlbWVudHM6IGZhbHNlfSxcbiAgICAgICAgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuICAgIC8vIGhhbmRsZSB3ZWJ2aWV3IG1lY2hhbmljcyBmcm9tIEFuZHJvaWREcml2ZXJcbiAgICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVycyA9IHt9O1xuXG4gICAgLy8gbWVtb2l6ZSBmdW5jdGlvbnMgaGVyZSwgc28gdGhhdCB0aGV5IGFyZSBkb25lIG9uIGEgcGVyLWluc3RhbmNlIGJhc2lzXG4gICAgZm9yIChjb25zdCBmbiBvZiBNRU1PSVpFRF9GVU5DVElPTlMpIHtcbiAgICAgIHRoaXNbZm5dID0gXy5tZW1vaXplKHRoaXNbZm5dKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZURlc2lyZWRDYXBzIChjYXBzKSB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlRGVzaXJlZENhcHMoY2FwcykgJiYgYW5kcm9pZEhlbHBlcnMudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgb3RoZXJTZXNzaW9uRGF0YSBmb3IgbXVsdGlwbGUgc2Vzc2lvbnNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG5cbiAgICAgIGxldCBzZXJ2ZXJEZXRhaWxzID0ge1xuICAgICAgICBwbGF0Zm9ybTogJ0xJTlVYJyxcbiAgICAgICAgd2ViU3RvcmFnZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0YWtlc1NjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxuICAgICAgICBkYXRhYmFzZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxvY2F0aW9uQ29udGV4dEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIGRlc2lyZWQ6IHRoaXMuY2FwcyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcblxuICAgICAgbGV0IGRlZmF1bHRPcHRzID0ge1xuICAgICAgICBmdWxsUmVzZXQ6IGZhbHNlLFxuICAgICAgICBhdXRvTGF1bmNoOiB0cnVlLFxuICAgICAgICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwXG4gICAgICB9O1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLm9wdHMsIGRlZmF1bHRPcHRzKTtcblxuICAgICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oXCJXZSdyZSBnb2luZyB0byBydW4gYSBDaHJvbWUtYmFzZWQgc2Vzc2lvblwiKTtcbiAgICAgICAgbGV0IHtwa2csIGFjdGl2aXR5fSA9IGhlbHBlcnMuZ2V0Q2hyb21lUGtnKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gICAgICAgIHRoaXMub3B0cy5hcHBQYWNrYWdlID0gdGhpcy5jYXBzLmFwcFBhY2thZ2UgPSBwa2c7XG4gICAgICAgIHRoaXMub3B0cy5hcHBBY3Rpdml0eSA9IHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSA9IGFjdGl2aXR5O1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBDaHJvbWUtdHlwZSBwYWNrYWdlIGFuZCBhY3Rpdml0eSBhcmUgJHtwa2d9IGFuZCAke2FjdGl2aXR5fWApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICB0aGlzLnNldEF2ZEZyb21DYXBhYmlsaXRpZXMoY2Fwcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICAgIC8vIGZpbmQgYW5kIGNvcHksIG9yIGRvd25sb2FkIGFuZCB1bnppcCBhbiBhcHAgdXJsIG9yIHBhdGhcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAodGhpcy5vcHRzLmFwcCwgW0FQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tBcHBQcmVzZW50KCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICAgIC8vIHRoZSBhcHAgaXNuJ3QgYW4gYWN0dWFsIGFwcCBmaWxlIGJ1dCByYXRoZXIgc29tZXRoaW5nIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gYXNzdW1lIGlzIG9uIHRoZSBkZXZpY2UgYW5kIGp1c3QgbGF1bmNoIHZpYSB0aGUgYXBwUGFja2FnZVxuICAgICAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nIGRpcmVjdGx5IG9uIHRoZSBkZXZpY2VgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYE5laXRoZXIgJ2FwcCcgbm9yICdhcHBQYWNrYWdlJyB3YXMgc2V0LiBTdGFydGluZyBVaUF1dG9tYXRvcjIgYCArXG4gICAgICAgICAgJ3dpdGhvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhpcy5vcHRzLmFkYlBvcnQgPSB0aGlzLm9wdHMuYWRiUG9ydCB8fCBERUZBVUxUX0FEQl9QT1JUO1xuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbigpO1xuICAgICAgYXdhaXQgdGhpcy5maWxsRGV2aWNlRGV0YWlscygpO1xuICAgICAgaWYgKHRoaXMub3B0cy5tanBlZ1NjcmVlbnNob3RVcmwpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgTUpQRUcgc3RyZWFtIHJlYWRpbmcgVVJMOiAnJHt0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsfSdgKTtcbiAgICAgICAgdGhpcy5tanBlZ1N0cmVhbSA9IG5ldyBtanBlZy5NSnBlZ1N0cmVhbSh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5zdGFydCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtzZXNzaW9uSWQsIHRoaXMuY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbGxEZXZpY2VEZXRhaWxzICgpIHtcbiAgICB0aGlzLmNhcHMucGl4ZWxSYXRpbyA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlUGl4ZWxSYXRpbygpO1xuICAgIHRoaXMuY2Fwcy5zdGF0QmFySGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXNCYXJIZWlnaHQoKTtcbiAgICB0aGlzLmNhcHMudmlld3BvcnRSZWN0ID0gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbiAgfVxuXG4gIGdldCBkcml2ZXJEYXRhICgpIHtcbiAgICAvLyBUT0RPIGZpbGwgb3V0IHJlc291cmNlIGluZm8gaGVyZVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlc3Npb24gKCkge1xuICAgIGxldCBzZXNzaW9uRGF0YSA9IGF3YWl0IHN1cGVyLmdldFNlc3Npb24oKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBzZXNzaW9uIGRldGFpbHMgZnJvbSBzZXJ2ZXIgdG8gbWl4IGluJyk7XG4gICAgbGV0IHVpYTJEYXRhID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvJywgJ0dFVCcsIHt9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc2Vzc2lvbkRhdGEsIHVpYTJEYXRhKTtcbiAgfVxuXG4gIGlzRW11bGF0b3IgKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzRW11bGF0b3IodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gIH1cblxuICBzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIChjYXBzKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdmQpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ2F2ZCBuYW1lIGRlZmluZWQsIGlnbm9yaW5nIGRldmljZSBuYW1lIGFuZCBwbGF0Zm9ybSB2ZXJzaW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2Fwcy5kZXZpY2VOYW1lKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBkZXZpY2VOYW1lIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZXMnKTtcbiAgICAgIH1cbiAgICAgIGlmICghY2Fwcy5wbGF0Zm9ybVZlcnNpb24pIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIHBsYXRmb3JtVmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVkJyk7XG4gICAgICB9XG4gICAgICBsZXQgYXZkRGV2aWNlID0gY2Fwcy5kZXZpY2VOYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Xy5dL2csICctJyk7XG4gICAgICB0aGlzLm9wdHMuYXZkID0gYCR7YXZkRGV2aWNlfV9fJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn1gO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFsbG9jYXRlU3lzdGVtUG9ydCAoKSB7XG4gICAgY29uc3QgZm9yd2FyZFBvcnQgPSBhc3luYyAobG9jYWxQb3J0KSA9PiB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgRm9yd2FyZGluZyBVaUF1dG9tYXRvcjIgU2VydmVyIHBvcnQgJHtERVZJQ0VfUE9SVH0gdG8gbG9jYWwgcG9ydCAke2xvY2FsUG9ydH1gKTtcbiAgICAgIGlmICgoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKGxvY2FsUG9ydCwgTE9DQUxIT1NUX0lQNCkpID09PSAnb3BlbicpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVWlBdXRvbWF0b3IyIFNlcnZlciBjYW5ub3Qgc3RhcnQgYmVjYXVzZSB0aGUgbG9jYWwgcG9ydCAjJHtsb2NhbFBvcnR9IGlzIGJ1c3kuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgdGhlIHBvcnQgeW91IHByb3ZpZGUgdmlhICdzeXN0ZW1Qb3J0JyBjYXBhYmlsaXR5IGlzIG5vdCBvY2N1cGllZC4gYCArXG4gICAgICAgICAgYFRoaXMgc2l0dWF0aW9uIG1pZ2h0IG9mdGVuIGJlIGEgcmVzdWx0IG9mIGFuIGluYWNjdXJhdGUgc2Vzc2lvbnMgbWFuYWdlbWVudCwgZS5nLiBgICtcbiAgICAgICAgICBgb2xkIGF1dG9tYXRpb24gc2Vzc2lvbnMgb24gdGhlIHNhbWUgZGV2aWNlIG11c3QgYWx3YXlzIGJlIGNsb3NlZCBiZWZvcmUgc3RhcnRpbmcgbmV3IG9uZXMuYCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5mb3J3YXJkUG9ydChsb2NhbFBvcnQsIERFVklDRV9QT1JUKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5zeXN0ZW1Qb3J0KSB7XG4gICAgICB0aGlzLl9oYXNTeXN0ZW1Qb3J0SW5DYXBzID0gdHJ1ZTtcbiAgICAgIHJldHVybiBhd2FpdCBmb3J3YXJkUG9ydCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfVxuXG4gICAgYXdhaXQgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IERFVklDRV9QT1JUX1JBTkdFO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5vcHRzLnN5c3RlbVBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShzdGFydFBvcnQsIGVuZFBvcnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KFxuICAgICAgICAgIGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fX0uIGAgK1xuICAgICAgICAgIGBQbGVhc2Ugc2V0IHRoZSBhdmFpbGFibGUgcG9ydCBudW1iZXIgYnkgcHJvdmlkaW5nIHRoZSBzeXN0ZW1Qb3J0IGNhcGFiaWxpdHkgb3IgYCArXG4gICAgICAgICAgYGRvdWJsZSBjaGVjayB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGxvY2tpbmcgcG9ydHMgd2l0aGluIHRoaXMgcmFuZ2UgYW5kIHRlcm1pbmF0ZSBgICtcbiAgICAgICAgICBgdGhlc2Ugd2hpY2ggYXJlIG5vdCBuZWVkZWQgYW55bW9yZWApO1xuICAgICAgfVxuICAgICAgYXdhaXQgZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVsZWFzZVN5c3RlbVBvcnQgKCkge1xuICAgIGlmICghdGhpcy5vcHRzLnN5c3RlbVBvcnQgfHwgIXRoaXMuYWRiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hhc1N5c3RlbVBvcnRJbkNhcHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRChhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0ICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCwgTUpQRUdfU0VSVkVSX0RFVklDRV9QT1JUKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0ICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRVaUF1dG9tYXRvcjJTZXNzaW9uICgpIHtcbiAgICAvLyBnZXQgZGV2aWNlIHVkaWQgZm9yIHRoaXMgc2Vzc2lvblxuICAgIGxldCB7dWRpZCwgZW1Qb3J0fSA9IGF3YWl0IGhlbHBlcnMuZ2V0RGV2aWNlSW5mb0Zyb21DYXBzKHRoaXMub3B0cyk7XG4gICAgdGhpcy5vcHRzLnVkaWQgPSB1ZGlkO1xuICAgIHRoaXMub3B0cy5lbVBvcnQgPSBlbVBvcnQ7XG5cbiAgICAvLyBub3cgdGhhdCB3ZSBrbm93IG91ciBqYXZhIHZlcnNpb24gYW5kIGRldmljZSBpbmZvLCB3ZSBjYW4gY3JlYXRlIG91clxuICAgIC8vIEFEQiBpbnN0YW5jZVxuICAgIHRoaXMuYWRiID0gYXdhaXQgYW5kcm9pZEhlbHBlcnMuY3JlYXRlQURCKHRoaXMub3B0cyk7XG5cbiAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG5cbiAgICBpZiAoYXBpTGV2ZWwgPCAyMSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVUlBdXRvbWF0b3IyIGlzIG9ubHkgc3VwcG9ydGVkIHNpbmNlIEFuZHJvaWQgNS4wIChMb2xsaXBvcCkuICcgK1xuICAgICAgICAnWW91IGNvdWxkIHN0aWxsIHVzZSBvdGhlciBzdXBwb3J0ZWQgYmFja2VuZHMgaW4gb3JkZXIgdG8gYXV0b21hdGUgb2xkZXIgQW5kcm9pZCB2ZXJzaW9ucy4nKTtcbiAgICB9XG5cbiAgICBpZiAoYXBpTGV2ZWwgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICB0aGlzLmxvZy5pbmZvKCdSZWxheGluZyBoaWRkZW4gYXBpIHBvbGljeScpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SGlkZGVuQXBpUG9saWN5KCcxJywgISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgdG8gZW5hYmxlL2Rpc2FibGUgZ3BzIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvblxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5ncHNFbmFibGVkKSkge1xuICAgICAgaWYgKHRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFRyeWluZyB0byAke3RoaXMub3B0cy5ncHNFbmFibGVkID8gJ2VuYWJsZScgOiAnZGlzYWJsZSd9IGdwcyBsb2NhdGlvbiBwcm92aWRlcmApO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi50b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyKHRoaXMub3B0cy5ncHNFbmFibGVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFNvcnJ5ISAnZ3BzRW5hYmxlZCcgY2FwYWJpbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZ2V0IGFwcFBhY2thZ2UgZXQgYWwgZnJvbSBtYW5pZmVzdCBpZiBuZWNlc3NhcnlcbiAgICBjb25zdCBhcHBJbmZvID0gYXdhaXQgaGVscGVycy5nZXRMYXVuY2hJbmZvKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIC8vIGFuZCBnZXQgaXQgb250byBvdXIgJ29wdHMnIG9iamVjdCBzbyB3ZSB1c2UgaXQgZnJvbSBub3cgb25cbiAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgYXBwSW5mbyB8fCB7fSk7XG5cbiAgICAvLyBzZXQgYWN0dWFsIGRldmljZSBuYW1lLCB1ZGlkLCBwbGF0Zm9ybSB2ZXJzaW9uLCBzY3JlZW4gc2l6ZSwgc2NyZWVuIGRlbnNpdHksIG1vZGVsIGFuZCBtYW51ZmFjdHVyZXIgZGV0YWlsc1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VOYW1lID0gdGhpcy5hZGIuY3VyRGV2aWNlSWQ7XG4gICAgdGhpcy5jYXBzLmRldmljZVVESUQgPSB0aGlzLm9wdHMudWRpZDtcblxuICAgIC8vIHN0YXJ0IGFuIGF2ZCwgc2V0IHRoZSBsYW5ndWFnZS9sb2NhbGUsIHBpY2sgYW4gZW11bGF0b3IsIGV0Yy4uLlxuICAgIC8vIFRPRE8gd2l0aCBtdWx0aXBsZSBkZXZpY2VzIHdlJ2xsIG5lZWQgdG8gcGFyYW1ldGVyaXplIHRoaXNcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBhd2FpdCBoZWxwZXJzLmluaXREZXZpY2UodGhpcy5hZGIsIHRoaXMub3B0cyk7XG5cbiAgICAvLyBQcmVwYXJlIHRoZSBkZXZpY2UgYnkgZm9yd2FyZGluZyB0aGUgVWlBdXRvbWF0b3IyIHBvcnRcbiAgICAvLyBUaGlzIGNhbGwgbXV0YXRlcyB0aGlzLm9wdHMuc3lzdGVtUG9ydCBpZiBpdCBpcyBub3Qgc2V0IGV4cGxpY2l0bHlcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlU3lzdGVtUG9ydCgpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgZGV2aWNlIGJ5IGZvcndhcmRpbmcgdGhlIFVpQXV0b21hdG9yMiBNSlBFRyBzZXJ2ZXIgcG9ydCAoaWZcbiAgICAvLyBhcHBsaWNhYmxlKVxuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQoKTtcblxuICAgIC8vIHNldCB1cCB0aGUgbW9kaWZpZWQgVWlBdXRvbWF0b3IyIHNlcnZlciBldGNcbiAgICBhd2FpdCB0aGlzLmluaXRVaUF1dG9tYXRvcjJTZXJ2ZXIoKTtcblxuICAgIC8vIFNob3VsZCBiZSBhZnRlciBpbnN0YWxsaW5nIGlvLmFwcGl1bS5zZXR0aW5ncyBpbiBoZWxwZXJzLmluaXREZXZpY2VcbiAgICBpZiAodGhpcy5vcHRzLmRpc2FibGVXaW5kb3dBbmltYXRpb24gJiYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCAyNikpIHsgLy8gQVBJIGxldmVsIDI2IGlzIEFuZHJvaWQgOC4wLlxuICAgICAgLy8gR3JhbnRpbmcgYW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9BTklNQVRJT05fU0NBTEUgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhbmltYXRpb25zIHVuZGVyIEFQSSBsZXZlbCAyNlxuICAgICAgLy8gUmVhZCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9wdWxsLzExNjQwI2lzc3VlY29tbWVudC00MzgyNjA0NzdcbiAgICAgIC8vIGAtLW5vLXdpbmRvdy1hbmltYXRpb25gIHdvcmtzIG92ZXIgQW5kcm9pZCA4IHRvIGRpc2FibGUgYWxsIG9mIGFuaW1hdGlvbnNcbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FuaW1hdGlvbk9uKCkpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnRGlzYWJsaW5nIGFuaW1hdGlvbiB2aWEgaW8uYXBwaXVtLnNldHRpbmdzJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnV2luZG93IGFuaW1hdGlvbiBpcyBhbHJlYWR5IGRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHVwIGFwcCB1bmRlciB0ZXN0XG4gICAgLy8gcHJlcGFyZSBvdXIgYWN0dWFsIEFVVCwgZ2V0IGl0IG9uIHRoZSBkZXZpY2UsIGV0Yy4uLlxuICAgIGF3YWl0IHRoaXMuaW5pdEFVVCgpO1xuXG4gICAgLy8gQWRkaW5nIEFVVCBwYWNrYWdlIG5hbWUgaW4gdGhlIGNhcGFiaWxpdGllcyBpZiBwYWNrYWdlIG5hbWUgbm90IGV4aXN0IGluIGNhcHNcbiAgICBpZiAoIXRoaXMuY2Fwcy5hcHBQYWNrYWdlICYmIGFwcEluZm8pIHtcbiAgICAgIHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gYXBwSW5mby5hcHBQYWNrYWdlO1xuICAgIH1cblxuICAgIC8vIGxhdW5jaCBVaUF1dG9tYXRvcjIgYW5kIHdhaXQgdGlsbCBpdHMgb25saW5lIGFuZCB3ZSBoYXZlIGEgc2Vzc2lvblxuICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLnN0YXJ0U2Vzc2lvbih0aGlzLmNhcHMpO1xuXG4gICAgYXdhaXQgdGhpcy5hZGREZXZpY2VJbmZvVG9DYXBzKCk7XG5cbiAgICAvLyBVbmxvY2sgdGhlIGRldmljZSBhZnRlciB0aGUgc2Vzc2lvbiBpcyBzdGFydGVkLlxuICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmxvY2spIHtcbiAgICAgIC8vIHVubG9jayB0aGUgZGV2aWNlIHRvIHByZXBhcmUgaXQgZm9yIHRlc3RpbmdcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5sb2NrKHRoaXMsIHRoaXMuYWRiLCB0aGlzLmNhcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ3NraXBVbmxvY2snIGNhcGFiaWxpdHkgc2V0LCBzbyBza2lwcGluZyBkZXZpY2UgdW5sb2NrYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7IC8vIHN0YXJ0IGEgY2hyb21lZHJpdmVyIHNlc3Npb25cbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVTZXNzaW9uKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLmF1dG9MYXVuY2ggJiYgdGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQXBwU3RhcnRzKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGluaXRpYWwgb3JpZW50YXRpb24gaXMgcmVxdWVzdGVkLCBzZXQgaXRcbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMub3JpZW50YXRpb24pKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBpbml0aWFsIG9yaWVudGF0aW9uIHRvICcke3RoaXMub3B0cy5vcmllbnRhdGlvbn0nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldE9yaWVudGF0aW9uKHRoaXMub3B0cy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgLy8gaWYgd2Ugd2FudCB0byBpbW1lZGlhdGVseSBnZXQgaW50byBhIHdlYnZpZXcsIHNldCBvdXIgY29udGV4dFxuICAgIC8vIGFwcHJvcHJpYXRlbHlcbiAgICBpZiAodGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBjb25zdCB2aWV3TmFtZSA9IHRoaXMuZGVmYXVsdFdlYnZpZXdOYW1lKCk7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5vcHRzLmF1dG9XZWJ2aWV3VGltZW91dCB8fCAyMDAwO1xuICAgICAgdGhpcy5sb2cuaW5mbyhgU2V0dGluZyBhdXRvIHdlYnZpZXcgdG8gY29udGV4dCAnJHt2aWV3TmFtZX0nIHdpdGggdGltZW91dCAke3RpbWVvdXR9bXNgKTtcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwodGltZW91dCAvIDUwMCwgNTAwLCB0aGlzLnNldENvbnRleHQuYmluZCh0aGlzKSwgdmlld05hbWUpO1xuICAgIH1cblxuICAgIC8vIG5vdyB0aGF0IGV2ZXJ5dGhpbmcgaGFzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCB0dXJuIG9uIHByb3h5aW5nIHNvIGFsbFxuICAgIC8vIHN1YnNlcXVlbnQgc2Vzc2lvbiByZXF1ZXN0cyBnbyBzdHJhaWdodCB0by9mcm9tIHVpYXV0b21hdG9yMlxuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgYWRkRGV2aWNlSW5mb1RvQ2FwcyAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIG1hbnVmYWN0dXJlcixcbiAgICAgIG1vZGVsLFxuICAgICAgcmVhbERpc3BsYXlTaXplLFxuICAgICAgZGlzcGxheURlbnNpdHksXG4gICAgfSA9IGF3YWl0IHRoaXMubW9iaWxlR2V0RGV2aWNlSW5mbygpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VBcGlMZXZlbCA9IHBhcnNlSW50KGFwaVZlcnNpb24sIDEwKTtcbiAgICB0aGlzLmNhcHMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5TaXplID0gcmVhbERpc3BsYXlTaXplO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5EZW5zaXR5ID0gZGlzcGxheURlbnNpdHk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1vZGVsID0gbW9kZWw7XG4gICAgdGhpcy5jYXBzLmRldmljZU1hbnVmYWN0dXJlciA9IG1hbnVmYWN0dXJlcjtcbiAgfVxuXG4gIGFzeW5jIGluaXRVaUF1dG9tYXRvcjJTZXJ2ZXIgKCkge1xuICAgIC8vIGJyb2tlbiBvdXQgZm9yIHJlYWRhYmlsaXR5XG4gICAgY29uc3QgdWlhdXRvbWF0b3IyT3B0cyA9IHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0cy5yZW1vdGVBZGJIb3N0IHx8IHRoaXMub3B0cy5ob3N0IHx8IExPQ0FMSE9TVF9JUDQsXG4gICAgICBzeXN0ZW1Qb3J0OiB0aGlzLm9wdHMuc3lzdGVtUG9ydCxcbiAgICAgIGRldmljZVBvcnQ6IERFVklDRV9QT1JULFxuICAgICAgYWRiOiB0aGlzLmFkYixcbiAgICAgIGFwazogdGhpcy5vcHRzLmFwcCxcbiAgICAgIHRtcERpcjogdGhpcy5vcHRzLnRtcERpcixcbiAgICAgIGFwcFBhY2thZ2U6IHRoaXMub3B0cy5hcHBQYWNrYWdlLFxuICAgICAgYXBwQWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgIGRpc2FibGVXaW5kb3dBbmltYXRpb246ICEhdGhpcy5vcHRzLmRpc2FibGVXaW5kb3dBbmltYXRpb24sXG4gICAgICBkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZTogdGhpcy5vcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlLFxuICAgICAgcmVhZFRpbWVvdXQ6IHRoaXMub3B0cy51aWF1dG9tYXRvcjJTZXJ2ZXJSZWFkVGltZW91dCxcbiAgICB9O1xuICAgIC8vIG5vdyB0aGF0IHdlIGhhdmUgcGFja2FnZSBhbmQgYWN0aXZpdHksIHdlIGNhbiBjcmVhdGUgYW4gaW5zdGFuY2Ugb2ZcbiAgICAvLyB1aWF1dG9tYXRvcjIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uc1xuICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbmV3IFVpQXV0b21hdG9yMlNlcnZlcih0aGlzLmxvZywgdWlhdXRvbWF0b3IyT3B0cyk7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5UmVxUmVzLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuICAgIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy51aWF1dG9tYXRvcjIucHJveHlDb21tYW5kLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuXG4gICAgaWYgKHRoaXMub3B0cy5za2lwU2VydmVySW5zdGFsbGF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAnc2tpcFNlcnZlckluc3RhbGxhdGlvbicgaXMgc2V0LiBTa2lwcGluZyBVSUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGxhdGlvbi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuaW5zdGFsbFNlcnZlckFwayh0aGlzLm9wdHMudWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0KFxuICAgICAgICAgIFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lELFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgYWRkIHNlcnZlciBwYWNrYWdlcyB0byB0aGUgRG96ZSB3aGl0ZWxpc3QuIE9yaWdpbmFsIGVycm9yOiBgICtcbiAgICAgICAgICAoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdEFVVCAoKSB7XG4gICAgLy8gVW5pbnN0YWxsIGFueSB1bmluc3RhbGxPdGhlclBhY2thZ2VzIHdoaWNoIHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpIHtcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyhcbiAgICAgICAgdGhpcy5hZGIsXG4gICAgICAgIGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyksXG4gICAgICAgIFtTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBTRVJWRVJfUEFDS0FHRV9JRCwgU0VSVkVSX1RFU1RfUEFDS0FHRV9JRF1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5zdGFsbCBhbnkgXCJvdGhlckFwcHNcIiB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLm90aGVyQXBwcykge1xuICAgICAgbGV0IG90aGVyQXBwcztcbiAgICAgIHRyeSB7XG4gICAgICAgIG90aGVyQXBwcyA9IGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMub3RoZXJBcHBzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IHBhcnNlIFwib3RoZXJBcHBzXCIgY2FwYWJpbGl0eTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBvdGhlckFwcHMgPSBhd2FpdCBCLmFsbChvdGhlckFwcHNcbiAgICAgICAgLm1hcCgoYXBwKSA9PiB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKGFwcCwgW0FQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OXSkpKTtcbiAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbE90aGVyQXBrcyhvdGhlckFwcHMsIHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLm5vUmVzZXQgJiYgIShhd2FpdCB0aGlzLmFkYi5pc0FwcEluc3RhbGxlZCh0aGlzLm9wdHMuYXBwUGFja2FnZSkpXG4gICAgICAgICAgfHwgIXRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLm5vU2lnbiAmJiAhYXdhaXQgdGhpcy5hZGIuY2hlY2tBcGtDZXJ0KHRoaXMub3B0cy5hcHAsIHRoaXMub3B0cy5hcHBQYWNrYWdlLCB7XG4gICAgICAgICAgcmVxdWlyZURlZmF1bHRDZXJ0OiBmYWxzZSxcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICBhd2FpdCBoZWxwZXJzLnNpZ25BcHAodGhpcy5hZGIsIHRoaXMub3B0cy5hcHApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmluc3RhbGwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbEFwayh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdub1Jlc2V0IGhhcyBiZWVuIHJlcXVlc3RlZCBhbmQgdGhlIGFwcCBpcyBhbHJlYWR5IGluc3RhbGxlZC4gRG9pbmcgbm90aGluZycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGdWxsIHJlc2V0IHJlcXVpcmVzIGFuIGFwcCBjYXBhYmlsaXR5LCB1c2UgZmFzdFJlc2V0IGlmIGFwcCBpcyBub3QgcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBhcHAgY2FwYWJpbGl0eS4gQXNzdW1pbmcgaXQgaXMgYWxyZWFkeSBvbiB0aGUgZGV2aWNlJyk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZhc3RSZXNldCAmJiB0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICBhd2FpdCBoZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGVuc3VyZUFwcFN0YXJ0cyAoKSB7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYWN0aXZpdHkgYW5kIHBhY2thZ2UgdG8gd2FpdCBmb3JcbiAgICBjb25zdCBhcHBXYWl0UGFja2FnZSA9IHRoaXMub3B0cy5hcHBXYWl0UGFja2FnZSB8fCB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbiAgICBjb25zdCBhcHBXYWl0QWN0aXZpdHkgPSB0aGlzLm9wdHMuYXBwV2FpdEFjdGl2aXR5IHx8IHRoaXMub3B0cy5hcHBBY3Rpdml0eTtcblxuICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfS8ke3RoaXMub3B0cy5hcHBBY3Rpdml0eX0gYCArXG4gICAgICBgYW5kIHdhaXRpbmcgZm9yICcke2FwcFdhaXRQYWNrYWdlfS8ke2FwcFdhaXRBY3Rpdml0eX0nYCk7XG5cbiAgICBpZiAodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgYW5kcm9pZENvdmVyYWdlIGlzIGNvbmZpZ3VyZWQuIGAgK1xuICAgICAgICBgIFN0YXJ0aW5nIGluc3RydW1lbnRhdGlvbiBvZiAnJHt0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlfScuLi5gKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmFuZHJvaWRDb3ZlcmFnZSh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlLCBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmIGF3YWl0IHRoaXMuYWRiLnByb2Nlc3NFeGlzdHModGhpcy5vcHRzLmFwcFBhY2thZ2UpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYCcke3RoaXMub3B0cy5hcHBQYWNrYWdlfScgaXMgYWxyZWFkeSBydW5uaW5nYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKHtcbiAgICAgICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uIHx8ICdhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTicsXG4gICAgICAgIGNhdGVnb3J5OiB0aGlzLm9wdHMuaW50ZW50Q2F0ZWdvcnkgfHwgJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJyxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyB8fCAnMHgxMDIwMDAwMCcsIC8vIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEXG4gICAgICAgIHdhaXRQa2c6IHRoaXMub3B0cy5hcHBXYWl0UGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwV2FpdEFjdGl2aXR5LFxuICAgICAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICAgICAgd2FpdER1cmF0aW9uOiB0aGlzLm9wdHMuYXBwV2FpdER1cmF0aW9uLFxuICAgICAgICBvcHRpb25hbEludGVudEFyZ3VtZW50czogdGhpcy5vcHRzLm9wdGlvbmFsSW50ZW50QXJndW1lbnRzLFxuICAgICAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICAgICAgcmV0cnk6IHRydWUsXG4gICAgICAgIHVzZXI6IHRoaXMub3B0cy51c2VyUHJvZmlsZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIFVpQXV0b21hdG9yMiBzZXNzaW9uJyk7XG5cbiAgICBjb25zdCBzY3JlZW5SZWNvcmRpbmdTdG9wVGFza3MgPSBbYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKCk7XG4gICAgICB9XG4gICAgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGF3YWl0IHRoaXMubW9iaWxlSXNNZWRpYVByb2plY3Rpb25SZWNvcmRpbmdSdW5uaW5nKCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wTWVkaWFQcm9qZWN0aW9uUmVjb3JkaW5nKCk7XG4gICAgICB9XG4gICAgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuU3RyZWFtaW5nUHJvcHMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZygpO1xuICAgICAgfVxuICAgIH1dO1xuXG4gICAgYXdhaXQgYW5kcm9pZEhlbHBlcnMucmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzKHRoaXMuc2VydmVyLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICBpZiAodGhpcy51aWF1dG9tYXRvcjIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gc3RvcCBDaHJvbWVEcml2ZXIgcHJveGllczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmp3cFByb3h5QWN0aXZlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcHJveHkgZGVsZXRlU2Vzc2lvbiB0byBVaUF1dG9tYXRvcjI6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBhd2FpdCBCLmFsbChzY3JlZW5SZWNvcmRpbmdTdG9wVGFza3MubWFwKCh0YXNrKSA9PiB7XG4gICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRhc2soKTtcbiAgICAgICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICAgIH0pKCk7XG4gICAgICB9KSk7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkICYmIHRoaXMub3B0cy5yZXNldEtleWJvYXJkICYmIHRoaXMuZGVmYXVsdElNRSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgUmVzZXR0aW5nIElNRSB0byAnJHt0aGlzLmRlZmF1bHRJTUV9J2ApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldElNRSh0aGlzLmRlZmF1bHRJTUUpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVzZXQgSU1FOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdTaHV0dGluZyBkb3duIHRoZSBhZGIgcHJvY2VzcyBvZiBpbnN0cnVtZW50YXRpb24uLi4nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuZW5kQW5kcm9pZENvdmVyYWdlKCk7XG4gICAgICAgIC8vIFVzZSB0aGlzIGJyb2FkY2FzdCBpbnRlbnQgdG8gbm90aWZ5IGl0J3MgdGltZSB0byBkdW1wIGNvdmVyYWdlIHRvIGZpbGVcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBTZW5kaW5nIGludGVudCBicm9hZGNhc3QgJyR7dGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZUVuZEludGVudH0nIGF0IHRoZSBlbmQgb2YgaW5zdHJ1bWVudGluZy5gKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5icm9hZGNhc3QodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybignTm8gYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IGlzIGNvbmZpZ3VyZWQgaW4gY2Fwcy4gUG9zc2libHkgeW91IGNhbm5vdCBnZXQgY292ZXJhZ2UgZmlsZS4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Nocm9tZVNlc3Npb25cbiAgICAgICAgICAgICYmICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0XG4gICAgICAgICAgICAmJiAhdGhpcy5vcHRzLm5vUmVzZXQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBmb3JjZSBzdG9wIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZGVidWcoYENhcGFiaWxpdHkgJ2Z1bGxSZXNldCcgc2V0IHRvICd0cnVlJywgVW5pbnN0YWxsaW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfSdgKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byB1bmluc3RhbGwgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gVGhpcyB2YWx1ZSBjYW4gYmUgdHJ1ZSBpZiB0ZXN0IHRhcmdldCBkZXZpY2UgaXMgPD0gMjZcbiAgICAgIGlmICh0aGlzLl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3Jpbmcgd2luZG93IGFuaW1hdGlvbiBzdGF0ZScpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZSh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0b3BMb2djYXQoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVsZWFzZVN5c3RlbVBvcnQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZW1vdmUgc3lzdGVtIHBvcnQgZm9yd2FyZDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBJZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVsZWFzZU1qcGVnU2VydmVyUG9ydCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlbW92ZSBNSlBFRyBzZXJ2ZXIgcG9ydCBmb3J3YXJkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIC8vIElnbm9yZSwgdGhpcyBibG9jayB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW4gd2UgZmFsbCBpbiBjYXRjaCBibG9ja1xuICAgICAgICAvLyBhbmQgYmVmb3JlIGV2ZW4gcG9ydCBmb3J3YXJkLlxuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyOCkgeyAvLyBBbmRyb2lkIFBcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIGhpZGRlbiBhcGkgcG9saWN5IHRvIHRoZSBkZXZpY2UgZGVmYXVsdCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3koISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICBsZXQgYXZkTmFtZSA9IHRoaXMub3B0cy5hdmQucmVwbGFjZSgnQCcsICcnKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENsb3NpbmcgZW11bGF0b3IgJyR7YXZkTmFtZX0nYCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIua2lsbEVtdWxhdG9yKGF2ZE5hbWUpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gY2xvc2UgZW11bGF0b3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWpwZWdTdHJlYW0pIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ0Nsb3NpbmcgTUpQRUcgc3RyZWFtJyk7XG4gICAgICB0aGlzLm1qcGVnU3RyZWFtLnN0b3AoKTtcbiAgICB9XG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG5cbiAgYXN5bmMgY2hlY2tBcHBQcmVzZW50ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgd2hldGhlciBhcHAgaXMgYWN0dWFsbHkgcHJlc2VudCcpO1xuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm9wdHMuYXBwKSkpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIGFwcCBhcGsgYXQgJyR7dGhpcy5vcHRzLmFwcH0nYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25TZXR0aW5nc1VwZGF0ZSAoKSB7XG4gICAgLy8gaW50ZW50aW9uYWxseSBkbyBub3RoaW5nIGhlcmUsIHNpbmNlIGNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzIHByb3hpZXNcbiAgICAvLyBzZXR0aW5ncyB0byB0aGUgdWlhdXRvMiBzZXJ2ZXIgYWxyZWFkeVxuICB9XG5cbiAgLy8gTmVlZCB0byBvdmVycmlkZSBhbmRyb2lkLWRyaXZlcidzIHZlcnNpb24gb2YgdGhpcyBzaW5jZSB3ZSBkb24ndCBhY3R1YWxseVxuICAvLyBoYXZlIGEgYm9vdHN0cmFwOyBpbnN0ZWFkIHdlIGp1c3QgcmVzdGFydCBhZGIgYW5kIHJlLWZvcndhcmQgdGhlIFVpQXV0b21hdG9yMlxuICAvLyBwb3J0XG4gIGFzeW5jIHdyYXBCb290c3RyYXBEaXNjb25uZWN0ICh3cmFwcGVkKSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlU3lzdGVtUG9ydCgpO1xuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQoKTtcbiAgfVxuXG4gIHByb3h5QWN0aXZlIChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5wcm94eUFjdGl2ZShzZXNzaW9uSWQpO1xuXG4gICAgLy8gd2UgYWx3YXlzIGhhdmUgYW4gYWN0aXZlIHByb3h5IHRvIHRoZSBVaUF1dG9tYXRvcjIgc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjYW5Qcm94eSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuY2FuUHJveHkoc2Vzc2lvbklkKTtcblxuICAgIC8vIHdlIGNhbiBhbHdheXMgcHJveHkgdG8gdGhlIHVpYXV0b21hdG9yMiBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5nZXRQcm94eUF2b2lkTGlzdChzZXNzaW9uSWQpO1xuICAgIC8vIHdlIGFyZSBtYWludGFpbmluZyB0d28gc2V0cyBvZiBOT19QUk9YWSBsaXN0cywgb25lIGZvciBjaHJvbWVkcml2ZXIoQ0hST01FX05PX1BST1hZKVxuICAgIC8vIGFuZCBvbmUgZm9yIHVpYXV0b21hdG9yMihOT19QUk9YWSksIGJhc2VkIG9uIGN1cnJlbnQgY29udGV4dCB3aWxsIHJldHVybiByZWxhdGVkIE5PX1BST1hZIGxpc3RcbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmNocm9tZWRyaXZlcikpIHtcbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgd2VidmlldyhjaHJvbWVkcml2ZXIpLCB0aGVuIHJldHVybiBDSFJPTUVfTk9fUFJPWFkgbGlzdFxuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gQ0hST01FX05PX1BST1hZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBOT19QUk9YWTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0cy5uYXRpdmVXZWJTY3JlZW5zaG90KSB7XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBbLi4udGhpcy5qd3BQcm94eUF2b2lkLCBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUF2b2lkO1xuICB9XG5cbiAgZ2V0IGlzQ2hyb21lU2Vzc2lvbiAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNDaHJvbWVCcm93c2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gIH1cbn1cblxuLy8gZmlyc3QgYWRkIHRoZSBhbmRyb2lkLWRyaXZlciBjb21tYW5kcyB3aGljaCB3ZSB3aWxsIGZhbGwgYmFjayB0b1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhhbmRyb2lkQ29tbWFuZHMpKSB7XG4gIEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbn1cblxuLy8gdGhlbiBvdmVyd3JpdGUgd2l0aCBhbnkgdWlhdXRvbWF0b3IyLXNwZWNpZmljIGNvbW1hbmRzXG5mb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG59XG5cbmV4cG9ydCB7IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQyxnQkFBbEIsRUFBdUNDLG1DQUF2QyxDQUFoQjtBQUlBLE1BQU1DLGlCQUFpQixHQUFHLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBMUI7O0FBSUEsTUFBTUMsNEJBQTRCLEdBQUdDLGFBQUEsQ0FBS0MsZ0JBQUwsQ0FDbkNDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxXQUFBLENBQUdDLE1BQUgsRUFBYixFQUEwQix3QkFBMUIsQ0FEbUMsRUFFbkM7RUFBQ0MsT0FBTyxFQUFF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TUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxvREFBWCxDQUFULENBaENlLEVBaUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0Q0FBWCxDQUFULENBakNlLEVBa0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywyQ0FBWCxDQUFULENBbENlLEVBbUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4Q0FBWCxDQUFULENBbkNlLEVBb0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxpQ0FBWCxDQUFULENBcENlLEVBcUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx1Q0FBWCxDQUFULENBckNlLEVBc0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywrQ0FBWCxDQUFULENBdENlLEVBdUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw4Q0FBWCxDQUFULENBdkNlLEVBd0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxnQ0FBWCxDQUFULENBeENlLEVBeUNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx5QkFBWCxDQUFULENBekNlLEVBMENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx5QkFBWCxDQUFULENBMUNlLEVBMkNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywyQkFBWCxDQUFULENBM0NlLEVBNENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxzQkFBWCxDQUFULENBNUNlLEVBNkNmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywwQkFBWCxDQUFULENBN0NlLEVBOENmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxvQ0FBWCxDQUFULENBOUNlLEVBK0NmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVywwQkFBWCxDQUFULENBL0NlLEVBZ0RmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxxQ0FBWCxDQUFU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
|
package/lib/driver.js
CHANGED
|
@@ -576,6 +576,10 @@ class AndroidUiautomator2Driver extends BaseDriver {
|
|
|
576
576
|
` Starting instrumentation of '${this.caps.androidCoverage}'...`);
|
|
577
577
|
await this.adb.androidCoverage(this.caps.androidCoverage, appWaitPackage, appWaitActivity);
|
|
578
578
|
} else {
|
|
579
|
+
if (this.opts.noReset && await this.adb.processExists(this.opts.appPackage)) {
|
|
580
|
+
this.log.info(`'${this.opts.appPackage}' is already running`);
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
579
583
|
await this.adb.startApp({
|
|
580
584
|
pkg: this.opts.appPackage,
|
|
581
585
|
activity: this.opts.appActivity,
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-uiautomator2-driver",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.8",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-uiautomator2-driver",
|
|
9
|
-
"version": "2.4.
|
|
9
|
+
"version": "2.4.8",
|
|
10
10
|
"engines": [
|
|
11
11
|
"node"
|
|
12
12
|
],
|
|
@@ -1246,10 +1246,7 @@
|
|
|
1246
1246
|
"license": "MIT"
|
|
1247
1247
|
},
|
|
1248
1248
|
"node_modules/appium-adb": {
|
|
1249
|
-
"version": "9.10.
|
|
1250
|
-
"engines": [
|
|
1251
|
-
"node"
|
|
1252
|
-
],
|
|
1249
|
+
"version": "9.10.8",
|
|
1253
1250
|
"license": "Apache-2.0",
|
|
1254
1251
|
"dependencies": {
|
|
1255
1252
|
"@appium/support": "^2.55.3",
|
|
@@ -1263,23 +1260,12 @@
|
|
|
1263
1260
|
"lru-cache": "^7.3.0",
|
|
1264
1261
|
"semver": "^7.0.0",
|
|
1265
1262
|
"source-map-support": "^0.x",
|
|
1266
|
-
"teen_process": "^
|
|
1263
|
+
"teen_process": "^2.0.1",
|
|
1267
1264
|
"utf7": "^1.0.2"
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
"engines": [
|
|
1273
|
-
"node"
|
|
1274
|
-
],
|
|
1275
|
-
"license": "Apache-2.0",
|
|
1276
|
-
"dependencies": {
|
|
1277
|
-
"@babel/runtime": "^7.0.0",
|
|
1278
|
-
"bluebird": "^3.5.1",
|
|
1279
|
-
"lodash": "^4.17.4",
|
|
1280
|
-
"shell-quote": "^1.4.3",
|
|
1281
|
-
"source-map-support": "^0.5.3",
|
|
1282
|
-
"which": "^2.0.2"
|
|
1265
|
+
},
|
|
1266
|
+
"engines": {
|
|
1267
|
+
"node": ">=14",
|
|
1268
|
+
"npm": ">=8"
|
|
1283
1269
|
}
|
|
1284
1270
|
},
|
|
1285
1271
|
"node_modules/appium-android-driver": {
|
|
@@ -1314,7 +1300,7 @@
|
|
|
1314
1300
|
}
|
|
1315
1301
|
},
|
|
1316
1302
|
"node_modules/appium-chromedriver": {
|
|
1317
|
-
"version": "5.1.
|
|
1303
|
+
"version": "5.1.7",
|
|
1318
1304
|
"hasInstallScript": true,
|
|
1319
1305
|
"license": "Apache-2.0",
|
|
1320
1306
|
"dependencies": {
|
|
@@ -1323,7 +1309,7 @@
|
|
|
1323
1309
|
"asyncbox": "^2.0.2",
|
|
1324
1310
|
"axios": "^0.x",
|
|
1325
1311
|
"bluebird": "^3.5.1",
|
|
1326
|
-
"compare-versions": "^
|
|
1312
|
+
"compare-versions": "^5.0.0",
|
|
1327
1313
|
"fancy-log": "^2.0.0",
|
|
1328
1314
|
"lodash": "^4.17.4",
|
|
1329
1315
|
"semver": "^7.0.0",
|
|
@@ -1878,7 +1864,7 @@
|
|
|
1878
1864
|
}
|
|
1879
1865
|
},
|
|
1880
1866
|
"node_modules/compare-versions": {
|
|
1881
|
-
"version": "
|
|
1867
|
+
"version": "5.0.1",
|
|
1882
1868
|
"license": "MIT"
|
|
1883
1869
|
},
|
|
1884
1870
|
"node_modules/compress-brotli": {
|
|
@@ -3659,7 +3645,7 @@
|
|
|
3659
3645
|
}
|
|
3660
3646
|
},
|
|
3661
3647
|
"node_modules/moment-timezone": {
|
|
3662
|
-
"version": "0.5.
|
|
3648
|
+
"version": "0.5.37",
|
|
3663
3649
|
"license": "MIT",
|
|
3664
3650
|
"dependencies": {
|
|
3665
3651
|
"moment": ">= 2.9.0"
|
|
@@ -4941,15 +4927,15 @@
|
|
|
4941
4927
|
}
|
|
4942
4928
|
},
|
|
4943
4929
|
"node_modules/teen_process": {
|
|
4944
|
-
"version": "2.0.
|
|
4930
|
+
"version": "2.0.1",
|
|
4945
4931
|
"license": "Apache-2.0",
|
|
4946
4932
|
"dependencies": {
|
|
4947
|
-
"@babel/runtime": "
|
|
4948
|
-
"bluebird": "
|
|
4949
|
-
"lodash": "
|
|
4950
|
-
"shell-quote": "
|
|
4951
|
-
"source-map-support": "
|
|
4952
|
-
"which": "
|
|
4933
|
+
"@babel/runtime": "7.18.9",
|
|
4934
|
+
"bluebird": "3.7.2",
|
|
4935
|
+
"lodash": "4.17.21",
|
|
4936
|
+
"shell-quote": "1.7.3",
|
|
4937
|
+
"source-map-support": "0.5.21",
|
|
4938
|
+
"which": "2.0.2"
|
|
4953
4939
|
},
|
|
4954
4940
|
"engines": {
|
|
4955
4941
|
"node": ">=14",
|
|
@@ -5027,7 +5013,7 @@
|
|
|
5027
5013
|
}
|
|
5028
5014
|
},
|
|
5029
5015
|
"node_modules/typescript": {
|
|
5030
|
-
"version": "4.
|
|
5016
|
+
"version": "4.8.2",
|
|
5031
5017
|
"license": "Apache-2.0",
|
|
5032
5018
|
"peer": true,
|
|
5033
5019
|
"bin": {
|
|
@@ -6249,7 +6235,7 @@
|
|
|
6249
6235
|
"version": "1.1.0"
|
|
6250
6236
|
},
|
|
6251
6237
|
"appium-adb": {
|
|
6252
|
-
"version": "9.10.
|
|
6238
|
+
"version": "9.10.8",
|
|
6253
6239
|
"requires": {
|
|
6254
6240
|
"@appium/support": "^2.55.3",
|
|
6255
6241
|
"@babel/runtime": "^7.0.0",
|
|
@@ -6262,21 +6248,8 @@
|
|
|
6262
6248
|
"lru-cache": "^7.3.0",
|
|
6263
6249
|
"semver": "^7.0.0",
|
|
6264
6250
|
"source-map-support": "^0.x",
|
|
6265
|
-
"teen_process": "^
|
|
6251
|
+
"teen_process": "^2.0.1",
|
|
6266
6252
|
"utf7": "^1.0.2"
|
|
6267
|
-
},
|
|
6268
|
-
"dependencies": {
|
|
6269
|
-
"teen_process": {
|
|
6270
|
-
"version": "1.16.0",
|
|
6271
|
-
"requires": {
|
|
6272
|
-
"@babel/runtime": "^7.0.0",
|
|
6273
|
-
"bluebird": "^3.5.1",
|
|
6274
|
-
"lodash": "^4.17.4",
|
|
6275
|
-
"shell-quote": "^1.4.3",
|
|
6276
|
-
"source-map-support": "^0.5.3",
|
|
6277
|
-
"which": "^2.0.2"
|
|
6278
|
-
}
|
|
6279
|
-
}
|
|
6280
6253
|
}
|
|
6281
6254
|
},
|
|
6282
6255
|
"appium-android-driver": {
|
|
@@ -6304,14 +6277,14 @@
|
|
|
6304
6277
|
}
|
|
6305
6278
|
},
|
|
6306
6279
|
"appium-chromedriver": {
|
|
6307
|
-
"version": "5.1.
|
|
6280
|
+
"version": "5.1.7",
|
|
6308
6281
|
"requires": {
|
|
6309
6282
|
"@babel/runtime": "^7.0.0",
|
|
6310
6283
|
"@xmldom/xmldom": "^0.x",
|
|
6311
6284
|
"asyncbox": "^2.0.2",
|
|
6312
6285
|
"axios": "^0.x",
|
|
6313
6286
|
"bluebird": "^3.5.1",
|
|
6314
|
-
"compare-versions": "^
|
|
6287
|
+
"compare-versions": "^5.0.0",
|
|
6315
6288
|
"fancy-log": "^2.0.0",
|
|
6316
6289
|
"lodash": "^4.17.4",
|
|
6317
6290
|
"semver": "^7.0.0",
|
|
@@ -6681,7 +6654,7 @@
|
|
|
6681
6654
|
"extraneous": true
|
|
6682
6655
|
},
|
|
6683
6656
|
"compare-versions": {
|
|
6684
|
-
"version": "
|
|
6657
|
+
"version": "5.0.1"
|
|
6685
6658
|
},
|
|
6686
6659
|
"compress-brotli": {
|
|
6687
6660
|
"version": "1.3.8",
|
|
@@ -7815,7 +7788,7 @@
|
|
|
7815
7788
|
"version": "2.29.4"
|
|
7816
7789
|
},
|
|
7817
7790
|
"moment-timezone": {
|
|
7818
|
-
"version": "0.5.
|
|
7791
|
+
"version": "0.5.37",
|
|
7819
7792
|
"requires": {
|
|
7820
7793
|
"moment": ">= 2.9.0"
|
|
7821
7794
|
}
|
|
@@ -8665,14 +8638,14 @@
|
|
|
8665
8638
|
}
|
|
8666
8639
|
},
|
|
8667
8640
|
"teen_process": {
|
|
8668
|
-
"version": "2.0.
|
|
8641
|
+
"version": "2.0.1",
|
|
8669
8642
|
"requires": {
|
|
8670
|
-
"@babel/runtime": "
|
|
8671
|
-
"bluebird": "
|
|
8672
|
-
"lodash": "
|
|
8673
|
-
"shell-quote": "
|
|
8674
|
-
"source-map-support": "
|
|
8675
|
-
"which": "
|
|
8643
|
+
"@babel/runtime": "7.18.9",
|
|
8644
|
+
"bluebird": "3.7.2",
|
|
8645
|
+
"lodash": "4.17.21",
|
|
8646
|
+
"shell-quote": "1.7.3",
|
|
8647
|
+
"source-map-support": "0.5.21",
|
|
8648
|
+
"which": "2.0.2"
|
|
8676
8649
|
}
|
|
8677
8650
|
},
|
|
8678
8651
|
"text-hex": {
|
|
@@ -8718,7 +8691,7 @@
|
|
|
8718
8691
|
}
|
|
8719
8692
|
},
|
|
8720
8693
|
"typescript": {
|
|
8721
|
-
"version": "4.
|
|
8694
|
+
"version": "4.8.2",
|
|
8722
8695
|
"peer": true
|
|
8723
8696
|
},
|
|
8724
8697
|
"uc.micro": {
|