appium-android-driver 5.8.8 → 5.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/build/index.js +1 -1
- package/build/lib/android-helpers.js +8 -6
- package/build/lib/android-helpers.js.map +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/bootstrap.js.map +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-management.js +1 -1
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/coverage.js +1 -1
- package/build/lib/commands/coverage.js.map +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/emu-console.js.map +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/file-actions.js.map +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/ime.js.map +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/intent.js.map +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/media-projection.js +1 -1
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/permissions.js +1 -1
- package/build/lib/commands/permissions.js.map +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/shell.js.map +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/streamscreen.js.map +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/system-bars.js.map +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/driver.js.map +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/logger.js.map +1 -1
- package/build/lib/method-map.js +1 -1
- package/build/lib/method-map.js.map +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/uiautomator.js.map +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/unlock-helpers.js.map +1 -1
- package/build/lib/utils.js +1 -1
- package/build/lib/utils.js.map +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/build/lib/webview-helpers.js.map +1 -1
- package/lib/android-helpers.js +12 -8
- package/lib/commands/performance.js +17 -0
- package/package.json +2 -2
package/build/lib/driver.js
CHANGED
|
@@ -406,4 +406,4 @@ class AndroidDriver extends _driver.BaseDriver {
|
|
|
406
406
|
exports.AndroidDriver = AndroidDriver;
|
|
407
407
|
var _default = AndroidDriver;
|
|
408
408
|
exports.default = _default;
|
|
409
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBUFBfRVhURU5TSU9OIiwiREVWSUNFX1BPUlQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkFuZHJvaWREcml2ZXIiLCJCYXNlRHJpdmVyIiwibmV3TWV0aG9kTWFwIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJkZXNpcmVkQ29uc3RyYWludHMiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImp3cFByb3h5QWN0aXZlIiwiandwUHJveHlBdm9pZCIsIl8iLCJjbG9uZSIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJhcGtTdHJpbmdzIiwidW5sb2NrZXIiLCJoZWxwZXJzIiwiY21kIiwiZm4iLCJ0b1BhaXJzIiwiY29tbWFuZHMiLCJwcm90b3R5cGUiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJkZWZhdWx0T3B0cyIsImFjdGlvbiIsImNhdGVnb3J5IiwiZmxhZ3MiLCJkaXNhYmxlQW5kcm9pZFdhdGNoZXJzIiwidG1wRGlyIiwidGVtcERpciIsInN0YXRpY0RpciIsImZ1bGxSZXNldCIsImF1dG9MYXVuY2giLCJhZGJQb3J0IiwiREVGQVVMVF9BREJfUE9SVCIsImJvb3RzdHJhcFBvcnQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsInVzZVVubG9ja0hlbHBlckFwcCIsImlzVW5kZWZpbmVkIiwidW5sb2NrVHlwZSIsIm5vUmVzZXQiLCJmYXN0UmVzZXQiLCJza2lwVW5pbnN0YWxsIiwiaXNDaHJvbWVTZXNzaW9uIiwiYWRqdXN0QnJvd3NlclNlc3Npb25DYXBzIiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsInB1c2giLCJyZWJvb3QiLCJzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImFkYiIsImNyZWF0ZUFEQiIsInN1cHByZXNzS2lsbFNlcnZlciIsInJlbW90ZUFkYkhvc3QiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiYWRiRXhlY1RpbWVvdXQiLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiZ2V0QXBpTGV2ZWwiLCJsb2ciLCJ3YXJuIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJhcHAiLCJhcHBQYWNrYWdlIiwiY29uZmlndXJlQXBwIiwiY2hlY2tBcHBQcmVzZW50IiwiYXBwT25EZXZpY2UiLCJpbmZvIiwiY2hlY2tQYWNrYWdlUHJlc2VudCIsInV0aWwiLCJoYXNWYWx1ZSIsIm5ldHdvcmtTcGVlZCIsImlzRW11bGF0b3IiLCJlbnN1cmVOZXR3b3JrU3BlZWQiLCJncHNFbmFibGVkIiwidG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlciIsInN0YXJ0QW5kcm9pZFNlc3Npb24iLCJlIiwiZGVsZXRlU2Vzc2lvbiIsImlnbiIsImF2ZCIsImRldmljZU5hbWUiLCJlcnJvckFuZFRocm93IiwicGxhdGZvcm1WZXJzaW9uIiwiYXZkRGV2aWNlIiwicmVwbGFjZSIsImlzQ2hyb21lQnJvd3NlciIsImJyb3dzZXJOYW1lIiwia2V5IiwidmFsdWUiLCJzZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IiwiZGVmYXVsdElNRSIsImluaXREZXZpY2UiLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJnZXRQbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VTY3JlZW5TaXplIiwiZ2V0U2NyZWVuU2l6ZSIsImRldmljZU1vZGVsIiwiZ2V0TW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJnZXRNYW51ZmFjdHVyZXIiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwiaXNBbmltYXRpb25PbiIsInNldEhpZGRlbkFwaVBvbGljeSIsImlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwiYm9vdHN0cmFwIiwid2Vic29ja2V0Iiwic3RhcnQiLCJhY2NlcHRTc2xDZXJ0cyIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwiZXJyIiwiaWdub3JlVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJza2lwVW5sb2NrIiwidW5sb2NrIiwidXBkYXRlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic3RhcnRBVVQiLCJvcmllbnRhdGlvbiIsImRlYnVnIiwic2V0T3JpZW50YXRpb24iLCJpbml0QXV0b1dlYnZpZXciLCJhdXRvV2VidmlldyIsInZpZXdOYW1lIiwiZGVmYXVsdFdlYnZpZXdOYW1lIiwidGltZW91dCIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwibGF1bmNoSW5mbyIsImdldExhdW5jaEluZm8iLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwidmFsaWRhdGVEZXNpcmVkQ2FwcyIsInBhcnNlQXJyYXkiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwib3RoZXJBcHBzIiwibWVzc2FnZSIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwicmVzZXRBcHAiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiYXBrU3RyaW5nc0Zvckxhbmd1YWdlIiwicHVzaFN0cmluZ3MiLCJsYW5ndWFnZSIsInNoYXJlZFByZWZlcmVuY2VzIiwic2V0U2hhcmVkUHJlZmVyZW5jZXMiLCJmcyIsImV4aXN0cyIsInNoZWxsIiwiY29tcHJlc3MiLCJzZW5kQWN0aW9uIiwiY29tcHJlc3NMYXlvdXQiLCJpc0VtcHR5IiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwicmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzIiwic2VydmVyIiwibW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyIsInN0b3BDaHJvbWVkcml2ZXJQcm94aWVzIiwidW5pY29kZUtleWJvYXJkIiwicmVzZXRLZXlib2FyZCIsInNldElNRSIsImRvbnRTdG9wQXBwT25SZXNldCIsImZvcmNlU3RvcCIsImdvVG9Ib21lIiwic2h1dGRvd24iLCJzdG9wTG9nY2F0Iiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzaGFyZWRQcmVmcyIsIm5hbWUiLCJKU09OIiwic3RyaW5naWZ5IiwicmVtb3RlUGF0aCIsInJlbW90ZUZpbGUiLCJsb2NhbFBhdGgiLCJidWlsZGVyIiwiZ2V0UHJlZnNCdWlsZGVyIiwiYnVpbGQiLCJwcmVmcyIsInRvRmlsZSIsInVubGluayIsIlNoYXJlZFByZWZzQnVpbGRlciIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsImlzRnVuY3Rpb24iLCJwcm94eVJlcVJlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBkZXNpcmVkQ29uc3RyYWludHMgZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHsgbmV3TWV0aG9kTWFwIH0gZnJvbSAnLi9tZXRob2QtbWFwJztcbmltcG9ydCB7XG4gIGhlbHBlcnMsIGVuc3VyZU5ldHdvcmtTcGVlZCxcbiAgU0VUVElOR1NfSEVMUEVSX1BLR19JRCxcbn0gZnJvbSAnLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERFRkFVTFRfQURCX1BPUlQgfSBmcm9tICdhcHBpdW0tYWRiJztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBTaGFyZWRQcmVmc0J1aWxkZXIgfSBmcm9tICdzaGFyZWQtcHJlZmVyZW5jZXMtYnVpbGRlcic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEFQUF9FWFRFTlNJT04gPSAnLmFwayc7XG5jb25zdCBERVZJQ0VfUE9SVCA9IDQ3MjQ7XG5cbi8vIFRoaXMgaXMgYSBzZXQgb2YgbWV0aG9kcyBhbmQgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvXG4vLyBDaHJvbWVkcml2ZXJcbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL211bHRpL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9vcmllbnRhdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9uZXR3b3JrX2Nvbm5lY3Rpb24nKV0sXG5dO1xuXG5jbGFzcyBBbmRyb2lkRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG5cbiAgc3RhdGljIG5ld01ldGhvZE1hcCA9IG5ld01ldGhvZE1hcDtcblxuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgc3VwZXIob3B0cywgc2hvdWxkVmFsaWRhdGVDYXBzKTtcblxuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICAgICctYW5kcm9pZCB1aWF1dG9tYXRvcidcbiAgICBdO1xuICAgIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzID0gZGVzaXJlZENvbnN0cmFpbnRzO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gXy5jbG9uZShOT19QUk9YWSk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2V9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgICB0aGlzLmFwa1N0cmluZ3MgPSB7fTtcbiAgICB0aGlzLnVubG9ja2VyID0gaGVscGVycy51bmxvY2tlcjtcblxuICAgIGZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoY29tbWFuZHMpKSB7XG4gICAgICBBbmRyb2lkRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuXG4gICAgLy8gbmVlZHMgdG8gYmUgYWZ0ZXIgdGhlIGxpbmUgd2hpY2ggYXNzaWducyBjb21tYW5kcyB0byBBbmRyb2lkRHJpdmVyLnByb3RvdHlwZSwgc28gdGhhdCBgdGhpcy5kZWZhdWx0Q29udGV4dE5hbWVgIGlzIGRlZmluZWQuXG4gICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICAvLyB0aGUgd2hvbGUgY3JlYXRlU2Vzc2lvbiBmbG93IGlzIHN1cnJvdW5kZWQgaW4gYSB0cnktY2F0Y2ggc3RhdGVtZW50XG4gICAgLy8gaWYgY3JlYXRpbmcgYSBzZXNzaW9uIGZhaWxzIGF0IGFueSBwb2ludCwgd2UgdGVhcmRvd24gZXZlcnl0aGluZyB3ZVxuICAgIC8vIHNldCB1cCBiZWZvcmUgdGhyb3dpbmcgdGhlIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBsZXQgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc2VydmVyRGV0YWlscyA9IHtcbiAgICAgICAgcGxhdGZvcm06ICdMSU5VWCcsXG4gICAgICAgIHdlYlN0b3JhZ2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGFrZXNTY3JlZW5zaG90OiB0cnVlLFxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZGF0YWJhc2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbkNvbnRleHRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgd2FybmluZ3M6IHt9LFxuICAgICAgICBkZXNpcmVkOiB0aGlzLmNhcHNcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgLy8gYXNzaWduaW5nIGRlZmF1bHRzXG4gICAgICBsZXQgZGVmYXVsdE9wdHMgPSB7XG4gICAgICAgIGFjdGlvbjogJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUicsXG4gICAgICAgIGZsYWdzOiAnMHgxMDIwMDAwMCcsXG4gICAgICAgIGRpc2FibGVBbmRyb2lkV2F0Y2hlcnM6IGZhbHNlLFxuICAgICAgICB0bXBEaXI6IGF3YWl0IHRlbXBEaXIuc3RhdGljRGlyKCksXG4gICAgICAgIGZ1bGxSZXNldDogZmFsc2UsXG4gICAgICAgIGF1dG9MYXVuY2g6IHRydWUsXG4gICAgICAgIGFkYlBvcnQ6IERFRkFVTFRfQURCX1BPUlQsXG4gICAgICAgIGJvb3RzdHJhcFBvcnQ6IERFVklDRV9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwLFxuICAgICAgfTtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5vcHRzLCBkZWZhdWx0T3B0cyk7XG4gICAgICB0aGlzLnVzZVVubG9ja0hlbHBlckFwcCA9IF8uaXNVbmRlZmluZWQodGhpcy5jYXBzLnVubG9ja1R5cGUpO1xuXG4gICAgICAvLyBub3QgdXNlciB2aXNpYmxlIHZpYSBjYXBzXG4gICAgICBpZiAodGhpcy5vcHRzLm5vUmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vcHRzLm5vUmVzZXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0cy5mYXN0UmVzZXQgPSAhdGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLm5vUmVzZXQ7XG4gICAgICB0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCA9IHRoaXMub3B0cy5mYXN0UmVzZXQgfHwgdGhpcy5vcHRzLm5vUmVzZXQ7XG5cbiAgICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgICBoZWxwZXJzLmFkanVzdEJyb3dzZXJTZXNzaW9uQ2Fwcyh0aGlzLm9wdHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLm5hdGl2ZVdlYlNjcmVlbnNob3QpIHtcbiAgICAgICAgdGhpcy5qd3BQcm94eUF2b2lkLnB1c2goWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICAgIHRoaXMuc2V0QXZkRnJvbUNhcGFiaWxpdGllcyhjYXBzKTtcbiAgICAgIH1cblxuICAgICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICAgIGxldCB7dWRpZCwgZW1Qb3J0fSA9IGF3YWl0IGhlbHBlcnMuZ2V0RGV2aWNlSW5mb0Zyb21DYXBzKHRoaXMub3B0cyk7XG4gICAgICB0aGlzLm9wdHMudWRpZCA9IHVkaWQ7XG4gICAgICB0aGlzLm9wdHMuZW1Qb3J0ID0gZW1Qb3J0O1xuXG4gICAgICAvLyBzZXQgdXAgYW4gaW5zdGFuY2Ugb2YgQURCXG4gICAgICB0aGlzLmFkYiA9IGF3YWl0IGhlbHBlcnMuY3JlYXRlQURCKHtcbiAgICAgICAgdWRpZDogdGhpcy5vcHRzLnVkaWQsXG4gICAgICAgIGVtUG9ydDogdGhpcy5vcHRzLmVtUG9ydCxcbiAgICAgICAgYWRiUG9ydDogdGhpcy5vcHRzLmFkYlBvcnQsXG4gICAgICAgIHN1cHByZXNzS2lsbFNlcnZlcjogdGhpcy5vcHRzLnN1cHByZXNzS2lsbFNlcnZlcixcbiAgICAgICAgcmVtb3RlQWRiSG9zdDogdGhpcy5vcHRzLnJlbW90ZUFkYkhvc3QsXG4gICAgICAgIGNsZWFyRGV2aWNlTG9nc09uU3RhcnQ6IHRoaXMub3B0cy5jbGVhckRldmljZUxvZ3NPblN0YXJ0LFxuICAgICAgICBhZGJFeGVjVGltZW91dDogdGhpcy5vcHRzLmFkYkV4ZWNUaW1lb3V0LFxuICAgICAgICBhbGxvd09mZmxpbmVEZXZpY2VzOiB0aGlzLm9wdHMuYWxsb3dPZmZsaW5lRGV2aWNlcyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyMykge1xuICAgICAgICB0aGlzLmxvZy53YXJuKFwiQ29uc2lkZXIgc2V0dGluZyAnYXV0b21hdGlvbk5hbWUnIGNhcGFiaWxpdHkgdG8gXCIgK1xuICAgICAgICAgIFwiJ3VpYXV0b21hdG9yMicgb24gQW5kcm9pZCA+PSA2LCBzaW5jZSBVSUF1dG9tYXRvciBmcmFtZXdvcmsgXCIgK1xuICAgICAgICAgICdpcyBub3QgbWFpbnRhaW5lZCBhbnltb3JlIGJ5IHRoZSBPUyB2ZW5kb3IuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhlbHBlcnMuaXNQYWNrYWdlT3JCdW5kbGUodGhpcy5vcHRzLmFwcCkpIHtcbiAgICAgICAgLy8gdXNlciBwcm92aWRlZCBwYWNrYWdlIGluc3RlYWQgb2YgYXBwIGZvciAnYXBwJyBjYXBhYmlsaXR5LCBtYXNzYWdlIG9wdGlvbnNcbiAgICAgICAgdGhpcy5vcHRzLmFwcFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwO1xuICAgICAgICB0aGlzLm9wdHMuYXBwID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5hcHApIHtcbiAgICAgICAgLy8gZmluZCBhbmQgY29weSwgb3IgZG93bmxvYWQgYW5kIHVuemlwIGFuIGFwcCB1cmwgb3IgcGF0aFxuICAgICAgICB0aGlzLm9wdHMuYXBwID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcCh0aGlzLm9wdHMuYXBwLCBBUFBfRVhURU5TSU9OKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0FwcFByZXNlbnQoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBPbkRldmljZSkge1xuICAgICAgICAvLyB0aGUgYXBwIGlzbid0IGFuIGFjdHVhbCBhcHAgZmlsZSBidXQgcmF0aGVyIHNvbWV0aGluZyB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGFzc3VtZSBpcyBvbiB0aGUgZGV2aWNlIGFuZCBqdXN0IGxhdW5jaCB2aWEgdGhlIGFwcFBhY2thZ2VcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQXBwIGZpbGUgd2FzIG5vdCBsaXN0ZWQsIGluc3RlYWQgd2UncmUgZ29pbmcgdG8gcnVuIGAgK1xuICAgICAgICAgIGAke3RoaXMub3B0cy5hcHBQYWNrYWdlfSBkaXJlY3RseSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tQYWNrYWdlUHJlc2VudCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIGNsb3VkIHNlcnZpY2VzIHVzaW5nIGFwcGl1bSBsYXVuY2ggdGhlIGF2ZCB0aGVtc2VsdmVzLCBzbyB3ZSBlbnN1cmUgbmV0c3BlZWRcbiAgICAgIC8vIGlzIHNldCBmb3IgZW11bGF0b3JzIGJ5IGNhbGxpbmcgYWRiLm5ldHdvcmtTcGVlZCBiZWZvcmUgcnVubmluZyB0aGUgYXBwXG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMubmV0d29ya1NwZWVkKSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybignU29ycnksIG5ldHdvcmtTcGVlZCBjYXBhYmlsaXR5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXR3b3JrU3BlZWQgPSBlbnN1cmVOZXR3b3JrU3BlZWQodGhpcy5hZGIsIHRoaXMub3B0cy5uZXR3b3JrU3BlZWQpO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLm5ldHdvcmtTcGVlZChuZXR3b3JrU3BlZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIHRvIGVuYWJsZS9kaXNhYmxlIGdwcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb25cbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5ncHNFbmFibGVkKSkge1xuICAgICAgICBpZiAodGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gJHt0aGlzLm9wdHMuZ3BzRW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnfSBncHMgbG9jYXRpb24gcHJvdmlkZXJgKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi50b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyKHRoaXMub3B0cy5ncHNFbmFibGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKCdTb3JyeSEgZ3BzRW5hYmxlZCBjYXBhYmlsaXR5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0QW5kcm9pZFNlc3Npb24odGhpcy5vcHRzKTtcbiAgICAgIHJldHVybiBbc2Vzc2lvbklkLCB0aGlzLmNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGlnbm9yaW5nIGRlbGV0ZSBzZXNzaW9uIGV4Y2VwdGlvbiBpZiBhbnkgYW5kIHRocm93IHRoZSByZWFsIGVycm9yXG4gICAgICAvLyB0aGF0IGhhcHBlbmVkIHdoaWxlIGNyZWF0aW5nIHRoZSBzZXNzaW9uLlxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGlzRW11bGF0b3IgKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzRW11bGF0b3IodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gIH1cblxuICBzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIChjYXBzKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdmQpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ2F2ZCBuYW1lIGRlZmluZWQsIGlnbm9yaW5nIGRldmljZSBuYW1lIGFuZCBwbGF0Zm9ybSB2ZXJzaW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2Fwcy5kZXZpY2VOYW1lKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBkZXZpY2VOYW1lIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZXMnKTtcbiAgICAgIH1cbiAgICAgIGlmICghY2Fwcy5wbGF0Zm9ybVZlcnNpb24pIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIHBsYXRmb3JtVmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVkJyk7XG4gICAgICB9XG4gICAgICBsZXQgYXZkRGV2aWNlID0gY2Fwcy5kZXZpY2VOYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Xy5dL2csICctJyk7XG4gICAgICB0aGlzLm9wdHMuYXZkID0gYCR7YXZkRGV2aWNlfV9fJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhcHBPbkRldmljZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5pc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwKSB8fCAoIXRoaXMub3B0cy5hcHAgJiZcbiAgICAgICAgICAgdGhpcy5oZWxwZXJzLmlzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHBQYWNrYWdlKSk7XG4gIH1cblxuICBnZXQgaXNDaHJvbWVTZXNzaW9uICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0Nocm9tZUJyb3dzZXIodGhpcy5vcHRzLmJyb3dzZXJOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5ID09PSAnaWdub3JlVW5pbXBvcnRhbnRWaWV3cycpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29tcHJlc3NlZExheW91dEhpZXJhcmNoeSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRBbmRyb2lkU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgQW5kcm9pZCBzZXNzaW9uYCk7XG4gICAgLy8gc2V0IHVwIHRoZSBkZXZpY2UgdG8gcnVuIG9uIChyZWFsIG9yIGVtdWxhdG9yLCBldGMpXG4gICAgdGhpcy5kZWZhdWx0SU1FID0gYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZCwgcGxhdGZvcm0gdmVyc2lvbiwgc2NyZWVuIHNpemUsIG1vZGVsIGFuZCBtYW51ZmFjdHVyZXIgZGV0YWlscy5cbiAgICB0aGlzLmNhcHMuZGV2aWNlTmFtZSA9IHRoaXMuYWRiLmN1ckRldmljZUlkO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VVRElEID0gdGhpcy5vcHRzLnVkaWQ7XG4gICAgdGhpcy5jYXBzLnBsYXRmb3JtVmVyc2lvbiA9IGF3YWl0IHRoaXMuYWRiLmdldFBsYXRmb3JtVmVyc2lvbigpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5TaXplID0gYXdhaXQgdGhpcy5hZGIuZ2V0U2NyZWVuU2l6ZSgpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNb2RlbCA9IGF3YWl0IHRoaXMuYWRiLmdldE1vZGVsKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1hbnVmYWN0dXJlciA9IGF3YWl0IHRoaXMuYWRiLmdldE1hbnVmYWN0dXJlcigpO1xuXG4gICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uKSB7XG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpID49IDI4KSB7IC8vIEFQSSBsZXZlbCAyOCBpcyBBbmRyb2lkIFBcbiAgICAgICAgICAvLyBEb24ndCBmb3JnZXQgdG8gcmVzZXQgdGhlIHJlbGF4aW5nIGluIGRlbGV0ZSBzZXNzaW9uXG4gICAgICAgICAgdGhpcy5sb2cud2FybignUmVsYXhpbmcgaGlkZGVuIGFwaSBwb2xpY3kgdG8gbWFuYWdlIGFuaW1hdGlvbiBzY2FsZScpO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEhpZGRlbkFwaVBvbGljeSgnMScsICEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0Rpc2FibGluZyB3aW5kb3cgYW5pbWF0aW9uIGFzIGl0IGlzIHJlcXVlc3RlZCBieSBcImRpc2FibGVXaW5kb3dBbmltYXRpb25cIiBjYXBhYmlsaXR5Jyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnV2luZG93IGFuaW1hdGlvbiBpcyBhbHJlYWR5IGRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHVwIGFwcCB1bmRlciB0ZXN0XG4gICAgYXdhaXQgdGhpcy5pbml0QVVUKCk7XG5cbiAgICAvLyBzdGFydCBVaUF1dG9tYXRvclxuICAgIHRoaXMuYm9vdHN0cmFwID0gbmV3IGhlbHBlcnMuYm9vdHN0cmFwKHRoaXMuYWRiLCB0aGlzLm9wdHMuYm9vdHN0cmFwUG9ydCwgdGhpcy5vcHRzLndlYnNvY2tldCk7XG4gICAgYXdhaXQgdGhpcy5ib290c3RyYXAuc3RhcnQodGhpcy5vcHRzLmFwcFBhY2thZ2UsIHRoaXMub3B0cy5kaXNhYmxlQW5kcm9pZFdhdGNoZXJzLCB0aGlzLm9wdHMuYWNjZXB0U3NsQ2VydHMpO1xuICAgIC8vIGhhbmRsaW5nIHVuZXhwZWN0ZWQgc2h1dGRvd25cbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5ib290c3RyYXAub25VbmV4cGVjdGVkU2h1dGRvd247XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJvb3RzdHJhcC5pZ25vcmVVbmV4cGVjdGVkU2h1dGRvd24pIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpO1xuXG5cbiAgICBpZiAodGhpcy5vcHRzLnNraXBVbmxvY2spIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ1NraXBwaW5nIGxvY2tzY3JlZW4gY2hlY2snKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuaW5mbygnQ2hlY2tpbmcgZm9yIGxvY2tzY3JlZW4gcHJlc2VuY2UuICcgK1xuICAgICAgICBgVGhpcyBjb3VsZCBiZSBza2lwcGVkIGJ5IHNldHRpbmcgdGhlICdhcHBpdW06c2tpcFVubG9jaycgY2FwYWJpbGl0eSB0byB0cnVlLmApO1xuICAgICAgYXdhaXQgaGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG4gICAgfVxuXG4gICAgLy8gU2V0IENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkgb24gdGhlIGRldmljZSBiYXNlZCBvbiBjdXJyZW50IHNldHRpbmdzIG9iamVjdFxuICAgIC8vIHRoaXMgaGFzIHRvIGhhcHBlbiBfYWZ0ZXJfIGJvb3RzdHJhcCBpcyBpbml0aWFsaXplZFxuICAgIGlmICh0aGlzLm9wdHMuaWdub3JlVW5pbXBvcnRhbnRWaWV3cykge1xuICAgICAgYXdhaXQgdGhpcy5zZXR0aW5ncy51cGRhdGUoe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHRoaXMub3B0cy5pZ25vcmVVbmltcG9ydGFudFZpZXdzfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAvLyBzdGFydCBhIGNocm9tZWRyaXZlciBzZXNzaW9uIGFuZCBwcm94eSB0byBpdFxuICAgICAgYXdhaXQgdGhpcy5zdGFydENocm9tZVNlc3Npb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0cy5hdXRvTGF1bmNoKSB7XG4gICAgICAgIC8vIHN0YXJ0IGFwcFxuICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0QVVUKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLm9yaWVudGF0aW9uKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiB0byAnJHt0aGlzLm9wdHMub3JpZW50YXRpb259J2ApO1xuICAgICAgYXdhaXQgdGhpcy5zZXRPcmllbnRhdGlvbih0aGlzLm9wdHMub3JpZW50YXRpb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaW5pdEF1dG9XZWJ2aWV3KCk7XG4gIH1cblxuICBhc3luYyBpbml0QXV0b1dlYnZpZXcgKCkge1xuICAgIGlmICh0aGlzLm9wdHMuYXV0b1dlYnZpZXcpIHtcbiAgICAgIGxldCB2aWV3TmFtZSA9IHRoaXMuZGVmYXVsdFdlYnZpZXdOYW1lKCk7XG4gICAgICBsZXQgdGltZW91dCA9ICh0aGlzLm9wdHMuYXV0b1dlYnZpZXdUaW1lb3V0KSB8fCAyMDAwO1xuXG4gICAgICB0aGlzLmxvZy5pbmZvKGBTZXR0aW5nIGF1dG8gd2VidmlldyB0byBjb250ZXh0ICcke3ZpZXdOYW1lfScgd2l0aCB0aW1lb3V0ICR7dGltZW91dH1tc2ApO1xuXG4gICAgICAvLyB0cnkgZXZlcnkgNTAwbXMgdW50aWwgdGltZW91dCBpcyBvdmVyXG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgLyA1MDAsIDUwMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldENvbnRleHQodmlld05hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdEFVVCAoKSB7XG4gICAgLy8gcG9wdWxhdGUgYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIGFwcFdhaXRQYWNrYWdlLCBhcHBXYWl0QWN0aXZpdHksXG4gICAgLy8gYW5kIHRoZSBkZXZpY2UgYmVpbmcgdXNlZFxuICAgIC8vIGluIHRoZSBvcHRzIGFuZCBjYXBzIChzbyBpdCBnZXRzIGJhY2sgdG8gdGhlIHVzZXIgb24gc2Vzc2lvbiBjcmVhdGlvbilcbiAgICBsZXQgbGF1bmNoSW5mbyA9IGF3YWl0IGhlbHBlcnMuZ2V0TGF1bmNoSW5mbyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgbGF1bmNoSW5mbyk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmNhcHMsIGxhdW5jaEluZm8pO1xuXG4gICAgLy8gVW5pbnN0YWxsIGFueSB1bmluc3RhbGxPdGhlclBhY2thZ2VzIHdoaWNoIHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpIHtcbiAgICAgIGhlbHBlcnMudmFsaWRhdGVEZXNpcmVkQ2Fwcyh0aGlzLm9wdHMpO1xuICAgICAgLy8gT25seSBTRVRUSU5HU19IRUxQRVJfUEtHX0lEIHBhY2thZ2UgaXMgdXNlZCBieSBVSUExXG4gICAgICBhd2FpdCBoZWxwZXJzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMoXG4gICAgICAgIHRoaXMuYWRiLFxuICAgICAgICBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpLFxuICAgICAgICBbU0VUVElOR1NfSEVMUEVSX1BLR19JRF1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5zdGFsbCBhbnkgXCJvdGhlckFwcHNcIiB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLm90aGVyQXBwcykge1xuICAgICAgbGV0IG90aGVyQXBwcztcbiAgICAgIHRyeSB7XG4gICAgICAgIG90aGVyQXBwcyA9IGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMub3RoZXJBcHBzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IHBhcnNlIFwib3RoZXJBcHBzXCIgY2FwYWJpbGl0eTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBvdGhlckFwcHMgPSBhd2FpdCBCLmFsbChvdGhlckFwcHMubWFwKChhcHApID0+IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCBBUFBfRVhURU5TSU9OKSkpO1xuICAgICAgYXdhaXQgaGVscGVycy5pbnN0YWxsT3RoZXJBcGtzKG90aGVyQXBwcywgdGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfVxuXG4gICAgLy8gaW5zdGFsbCBhcHBcbiAgICBpZiAoIXRoaXMub3B0cy5hcHApIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0KSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ0Z1bGwgcmVzZXQgcmVxdWlyZXMgYW4gYXBwIGNhcGFiaWxpdHksIHVzZSBmYXN0UmVzZXQgaWYgYXBwIGlzIG5vdCBwcm92aWRlZCcpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoJ05vIGFwcCBjYXBhYmlsaXR5LiBBc3N1bWluZyBpdCBpcyBhbHJlYWR5IG9uIHRoZSBkZXZpY2UnKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuZmFzdFJlc2V0KSB7XG4gICAgICAgIGF3YWl0IGhlbHBlcnMucmVzZXRBcHAodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmluc3RhbGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgfVxuICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbEFwayh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICBjb25zdCBhcGtTdHJpbmdzRm9yTGFuZ3VhZ2UgPSBhd2FpdCBoZWxwZXJzLnB1c2hTdHJpbmdzKHRoaXMub3B0cy5sYW5ndWFnZSwgdGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgaWYgKHRoaXMub3B0cy5sYW5ndWFnZSkge1xuICAgICAgdGhpcy5hcGtTdHJpbmdzW3RoaXMub3B0cy5sYW5ndWFnZV0gPSBhcGtTdHJpbmdzRm9yTGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBtdXN0IHJ1biBhZnRlciBpbnN0YWxsaW5nIHRoZSBhcGssIG90aGVyd2lzZSBpdCB3b3VsZCBjYXVzZSB0aGVcbiAgICAvLyBpbnN0YWxsIHRvIGZhaWwuIEFuZCBiZWZvcmUgcnVubmluZyB0aGUgYXBwLlxuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLm9wdHMuc2hhcmVkUHJlZmVyZW5jZXMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldFNoYXJlZFByZWZlcmVuY2VzKHRoaXMub3B0cyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tBcHBQcmVzZW50ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgd2hldGhlciBhcHAgaXMgYWN0dWFsbHkgcHJlc2VudCcpO1xuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm9wdHMuYXBwKSkpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIGFwcCBhcGsgYXQgJHt0aGlzLm9wdHMuYXBwfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNoZWNrUGFja2FnZVByZXNlbnQgKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdDaGVja2luZyB3aGV0aGVyIHBhY2thZ2UgaXMgcHJlc2VudCBvbiB0aGUgZGV2aWNlJyk7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydwbScsICdsaXN0JywgJ3BhY2thZ2VzJywgdGhpcy5vcHRzLmFwcFBhY2thZ2VdKSkpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIHBhY2thZ2UgJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0gb24gdGhlIGRldmljZWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IG9uIHRoZSBkZXZpY2VcbiAgYXN5bmMgc2V0Q29tcHJlc3NlZExheW91dEhpZXJhcmNoeSAoY29tcHJlc3MpIHtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdjb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5Jywge2NvbXByZXNzTGF5b3V0OiBjb21wcmVzc30pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1NodXR0aW5nIGRvd24gQW5kcm9pZCBkcml2ZXInKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3BSZWNvcmRpbmdTY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgICBhd2FpdCBoZWxwZXJzLnJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nKCk7XG5cbiAgICBhd2FpdCBzdXBlci5kZWxldGVTZXNzaW9uKCk7XG5cbiAgICBpZiAodGhpcy5ib290c3RyYXApIHtcbiAgICAgIC8vIGNlcnRhaW4gY2xlYW51cCB3ZSBvbmx5IGNhcmUgdG8gZG8gaWYgdGhlIGJvb3RzdHJhcCB3YXMgZXZlciBydW5cbiAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkICYmIHRoaXMub3B0cy5yZXNldEtleWJvYXJkICYmIHRoaXMuZGVmYXVsdElNRSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgUmVzZXR0aW5nIElNRSB0byAke3RoaXMuZGVmYXVsdElNRX1gKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGI/LnNldElNRSh0aGlzLmRlZmF1bHRJTUUpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmlzQ2hyb21lU2Vzc2lvbiAmJiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYj8uZm9yY2VTdG9wKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5nb1RvSG9tZSgpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsICYmICF0aGlzLmFwcE9uRGV2aWNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy51bmluc3RhbGxBcGsodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5ib290c3RyYXAuc2h1dGRvd24oKTtcbiAgICAgIHRoaXMuYm9vdHN0cmFwID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZGVidWcoXCJDYWxsZWQgZGVsZXRlU2Vzc2lvbiBidXQgYm9vdHN0cmFwIHdhc24ndCBhY3RpdmVcIik7XG4gICAgfVxuICAgIC8vIHNvbWUgY2xlYW51cCB3ZSB3YW50IHRvIGRvIHJlZ2FyZGxlc3MsIGluIGNhc2Ugd2UgYXJlIHNodXR0aW5nIGRvd25cbiAgICAvLyBtaWQtc3RhcnR1cFxuICAgIGF3YWl0IHRoaXMuYWRiPy5zdG9wTG9nY2F0KCk7XG4gICAgaWYgKHRoaXMudXNlVW5sb2NrSGVscGVyQXBwKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYj8uZm9yY2VTdG9wKCdpby5hcHBpdW0udW5sb2NrJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIHdpbmRvdyBhbmltYXRpb24gc3RhdGUnKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5zZXRBbmltYXRpb25TdGF0ZSh0cnVlKTtcblxuICAgICAgLy8gVGhpcyB3YXMgbmVjZXNzYXJ5IHRvIGNoYW5nZSBhbmltYXRpb24gc2NhbGUgb3ZlciBBbmRyb2lkIFAuIFdlIG11c3QgcmVzZXQgdGhlIHBvbGljeSBmb3IgdGhlIHNlY3VyaXR5LlxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiPy5nZXRBcGlMZXZlbCgpID49IDI4KSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyBoaWRkZW4gYXBpIHBvbGljeSB0byB0aGUgZGV2aWNlIGRlZmF1bHQgY29uZmlndXJhdGlvbicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYj8uc2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSghIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgIGxldCBhdmROYW1lID0gdGhpcy5vcHRzLmF2ZC5yZXBsYWNlKCdAJywgJycpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYGNsb3NpbmcgZW11bGF0b3IgJyR7YXZkTmFtZX0nYCk7XG4gICAgICBhd2FpdCB0aGlzLmFkYj8ua2lsbEVtdWxhdG9yKGF2ZE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldFNoYXJlZFByZWZlcmVuY2VzICgpIHtcbiAgICBsZXQgc2hhcmVkUHJlZnMgPSB0aGlzLm9wdHMuc2hhcmVkUHJlZmVyZW5jZXM7XG4gICAgdGhpcy5sb2cuaW5mbygnVHJ5aW5nIHRvIHNldCBzaGFyZWQgcHJlZmVyZW5jZXMnKTtcbiAgICBsZXQgbmFtZSA9IHNoYXJlZFByZWZzLm5hbWU7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYFNraXBwaW5nIHNldHRpbmcgU2hhcmVkIHByZWZlcmVuY2VzLCBuYW1lIGlzIHVuZGVmaW5lZDogJHtKU09OLnN0cmluZ2lmeShzaGFyZWRQcmVmcyl9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCByZW1vdGVQYXRoID0gYC9kYXRhL2RhdGEvJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0vc2hhcmVkX3ByZWZzYDtcbiAgICBsZXQgcmVtb3RlRmlsZSA9IGAke3JlbW90ZVBhdGh9LyR7bmFtZX0ueG1sYDtcbiAgICBsZXQgbG9jYWxQYXRoID0gYC90bXAvJHtuYW1lfS54bWxgO1xuICAgIGxldCBidWlsZGVyID0gdGhpcy5nZXRQcmVmc0J1aWxkZXIoKTtcbiAgICBidWlsZGVyLmJ1aWxkKHNoYXJlZFByZWZzLnByZWZzKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBDcmVhdGluZyB0ZW1wb3Jhcnkgc2hhcmVkIHByZWZlcmVuY2VzOiAke2xvY2FsUGF0aH1gKTtcbiAgICBidWlsZGVyLnRvRmlsZShsb2NhbFBhdGgpO1xuICAgIHRoaXMubG9nLmluZm8oYENyZWF0aW5nIHNoYXJlZF9wcmVmcyByZW1vdGUgZm9sZGVyOiAke3JlbW90ZVBhdGh9YCk7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydta2RpcicsICctcCcsIHJlbW90ZVBhdGhdKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBQdXNoaW5nIHNoYXJlZF9wcmVmcyB0byAke3JlbW90ZUZpbGV9YCk7XG4gICAgYXdhaXQgdGhpcy5hZGIucHVzaChsb2NhbFBhdGgsIHJlbW90ZUZpbGUpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gcmVtb3ZlIHNoYXJlZCBwcmVmZXJlbmNlcyB0ZW1wb3JhcnkgZmlsZWApO1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhsb2NhbFBhdGgpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbFBhdGgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYEVycm9yIHRyeWluZyB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGUgJHtsb2NhbFBhdGh9YCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0UHJlZnNCdWlsZGVyICgpIHtcbiAgICAvKiBBZGQgdGhpcyBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFNoYXJlZFByZWZzQnVpbGRlciBpbnN0ZWFkIG9mXG4gICAgICogZGlyZWN0bHkgY3JlYXRpbmcgdGhlIG9iamVjdCBvbiBzZXRTaGFyZWRQcmVmZXJlbmNlcyBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICAgICovXG4gICAgcmV0dXJuIG5ldyBTaGFyZWRQcmVmc0J1aWxkZXIoKTtcbiAgfVxuXG4gIHZhbGlkYXRlRGVzaXJlZENhcHMgKGNhcHMpIHtcbiAgICBpZiAoIXN1cGVyLnZhbGlkYXRlRGVzaXJlZENhcHMoY2FwcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCghY2Fwcy5icm93c2VyTmFtZSB8fCAhaGVscGVycy5pc0Nocm9tZUJyb3dzZXIoY2Fwcy5icm93c2VyTmFtZSkpICYmICFjYXBzLmFwcCAmJiAhY2Fwcy5hcHBQYWNrYWdlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdUaGUgZGVzaXJlZCBjYXBhYmlsaXRpZXMgbXVzdCBpbmNsdWRlIGVpdGhlciBhbiBhcHAsIGFwcFBhY2thZ2Ugb3IgYnJvd3Nlck5hbWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlbHBlcnMudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKTtcbiAgfVxuXG4gIHByb3h5QWN0aXZlIChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5wcm94eUFjdGl2ZShzZXNzaW9uSWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBY3RpdmU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc2lvbklkKTtcblxuICAgIHJldHVybiB0aGlzLmp3cFByb3h5QXZvaWQ7XG4gIH1cblxuICBjYW5Qcm94eSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuY2FuUHJveHkoc2Vzc2lvbklkKTtcblxuICAgIC8vIHRoaXMgd2lsbCBjaGFuZ2UgZGVwZW5kaW5nIG9uIENocm9tZURyaXZlciBzdGF0dXNcbiAgICByZXR1cm4gXy5pc0Z1bmN0aW9uKHRoaXMucHJveHlSZXFSZXMpO1xuICB9XG59XG5cbmV4cG9ydCB7IEFuZHJvaWREcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEFuZHJvaWREcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLGFBQWEsR0FBRyxNQUFNO0FBQzVCLE1BQU1DLFdBQVcsR0FBRyxJQUFJO0FBSXhCLE1BQU1DLFFBQVEsR0FBRyxDQUNmLENBQUMsTUFBTSxFQUFFLElBQUlDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQy9DLENBQUMsS0FBSyxFQUFFLElBQUlBLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQzlDLENBQUMsTUFBTSxFQUFF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
|
|
409
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHJpdmVyIiwicmVxdWlyZSIsIl9kZXNpcmVkQ2FwcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaW5kZXgiLCJfbWV0aG9kTWFwIiwiX2FuZHJvaWRIZWxwZXJzIiwiX2xvZGFzaCIsIl9hcHBpdW1BZGIiLCJfc3VwcG9ydCIsIl9hc3luY2JveCIsIl9zaGFyZWRQcmVmZXJlbmNlc0J1aWxkZXIiLCJfYmx1ZWJpcmQiLCJBUFBfRVhURU5TSU9OIiwiREVWSUNFX1BPUlQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkFuZHJvaWREcml2ZXIiLCJCYXNlRHJpdmVyIiwibmV3TWV0aG9kTWFwIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJkZXNpcmVkQ29uc3RyYWludHMiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImp3cFByb3h5QWN0aXZlIiwiandwUHJveHlBdm9pZCIsIl8iLCJjbG9uZSIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJhcGtTdHJpbmdzIiwidW5sb2NrZXIiLCJoZWxwZXJzIiwiY21kIiwiZm4iLCJ0b1BhaXJzIiwiY29tbWFuZHMiLCJwcm90b3R5cGUiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJkZWZhdWx0T3B0cyIsImFjdGlvbiIsImNhdGVnb3J5IiwiZmxhZ3MiLCJkaXNhYmxlQW5kcm9pZFdhdGNoZXJzIiwidG1wRGlyIiwidGVtcERpciIsInN0YXRpY0RpciIsImZ1bGxSZXNldCIsImF1dG9MYXVuY2giLCJhZGJQb3J0IiwiREVGQVVMVF9BREJfUE9SVCIsImJvb3RzdHJhcFBvcnQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsInVzZVVubG9ja0hlbHBlckFwcCIsImlzVW5kZWZpbmVkIiwidW5sb2NrVHlwZSIsIm5vUmVzZXQiLCJmYXN0UmVzZXQiLCJza2lwVW5pbnN0YWxsIiwiaXNDaHJvbWVTZXNzaW9uIiwiYWRqdXN0QnJvd3NlclNlc3Npb25DYXBzIiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsInB1c2giLCJyZWJvb3QiLCJzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImFkYiIsImNyZWF0ZUFEQiIsInN1cHByZXNzS2lsbFNlcnZlciIsInJlbW90ZUFkYkhvc3QiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiYWRiRXhlY1RpbWVvdXQiLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiZ2V0QXBpTGV2ZWwiLCJsb2ciLCJ3YXJuIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJhcHAiLCJhcHBQYWNrYWdlIiwiY29uZmlndXJlQXBwIiwiY2hlY2tBcHBQcmVzZW50IiwiYXBwT25EZXZpY2UiLCJpbmZvIiwiY2hlY2tQYWNrYWdlUHJlc2VudCIsInV0aWwiLCJoYXNWYWx1ZSIsIm5ldHdvcmtTcGVlZCIsImlzRW11bGF0b3IiLCJlbnN1cmVOZXR3b3JrU3BlZWQiLCJncHNFbmFibGVkIiwidG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlciIsInN0YXJ0QW5kcm9pZFNlc3Npb24iLCJlIiwiZGVsZXRlU2Vzc2lvbiIsImlnbiIsImF2ZCIsImRldmljZU5hbWUiLCJlcnJvckFuZFRocm93IiwicGxhdGZvcm1WZXJzaW9uIiwiYXZkRGV2aWNlIiwicmVwbGFjZSIsImlzQ2hyb21lQnJvd3NlciIsImJyb3dzZXJOYW1lIiwia2V5IiwidmFsdWUiLCJzZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IiwiZGVmYXVsdElNRSIsImluaXREZXZpY2UiLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJnZXRQbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VTY3JlZW5TaXplIiwiZ2V0U2NyZWVuU2l6ZSIsImRldmljZU1vZGVsIiwiZ2V0TW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJnZXRNYW51ZmFjdHVyZXIiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwiaXNBbmltYXRpb25PbiIsInNldEhpZGRlbkFwaVBvbGljeSIsImlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwiYm9vdHN0cmFwIiwid2Vic29ja2V0Iiwic3RhcnQiLCJhY2NlcHRTc2xDZXJ0cyIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwiZXJyIiwiaWdub3JlVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJza2lwVW5sb2NrIiwidW5sb2NrIiwidXBkYXRlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic3RhcnRBVVQiLCJvcmllbnRhdGlvbiIsImRlYnVnIiwic2V0T3JpZW50YXRpb24iLCJpbml0QXV0b1dlYnZpZXciLCJhdXRvV2VidmlldyIsInZpZXdOYW1lIiwiZGVmYXVsdFdlYnZpZXdOYW1lIiwidGltZW91dCIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwibGF1bmNoSW5mbyIsImdldExhdW5jaEluZm8iLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwidmFsaWRhdGVEZXNpcmVkQ2FwcyIsInBhcnNlQXJyYXkiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwib3RoZXJBcHBzIiwibWVzc2FnZSIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwicmVzZXRBcHAiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiYXBrU3RyaW5nc0Zvckxhbmd1YWdlIiwicHVzaFN0cmluZ3MiLCJsYW5ndWFnZSIsInNoYXJlZFByZWZlcmVuY2VzIiwic2V0U2hhcmVkUHJlZmVyZW5jZXMiLCJmcyIsImV4aXN0cyIsInNoZWxsIiwiY29tcHJlc3MiLCJzZW5kQWN0aW9uIiwiY29tcHJlc3NMYXlvdXQiLCJfdGhpcyRhZGI1IiwiaXNFbXB0eSIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwic3RvcFJlY29yZGluZ1NjcmVlbiIsInJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyIsInNlcnZlciIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJfdGhpcyRhZGIzIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJ1bmljb2RlS2V5Ym9hcmQiLCJyZXNldEtleWJvYXJkIiwiX3RoaXMkYWRiIiwic2V0SU1FIiwiZG9udFN0b3BBcHBPblJlc2V0IiwiX3RoaXMkYWRiMiIsImZvcmNlU3RvcCIsImdvVG9Ib21lIiwiX3RoaXMkYWRiNCIsInNodXRkb3duIiwic3RvcExvZ2NhdCIsIl90aGlzJGFkYjYiLCJfdGhpcyRhZGI3IiwiX3RoaXMkYWRiOCIsIl90aGlzJGFkYjkiLCJzZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5IiwiX3RoaXMkYWRiMTAiLCJhdmROYW1lIiwia2lsbEVtdWxhdG9yIiwic2hhcmVkUHJlZnMiLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlbW90ZVBhdGgiLCJyZW1vdGVGaWxlIiwibG9jYWxQYXRoIiwiYnVpbGRlciIsImdldFByZWZzQnVpbGRlciIsImJ1aWxkIiwicHJlZnMiLCJ0b0ZpbGUiLCJ1bmxpbmsiLCJTaGFyZWRQcmVmc0J1aWxkZXIiLCJwcm94eUFjdGl2ZSIsImdldFByb3h5QXZvaWRMaXN0IiwiY2FuUHJveHkiLCJpc0Z1bmN0aW9uIiwicHJveHlSZXFSZXMiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2RyaXZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRHJpdmVyLCBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuaW1wb3J0IGRlc2lyZWRDb25zdHJhaW50cyBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgY29tbWFuZHMgZnJvbSAnLi9jb21tYW5kcy9pbmRleCc7XG5pbXBvcnQgeyBuZXdNZXRob2RNYXAgfSBmcm9tICcuL21ldGhvZC1tYXAnO1xuaW1wb3J0IHtcbiAgaGVscGVycywgZW5zdXJlTmV0d29ya1NwZWVkLFxuICBTRVRUSU5HU19IRUxQRVJfUEtHX0lELFxufSBmcm9tICcuL2FuZHJvaWQtaGVscGVycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgREVGQVVMVF9BREJfUE9SVCB9IGZyb20gJ2FwcGl1bS1hZGInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IFNoYXJlZFByZWZzQnVpbGRlciB9IGZyb20gJ3NoYXJlZC1wcmVmZXJlbmNlcy1idWlsZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgQVBQX0VYVEVOU0lPTiA9ICcuYXBrJztcbmNvbnN0IERFVklDRV9QT1JUID0gNDcyNDtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG9cbi8vIENocm9tZWRyaXZlclxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9vcmllbnRhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbl07XG5cbmNsYXNzIEFuZHJvaWREcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcblxuICBzdGF0aWMgbmV3TWV0aG9kTWFwID0gbmV3TWV0aG9kTWFwO1xuXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuXG4gICAgdGhpcy5sb2NhdG9yU3RyYXRlZ2llcyA9IFtcbiAgICAgICd4cGF0aCcsXG4gICAgICAnaWQnLFxuICAgICAgJ2NsYXNzIG5hbWUnLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgICAgJy1hbmRyb2lkIHVpYXV0b21hdG9yJ1xuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ29uc3RyYWludHM7XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVycyA9IHt9O1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBfLmNsb25lKE5PX1BST1hZKTtcbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiBmYWxzZX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2V0dGluZ3NVcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuYXBrU3RyaW5ncyA9IHt9O1xuICAgIHRoaXMudW5sb2NrZXIgPSBoZWxwZXJzLnVubG9ja2VyO1xuXG4gICAgZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgICAgIEFuZHJvaWREcml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbiAgICB9XG5cbiAgICAvLyBuZWVkcyB0byBiZSBhZnRlciB0aGUgbGluZSB3aGljaCBhc3NpZ25zIGNvbW1hbmRzIHRvIEFuZHJvaWREcml2ZXIucHJvdG90eXBlLCBzbyB0aGF0IGB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZWAgaXMgZGVmaW5lZC5cbiAgICB0aGlzLmN1ckNvbnRleHQgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2Vzc2lvbiAoLi4uYXJncykge1xuICAgIC8vIHRoZSB3aG9sZSBjcmVhdGVTZXNzaW9uIGZsb3cgaXMgc3Vycm91bmRlZCBpbiBhIHRyeS1jYXRjaCBzdGF0ZW1lbnRcbiAgICAvLyBpZiBjcmVhdGluZyBhIHNlc3Npb24gZmFpbHMgYXQgYW55IHBvaW50LCB3ZSB0ZWFyZG93biBldmVyeXRoaW5nIHdlXG4gICAgLy8gc2V0IHVwIGJlZm9yZSB0aHJvd2luZyB0aGUgZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG5cbiAgICAgIGxldCBzZXJ2ZXJEZXRhaWxzID0ge1xuICAgICAgICBwbGF0Zm9ybTogJ0xJTlVYJyxcbiAgICAgICAgd2ViU3RvcmFnZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0YWtlc1NjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxuICAgICAgICBkYXRhYmFzZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxvY2F0aW9uQ29udGV4dEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIGRlc2lyZWQ6IHRoaXMuY2Fwc1xuICAgICAgfTtcblxuICAgICAgdGhpcy5jYXBzID0gT2JqZWN0LmFzc2lnbihzZXJ2ZXJEZXRhaWxzLCB0aGlzLmNhcHMpO1xuXG4gICAgICAvLyBhc3NpZ25pbmcgZGVmYXVsdHNcbiAgICAgIGxldCBkZWZhdWx0T3B0cyA9IHtcbiAgICAgICAgYWN0aW9uOiAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4nLFxuICAgICAgICBjYXRlZ29yeTogJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJyxcbiAgICAgICAgZmxhZ3M6ICcweDEwMjAwMDAwJyxcbiAgICAgICAgZGlzYWJsZUFuZHJvaWRXYXRjaGVyczogZmFsc2UsXG4gICAgICAgIHRtcERpcjogYXdhaXQgdGVtcERpci5zdGF0aWNEaXIoKSxcbiAgICAgICAgZnVsbFJlc2V0OiBmYWxzZSxcbiAgICAgICAgYXV0b0xhdW5jaDogdHJ1ZSxcbiAgICAgICAgYWRiUG9ydDogREVGQVVMVF9BREJfUE9SVCxcbiAgICAgICAgYm9vdHN0cmFwUG9ydDogREVWSUNFX1BPUlQsXG4gICAgICAgIGFuZHJvaWRJbnN0YWxsVGltZW91dDogOTAwMDAsXG4gICAgICB9O1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLm9wdHMsIGRlZmF1bHRPcHRzKTtcbiAgICAgIHRoaXMudXNlVW5sb2NrSGVscGVyQXBwID0gXy5pc1VuZGVmaW5lZCh0aGlzLmNhcHMudW5sb2NrVHlwZSk7XG5cbiAgICAgIC8vIG5vdCB1c2VyIHZpc2libGUgdmlhIGNhcHNcbiAgICAgIGlmICh0aGlzLm9wdHMubm9SZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLm9wdHMuZnVsbFJlc2V0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLm9wdHMubm9SZXNldCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5vcHRzLmZhc3RSZXNldCA9ICF0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMubm9SZXNldDtcbiAgICAgIHRoaXMub3B0cy5za2lwVW5pbnN0YWxsID0gdGhpcy5vcHRzLmZhc3RSZXNldCB8fCB0aGlzLm9wdHMubm9SZXNldDtcblxuICAgICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAgIGhlbHBlcnMuYWRqdXN0QnJvd3NlclNlc3Npb25DYXBzKHRoaXMub3B0cyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMubmF0aXZlV2ViU2NyZWVuc2hvdCkge1xuICAgICAgICB0aGlzLmp3cFByb3h5QXZvaWQucHVzaChbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgdGhpcy5zZXRBdmRGcm9tQ2FwYWJpbGl0aWVzKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICAvLyBnZXQgZGV2aWNlIHVkaWQgZm9yIHRoaXMgc2Vzc2lvblxuICAgICAgbGV0IHt1ZGlkLCBlbVBvcnR9ID0gYXdhaXQgaGVscGVycy5nZXREZXZpY2VJbmZvRnJvbUNhcHModGhpcy5vcHRzKTtcbiAgICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICAgIHRoaXMub3B0cy5lbVBvcnQgPSBlbVBvcnQ7XG5cbiAgICAgIC8vIHNldCB1cCBhbiBpbnN0YW5jZSBvZiBBREJcbiAgICAgIHRoaXMuYWRiID0gYXdhaXQgaGVscGVycy5jcmVhdGVBREIoe1xuICAgICAgICB1ZGlkOiB0aGlzLm9wdHMudWRpZCxcbiAgICAgICAgZW1Qb3J0OiB0aGlzLm9wdHMuZW1Qb3J0LFxuICAgICAgICBhZGJQb3J0OiB0aGlzLm9wdHMuYWRiUG9ydCxcbiAgICAgICAgc3VwcHJlc3NLaWxsU2VydmVyOiB0aGlzLm9wdHMuc3VwcHJlc3NLaWxsU2VydmVyLFxuICAgICAgICByZW1vdGVBZGJIb3N0OiB0aGlzLm9wdHMucmVtb3RlQWRiSG9zdCxcbiAgICAgICAgY2xlYXJEZXZpY2VMb2dzT25TdGFydDogdGhpcy5vcHRzLmNsZWFyRGV2aWNlTG9nc09uU3RhcnQsXG4gICAgICAgIGFkYkV4ZWNUaW1lb3V0OiB0aGlzLm9wdHMuYWRiRXhlY1RpbWVvdXQsXG4gICAgICAgIGFsbG93T2ZmbGluZURldmljZXM6IHRoaXMub3B0cy5hbGxvd09mZmxpbmVEZXZpY2VzLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpID49IDIzKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oXCJDb25zaWRlciBzZXR0aW5nICdhdXRvbWF0aW9uTmFtZScgY2FwYWJpbGl0eSB0byBcIiArXG4gICAgICAgICAgXCIndWlhdXRvbWF0b3IyJyBvbiBBbmRyb2lkID49IDYsIHNpbmNlIFVJQXV0b21hdG9yIGZyYW1ld29yayBcIiArXG4gICAgICAgICAgJ2lzIG5vdCBtYWludGFpbmVkIGFueW1vcmUgYnkgdGhlIE9TIHZlbmRvci4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGVscGVycy5pc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwKSkge1xuICAgICAgICAvLyB1c2VyIHByb3ZpZGVkIHBhY2thZ2UgaW5zdGVhZCBvZiBhcHAgZm9yICdhcHAnIGNhcGFiaWxpdHksIG1hc3NhZ2Ugb3B0aW9uc1xuICAgICAgICB0aGlzLm9wdHMuYXBwUGFja2FnZSA9IHRoaXMub3B0cy5hcHA7XG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIEFQUF9FWFRFTlNJT04pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrQXBwUHJlc2VudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcE9uRGV2aWNlKSB7XG4gICAgICAgIC8vIHRoZSBhcHAgaXNuJ3QgYW4gYWN0dWFsIGFwcCBmaWxlIGJ1dCByYXRoZXIgc29tZXRoaW5nIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gYXNzdW1lIGlzIG9uIHRoZSBkZXZpY2UgYW5kIGp1c3QgbGF1bmNoIHZpYSB0aGUgYXBwUGFja2FnZVxuICAgICAgICB0aGlzLmxvZy5pbmZvKGBBcHAgZmlsZSB3YXMgbm90IGxpc3RlZCwgaW5zdGVhZCB3ZSdyZSBnb2luZyB0byBydW4gYCArXG4gICAgICAgICAgYCR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9IGRpcmVjdGx5IG9uIHRoZSBkZXZpY2VgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja1BhY2thZ2VQcmVzZW50KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvbWUgY2xvdWQgc2VydmljZXMgdXNpbmcgYXBwaXVtIGxhdW5jaCB0aGUgYXZkIHRoZW1zZWx2ZXMsIHNvIHdlIGVuc3VyZSBuZXRzcGVlZFxuICAgICAgLy8gaXMgc2V0IGZvciBlbXVsYXRvcnMgYnkgY2FsbGluZyBhZGIubmV0d29ya1NwZWVkIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5uZXR3b3JrU3BlZWQpKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKCdTb3JyeSwgbmV0d29ya1NwZWVkIGNhcGFiaWxpdHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5ldHdvcmtTcGVlZCA9IGVuc3VyZU5ldHdvcmtTcGVlZCh0aGlzLmFkYiwgdGhpcy5vcHRzLm5ldHdvcmtTcGVlZCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIubmV0d29ya1NwZWVkKG5ldHdvcmtTcGVlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgdG8gZW5hYmxlL2Rpc2FibGUgZ3BzIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvblxuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLmdwc0VuYWJsZWQpKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oYFRyeWluZyB0byAke3RoaXMub3B0cy5ncHNFbmFibGVkID8gJ2VuYWJsZScgOiAnZGlzYWJsZSd9IGdwcyBsb2NhdGlvbiBwcm92aWRlcmApO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIodGhpcy5vcHRzLmdwc0VuYWJsZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ1NvcnJ5ISBncHNFbmFibGVkIGNhcGFiaWxpdHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRBbmRyb2lkU2Vzc2lvbih0aGlzLm9wdHMpO1xuICAgICAgcmV0dXJuIFtzZXNzaW9uSWQsIHRoaXMuY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JpbmcgZGVsZXRlIHNlc3Npb24gZXhjZXB0aW9uIGlmIGFueSBhbmQgdGhyb3cgdGhlIHJlYWwgZXJyb3JcbiAgICAgIC8vIHRoYXQgaGFwcGVuZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNlc3Npb24uXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgaXNFbXVsYXRvciAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNFbXVsYXRvcih0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgfVxuXG4gIHNldEF2ZEZyb21DYXBhYmlsaXRpZXMgKGNhcHMpIHtcbiAgICBpZiAodGhpcy5vcHRzLmF2ZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnYXZkIG5hbWUgZGVmaW5lZCwgaWdub3JpbmcgZGV2aWNlIG5hbWUgYW5kIHBsYXRmb3JtIHZlcnNpb24nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjYXBzLmRldmljZU5hbWUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIGRldmljZU5hbWUgc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlcycpO1xuICAgICAgfVxuICAgICAgaWYgKCFjYXBzLnBsYXRmb3JtVmVyc2lvbikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgcGxhdGZvcm1WZXJzaW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZWQnKTtcbiAgICAgIH1cbiAgICAgIGxldCBhdmREZXZpY2UgPSBjYXBzLmRldmljZU5hbWUucmVwbGFjZSgvW15hLXpBLVowLTlfLl0vZywgJy0nKTtcbiAgICAgIHRoaXMub3B0cy5hdmQgPSBgJHthdmREZXZpY2V9X18ke2NhcHMucGxhdGZvcm1WZXJzaW9ufWA7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGFwcE9uRGV2aWNlICgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXJzLmlzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHApIHx8ICghdGhpcy5vcHRzLmFwcCAmJlxuICAgICAgICAgICB0aGlzLmhlbHBlcnMuaXNQYWNrYWdlT3JCdW5kbGUodGhpcy5vcHRzLmFwcFBhY2thZ2UpKTtcbiAgfVxuXG4gIGdldCBpc0Nocm9tZVNlc3Npb24gKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzQ2hyb21lQnJvd3Nlcih0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICB9XG5cbiAgYXN5bmMgb25TZXR0aW5nc1VwZGF0ZSAoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgPT09ICdpZ25vcmVVbmltcG9ydGFudFZpZXdzJykge1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdGFydEFuZHJvaWRTZXNzaW9uICgpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyBBbmRyb2lkIHNlc3Npb25gKTtcbiAgICAvLyBzZXQgdXAgdGhlIGRldmljZSB0byBydW4gb24gKHJlYWwgb3IgZW11bGF0b3IsIGV0YylcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBhd2FpdCBoZWxwZXJzLmluaXREZXZpY2UodGhpcy5hZGIsIHRoaXMub3B0cyk7XG5cbiAgICAvLyBzZXQgYWN0dWFsIGRldmljZSBuYW1lLCB1ZGlkLCBwbGF0Zm9ybSB2ZXJzaW9uLCBzY3JlZW4gc2l6ZSwgbW9kZWwgYW5kIG1hbnVmYWN0dXJlciBkZXRhaWxzLlxuICAgIHRoaXMuY2Fwcy5kZXZpY2VOYW1lID0gdGhpcy5hZGIuY3VyRGV2aWNlSWQ7XG4gICAgdGhpcy5jYXBzLmRldmljZVVESUQgPSB0aGlzLm9wdHMudWRpZDtcbiAgICB0aGlzLmNhcHMucGxhdGZvcm1WZXJzaW9uID0gYXdhaXQgdGhpcy5hZGIuZ2V0UGxhdGZvcm1WZXJzaW9uKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZVNjcmVlblNpemUgPSBhd2FpdCB0aGlzLmFkYi5nZXRTY3JlZW5TaXplKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1vZGVsID0gYXdhaXQgdGhpcy5hZGIuZ2V0TW9kZWwoKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTWFudWZhY3R1cmVyID0gYXdhaXQgdGhpcy5hZGIuZ2V0TWFudWZhY3R1cmVyKCk7XG5cbiAgICBpZiAodGhpcy5vcHRzLmRpc2FibGVXaW5kb3dBbmltYXRpb24pIHtcbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FuaW1hdGlvbk9uKCkpIHtcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQVBJIGxldmVsIDI4IGlzIEFuZHJvaWQgUFxuICAgICAgICAgIC8vIERvbid0IGZvcmdldCB0byByZXNldCB0aGUgcmVsYXhpbmcgaW4gZGVsZXRlIHNlc3Npb25cbiAgICAgICAgICB0aGlzLmxvZy53YXJuKCdSZWxheGluZyBoaWRkZW4gYXBpIHBvbGljeSB0byBtYW5hZ2UgYW5pbWF0aW9uIHNjYWxlJyk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SGlkZGVuQXBpUG9saWN5KCcxJywgISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2cuaW5mbygnRGlzYWJsaW5nIHdpbmRvdyBhbmltYXRpb24gYXMgaXQgaXMgcmVxdWVzdGVkIGJ5IFwiZGlzYWJsZVdpbmRvd0FuaW1hdGlvblwiIGNhcGFiaWxpdHknKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUoZmFsc2UpO1xuICAgICAgICB0aGlzLl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdXaW5kb3cgYW5pbWF0aW9uIGlzIGFscmVhZHkgZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXQgdXAgYXBwIHVuZGVyIHRlc3RcbiAgICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcblxuICAgIC8vIHN0YXJ0IFVpQXV0b21hdG9yXG4gICAgdGhpcy5ib290c3RyYXAgPSBuZXcgaGVscGVycy5ib290c3RyYXAodGhpcy5hZGIsIHRoaXMub3B0cy5ib290c3RyYXBQb3J0LCB0aGlzLm9wdHMud2Vic29ja2V0KTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gICAgLy8gaGFuZGxpbmcgdW5leHBlY3RlZCBzaHV0ZG93blxuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5vblVuZXhwZWN0ZWRTaHV0ZG93bjtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIXRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93bikge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24oZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKCk7XG5cblxuICAgIGlmICh0aGlzLm9wdHMuc2tpcFVubG9jaykge1xuICAgICAgdGhpcy5sb2cuaW5mbygnU2tpcHBpbmcgbG9ja3NjcmVlbiBjaGVjaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdDaGVja2luZyBmb3IgbG9ja3NjcmVlbiBwcmVzZW5jZS4gJyArXG4gICAgICAgIGBUaGlzIGNvdWxkIGJlIHNraXBwZWQgYnkgc2V0dGluZyB0aGUgJ2FwcGl1bTpza2lwVW5sb2NrJyBjYXBhYmlsaXR5IHRvIHRydWUuYCk7XG4gICAgICBhd2FpdCBoZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwgdGhpcy5jYXBzKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgQ29tcHJlc3NlZExheW91dEhpZXJhcmNoeSBvbiB0aGUgZGV2aWNlIGJhc2VkIG9uIGN1cnJlbnQgc2V0dGluZ3Mgb2JqZWN0XG4gICAgLy8gdGhpcyBoYXMgdG8gaGFwcGVuIF9hZnRlcl8gYm9vdHN0cmFwIGlzIGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMub3B0cy5pZ25vcmVVbmltcG9ydGFudFZpZXdzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZSh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogdGhpcy5vcHRzLmlnbm9yZVVuaW1wb3J0YW50Vmlld3N9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Nocm9tZVNlc3Npb24pIHtcbiAgICAgIC8vIHN0YXJ0IGEgY2hyb21lZHJpdmVyIHNlc3Npb24gYW5kIHByb3h5IHRvIGl0XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmF1dG9MYXVuY2gpIHtcbiAgICAgICAgLy8gc3RhcnQgYXBwXG4gICAgICAgIGF3YWl0IHRoaXMuc3RhcnRBVVQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMub3JpZW50YXRpb24pKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBpbml0aWFsIG9yaWVudGF0aW9uIHRvICcke3RoaXMub3B0cy5vcmllbnRhdGlvbn0nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldE9yaWVudGF0aW9uKHRoaXMub3B0cy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbml0QXV0b1dlYnZpZXcoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRBdXRvV2VidmlldyAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgbGV0IHZpZXdOYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgICAgIGxldCB0aW1lb3V0ID0gKHRoaXMub3B0cy5hdXRvV2Vidmlld1RpbWVvdXQpIHx8IDIwMDA7XG5cbiAgICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgYXV0byB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG5cbiAgICAgIC8vIHRyeSBldmVyeSA1MDBtcyB1bnRpbCB0aW1lb3V0IGlzIG92ZXJcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwodGltZW91dCAvIDUwMCwgNTAwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0Q29udGV4dCh2aWV3TmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0QVVUICgpIHtcbiAgICAvLyBwb3B1bGF0ZSBhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSxcbiAgICAvLyBhbmQgdGhlIGRldmljZSBiZWluZyB1c2VkXG4gICAgLy8gaW4gdGhlIG9wdHMgYW5kIGNhcHMgKHNvIGl0IGdldHMgYmFjayB0byB0aGUgdXNlciBvbiBzZXNzaW9uIGNyZWF0aW9uKVxuICAgIGxldCBsYXVuY2hJbmZvID0gYXdhaXQgaGVscGVycy5nZXRMYXVuY2hJbmZvKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCBsYXVuY2hJbmZvKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY2FwcywgbGF1bmNoSW5mbyk7XG5cbiAgICAvLyBVbmluc3RhbGwgYW55IHVuaW5zdGFsbE90aGVyUGFja2FnZXMgd2hpY2ggd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcykge1xuICAgICAgaGVscGVycy52YWxpZGF0ZURlc2lyZWRDYXBzKHRoaXMub3B0cyk7XG4gICAgICAvLyBPbmx5IFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQgcGFja2FnZSBpcyB1c2VkIGJ5IFVJQTFcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyhcbiAgICAgICAgdGhpcy5hZGIsXG4gICAgICAgIGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyksXG4gICAgICAgIFtTRVRUSU5HU19IRUxQRVJfUEtHX0lEXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJbnN0YWxsIGFueSBcIm90aGVyQXBwc1wiIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMub3RoZXJBcHBzKSB7XG4gICAgICBsZXQgb3RoZXJBcHBzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgb3RoZXJBcHBzID0gaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy5vdGhlckFwcHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgXCJvdGhlckFwcHNcIiBjYXBhYmlsaXR5OiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIG90aGVyQXBwcyA9IGF3YWl0IEIuYWxsKG90aGVyQXBwcy5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIEFQUF9FWFRFTlNJT04pKSk7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxPdGhlckFwa3Mob3RoZXJBcHBzLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICAvLyBpbnN0YWxsIGFwcFxuICAgIGlmICghdGhpcy5vcHRzLmFwcCkge1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnRnVsbCByZXNldCByZXF1aXJlcyBhbiBhcHAgY2FwYWJpbGl0eSwgdXNlIGZhc3RSZXNldCBpZiBhcHAgaXMgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gYXBwIGNhcGFiaWxpdHkuIEFzc3VtaW5nIGl0IGlzIGFscmVhZHkgb24gdGhlIGRldmljZScpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mYXN0UmVzZXQpIHtcbiAgICAgICAgYXdhaXQgaGVscGVycy5yZXNldEFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICB9XG4gICAgYXdhaXQgaGVscGVycy5pbnN0YWxsQXBrKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIGNvbnN0IGFwa1N0cmluZ3NGb3JMYW5ndWFnZSA9IGF3YWl0IGhlbHBlcnMucHVzaFN0cmluZ3ModGhpcy5vcHRzLmxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICBpZiAodGhpcy5vcHRzLmxhbmd1YWdlKSB7XG4gICAgICB0aGlzLmFwa1N0cmluZ3NbdGhpcy5vcHRzLmxhbmd1YWdlXSA9IGFwa1N0cmluZ3NGb3JMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG11c3QgcnVuIGFmdGVyIGluc3RhbGxpbmcgdGhlIGFwaywgb3RoZXJ3aXNlIGl0IHdvdWxkIGNhdXNlIHRoZVxuICAgIC8vIGluc3RhbGwgdG8gZmFpbC4gQW5kIGJlZm9yZSBydW5uaW5nIHRoZSBhcHAuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMub3B0cy5zaGFyZWRQcmVmZXJlbmNlcykpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0U2hhcmVkUHJlZmVyZW5jZXModGhpcy5vcHRzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja0FwcFByZXNlbnQgKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdDaGVja2luZyB3aGV0aGVyIGFwcCBpcyBhY3R1YWxseSBwcmVzZW50Jyk7XG4gICAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHRoaXMub3B0cy5hcHApKSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGZpbmQgYXBwIGFwayBhdCAke3RoaXMub3B0cy5hcHB9YCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tQYWNrYWdlUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgcGFja2FnZSBpcyBwcmVzZW50IG9uIHRoZSBkZXZpY2UnKTtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3BtJywgJ2xpc3QnLCAncGFja2FnZXMnLCB0aGlzLm9wdHMuYXBwUGFja2FnZV0pKSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGZpbmQgcGFja2FnZSAke3RoaXMub3B0cy5hcHBQYWNrYWdlfSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkgb24gdGhlIGRldmljZVxuICBhc3luYyBzZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IChjb21wcmVzcykge1xuICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2NvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHknLCB7Y29tcHJlc3NMYXlvdXQ6IGNvbXByZXNzfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biBBbmRyb2lkIGRyaXZlcicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGlnbikge31cblxuICAgIGF3YWl0IGhlbHBlcnMucmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzKHRoaXMuc2VydmVyLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICBhd2FpdCB0aGlzLm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcoKTtcblxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcblxuICAgIGlmICh0aGlzLmJvb3RzdHJhcCkge1xuICAgICAgLy8gY2VydGFpbiBjbGVhbnVwIHdlIG9ubHkgY2FyZSB0byBkbyBpZiB0aGUgYm9vdHN0cmFwIHdhcyBldmVyIHJ1blxuICAgICAgYXdhaXQgdGhpcy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcygpO1xuICAgICAgaWYgKHRoaXMub3B0cy51bmljb2RlS2V5Ym9hcmQgJiYgdGhpcy5vcHRzLnJlc2V0S2V5Ym9hcmQgJiYgdGhpcy5kZWZhdWx0SU1FKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBSZXNldHRpbmcgSU1FIHRvICR7dGhpcy5kZWZhdWx0SU1FfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYj8uc2V0SU1FKHRoaXMuZGVmYXVsdElNRSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uICYmICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy5mb3JjZVN0b3AodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGI/LmdvVG9Ib21lKCk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLnNraXBVbmluc3RhbGwgJiYgIXRoaXMuYXBwT25EZXZpY2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGI/LnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zaHV0ZG93bigpO1xuICAgICAgdGhpcy5ib290c3RyYXAgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhcIkNhbGxlZCBkZWxldGVTZXNzaW9uIGJ1dCBib290c3RyYXAgd2Fzbid0IGFjdGl2ZVwiKTtcbiAgICB9XG4gICAgLy8gc29tZSBjbGVhbnVwIHdlIHdhbnQgdG8gZG8gcmVnYXJkbGVzcywgaW4gY2FzZSB3ZSBhcmUgc2h1dHRpbmcgZG93blxuICAgIC8vIG1pZC1zdGFydHVwXG4gICAgYXdhaXQgdGhpcy5hZGI/LnN0b3BMb2djYXQoKTtcbiAgICBpZiAodGhpcy51c2VVbmxvY2tIZWxwZXJBcHApIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5mb3JjZVN0b3AoJ2lvLmFwcGl1bS51bmxvY2snKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3Jpbmcgd2luZG93IGFuaW1hdGlvbiBzdGF0ZScpO1xuICAgICAgYXdhaXQgdGhpcy5hZGI/LnNldEFuaW1hdGlvblN0YXRlKHRydWUpO1xuXG4gICAgICAvLyBUaGlzIHdhcyBuZWNlc3NhcnkgdG8gY2hhbmdlIGFuaW1hdGlvbiBzY2FsZSBvdmVyIEFuZHJvaWQgUC4gV2UgbXVzdCByZXNldCB0aGUgcG9saWN5IGZvciB0aGUgc2VjdXJpdHkuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGI/LmdldEFwaUxldmVsKCkgPj0gMjgpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIGhpZGRlbiBhcGkgcG9saWN5IHRvIHRoZSBkZXZpY2UgZGVmYXVsdCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgbGV0IGF2ZE5hbWUgPSB0aGlzLm9wdHMuYXZkLnJlcGxhY2UoJ0AnLCAnJyk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgY2xvc2luZyBlbXVsYXRvciAnJHthdmROYW1lfSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5raWxsRW11bGF0b3IoYXZkTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2V0U2hhcmVkUHJlZmVyZW5jZXMgKCkge1xuICAgIGxldCBzaGFyZWRQcmVmcyA9IHRoaXMub3B0cy5zaGFyZWRQcmVmZXJlbmNlcztcbiAgICB0aGlzLmxvZy5pbmZvKCdUcnlpbmcgdG8gc2V0IHNoYXJlZCBwcmVmZXJlbmNlcycpO1xuICAgIGxldCBuYW1lID0gc2hhcmVkUHJlZnMubmFtZTtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgICAgdGhpcy5sb2cud2FybihgU2tpcHBpbmcgc2V0dGluZyBTaGFyZWQgcHJlZmVyZW5jZXMsIG5hbWUgaXMgdW5kZWZpbmVkOiAke0pTT04uc3RyaW5naWZ5KHNoYXJlZFByZWZzKX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHJlbW90ZVBhdGggPSBgL2RhdGEvZGF0YS8ke3RoaXMub3B0cy5hcHBQYWNrYWdlfS9zaGFyZWRfcHJlZnNgO1xuICAgIGxldCByZW1vdGVGaWxlID0gYCR7cmVtb3RlUGF0aH0vJHtuYW1lfS54bWxgO1xuICAgIGxldCBsb2NhbFBhdGggPSBgL3RtcC8ke25hbWV9LnhtbGA7XG4gICAgbGV0IGJ1aWxkZXIgPSB0aGlzLmdldFByZWZzQnVpbGRlcigpO1xuICAgIGJ1aWxkZXIuYnVpbGQoc2hhcmVkUHJlZnMucHJlZnMpO1xuICAgIHRoaXMubG9nLmluZm8oYENyZWF0aW5nIHRlbXBvcmFyeSBzaGFyZWQgcHJlZmVyZW5jZXM6ICR7bG9jYWxQYXRofWApO1xuICAgIGJ1aWxkZXIudG9GaWxlKGxvY2FsUGF0aCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgQ3JlYXRpbmcgc2hhcmVkX3ByZWZzIHJlbW90ZSBmb2xkZXI6ICR7cmVtb3RlUGF0aH1gKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ21rZGlyJywgJy1wJywgcmVtb3RlUGF0aF0pO1xuICAgIHRoaXMubG9nLmluZm8oYFB1c2hpbmcgc2hhcmVkX3ByZWZzIHRvICR7cmVtb3RlRmlsZX1gKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsUGF0aCwgcmVtb3RlRmlsZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRyeWluZyB0byByZW1vdmUgc2hhcmVkIHByZWZlcmVuY2VzIHRlbXBvcmFyeSBmaWxlYCk7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsUGF0aCkpIHtcbiAgICAgICAgYXdhaXQgZnMudW5saW5rKGxvY2FsUGF0aCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgdHJ5aW5nIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZSAke2xvY2FsUGF0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcmVmc0J1aWxkZXIgKCkge1xuICAgIC8qIEFkZCB0aGlzIG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgU2hhcmVkUHJlZnNCdWlsZGVyIGluc3RlYWQgb2ZcbiAgICAgKiBkaXJlY3RseSBjcmVhdGluZyB0aGUgb2JqZWN0IG9uIHNldFNoYXJlZFByZWZlcmVuY2VzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAgKi9cbiAgICByZXR1cm4gbmV3IFNoYXJlZFByZWZzQnVpbGRlcigpO1xuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIGlmICghc3VwZXIudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoKCFjYXBzLmJyb3dzZXJOYW1lIHx8ICFoZWxwZXJzLmlzQ2hyb21lQnJvd3NlcihjYXBzLmJyb3dzZXJOYW1lKSkgJiYgIWNhcHMuYXBwICYmICFjYXBzLmFwcFBhY2thZ2UpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ1RoZSBkZXNpcmVkIGNhcGFiaWxpdGllcyBtdXN0IGluY2x1ZGUgZWl0aGVyIGFuIGFwcCwgYXBwUGFja2FnZSBvciBicm93c2VyTmFtZScpO1xuICAgIH1cbiAgICByZXR1cm4gaGVscGVycy52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpO1xuICB9XG5cbiAgcHJveHlBY3RpdmUgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLnByb3h5QWN0aXZlKHNlc3Npb25JZCk7XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5nZXRQcm94eUF2b2lkTGlzdChzZXNzaW9uSWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGNhblByb3h5IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5jYW5Qcm94eShzZXNzaW9uSWQpO1xuXG4gICAgLy8gdGhpcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gQ2hyb21lRHJpdmVyIHN0YXR1c1xuICAgIHJldHVybiBfLmlzRnVuY3Rpb24odGhpcy5wcm94eVJlcVJlcyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQW5kcm9pZERyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgQW5kcm9pZERyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFJQSxJQUFBTSxPQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSx5QkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBVCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsTUFBTVksYUFBYSxHQUFHLE1BQU07QUFDNUIsTUFBTUMsV0FBVyxHQUFHLElBQUk7QUFJeEIsTUFBTUMsUUFBUSxHQUFHLENBQ2YsQ0FBQyxNQUFNLEVBQUUsSUFBSUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFDL0MsQ0FBQyxLQUFLLEVBQUUsSUFBSUEsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFDOUMsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFDOUMsQ0FBQyxLQUFLLEVBQUUsSUFBSUEsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFDN0MsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFDckQsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUMsRUFDM0QsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFDbkQsQ0FBQyxLQUFLLEVBQUUsSUFBSUEsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFDbEQsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFDL0MsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUMsRUFDcEQsQ0FBQyxLQUFLLEVBQUUsSUFBSUEsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsRUFDekQsQ0FBQyxNQUFNLEVBQUUsSUFBSUEsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FDM0Q7QUFFRCxNQUFNQyxhQUFhLFNBQVNDLGtCQUFVLENBQUM7RUFFckMsT0FBT0MsWUFBWSxHQUFHQSx1QkFBWTtFQUVsQ0MsV0FBV0EsQ0FBRUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFQyxrQkFBa0IsR0FBRyxJQUFJLEVBQUU7SUFDakQsS0FBSyxDQUFDRCxJQUFJLEVBQUVDLGtCQUFrQixDQUFDO0lBRS9CLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUcsQ0FDdkIsT0FBTyxFQUNQLElBQUksRUFDSixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLHNCQUFzQixDQUN2QjtJQUNELElBQUksQ0FBQ0MscUJBQXFCLEdBQUdDLG9CQUFrQjtJQUMvQyxJQUFJLENBQUNDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUNDLGNBQWMsR0FBRyxLQUFLO0lBQzNCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQyxlQUFDLENBQUNDLEtBQUssQ0FBQ2YsUUFBUSxDQUFDO0lBQ3RDLElBQUksQ0FBQ2dCLFFBQVEsR0FBRyxJQUFJQyxzQkFBYyxDQUFDO01BQUNDLHNCQUFzQixFQUFFO0lBQUssQ0FBQyxFQUMvQixJQUFJLENBQUNDLGdCQUFnQixDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsSUFBSSxDQUFDQyxZQUFZLEdBQUcsSUFBSTtJQUN4QixJQUFJLENBQUNDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDcEIsSUFBSSxDQUFDQyxRQUFRLEdBQUdDLHVCQUFPLENBQUNELFFBQVE7SUFFaEMsS0FBSyxJQUFJLENBQUNFLEdBQUcsRUFBRUMsRUFBRSxDQUFDLElBQUlaLGVBQUMsQ0FBQ2EsT0FBTyxDQUFDQyxjQUFRLENBQUMsRUFBRTtNQUN6QzFCLGFBQWEsQ0FBQzJCLFNBQVMsQ0FBQ0osR0FBRyxDQUFDLEdBQUdDLEVBQUU7SUFDbkM7SUFHQSxJQUFJLENBQUNJLFVBQVUsR0FBRyxJQUFJLENBQUNDLGtCQUFrQixFQUFFO0VBQzdDO0VBRUEsTUFBTUMsYUFBYUEsQ0FBRSxHQUFHQyxJQUFJLEVBQUU7SUFJNUIsSUFBSTtNQUNGLElBQUksQ0FBQ0MsU0FBUyxFQUFFQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssQ0FBQ0gsYUFBYSxDQUFDLEdBQUdDLElBQUksQ0FBQztNQUUxRCxJQUFJRyxhQUFhLEdBQUc7UUFDbEJDLFFBQVEsRUFBRSxPQUFPO1FBQ2pCQyxpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCQyxlQUFlLEVBQUUsSUFBSTtRQUNyQkMsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QkMsZUFBZSxFQUFFLEtBQUs7UUFDdEJDLHdCQUF3QixFQUFFLElBQUk7UUFDOUJDLHNCQUFzQixFQUFFLEtBQUs7UUFDN0JDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDWkMsT0FBTyxFQUFFLElBQUksQ0FBQ1Y7TUFDaEIsQ0FBQztNQUVELElBQUksQ0FBQ0EsSUFBSSxHQUFHVyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1gsYUFBYSxFQUFFLElBQUksQ0FBQ0QsSUFBSSxDQUFDO01BR25ELElBQUlhLFdBQVcsR0FBRztRQUNoQkMsTUFBTSxFQUFFLDRCQUE0QjtRQUNwQ0MsUUFBUSxFQUFFLGtDQUFrQztRQUM1Q0MsS0FBSyxFQUFFLFlBQVk7UUFDbkJDLHNCQUFzQixFQUFFLEtBQUs7UUFDN0JDLE1BQU0sRUFBRSxNQUFNQyxnQkFBTyxDQUFDQyxTQUFTLEVBQUU7UUFDakNDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCQyxVQUFVLEVBQUUsSUFBSTtRQUNoQkMsT0FBTyxFQUFFQywyQkFBZ0I7UUFDekJDLGFBQWEsRUFBRTdELFdBQVc7UUFDMUI4RCxxQkFBcUIsRUFBRTtNQUN6QixDQUFDO01BQ0QvQyxlQUFDLENBQUNnRCxRQUFRLENBQUMsSUFBSSxDQUFDeEQsSUFBSSxFQUFFMEMsV0FBVyxDQUFDO01BQ2xDLElBQUksQ0FBQ2Usa0JBQWtCLEdBQUdqRCxlQUFDLENBQUNrRCxXQUFXLENBQUMsSUFBSSxDQUFDN0IsSUFBSSxDQUFDOEIsVUFBVSxDQUFDO01BRzdELElBQUksSUFBSSxDQUFDM0QsSUFBSSxDQUFDNEQsT0FBTyxLQUFLLElBQUksRUFBRTtRQUM5QixJQUFJLENBQUM1RCxJQUFJLENBQUNrRCxTQUFTLEdBQUcsS0FBSztNQUM3QjtNQUNBLElBQUksSUFBSSxDQUFDbEQsSUFBSSxDQUFDa0QsU0FBUyxLQUFLLElBQUksRUFBRTtRQUNoQyxJQUFJLENBQUNsRCxJQUFJLENBQUM0RCxPQUFPLEdBQUcsS0FBSztNQUMzQjtNQUNBLElBQUksQ0FBQzVELElBQUksQ0FBQzZELFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQzdELElBQUksQ0FBQ2tELFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQ2xELElBQUksQ0FBQzRELE9BQU87TUFDaEUsSUFBSSxDQUFDNUQsSUFBSSxDQUFDOEQsYUFBYSxHQUFHLElBQUksQ0FBQzlELElBQUksQ0FBQzZELFNBQVMsSUFBSSxJQUFJLENBQUM3RCxJQUFJLENBQUM0RCxPQUFPO01BRWxFLElBQUksSUFBSSxDQUFDRyxlQUFlLEVBQUU7UUFDeEI3Qyx1QkFBTyxDQUFDOEMsd0JBQXdCLENBQUMsSUFBSSxDQUFDaEUsSUFBSSxDQUFDO01BQzdDO01BRUEsSUFBSSxJQUFJLENBQUNBLElBQUksQ0FBQ2lFLG1CQUFtQixFQUFFO1FBQ2pDLElBQUksQ0FBQzFELGFBQWEsQ0FBQzJELElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJdkUsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztNQUM1RTtNQUVBLElBQUksSUFBSSxDQUFDSyxJQUFJLENBQUNtRSxNQUFNLEVBQUU7UUFDcEIsSUFBSSxDQUFDQyxzQkFBc0IsQ0FBQ3ZDLElBQUksQ0FBQztNQUNuQztNQUdBLElBQUk7UUFBQ3dDLElBQUk7UUFBRUM7TUFBTSxDQUFDLEdBQUcsTUFBTXBELHVCQUFPLENBQUNxRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUN2RSxJQUFJLENBQUM7TUFDbkUsSUFBSSxDQUFDQSxJQUFJLENBQUNxRSxJQUFJLEdBQUdBLElBQUk7TUFDckIsSUFBSSxDQUFDckUsSUFBSSxDQUFDc0UsTUFBTSxHQUFHQSxNQUFNO01BR3pCLElBQUksQ0FBQ0UsR0FBRyxHQUFHLE1BQU10RCx1QkFBTyxDQUFDdUQsU0FBUyxDQUFDO1FBQ2pDSixJQUFJLEVBQUUsSUFBSSxDQUFDckUsSUFBSSxDQUFDcUUsSUFBSTtRQUNwQkMsTUFBTSxFQUFFLElBQUksQ0FBQ3RFLElBQUksQ0FBQ3NFLE1BQU07UUFDeEJsQixPQUFPLEVBQUUsSUFBSSxDQUFDcEQsSUFBSSxDQUFDb0QsT0FBTztRQUMxQnNCLGtCQUFrQixFQUFFLElBQUksQ0FBQzFFLElBQUksQ0FBQzBFLGtCQUFrQjtRQUNoREMsYUFBYSxFQUFFLElBQUksQ0FBQzNFLElBQUksQ0FBQzJFLGFBQWE7UUFDdENDLHNCQUFzQixFQUFFLElBQUksQ0FBQzVFLElBQUksQ0FBQzRFLHNCQUFzQjtRQUN4REMsY0FBYyxFQUFFLElBQUksQ0FBQzdFLElBQUksQ0FBQzZFLGNBQWM7UUFDeENDLG1CQUFtQixFQUFFLElBQUksQ0FBQzlFLElBQUksQ0FBQzhFO01BQ2pDLENBQUMsQ0FBQztNQUVGLElBQUksT0FBTSxJQUFJLENBQUNOLEdBQUcsQ0FBQ08sV0FBVyxFQUFFLEtBQUksRUFBRSxFQUFFO1FBQ3RDLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxJQUFJLENBQUMsa0RBQWtELEdBQzlELDhEQUE4RCxHQUM5RCw2Q0FBNkMsQ0FBQztNQUNsRDtNQUVBLElBQUksSUFBSSxDQUFDL0QsT0FBTyxDQUFDZ0UsaUJBQWlCLENBQUMsSUFBSSxDQUFDbEYsSUFBSSxDQUFDbUYsR0FBRyxDQUFDLEVBQUU7UUFFakQsSUFBSSxDQUFDbkYsSUFBSSxDQUFDb0YsVUFBVSxHQUFHLElBQUksQ0FBQ3BGLElBQUksQ0FBQ21GLEdBQUc7UUFDcEMsSUFBSSxDQUFDbkYsSUFBSSxDQUFDbUYsR0FBRyxHQUFHLElBQUk7TUFDdEI7TUFFQSxJQUFJLElBQUksQ0FBQ25GLElBQUksQ0FBQ21GLEdBQUcsRUFBRTtRQUVqQixJQUFJLENBQUNuRixJQUFJLENBQUNtRixHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUNqRSxPQUFPLENBQUNtRSxZQUFZLENBQUMsSUFBSSxDQUFDckYsSUFBSSxDQUFDbUYsR0FBRyxFQUFFM0YsYUFBYSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxDQUFDOEYsZUFBZSxFQUFFO01BQzlCLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ0MsV0FBVyxFQUFFO1FBRzNCLElBQUksQ0FBQ1AsR0FBRyxDQUFDUSxJQUFJLENBQUUsc0RBQXFELEdBQ2pFLEdBQUUsSUFBSSxDQUFDeEYsSUFBSSxDQUFDb0YsVUFBVyx5QkFBd0IsQ0FBQztRQUNuRCxNQUFNLElBQUksQ0FBQ0ssbUJBQW1CLEVBQUU7TUFDbEM7TUFJQSxJQUFJQyxhQUFJLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMzRixJQUFJLENBQUM0RixZQUFZLENBQUMsRUFBRTtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDQyxVQUFVLEVBQUUsRUFBRTtVQUN0QixJQUFJLENBQUNiLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDLGdFQUFnRSxDQUFDO1FBQ2pGLENBQUMsTUFBTTtVQUNMLE1BQU1XLFlBQVksR0FBRyxJQUFBRSxrQ0FBa0IsRUFBQyxJQUFJLENBQUN0QixHQUFHLEVBQUUsSUFBSSxDQUFDeEUsSUFBSSxDQUFDNEYsWUFBWSxDQUFDO1VBQ3pFLE1BQU0sSUFBSSxDQUFDcEIsR0FBRyxDQUFDb0IsWUFBWSxDQUFDQSxZQUFZLENBQUM7UUFDM0M7TUFDRjtNQUVBLElBQUlGLGFBQUksQ0FBQ0MsUUFBUSxDQUFDLElBQUksQ0FBQzNGLElBQUksQ0FBQytGLFVBQVUsQ0FBQyxFQUFFO1FBQ3ZDLElBQUksSUFBSSxDQUFDRixVQUFVLEVBQUUsRUFBRTtVQUNyQixJQUFJLENBQUNiLEdBQUcsQ0FBQ1EsSUFBSSxDQUFFLGFBQVksSUFBSSxDQUFDeEYsSUFBSSxDQUFDK0YsVUFBVSxHQUFHLFFBQVEsR0FBRyxTQUFVLHdCQUF1QixDQUFDO1VBQy9GLE1BQU0sSUFBSSxDQUFDdkIsR0FBRyxDQUFDd0IseUJBQXlCLENBQUMsSUFBSSxDQUFDaEcsSUFBSSxDQUFDK0YsVUFBVSxDQUFDO1FBQ2hFLENBQUMsTUFBTTtVQUNMLElBQUksQ0FBQ2YsR0FBRyxDQUFDQyxJQUFJLENBQUMsOERBQThELENBQUM7UUFDL0U7TUFDRjtNQUVBLE1BQU0sSUFBSSxDQUFDZ0IsbUJBQW1CLENBQUMsSUFBSSxDQUFDakcsSUFBSSxDQUFDO01BQ3pDLE9BQU8sQ0FBQzRCLFNBQVMsRUFBRSxJQUFJLENBQUNDLElBQUksQ0FBQztJQUMvQixDQUFDLENBQUMsT0FBT3FFLENBQUMsRUFBRTtNQUdWLElBQUk7UUFDRixNQUFNLElBQUksQ0FBQ0MsYUFBYSxFQUFFO01BQzVCLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUUsQ0FBQztNQUNmLE1BQU1GLENBQUM7SUFDVDtFQUNGO0VBRUFMLFVBQVVBLENBQUEsRUFBSTtJQUNaLE9BQU8zRSx1QkFBTyxDQUFDMkUsVUFBVSxDQUFDLElBQUksQ0FBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUN4RSxJQUFJLENBQUM7RUFDaEQ7RUFFQW9FLHNCQUFzQkEsQ0FBRXZDLElBQUksRUFBRTtJQUM1QixJQUFJLElBQUksQ0FBQzdCLElBQUksQ0FBQ3FHLEdBQUcsRUFBRTtNQUNqQixJQUFJLENBQUNyQixHQUFHLENBQUNRLElBQUksQ0FBQyw2REFBNkQsQ0FBQztJQUM5RSxDQUFDLE1BQU07TUFDTCxJQUFJLENBQUMzRCxJQUFJLENBQUN5RSxVQUFVLEVBQUU7UUFDcEIsSUFBSSxDQUFDdEIsR0FBRyxDQUFDdUIsYUFBYSxDQUFDLHFFQUFxRSxDQUFDO01BQy9GO01BQ0EsSUFBSSxDQUFDMUUsSUFBSSxDQUFDMkUsZUFBZSxFQUFFO1FBQ3pCLElBQUksQ0FBQ3hCLEdBQUcsQ0FBQ3VCLGFBQWEsQ0FBQywwRUFBMEUsQ0FBQztNQUNwRztNQUNBLElBQUlFLFNBQVMsR0FBRzVFLElBQUksQ0FBQ3lFLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQztNQUMvRCxJQUFJLENBQUMxRyxJQUFJLENBQUNxRyxHQUFHLEdBQUksR0FBRUksU0FBVSxLQUFJNUUsSUFBSSxDQUFDMkUsZUFBZ0IsRUFBQztJQUN6RDtFQUNGO0VBRUEsSUFBSWpCLFdBQVdBLENBQUEsRUFBSTtJQUNqQixPQUFPLElBQUksQ0FBQ3JFLE9BQU8sQ0FBQ2dFLGlCQUFpQixDQUFDLElBQUksQ0FBQ2xGLElBQUksQ0FBQ21GLEdBQUcsQ0FBQyxJQUFLLENBQUMsSUFBSSxDQUFDbkYsSUFBSSxDQUFDbUYsR0FBRyxJQUNoRSxJQUFJLENBQUNqRSxPQUFPLENBQUNnRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUNsRixJQUFJLENBQUNvRixVQUFVLENBQUU7RUFDOUQ7RUFFQSxJQUFJckIsZUFBZUEsQ0FBQSxFQUFJO0lBQ3JCLE9BQU83Qyx1QkFBTyxDQUFDeUYsZUFBZSxDQUFDLElBQUksQ0FBQzNHLElBQUksQ0FBQzRHLFdBQVcsQ0FBQztFQUN2RDtFQUVBLE1BQU0vRixnQkFBZ0JBLENBQUVnRyxHQUFHLEVBQUVDLEtBQUssRUFBRTtJQUNsQyxJQUFJRCxHQUFHLEtBQUssd0JBQXdCLEVBQUU7TUFDcEMsTUFBTSxJQUFJLENBQUNFLDRCQUE0QixDQUFDRCxLQUFLLENBQUM7SUFDaEQ7RUFDRjtFQUVBLE1BQU1iLG1CQUFtQkEsQ0FBQSxFQUFJO0lBQzNCLElBQUksQ0FBQ2pCLEdBQUcsQ0FBQ1EsSUFBSSxDQUFFLDBCQUF5QixDQUFDO0lBRXpDLElBQUksQ0FBQ3dCLFVBQVUsR0FBRyxNQUFNOUYsdUJBQU8sQ0FBQytGLFVBQVUsQ0FBQyxJQUFJLENBQUN6QyxHQUFHLEVBQUUsSUFBSSxDQUFDeEUsSUFBSSxDQUFDO0lBRy9ELElBQUksQ0FBQzZCLElBQUksQ0FBQ3lFLFVBQVUsR0FBRyxJQUFJLENBQUM5QixHQUFHLENBQUMwQyxXQUFXO0lBQzNDLElBQUksQ0FBQ3JGLElBQUksQ0FBQ3NGLFVBQVUsR0FBRyxJQUFJLENBQUNuSCxJQUFJLENBQUNxRSxJQUFJO0lBQ3JDLElBQUksQ0FBQ3hDLElBQUksQ0FBQzJFLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQ2hDLEdBQUcsQ0FBQzRDLGtCQUFrQixFQUFFO0lBQy9ELElBQUksQ0FBQ3ZGLElBQUksQ0FBQ3dGLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDN0MsR0FBRyxDQUFDOEMsYUFBYSxFQUFFO0lBQzNELElBQUksQ0FBQ3pGLElBQUksQ0FBQzBGLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQy9DLEdBQUcsQ0FBQ2dELFFBQVEsRUFBRTtJQUNqRCxJQUFJLENBQUMzRixJQUFJLENBQUM0RixrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQ2pELEdBQUcsQ0FBQ2tELGVBQWUsRUFBRTtJQUUvRCxJQUFJLElBQUksQ0FBQzFILElBQUksQ0FBQzJILHNCQUFzQixFQUFFO01BQ3BDLElBQUksTUFBTSxJQUFJLENBQUNuRCxHQUFHLENBQUNvRCxhQUFhLEVBQUUsRUFBRTtRQUNsQyxJQUFJLE9BQU0sSUFBSSxDQUFDcEQsR0FBRyxDQUFDTyxXQUFXLEVBQUUsS0FBSSxFQUFFLEVBQUU7VUFFdEMsSUFBSSxDQUFDQyxHQUFHLENBQUNDLElBQUksQ0FBQyxzREFBc0QsQ0FBQztVQUNyRSxNQUFNLElBQUksQ0FBQ1QsR0FBRyxDQUFDcUQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM3SCxJQUFJLENBQUM4SCwwQkFBMEIsQ0FBQztRQUNoRjtRQUVBLElBQUksQ0FBQzlDLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDLHNGQUFzRixDQUFDO1FBQ3JHLE1BQU0sSUFBSSxDQUFDaEIsR0FBRyxDQUFDdUQsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQ0MsMkJBQTJCLEdBQUcsSUFBSTtNQUN6QyxDQUFDLE1BQU07UUFDTCxJQUFJLENBQUNoRCxHQUFHLENBQUNRLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQztNQUN2RDtJQUNGO0lBR0EsTUFBTSxJQUFJLENBQUN5QyxPQUFPLEVBQUU7SUFHcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUcsSUFBSWhILHVCQUFPLENBQUNnSCxTQUFTLENBQUMsSUFBSSxDQUFDMUQsR0FBRyxFQUFFLElBQUksQ0FBQ3hFLElBQUksQ0FBQ3NELGFBQWEsRUFBRSxJQUFJLENBQUN0RCxJQUFJLENBQUNtSSxTQUFTLENBQUM7SUFDOUYsTUFBTSxJQUFJLENBQUNELFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLElBQUksQ0FBQ3BJLElBQUksQ0FBQ29GLFVBQVUsRUFBRSxJQUFJLENBQUNwRixJQUFJLENBQUM4QyxzQkFBc0IsRUFBRSxJQUFJLENBQUM5QyxJQUFJLENBQUNxSSxjQUFjLENBQUM7SUFFNUcsQ0FBQyxZQUFZO01BQ1gsSUFBSTtRQUNGLE1BQU0sSUFBSSxDQUFDSCxTQUFTLENBQUNJLG9CQUFvQjtNQUMzQyxDQUFDLENBQUMsT0FBT0MsR0FBRyxFQUFFO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQ0wsU0FBUyxDQUFDTSx3QkFBd0IsRUFBRTtVQUM1QyxNQUFNLElBQUksQ0FBQ0MsdUJBQXVCLENBQUNGLEdBQUcsQ0FBQztRQUN6QztNQUNGO0lBQ0YsQ0FBQyxHQUFHO0lBR0osSUFBSSxJQUFJLENBQUN2SSxJQUFJLENBQUMwSSxVQUFVLEVBQUU7TUFDeEIsSUFBSSxDQUFDMUQsR0FBRyxDQUFDUSxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDUixHQUFHLENBQUNRLElBQUksQ0FBQyxvQ0FBb0MsR0FDL0MsOEVBQTZFLENBQUM7TUFDakYsTUFBTXRFLHVCQUFPLENBQUN5SCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQ25FLEdBQUcsRUFBRSxJQUFJLENBQUMzQyxJQUFJLENBQUM7SUFDakQ7SUFJQSxJQUFJLElBQUksQ0FBQzdCLElBQUksQ0FBQ1ksc0JBQXNCLEVBQUU7TUFDcEMsTUFBTSxJQUFJLENBQUNGLFFBQVEsQ0FBQ2tJLE1BQU0sQ0FBQztRQUFDaEksc0JBQXNCLEVBQUUsSUFBSSxDQUFDWixJQUFJLENBQUNZO01BQXNCLENBQUMsQ0FBQztJQUN4RjtJQUVBLElBQUksSUFBSSxDQUFDbUQsZUFBZSxFQUFFO01BRXhCLE1BQU0sSUFBSSxDQUFDOEUsa0JBQWtCLEVBQUU7SUFDakMsQ0FBQyxNQUFNO01BQ0wsSUFBSSxJQUFJLENBQUM3SSxJQUFJLENBQUNtRCxVQUFVLEVBQUU7UUFFeEIsTUFBTSxJQUFJLENBQUMyRixRQUFRLEVBQUU7TUFDdkI7SUFDRjtJQUVBLElBQUlwRCxhQUFJLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMzRixJQUFJLENBQUMrSSxXQUFXLENBQUMsRUFBRTtNQUN4QyxJQUFJLENBQUMvRCxHQUFHLENBQUNnRSxLQUFLLENBQUUsbUNBQWtDLElBQUksQ0FBQ2hKLElBQUksQ0FBQytJLFdBQVksR0FBRSxDQUFDO01BQzNFLE1BQU0sSUFBSSxDQUFDRSxjQUFjLENBQUMsSUFBSSxDQUFDakosSUFBSSxDQUFDK0ksV0FBVyxDQUFDO0lBQ2xEO0lBRUEsTUFBTSxJQUFJLENBQUNHLGVBQWUsRUFBRTtFQUM5QjtFQUVBLE1BQU1BLGVBQWVBLENBQUEsRUFBSTtJQUN2QixJQUFJLElBQUksQ0FBQ2xKLElBQUksQ0FBQ21KLFdBQVcsRUFBRTtNQUN6QixJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxrQkFBa0IsRUFBRTtNQUN4QyxJQUFJQyxPQUFPLEdBQUksSUFBSSxDQUFDdEosSUFBSSxDQUFDdUosa0JBQWtCLElBQUssSUFBSTtNQUVwRCxJQUFJLENBQUN2RSxHQUFHLENBQUNRLElBQUksQ0FBRSxvQ0FBbUM0RCxRQUFTLGtCQUFpQkUsT0FBUSxJQUFHLENBQUM7TUFHeEYsTUFBTSxJQUFBRSx1QkFBYSxFQUFDRixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZO1FBQ2xELE1BQU0sSUFBSSxDQUFDRyxVQUFVLENBQUNMLFFBQVEsQ0FBQztNQUNqQyxDQUFDLENBQUM7SUFDSjtFQUNGO0VBRUEsTUFBTW5CLE9BQU9BLENBQUEsRUFBSTtJQUlmLElBQUl5QixVQUFVLEdBQUcsTUFBTXhJLHVCQUFPLENBQUN5SSxhQUFhLENBQUMsSUFBSSxDQUFDbkYsR0FBRyxFQUFFLElBQUksQ0FBQ3hFLElBQUksQ0FBQztJQUNqRXdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQ3pDLElBQUksRUFBRTBKLFVBQVUsQ0FBQztJQUNwQ2xILE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQ1osSUFBSSxFQUFFNkgsVUFBVSxDQUFDO0lBR3BDLElBQUksSUFBSSxDQUFDMUosSUFBSSxDQUFDNEosc0JBQXNCLEVBQUU7TUFDcEMxSSx1QkFBTyxDQUFDMkksbUJBQW1CLENBQUMsSUFBSSxDQUFDN0osSUFBSSxDQUFDO01BRXRDLE1BQU1rQix1QkFBTyxDQUFDMEksc0JBQXNCLENBQ2xDLElBQUksQ0FBQ3BGLEdBQUcsRUFDUnRELHVCQUFPLENBQUM0SSxVQUFVLENBQUMsSUFBSSxDQUFDOUosSUFBSSxDQUFDNEosc0JBQXNCLENBQUMsRUFDcEQsQ0FBQ0csc0NBQXNCLENBQUMsQ0FDekI7SUFDSDtJQUdBLElBQUksSUFBSSxDQUFDL0osSUFBSSxDQUFDZ0ssU0FBUyxFQUFFO01BQ3ZCLElBQUlBLFNBQVM7TUFDYixJQUFJO1FBQ0ZBLFNBQVMsR0FBRzlJLHVCQUFPLENBQUM0SSxVQUFVLENBQUMsSUFBSSxDQUFDOUosSUFBSSxDQUFDZ0ssU0FBUyxDQUFDO01BQ3JELENBQUMsQ0FBQyxPQUFPOUQsQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDbEIsR0FBRyxDQUFDdUIsYUFBYSxDQUFFLDJDQUEwQ0wsQ0FBQyxDQUFDK0QsT0FBUSxFQUFDLENBQUM7TUFDaEY7TUFDQUQsU0FBUyxHQUFHLE1BQU1FLGlCQUFDLENBQUNDLEdBQUcsQ0FBQ0gsU0FBUyxDQUFDSSxHQUFHLENBQUVqRixHQUFHLElBQUssSUFBSSxDQUFDakUsT0FBTyxDQUFDbUUsWUFBWSxDQUFDRixHQUFHLEVBQUUzRixhQUFhLENBQUMsQ0FBQyxDQUFDO01BQzlGLE1BQU0wQix1QkFBTyxDQUFDbUosZ0JBQWdCLENBQUNMLFNBQVMsRUFBRSxJQUFJLENBQUN4RixHQUFHLEVBQUUsSUFBSSxDQUFDeEUsSUFBSSxDQUFDO0lBQ2hFO0lBR0EsSUFBSSxDQUFDLElBQUksQ0FBQ0EsSUFBSSxDQUFDbUYsR0FBRyxFQUFFO01BQ2xCLElBQUksSUFBSSxDQUFDbkYsSUFBSSxDQUFDa0QsU0FBUyxFQUFFO1FBQ3ZCLElBQUksQ0FBQzhCLEdBQUcsQ0FBQ3VCLGFBQWEsQ0FBQyw2RUFBNkUsQ0FBQztNQUN2RztNQUNBLElBQUksQ0FBQ3ZCLEdBQUcsQ0FBQ2dFLEtBQUssQ0FBQyx5REFBeUQsQ0FBQztNQUN6RSxJQUFJLElBQUksQ0FBQ2hKLElBQUksQ0FBQzZELFNBQVMsRUFBRTtRQUN2QixNQUFNM0MsdUJBQU8sQ0FBQ29KLFFBQVEsQ0FBQyxJQUFJLENBQUM5RixHQUFHLEVBQUUsSUFBSSxDQUFDeEUsSUFBSSxDQUFDO01BQzdDO01BQ0E7SUFDRjtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNBLElBQUksQ0FBQzhELGFBQWEsRUFBRTtNQUM1QixNQUFNLElBQUksQ0FBQ1UsR0FBRyxDQUFDK0YsWUFBWSxDQUFDLElBQUksQ0FBQ3ZLLElBQUksQ0FBQ29GLFVBQVUsQ0FBQztJQUNuRDtJQUNBLE1BQU1sRSx1QkFBTyxDQUFDc0osVUFBVSxDQUFDLElBQUksQ0FBQ2hHLEdBQUcsRUFBRSxJQUFJLENBQUN4RSxJQUFJLENBQUM7SUFDN0MsTUFBTXlLLHFCQUFxQixHQUFHLE1BQU12Six1QkFBTyxDQUFDd0osV0FBVyxDQUFDLElBQUksQ0FBQzFLLElBQUksQ0FBQzJLLFFBQVEsRUFBRSxJQUFJLENBQUNuRyxHQUFHLEVBQUUsSUFBSSxDQUFDeEUsSUFBSSxDQUFDO0lBQ2hHLElBQUksSUFBSSxDQUFDQSxJQUFJLENBQUMySyxRQUFRLEVBQUU7TUFDdEIsSUFBSSxDQUFDM0osVUFBVSxDQUFDLElBQUksQ0FBQ2hCLElBQUksQ0FBQzJLLFFBQVEsQ0FBQyxHQUFHRixxQkFBcUI7SUFDN0Q7SUFJQSxJQUFJLENBQUNqSyxlQUFDLENBQUNrRCxXQUFXLENBQUMsSUFBSSxDQUFDMUQsSUFBSSxDQUFDNEssaUJBQWlCLENBQUMsRUFBRTtNQUMvQyxNQUFNLElBQUksQ0FBQ0Msb0JBQW9CLENBQUMsSUFBSSxDQUFDN0ssSUFBSSxDQUFDO0lBQzVDO0VBQ0Y7RUFFQSxNQUFNc0YsZUFBZUEsQ0FBQSxFQUFJO0lBQ3ZCLElBQUksQ0FBQ04sR0FBRyxDQUFDZ0UsS0FBSyxDQUFDLDBDQUEwQyxDQUFDO0lBQzFELElBQUksRUFBRSxNQUFNOEIsV0FBRSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDL0ssSUFBSSxDQUFDbUYsR0FBRyxDQUFDLENBQUMsRUFBRTtNQUNyQyxJQUFJLENBQUNILEdBQUcsQ0FBQ3VCLGFBQWEsQ0FBRSw2QkFBNEIsSUFBSSxDQUFDdkcsSUFBSSxDQUFDbUYsR0FBSSxFQUFDLENBQUM7SUFDdEU7RUFDRjtFQUVBLE1BQU1NLG1CQUFtQkEsQ0FBQSxFQUFJO0lBQzNCLElBQUksQ0FBQ1QsR0FBRyxDQUFDZ0UsS0FBSyxDQUFDLG1EQUFtRCxDQUFDO0lBQ25FLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQ3hFLEdBQUcsQ0FBQ3dHLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQ2hMLElBQUksQ0FBQ29GLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUM3RSxJQUFJLENBQUNKLEdBQUcsQ0FBQ3VCLGFBQWEsQ0FBRSwwQkFBeUIsSUFBSSxDQUFDdkcsSUFBSSxDQUFDb0YsVUFBVyxnQkFBZSxDQUFDO0lBQ3hGO0VBQ0Y7RUFHQSxNQUFNMkIsNEJBQTRCQSxDQUFFa0UsUUFBUSxFQUFFO0lBQzVDLE1BQU0sSUFBSSxDQUFDL0MsU0FBUyxDQUFDZ0QsVUFBVSxDQUFDLDJCQUEyQixFQUFFO01BQUNDLGNBQWMsRUFBRUY7SUFBUSxDQUFDLENBQUM7RUFDMUY7RUFFQSxNQUFNOUUsYUFBYUEsQ0FBQSxFQUFJO0lBQUEsSUFBQWlGLFVBQUE7SUFDckIsSUFBSSxDQUFDcEcsR0FBRyxDQUFDZ0UsS0FBSyxDQUFDLDhCQUE4QixDQUFDO0lBRTlDLElBQUk7TUFDRixJQUFJLENBQUN4SSxlQUFDLENBQUM2SyxPQUFPLENBQUMsSUFBSSxDQUFDQywwQkFBMEIsQ0FBQyxFQUFFO1FBQy9DLE1BQU0sSUFBSSxDQUFDQyxtQkFBbUIsRUFBRTtNQUNsQztJQUNGLENBQUMsQ0FBQyxPQUFPbkYsR0FBRyxFQUFFLENBQUM7SUFFZixNQUFNbEYsdUJBQU8sQ0FBQ3NLLGlDQUFpQyxDQUFDLElBQUksQ0FBQ0MsTUFBTSxFQUFFLElBQUksQ0FBQzdKLFNBQVMsQ0FBQztJQUU1RSxNQUFNLElBQUksQ0FBQzhKLHlCQUF5QixFQUFFO0lBRXRDLE1BQU0sS0FBSyxDQUFDdkYsYUFBYSxFQUFFO0lBRTNCLElBQUksSUFBSSxDQUFDK0IsU0FBUyxFQUFFO01BQUEsSUFBQXlELFVBQUE7TUFFbEIsTUFBTSxJQUFJLENBQUNDLHVCQUF1QixFQUFFO01BQ3BDLElBQUksSUFBSSxDQUFDNUwsSUFBSSxDQUFDNkwsZUFBZSxJQUFJLElBQUksQ0FBQzdMLElBQUksQ0FBQzhMLGFBQWEsSUFBSSxJQUFJLENBQUM5RSxVQUFVLEVBQUU7UUFBQSxJQUFBK0UsU0FBQTtRQUMzRSxJQUFJLENBQUMvRyxHQUFHLENBQUNnRSxLQUFLLENBQUUsb0JBQW1CLElBQUksQ0FBQ2hDLFVBQVcsRUFBQyxDQUFDO1FBQ3JELFFBQUErRSxTQUFBLEdBQU0sSUFBSSxDQUFDdkgsR0FBRyxjQUFBdUgsU0FBQSx1QkFBUkEsU0FBQSxDQUFVQyxNQUFNLENBQUMsSUFBSSxDQUFDaEYsVUFBVSxDQUFDO01BQ3pDO01BQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ2pELGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQy9ELElBQUksQ0FBQ2lNLGtCQUFrQixFQUFFO1FBQUEsSUFBQUMsVUFBQTtRQUMxRCxRQUFBQSxVQUFBLEdBQU0sSUFBSSxDQUFDMUgsR0FBRyxjQUFBMEgsVUFBQSx1QkFBUkEsVUFBQSxDQUFVQyxTQUFTLENBQUMsSUFBSSxDQUFDbk0sSUFBSSxDQUFDb0YsVUFBVSxDQUFDO01BQ2pEO01BQ0EsUUFBQXVHLFVBQUEsR0FBTSxJQUFJLENBQUNuSCxHQUFHLGNBQUFtSCxVQUFBLHVCQUFSQSxVQUFBLENBQVVTLFFBQVEsRUFBRTtNQUMxQixJQUFJLElBQUksQ0FBQ3BNLElBQUksQ0FBQ2tELFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQ2xELElBQUksQ0FBQzhELGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQ3lCLFdBQVcsRUFBRTtRQUFBLElBQUE4RyxVQUFBO1FBQ3hFLFFBQUFBLFVBQUEsR0FBTSxJQUFJLENBQUM3SCxHQUFHLGNBQUE2SCxVQUFBLHVCQUFSQSxVQUFBLENBQVU5QixZQUFZLENBQUMsSUFBSSxDQUFDdkssSUFBSSxDQUFDb0YsVUFBVSxDQUFDO01BQ3BEO01BQ0EsTUFBTSxJQUFJLENBQUM4QyxTQUFTLENBQUNvRSxRQUFRLEVBQUU7TUFDL0IsSUFBSSxDQUFDcEUsU0FBUyxHQUFHLElBQUk7SUFDdkIsQ0FBQyxNQUFNO01BQ0wsSUFBSSxDQUFDbEQsR0FBRyxDQUFDZ0UsS0FBSyxDQUFDLGtEQUFrRCxDQUFDO0lBQ3BFO0lBR0EsUUFBQW9DLFVBQUEsR0FBTSxJQUFJLENBQUM1RyxHQUFHLGNBQUE0RyxVQUFBLHVCQUFSQSxVQUFBLENBQVVtQixVQUFVLEVBQUU7SUFDNUIsSUFBSSxJQUFJLENBQUM5SSxrQkFBa0IsRUFBRTtNQUFBLElBQUErSSxVQUFBO01BQzNCLFFBQUFBLFVBQUEsR0FBTSxJQUFJLENBQUNoSSxHQUFHLGNBQUFnSSxVQUFBLHVCQUFSQSxVQUFBLENBQVVMLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztJQUMvQztJQUNBLElBQUksSUFBSSxDQUFDbkUsMkJBQTJCLEVBQUU7TUFBQSxJQUFBeUUsVUFBQSxFQUFBQyxVQUFBO01BQ3BDLElBQUksQ0FBQzFILEdBQUcsQ0FBQ1EsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO01BQ2pELFFBQUFpSCxVQUFBLEdBQU0sSUFBSSxDQUFDakksR0FBRyxjQUFBaUksVUFBQSx1QkFBUkEsVUFBQSxDQUFVMUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDO01BR3ZDLElBQUksU0FBQTJFLFVBQUEsR0FBTSxJQUFJLENBQUNsSSxHQUFHLGNBQUFrSSxVQUFBLHVCQUFSQSxVQUFBLENBQVUzSCxXQUFXLEVBQUUsTUFBSSxFQUFFLEVBQUU7UUFBQSxJQUFBNEgsVUFBQTtRQUN2QyxJQUFJLENBQUMzSCxHQUFHLENBQUNRLElBQUksQ0FBQyxpRUFBaUUsQ0FBQztRQUNoRixRQUFBbUgsVUFBQSxHQUFNLElBQUksQ0FBQ25JLEdBQUcsY0FBQW1JLFVBQUEsdUJBQVJBLFVBQUEsQ0FBVUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzVNLElBQUksQ0FBQzhILDBCQUEwQixDQUFDO01BQ25GO0lBQ0Y7SUFFQSxJQUFJLElBQUksQ0FBQzlILElBQUksQ0FBQ21FLE1BQU0sRUFBRTtNQUFBLElBQUEwSSxXQUFBO01BQ3BCLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUM5TSxJQUFJLENBQUNxRyxHQUFHLENBQUNLLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO01BQzVDLElBQUksQ0FBQzFCLEdBQUcsQ0FBQ2dFLEtBQUssQ0FBRSxxQkFBb0I4RCxPQUFRLEdBQUUsQ0FBQztNQUMvQyxRQUFBRCxXQUFBLEdBQU0sSUFBSSxDQUFDckksR0FBRyxjQUFBcUksV0FBQSx1QkFBUkEsV0FBQSxDQUFVRSxZQUFZLENBQUNELE9BQU8sQ0FBQztJQUN2QztFQUNGO0VBRUEsTUFBTWpDLG9CQUFvQkEsQ0FBQSxFQUFJO0lBQzVCLElBQUltQyxXQUFXLEdBQUcsSUFBSSxDQUFDaE4sSUFBSSxDQUFDNEssaUJBQWlCO0lBQzdDLElBQUksQ0FBQzVGLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO0lBQ2pELElBQUl5SCxJQUFJLEdBQUdELFdBQVcsQ0FBQ0MsSUFBSTtJQUMzQixJQUFJek0sZUFBQyxDQUFDa0QsV0FBVyxDQUFDdUosSUFBSSxDQUFDLEVBQUU7TUFDdkIsSUFBSSxDQUFDakksR0FBRyxDQUFDQyxJQUFJLENBQUUsMkRBQTBEaUksSUFBSSxDQUFDQyxTQUFTLENBQUNILFdBQVcsQ0FBRSxFQUFDLENBQUM7TUFDdkcsT0FBTyxLQUFLO0lBQ2Q7SUFDQSxJQUFJSSxVQUFVLEdBQUksY0FBYSxJQUFJLENBQUNwTixJQUFJLENBQUNvRixVQUFXLGVBQWM7SUFDbEUsSUFBSWlJLFVBQVUsR0FBSSxHQUFFRCxVQUFXLElBQUdILElBQUssTUFBSztJQUM1QyxJQUFJSyxTQUFTLEdBQUksUUFBT0wsSUFBSyxNQUFLO0lBQ2xDLElBQUlNLE9BQU8sR0FBRyxJQUFJLENBQUNDLGVBQWUsRUFBRTtJQUNwQ0QsT0FBTyxDQUFDRSxLQUFLLENBQUNULFdBQVcsQ0FBQ1UsS0FBSyxDQUFDO0lBQ2hDLElBQUksQ0FBQzFJLEdBQUcsQ0FBQ1EsSUFBSSxDQUFFLDBDQUF5QzhILFNBQVUsRUFBQyxDQUFDO0lBQ3BFQyxPQUFPLENBQUNJLE1BQU0sQ0FBQ0wsU0FBUyxDQUFDO0lBQ3pCLElBQUksQ0FBQ3RJLEdBQUcsQ0FBQ1EsSUFBSSxDQUFFLHdDQUF1QzRILFVBQVcsRUFBQyxDQUFDO0lBQ25FLE1BQU0sSUFBSSxDQUFDNUksR0FBRyxDQUFDd0csS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRW9DLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQ3BJLEdBQUcsQ0FBQ1EsSUFBSSxDQUFFLDJCQUEwQjZILFVBQVcsRUFBQyxDQUFDO0lBQ3RELE1BQU0sSUFBSSxDQUFDN0ksR0FBRyxDQUFDTixJQUFJLENBQUNvSixTQUFTLEVBQUVELFVBQVUsQ0FBQztJQUMxQyxJQUFJO01BQ0YsSUFBSSxDQUFDckksR0FBRyxDQUFDUSxJQUFJLENBQUUsb0RBQW1ELENBQUM7TUFDbkUsSUFBSSxNQUFNc0YsV0FBRSxDQUFDQyxNQUFNLENBQUN1QyxTQUFTLENBQUMsRUFBRTtRQUM5QixNQUFNeEMsV0FBRSxDQUFDOEMsTUFBTSxDQUFDTixTQUFTLENBQUM7TUFDNUI7SUFDRixDQUFDLENBQUMsT0FBT3BILENBQUMsRUFBRTtNQUNWLElBQUksQ0FBQ2xCLEdBQUcsQ0FBQ0MsSUFBSSxDQUFFLHlDQUF3Q3FJLFNBQVUsRUFBQyxDQUFDO0lBQ3JFO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFFQUUsZUFBZUEsQ0FBQSxFQUFJO0lBSWpCLE9BQU8sSUFBSUssNENBQWtCLEVBQUU7RUFDakM7RUFFQWhFLG1CQUFtQkEsQ0FBRWhJLElBQUksRUFBRTtJQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDZ0ksbUJBQW1CLENBQUNoSSxJQUFJLENBQUMsRUFBRTtNQUNwQyxPQUFPLEtBQUs7SUFDZDtJQUNBLElBQUksQ0FBQyxDQUFDQSxJQUFJLENBQUMrRSxXQUFXLElBQUksQ0FBQzFGLHVCQUFPLENBQUN5RixlQUFlLENBQUM5RSxJQUFJLENBQUMrRSxXQUFXLENBQUMsS0FBSyxDQUFDL0UsSUFBSSxDQUFDc0QsR0FBRyxJQUFJLENBQUN0RCxJQUFJLENBQUN1RCxVQUFVLEVBQUU7TUFDdEcsSUFBSSxDQUFDSixHQUFHLENBQUN1QixhQUFhLENBQUMsZ0ZBQWdGLENBQUM7SUFDMUc7SUFDQSxPQUFPckYsdUJBQU8sQ0FBQzJJLG1CQUFtQixDQUFDaEksSUFBSSxDQUFDO0VBQzFDO0VBRUFpTSxXQUFXQSxDQUFFbE0sU0FBUyxFQUFFO0lBQ3RCLEtBQUssQ0FBQ2tNLFdBQVcsQ0FBQ2xNLFNBQVMsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQ3RCLGNBQWM7RUFDNUI7RUFFQXlOLGlCQUFpQkEsQ0FBRW5NLFNBQVMsRUFBRTtJQUM1QixLQUFLLENBQUNtTSxpQkFBaUIsQ0FBQ25NLFNBQVMsQ0FBQztJQUVsQyxPQUFPLElBQUksQ0FBQ3JCLGFBQWE7RUFDM0I7RUFFQXlOLFFBQVFBLENBQUVwTSxTQUFTLEVBQUU7SUFDbkIsS0FBSyxDQUFDb00sUUFBUSxDQUFDcE0sU0FBUyxDQUFDO0lBR3pCLE9BQU9wQixlQUFDLENBQUN5TixVQUFVLENBQUMsSUFBSSxDQUFDQyxXQUFXLENBQUM7RUFDdkM7QUFDRjtBQUFDQyxPQUFBLENBQUF2TyxhQUFBLEdBQUFBLGFBQUE7QUFBQSxJQUFBd08sUUFBQSxHQUdjeE8sYUFBYTtBQUFBdU8sT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
|
package/build/lib/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","names":["APP_EXTENSION","DEVICE_PORT","NO_PROXY","RegExp","AndroidDriver","BaseDriver","newMethodMap","constructor","opts","shouldValidateCaps","locatorStrategies","desiredCapConstraints","desiredConstraints","sessionChromedrivers","jwpProxyActive","jwpProxyAvoid","_","clone","settings","DeviceSettings","ignoreUnimportantViews","onSettingsUpdate","bind","chromedriver","apkStrings","unlocker","helpers","cmd","fn","toPairs","commands","prototype","curContext","defaultContextName","createSession","args","sessionId","caps","serverDetails","platform","webStorageEnabled","takesScreenshot","javascriptEnabled","databaseEnabled","networkConnectionEnabled","locationContextEnabled","warnings","desired","Object","assign","defaultOpts","action","category","flags","disableAndroidWatchers","tmpDir","tempDir","staticDir","fullReset","autoLaunch","adbPort","DEFAULT_ADB_PORT","bootstrapPort","androidInstallTimeout","defaults","useUnlockHelperApp","isUndefined","unlockType","noReset","fastReset","skipUninstall","isChromeSession","adjustBrowserSessionCaps","nativeWebScreenshot","push","reboot","setAvdFromCapabilities","udid","emPort","getDeviceInfoFromCaps","adb","createADB","suppressKillServer","remoteAdbHost","clearDeviceLogsOnStart","adbExecTimeout","allowOfflineDevices","getApiLevel","log","warn","isPackageOrBundle","app","appPackage","configureApp","checkAppPresent","appOnDevice","info","checkPackagePresent","util","hasValue","networkSpeed","isEmulator","ensureNetworkSpeed","gpsEnabled","toggleGPSLocationProvider","startAndroidSession","e","deleteSession","ign","avd","deviceName","errorAndThrow","platformVersion","avdDevice","replace","isChromeBrowser","browserName","key","value","setCompressedLayoutHierarchy","defaultIME","initDevice","curDeviceId","deviceUDID","getPlatformVersion","deviceScreenSize","getScreenSize","deviceModel","getModel","deviceManufacturer","getManufacturer","disableWindowAnimation","isAnimationOn","setHiddenApiPolicy","ignoreHiddenApiPolicyError","setAnimationState","_wasWindowAnimationDisabled","initAUT","bootstrap","websocket","start","acceptSslCerts","onUnexpectedShutdown","err","ignoreUnexpectedShutdown","startUnexpectedShutdown","skipUnlock","unlock","update","startChromeSession","startAUT","orientation","debug","setOrientation","initAutoWebview","autoWebview","viewName","defaultWebviewName","timeout","autoWebviewTimeout","retryInterval","setContext","launchInfo","getLaunchInfo","uninstallOtherPackages","validateDesiredCaps","parseArray","SETTINGS_HELPER_PKG_ID","otherApps","message","B","all","map","installOtherApks","resetApp","uninstallApk","installApk","apkStringsForLanguage","pushStrings","language","sharedPreferences","setSharedPreferences","fs","exists","shell","compress","sendAction","compressLayout","isEmpty","_screenRecordingProperties","stopRecordingScreen","removeAllSessionWebSocketHandlers","server","mobileStopScreenStreaming","stopChromedriverProxies","unicodeKeyboard","resetKeyboard","setIME","dontStopAppOnReset","forceStop","goToHome","shutdown","stopLogcat","setDefaultHiddenApiPolicy","avdName","killEmulator","sharedPrefs","name","JSON","stringify","remotePath","remoteFile","localPath","builder","getPrefsBuilder","build","prefs","toFile","unlink","SharedPrefsBuilder","proxyActive","getProxyAvoidList","canProxy","isFunction","proxyReqRes"],"sources":["../../lib/driver.js"],"sourcesContent":["import { BaseDriver, DeviceSettings } from 'appium/driver';\nimport desiredConstraints from './desired-caps';\nimport commands from './commands/index';\nimport { newMethodMap } from './method-map';\nimport {\n helpers, ensureNetworkSpeed,\n SETTINGS_HELPER_PKG_ID,\n} from './android-helpers';\nimport _ from 'lodash';\nimport { DEFAULT_ADB_PORT } from 'appium-adb';\nimport { fs, tempDir, util } from '@appium/support';\nimport { retryInterval } from 'asyncbox';\nimport { SharedPrefsBuilder } from 'shared-preferences-builder';\nimport B from 'bluebird';\n\nconst APP_EXTENSION = '.apk';\nconst DEVICE_PORT = 4724;\n\n// This is a set of methods and paths that we never want to proxy to\n// Chromedriver\nconst NO_PROXY = [\n ['POST', new RegExp('^/session/[^/]+/context')],\n ['GET', new RegExp('^/session/[^/]+/context')],\n ['POST', new RegExp('^/session/[^/]+/appium')],\n ['GET', new RegExp('^/session/[^/]+/appium')],\n ['POST', new RegExp('^/session/[^/]+/touch/perform')],\n ['POST', new RegExp('^/session/[^/]+/touch/multi/perform')],\n ['POST', new RegExp('^/session/[^/]+/orientation')],\n ['GET', new RegExp('^/session/[^/]+/orientation')],\n ['POST', new RegExp('^/session/[^/]+/execute')],\n ['POST', new RegExp('^/session/[^/]+/execute/sync')],\n ['GET', new RegExp('^/session/[^/]+/network_connection')],\n ['POST', new RegExp('^/session/[^/]+/network_connection')],\n];\n\nclass AndroidDriver extends BaseDriver {\n\n static newMethodMap = newMethodMap;\n\n constructor (opts = {}, shouldValidateCaps = true) {\n super(opts, shouldValidateCaps);\n\n this.locatorStrategies = [\n 'xpath',\n 'id',\n 'class name',\n 'accessibility id',\n '-android uiautomator'\n ];\n this.desiredCapConstraints = desiredConstraints;\n this.sessionChromedrivers = {};\n this.jwpProxyActive = false;\n this.jwpProxyAvoid = _.clone(NO_PROXY);\n this.settings = new DeviceSettings({ignoreUnimportantViews: false},\n this.onSettingsUpdate.bind(this));\n this.chromedriver = null;\n this.apkStrings = {};\n this.unlocker = helpers.unlocker;\n\n for (let [cmd, fn] of _.toPairs(commands)) {\n AndroidDriver.prototype[cmd] = fn;\n }\n\n // needs to be after the line which assigns commands to AndroidDriver.prototype, so that `this.defaultContextName` is defined.\n this.curContext = this.defaultContextName();\n }\n\n async createSession (...args) {\n // the whole createSession flow is surrounded in a try-catch statement\n // if creating a session fails at any point, we teardown everything we\n // set up before throwing the error.\n try {\n let [sessionId, caps] = await super.createSession(...args);\n\n let serverDetails = {\n platform: 'LINUX',\n webStorageEnabled: false,\n takesScreenshot: true,\n javascriptEnabled: true,\n databaseEnabled: false,\n networkConnectionEnabled: true,\n locationContextEnabled: false,\n warnings: {},\n desired: this.caps\n };\n\n this.caps = Object.assign(serverDetails, this.caps);\n\n // assigning defaults\n let defaultOpts = {\n action: 'android.intent.action.MAIN',\n category: 'android.intent.category.LAUNCHER',\n flags: '0x10200000',\n disableAndroidWatchers: false,\n tmpDir: await tempDir.staticDir(),\n fullReset: false,\n autoLaunch: true,\n adbPort: DEFAULT_ADB_PORT,\n bootstrapPort: DEVICE_PORT,\n androidInstallTimeout: 90000,\n };\n _.defaults(this.opts, defaultOpts);\n this.useUnlockHelperApp = _.isUndefined(this.caps.unlockType);\n\n // not user visible via caps\n if (this.opts.noReset === true) {\n this.opts.fullReset = false;\n }\n if (this.opts.fullReset === true) {\n this.opts.noReset = false;\n }\n this.opts.fastReset = !this.opts.fullReset && !this.opts.noReset;\n this.opts.skipUninstall = this.opts.fastReset || this.opts.noReset;\n\n if (this.isChromeSession) {\n helpers.adjustBrowserSessionCaps(this.opts);\n }\n\n if (this.opts.nativeWebScreenshot) {\n this.jwpProxyAvoid.push(['GET', new RegExp('^/session/[^/]+/screenshot')]);\n }\n\n if (this.opts.reboot) {\n this.setAvdFromCapabilities(caps);\n }\n\n // get device udid for this session\n let {udid, emPort} = await helpers.getDeviceInfoFromCaps(this.opts);\n this.opts.udid = udid;\n this.opts.emPort = emPort;\n\n // set up an instance of ADB\n this.adb = await helpers.createADB({\n udid: this.opts.udid,\n emPort: this.opts.emPort,\n adbPort: this.opts.adbPort,\n suppressKillServer: this.opts.suppressKillServer,\n remoteAdbHost: this.opts.remoteAdbHost,\n clearDeviceLogsOnStart: this.opts.clearDeviceLogsOnStart,\n adbExecTimeout: this.opts.adbExecTimeout,\n allowOfflineDevices: this.opts.allowOfflineDevices,\n });\n\n if (await this.adb.getApiLevel() >= 23) {\n this.log.warn(\"Consider setting 'automationName' capability to \" +\n \"'uiautomator2' on Android >= 6, since UIAutomator framework \" +\n 'is not maintained anymore by the OS vendor.');\n }\n\n if (this.helpers.isPackageOrBundle(this.opts.app)) {\n // user provided package instead of app for 'app' capability, massage options\n this.opts.appPackage = this.opts.app;\n this.opts.app = null;\n }\n\n if (this.opts.app) {\n // find and copy, or download and unzip an app url or path\n this.opts.app = await this.helpers.configureApp(this.opts.app, APP_EXTENSION);\n await this.checkAppPresent();\n } else if (this.appOnDevice) {\n // the app isn't an actual app file but rather something we want to\n // assume is on the device and just launch via the appPackage\n this.log.info(`App file was not listed, instead we're going to run ` +\n `${this.opts.appPackage} directly on the device`);\n await this.checkPackagePresent();\n }\n\n // Some cloud services using appium launch the avd themselves, so we ensure netspeed\n // is set for emulators by calling adb.networkSpeed before running the app\n if (util.hasValue(this.opts.networkSpeed)) {\n if (!this.isEmulator()) {\n this.log.warn('Sorry, networkSpeed capability is only available for emulators');\n } else {\n const networkSpeed = ensureNetworkSpeed(this.adb, this.opts.networkSpeed);\n await this.adb.networkSpeed(networkSpeed);\n }\n }\n // check if we have to enable/disable gps before running the application\n if (util.hasValue(this.opts.gpsEnabled)) {\n if (this.isEmulator()) {\n this.log.info(`Trying to ${this.opts.gpsEnabled ? 'enable' : 'disable'} gps location provider`);\n await this.adb.toggleGPSLocationProvider(this.opts.gpsEnabled);\n } else {\n this.log.warn('Sorry! gpsEnabled capability is only available for emulators');\n }\n }\n\n await this.startAndroidSession(this.opts);\n return [sessionId, this.caps];\n } catch (e) {\n // ignoring delete session exception if any and throw the real error\n // that happened while creating the session.\n try {\n await this.deleteSession();\n } catch (ign) {}\n throw e;\n }\n }\n\n isEmulator () {\n return helpers.isEmulator(this.adb, this.opts);\n }\n\n setAvdFromCapabilities (caps) {\n if (this.opts.avd) {\n this.log.info('avd name defined, ignoring device name and platform version');\n } else {\n if (!caps.deviceName) {\n this.log.errorAndThrow('avd or deviceName should be specified when reboot option is enables');\n }\n if (!caps.platformVersion) {\n this.log.errorAndThrow('avd or platformVersion should be specified when reboot option is enabled');\n }\n let avdDevice = caps.deviceName.replace(/[^a-zA-Z0-9_.]/g, '-');\n this.opts.avd = `${avdDevice}__${caps.platformVersion}`;\n }\n }\n\n get appOnDevice () {\n return this.helpers.isPackageOrBundle(this.opts.app) || (!this.opts.app &&\n this.helpers.isPackageOrBundle(this.opts.appPackage));\n }\n\n get isChromeSession () {\n return helpers.isChromeBrowser(this.opts.browserName);\n }\n\n async onSettingsUpdate (key, value) {\n if (key === 'ignoreUnimportantViews') {\n await this.setCompressedLayoutHierarchy(value);\n }\n }\n\n async startAndroidSession () {\n this.log.info(`Starting Android session`);\n // set up the device to run on (real or emulator, etc)\n this.defaultIME = await helpers.initDevice(this.adb, this.opts);\n\n // set actual device name, udid, platform version, screen size, model and manufacturer details.\n this.caps.deviceName = this.adb.curDeviceId;\n this.caps.deviceUDID = this.opts.udid;\n this.caps.platformVersion = await this.adb.getPlatformVersion();\n this.caps.deviceScreenSize = await this.adb.getScreenSize();\n this.caps.deviceModel = await this.adb.getModel();\n this.caps.deviceManufacturer = await this.adb.getManufacturer();\n\n if (this.opts.disableWindowAnimation) {\n if (await this.adb.isAnimationOn()) {\n if (await this.adb.getApiLevel() >= 28) { // API level 28 is Android P\n // Don't forget to reset the relaxing in delete session\n this.log.warn('Relaxing hidden api policy to manage animation scale');\n await this.adb.setHiddenApiPolicy('1', !!this.opts.ignoreHiddenApiPolicyError);\n }\n\n this.log.info('Disabling window animation as it is requested by \"disableWindowAnimation\" capability');\n await this.adb.setAnimationState(false);\n this._wasWindowAnimationDisabled = true;\n } else {\n this.log.info('Window animation is already disabled');\n }\n }\n\n // set up app under test\n await this.initAUT();\n\n // start UiAutomator\n this.bootstrap = new helpers.bootstrap(this.adb, this.opts.bootstrapPort, this.opts.websocket);\n await this.bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);\n // handling unexpected shutdown\n (async () => {\n try {\n await this.bootstrap.onUnexpectedShutdown;\n } catch (err) {\n if (!this.bootstrap.ignoreUnexpectedShutdown) {\n await this.startUnexpectedShutdown(err);\n }\n }\n })();\n\n\n if (this.opts.skipUnlock) {\n this.log.info('Skipping lockscreen check');\n } else {\n this.log.info('Checking for lockscreen presence. ' +\n `This could be skipped by setting the 'appium:skipUnlock' capability to true.`);\n await helpers.unlock(this, this.adb, this.caps);\n }\n\n // Set CompressedLayoutHierarchy on the device based on current settings object\n // this has to happen _after_ bootstrap is initialized\n if (this.opts.ignoreUnimportantViews) {\n await this.settings.update({ignoreUnimportantViews: this.opts.ignoreUnimportantViews});\n }\n\n if (this.isChromeSession) {\n // start a chromedriver session and proxy to it\n await this.startChromeSession();\n } else {\n if (this.opts.autoLaunch) {\n // start app\n await this.startAUT();\n }\n }\n\n if (util.hasValue(this.opts.orientation)) {\n this.log.debug(`Setting initial orientation to '${this.opts.orientation}'`);\n await this.setOrientation(this.opts.orientation);\n }\n\n await this.initAutoWebview();\n }\n\n async initAutoWebview () {\n if (this.opts.autoWebview) {\n let viewName = this.defaultWebviewName();\n let timeout = (this.opts.autoWebviewTimeout) || 2000;\n\n this.log.info(`Setting auto webview to context '${viewName}' with timeout ${timeout}ms`);\n\n // try every 500ms until timeout is over\n await retryInterval(timeout / 500, 500, async () => {\n await this.setContext(viewName);\n });\n }\n }\n\n async initAUT () {\n // populate appPackage, appActivity, appWaitPackage, appWaitActivity,\n // and the device being used\n // in the opts and caps (so it gets back to the user on session creation)\n let launchInfo = await helpers.getLaunchInfo(this.adb, this.opts);\n Object.assign(this.opts, launchInfo);\n Object.assign(this.caps, launchInfo);\n\n // Uninstall any uninstallOtherPackages which were specified in caps\n if (this.opts.uninstallOtherPackages) {\n helpers.validateDesiredCaps(this.opts);\n // Only SETTINGS_HELPER_PKG_ID package is used by UIA1\n await helpers.uninstallOtherPackages(\n this.adb,\n helpers.parseArray(this.opts.uninstallOtherPackages),\n [SETTINGS_HELPER_PKG_ID]\n );\n }\n\n // Install any \"otherApps\" that were specified in caps\n if (this.opts.otherApps) {\n let otherApps;\n try {\n otherApps = helpers.parseArray(this.opts.otherApps);\n } catch (e) {\n this.log.errorAndThrow(`Could not parse \"otherApps\" capability: ${e.message}`);\n }\n otherApps = await B.all(otherApps.map((app) => this.helpers.configureApp(app, APP_EXTENSION)));\n await helpers.installOtherApks(otherApps, this.adb, this.opts);\n }\n\n // install app\n if (!this.opts.app) {\n if (this.opts.fullReset) {\n this.log.errorAndThrow('Full reset requires an app capability, use fastReset if app is not provided');\n }\n this.log.debug('No app capability. Assuming it is already on the device');\n if (this.opts.fastReset) {\n await helpers.resetApp(this.adb, this.opts);\n }\n return;\n }\n if (!this.opts.skipUninstall) {\n await this.adb.uninstallApk(this.opts.appPackage);\n }\n await helpers.installApk(this.adb, this.opts);\n const apkStringsForLanguage = await helpers.pushStrings(this.opts.language, this.adb, this.opts);\n if (this.opts.language) {\n this.apkStrings[this.opts.language] = apkStringsForLanguage;\n }\n\n // This must run after installing the apk, otherwise it would cause the\n // install to fail. And before running the app.\n if (!_.isUndefined(this.opts.sharedPreferences)) {\n await this.setSharedPreferences(this.opts);\n }\n }\n\n async checkAppPresent () {\n this.log.debug('Checking whether app is actually present');\n if (!(await fs.exists(this.opts.app))) {\n this.log.errorAndThrow(`Could not find app apk at ${this.opts.app}`);\n }\n }\n\n async checkPackagePresent () {\n this.log.debug('Checking whether package is present on the device');\n if (!(await this.adb.shell(['pm', 'list', 'packages', this.opts.appPackage]))) {\n this.log.errorAndThrow(`Could not find package ${this.opts.appPackage} on the device`);\n }\n }\n\n // Set CompressedLayoutHierarchy on the device\n async setCompressedLayoutHierarchy (compress) {\n await this.bootstrap.sendAction('compressedLayoutHierarchy', {compressLayout: compress});\n }\n\n async deleteSession () {\n this.log.debug('Shutting down Android driver');\n\n try {\n if (!_.isEmpty(this._screenRecordingProperties)) {\n await this.stopRecordingScreen();\n }\n } catch (ign) {}\n\n await helpers.removeAllSessionWebSocketHandlers(this.server, this.sessionId);\n\n await this.mobileStopScreenStreaming();\n\n await super.deleteSession();\n\n if (this.bootstrap) {\n // certain cleanup we only care to do if the bootstrap was ever run\n await this.stopChromedriverProxies();\n if (this.opts.unicodeKeyboard && this.opts.resetKeyboard && this.defaultIME) {\n this.log.debug(`Resetting IME to ${this.defaultIME}`);\n await this.adb?.setIME(this.defaultIME);\n }\n if (!this.isChromeSession && !this.opts.dontStopAppOnReset) {\n await this.adb?.forceStop(this.opts.appPackage);\n }\n await this.adb?.goToHome();\n if (this.opts.fullReset && !this.opts.skipUninstall && !this.appOnDevice) {\n await this.adb?.uninstallApk(this.opts.appPackage);\n }\n await this.bootstrap.shutdown();\n this.bootstrap = null;\n } else {\n this.log.debug(\"Called deleteSession but bootstrap wasn't active\");\n }\n // some cleanup we want to do regardless, in case we are shutting down\n // mid-startup\n await this.adb?.stopLogcat();\n if (this.useUnlockHelperApp) {\n await this.adb?.forceStop('io.appium.unlock');\n }\n if (this._wasWindowAnimationDisabled) {\n this.log.info('Restoring window animation state');\n await this.adb?.setAnimationState(true);\n\n // This was necessary to change animation scale over Android P. We must reset the policy for the security.\n if (await this.adb?.getApiLevel() >= 28) {\n this.log.info('Restoring hidden api policy to the device default configuration');\n await this.adb?.setDefaultHiddenApiPolicy(!!this.opts.ignoreHiddenApiPolicyError);\n }\n }\n\n if (this.opts.reboot) {\n let avdName = this.opts.avd.replace('@', '');\n this.log.debug(`closing emulator '${avdName}'`);\n await this.adb?.killEmulator(avdName);\n }\n }\n\n async setSharedPreferences () {\n let sharedPrefs = this.opts.sharedPreferences;\n this.log.info('Trying to set shared preferences');\n let name = sharedPrefs.name;\n if (_.isUndefined(name)) {\n this.log.warn(`Skipping setting Shared preferences, name is undefined: ${JSON.stringify(sharedPrefs)}`);\n return false;\n }\n let remotePath = `/data/data/${this.opts.appPackage}/shared_prefs`;\n let remoteFile = `${remotePath}/${name}.xml`;\n let localPath = `/tmp/${name}.xml`;\n let builder = this.getPrefsBuilder();\n builder.build(sharedPrefs.prefs);\n this.log.info(`Creating temporary shared preferences: ${localPath}`);\n builder.toFile(localPath);\n this.log.info(`Creating shared_prefs remote folder: ${remotePath}`);\n await this.adb.shell(['mkdir', '-p', remotePath]);\n this.log.info(`Pushing shared_prefs to ${remoteFile}`);\n await this.adb.push(localPath, remoteFile);\n try {\n this.log.info(`Trying to remove shared preferences temporary file`);\n if (await fs.exists(localPath)) {\n await fs.unlink(localPath);\n }\n } catch (e) {\n this.log.warn(`Error trying to remove temporary file ${localPath}`);\n }\n return true;\n }\n\n getPrefsBuilder () {\n /* Add this method to create a new SharedPrefsBuilder instead of\n * directly creating the object on setSharedPreferences for testing purposes\n */\n return new SharedPrefsBuilder();\n }\n\n validateDesiredCaps (caps) {\n if (!super.validateDesiredCaps(caps)) {\n return false;\n }\n if ((!caps.browserName || !helpers.isChromeBrowser(caps.browserName)) && !caps.app && !caps.appPackage) {\n this.log.errorAndThrow('The desired capabilities must include either an app, appPackage or browserName');\n }\n return helpers.validateDesiredCaps(caps);\n }\n\n proxyActive (sessionId) {\n super.proxyActive(sessionId);\n\n return this.jwpProxyActive;\n }\n\n getProxyAvoidList (sessionId) {\n super.getProxyAvoidList(sessionId);\n\n return this.jwpProxyAvoid;\n }\n\n canProxy (sessionId) {\n super.canProxy(sessionId);\n\n // this will change depending on ChromeDriver status\n return _.isFunction(this.proxyReqRes);\n }\n}\n\nexport { AndroidDriver };\nexport default AndroidDriver;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"driver.js","names":["_driver","require","_desiredCaps","_interopRequireDefault","_index","_methodMap","_androidHelpers","_lodash","_appiumAdb","_support","_asyncbox","_sharedPreferencesBuilder","_bluebird","APP_EXTENSION","DEVICE_PORT","NO_PROXY","RegExp","AndroidDriver","BaseDriver","newMethodMap","constructor","opts","shouldValidateCaps","locatorStrategies","desiredCapConstraints","desiredConstraints","sessionChromedrivers","jwpProxyActive","jwpProxyAvoid","_","clone","settings","DeviceSettings","ignoreUnimportantViews","onSettingsUpdate","bind","chromedriver","apkStrings","unlocker","helpers","cmd","fn","toPairs","commands","prototype","curContext","defaultContextName","createSession","args","sessionId","caps","serverDetails","platform","webStorageEnabled","takesScreenshot","javascriptEnabled","databaseEnabled","networkConnectionEnabled","locationContextEnabled","warnings","desired","Object","assign","defaultOpts","action","category","flags","disableAndroidWatchers","tmpDir","tempDir","staticDir","fullReset","autoLaunch","adbPort","DEFAULT_ADB_PORT","bootstrapPort","androidInstallTimeout","defaults","useUnlockHelperApp","isUndefined","unlockType","noReset","fastReset","skipUninstall","isChromeSession","adjustBrowserSessionCaps","nativeWebScreenshot","push","reboot","setAvdFromCapabilities","udid","emPort","getDeviceInfoFromCaps","adb","createADB","suppressKillServer","remoteAdbHost","clearDeviceLogsOnStart","adbExecTimeout","allowOfflineDevices","getApiLevel","log","warn","isPackageOrBundle","app","appPackage","configureApp","checkAppPresent","appOnDevice","info","checkPackagePresent","util","hasValue","networkSpeed","isEmulator","ensureNetworkSpeed","gpsEnabled","toggleGPSLocationProvider","startAndroidSession","e","deleteSession","ign","avd","deviceName","errorAndThrow","platformVersion","avdDevice","replace","isChromeBrowser","browserName","key","value","setCompressedLayoutHierarchy","defaultIME","initDevice","curDeviceId","deviceUDID","getPlatformVersion","deviceScreenSize","getScreenSize","deviceModel","getModel","deviceManufacturer","getManufacturer","disableWindowAnimation","isAnimationOn","setHiddenApiPolicy","ignoreHiddenApiPolicyError","setAnimationState","_wasWindowAnimationDisabled","initAUT","bootstrap","websocket","start","acceptSslCerts","onUnexpectedShutdown","err","ignoreUnexpectedShutdown","startUnexpectedShutdown","skipUnlock","unlock","update","startChromeSession","startAUT","orientation","debug","setOrientation","initAutoWebview","autoWebview","viewName","defaultWebviewName","timeout","autoWebviewTimeout","retryInterval","setContext","launchInfo","getLaunchInfo","uninstallOtherPackages","validateDesiredCaps","parseArray","SETTINGS_HELPER_PKG_ID","otherApps","message","B","all","map","installOtherApks","resetApp","uninstallApk","installApk","apkStringsForLanguage","pushStrings","language","sharedPreferences","setSharedPreferences","fs","exists","shell","compress","sendAction","compressLayout","_this$adb5","isEmpty","_screenRecordingProperties","stopRecordingScreen","removeAllSessionWebSocketHandlers","server","mobileStopScreenStreaming","_this$adb3","stopChromedriverProxies","unicodeKeyboard","resetKeyboard","_this$adb","setIME","dontStopAppOnReset","_this$adb2","forceStop","goToHome","_this$adb4","shutdown","stopLogcat","_this$adb6","_this$adb7","_this$adb8","_this$adb9","setDefaultHiddenApiPolicy","_this$adb10","avdName","killEmulator","sharedPrefs","name","JSON","stringify","remotePath","remoteFile","localPath","builder","getPrefsBuilder","build","prefs","toFile","unlink","SharedPrefsBuilder","proxyActive","getProxyAvoidList","canProxy","isFunction","proxyReqRes","exports","_default","default"],"sources":["../../lib/driver.js"],"sourcesContent":["import { BaseDriver, DeviceSettings } from 'appium/driver';\nimport desiredConstraints from './desired-caps';\nimport commands from './commands/index';\nimport { newMethodMap } from './method-map';\nimport {\n helpers, ensureNetworkSpeed,\n SETTINGS_HELPER_PKG_ID,\n} from './android-helpers';\nimport _ from 'lodash';\nimport { DEFAULT_ADB_PORT } from 'appium-adb';\nimport { fs, tempDir, util } from '@appium/support';\nimport { retryInterval } from 'asyncbox';\nimport { SharedPrefsBuilder } from 'shared-preferences-builder';\nimport B from 'bluebird';\n\nconst APP_EXTENSION = '.apk';\nconst DEVICE_PORT = 4724;\n\n// This is a set of methods and paths that we never want to proxy to\n// Chromedriver\nconst NO_PROXY = [\n ['POST', new RegExp('^/session/[^/]+/context')],\n ['GET', new RegExp('^/session/[^/]+/context')],\n ['POST', new RegExp('^/session/[^/]+/appium')],\n ['GET', new RegExp('^/session/[^/]+/appium')],\n ['POST', new RegExp('^/session/[^/]+/touch/perform')],\n ['POST', new RegExp('^/session/[^/]+/touch/multi/perform')],\n ['POST', new RegExp('^/session/[^/]+/orientation')],\n ['GET', new RegExp('^/session/[^/]+/orientation')],\n ['POST', new RegExp('^/session/[^/]+/execute')],\n ['POST', new RegExp('^/session/[^/]+/execute/sync')],\n ['GET', new RegExp('^/session/[^/]+/network_connection')],\n ['POST', new RegExp('^/session/[^/]+/network_connection')],\n];\n\nclass AndroidDriver extends BaseDriver {\n\n static newMethodMap = newMethodMap;\n\n constructor (opts = {}, shouldValidateCaps = true) {\n super(opts, shouldValidateCaps);\n\n this.locatorStrategies = [\n 'xpath',\n 'id',\n 'class name',\n 'accessibility id',\n '-android uiautomator'\n ];\n this.desiredCapConstraints = desiredConstraints;\n this.sessionChromedrivers = {};\n this.jwpProxyActive = false;\n this.jwpProxyAvoid = _.clone(NO_PROXY);\n this.settings = new DeviceSettings({ignoreUnimportantViews: false},\n this.onSettingsUpdate.bind(this));\n this.chromedriver = null;\n this.apkStrings = {};\n this.unlocker = helpers.unlocker;\n\n for (let [cmd, fn] of _.toPairs(commands)) {\n AndroidDriver.prototype[cmd] = fn;\n }\n\n // needs to be after the line which assigns commands to AndroidDriver.prototype, so that `this.defaultContextName` is defined.\n this.curContext = this.defaultContextName();\n }\n\n async createSession (...args) {\n // the whole createSession flow is surrounded in a try-catch statement\n // if creating a session fails at any point, we teardown everything we\n // set up before throwing the error.\n try {\n let [sessionId, caps] = await super.createSession(...args);\n\n let serverDetails = {\n platform: 'LINUX',\n webStorageEnabled: false,\n takesScreenshot: true,\n javascriptEnabled: true,\n databaseEnabled: false,\n networkConnectionEnabled: true,\n locationContextEnabled: false,\n warnings: {},\n desired: this.caps\n };\n\n this.caps = Object.assign(serverDetails, this.caps);\n\n // assigning defaults\n let defaultOpts = {\n action: 'android.intent.action.MAIN',\n category: 'android.intent.category.LAUNCHER',\n flags: '0x10200000',\n disableAndroidWatchers: false,\n tmpDir: await tempDir.staticDir(),\n fullReset: false,\n autoLaunch: true,\n adbPort: DEFAULT_ADB_PORT,\n bootstrapPort: DEVICE_PORT,\n androidInstallTimeout: 90000,\n };\n _.defaults(this.opts, defaultOpts);\n this.useUnlockHelperApp = _.isUndefined(this.caps.unlockType);\n\n // not user visible via caps\n if (this.opts.noReset === true) {\n this.opts.fullReset = false;\n }\n if (this.opts.fullReset === true) {\n this.opts.noReset = false;\n }\n this.opts.fastReset = !this.opts.fullReset && !this.opts.noReset;\n this.opts.skipUninstall = this.opts.fastReset || this.opts.noReset;\n\n if (this.isChromeSession) {\n helpers.adjustBrowserSessionCaps(this.opts);\n }\n\n if (this.opts.nativeWebScreenshot) {\n this.jwpProxyAvoid.push(['GET', new RegExp('^/session/[^/]+/screenshot')]);\n }\n\n if (this.opts.reboot) {\n this.setAvdFromCapabilities(caps);\n }\n\n // get device udid for this session\n let {udid, emPort} = await helpers.getDeviceInfoFromCaps(this.opts);\n this.opts.udid = udid;\n this.opts.emPort = emPort;\n\n // set up an instance of ADB\n this.adb = await helpers.createADB({\n udid: this.opts.udid,\n emPort: this.opts.emPort,\n adbPort: this.opts.adbPort,\n suppressKillServer: this.opts.suppressKillServer,\n remoteAdbHost: this.opts.remoteAdbHost,\n clearDeviceLogsOnStart: this.opts.clearDeviceLogsOnStart,\n adbExecTimeout: this.opts.adbExecTimeout,\n allowOfflineDevices: this.opts.allowOfflineDevices,\n });\n\n if (await this.adb.getApiLevel() >= 23) {\n this.log.warn(\"Consider setting 'automationName' capability to \" +\n \"'uiautomator2' on Android >= 6, since UIAutomator framework \" +\n 'is not maintained anymore by the OS vendor.');\n }\n\n if (this.helpers.isPackageOrBundle(this.opts.app)) {\n // user provided package instead of app for 'app' capability, massage options\n this.opts.appPackage = this.opts.app;\n this.opts.app = null;\n }\n\n if (this.opts.app) {\n // find and copy, or download and unzip an app url or path\n this.opts.app = await this.helpers.configureApp(this.opts.app, APP_EXTENSION);\n await this.checkAppPresent();\n } else if (this.appOnDevice) {\n // the app isn't an actual app file but rather something we want to\n // assume is on the device and just launch via the appPackage\n this.log.info(`App file was not listed, instead we're going to run ` +\n `${this.opts.appPackage} directly on the device`);\n await this.checkPackagePresent();\n }\n\n // Some cloud services using appium launch the avd themselves, so we ensure netspeed\n // is set for emulators by calling adb.networkSpeed before running the app\n if (util.hasValue(this.opts.networkSpeed)) {\n if (!this.isEmulator()) {\n this.log.warn('Sorry, networkSpeed capability is only available for emulators');\n } else {\n const networkSpeed = ensureNetworkSpeed(this.adb, this.opts.networkSpeed);\n await this.adb.networkSpeed(networkSpeed);\n }\n }\n // check if we have to enable/disable gps before running the application\n if (util.hasValue(this.opts.gpsEnabled)) {\n if (this.isEmulator()) {\n this.log.info(`Trying to ${this.opts.gpsEnabled ? 'enable' : 'disable'} gps location provider`);\n await this.adb.toggleGPSLocationProvider(this.opts.gpsEnabled);\n } else {\n this.log.warn('Sorry! gpsEnabled capability is only available for emulators');\n }\n }\n\n await this.startAndroidSession(this.opts);\n return [sessionId, this.caps];\n } catch (e) {\n // ignoring delete session exception if any and throw the real error\n // that happened while creating the session.\n try {\n await this.deleteSession();\n } catch (ign) {}\n throw e;\n }\n }\n\n isEmulator () {\n return helpers.isEmulator(this.adb, this.opts);\n }\n\n setAvdFromCapabilities (caps) {\n if (this.opts.avd) {\n this.log.info('avd name defined, ignoring device name and platform version');\n } else {\n if (!caps.deviceName) {\n this.log.errorAndThrow('avd or deviceName should be specified when reboot option is enables');\n }\n if (!caps.platformVersion) {\n this.log.errorAndThrow('avd or platformVersion should be specified when reboot option is enabled');\n }\n let avdDevice = caps.deviceName.replace(/[^a-zA-Z0-9_.]/g, '-');\n this.opts.avd = `${avdDevice}__${caps.platformVersion}`;\n }\n }\n\n get appOnDevice () {\n return this.helpers.isPackageOrBundle(this.opts.app) || (!this.opts.app &&\n this.helpers.isPackageOrBundle(this.opts.appPackage));\n }\n\n get isChromeSession () {\n return helpers.isChromeBrowser(this.opts.browserName);\n }\n\n async onSettingsUpdate (key, value) {\n if (key === 'ignoreUnimportantViews') {\n await this.setCompressedLayoutHierarchy(value);\n }\n }\n\n async startAndroidSession () {\n this.log.info(`Starting Android session`);\n // set up the device to run on (real or emulator, etc)\n this.defaultIME = await helpers.initDevice(this.adb, this.opts);\n\n // set actual device name, udid, platform version, screen size, model and manufacturer details.\n this.caps.deviceName = this.adb.curDeviceId;\n this.caps.deviceUDID = this.opts.udid;\n this.caps.platformVersion = await this.adb.getPlatformVersion();\n this.caps.deviceScreenSize = await this.adb.getScreenSize();\n this.caps.deviceModel = await this.adb.getModel();\n this.caps.deviceManufacturer = await this.adb.getManufacturer();\n\n if (this.opts.disableWindowAnimation) {\n if (await this.adb.isAnimationOn()) {\n if (await this.adb.getApiLevel() >= 28) { // API level 28 is Android P\n // Don't forget to reset the relaxing in delete session\n this.log.warn('Relaxing hidden api policy to manage animation scale');\n await this.adb.setHiddenApiPolicy('1', !!this.opts.ignoreHiddenApiPolicyError);\n }\n\n this.log.info('Disabling window animation as it is requested by \"disableWindowAnimation\" capability');\n await this.adb.setAnimationState(false);\n this._wasWindowAnimationDisabled = true;\n } else {\n this.log.info('Window animation is already disabled');\n }\n }\n\n // set up app under test\n await this.initAUT();\n\n // start UiAutomator\n this.bootstrap = new helpers.bootstrap(this.adb, this.opts.bootstrapPort, this.opts.websocket);\n await this.bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);\n // handling unexpected shutdown\n (async () => {\n try {\n await this.bootstrap.onUnexpectedShutdown;\n } catch (err) {\n if (!this.bootstrap.ignoreUnexpectedShutdown) {\n await this.startUnexpectedShutdown(err);\n }\n }\n })();\n\n\n if (this.opts.skipUnlock) {\n this.log.info('Skipping lockscreen check');\n } else {\n this.log.info('Checking for lockscreen presence. ' +\n `This could be skipped by setting the 'appium:skipUnlock' capability to true.`);\n await helpers.unlock(this, this.adb, this.caps);\n }\n\n // Set CompressedLayoutHierarchy on the device based on current settings object\n // this has to happen _after_ bootstrap is initialized\n if (this.opts.ignoreUnimportantViews) {\n await this.settings.update({ignoreUnimportantViews: this.opts.ignoreUnimportantViews});\n }\n\n if (this.isChromeSession) {\n // start a chromedriver session and proxy to it\n await this.startChromeSession();\n } else {\n if (this.opts.autoLaunch) {\n // start app\n await this.startAUT();\n }\n }\n\n if (util.hasValue(this.opts.orientation)) {\n this.log.debug(`Setting initial orientation to '${this.opts.orientation}'`);\n await this.setOrientation(this.opts.orientation);\n }\n\n await this.initAutoWebview();\n }\n\n async initAutoWebview () {\n if (this.opts.autoWebview) {\n let viewName = this.defaultWebviewName();\n let timeout = (this.opts.autoWebviewTimeout) || 2000;\n\n this.log.info(`Setting auto webview to context '${viewName}' with timeout ${timeout}ms`);\n\n // try every 500ms until timeout is over\n await retryInterval(timeout / 500, 500, async () => {\n await this.setContext(viewName);\n });\n }\n }\n\n async initAUT () {\n // populate appPackage, appActivity, appWaitPackage, appWaitActivity,\n // and the device being used\n // in the opts and caps (so it gets back to the user on session creation)\n let launchInfo = await helpers.getLaunchInfo(this.adb, this.opts);\n Object.assign(this.opts, launchInfo);\n Object.assign(this.caps, launchInfo);\n\n // Uninstall any uninstallOtherPackages which were specified in caps\n if (this.opts.uninstallOtherPackages) {\n helpers.validateDesiredCaps(this.opts);\n // Only SETTINGS_HELPER_PKG_ID package is used by UIA1\n await helpers.uninstallOtherPackages(\n this.adb,\n helpers.parseArray(this.opts.uninstallOtherPackages),\n [SETTINGS_HELPER_PKG_ID]\n );\n }\n\n // Install any \"otherApps\" that were specified in caps\n if (this.opts.otherApps) {\n let otherApps;\n try {\n otherApps = helpers.parseArray(this.opts.otherApps);\n } catch (e) {\n this.log.errorAndThrow(`Could not parse \"otherApps\" capability: ${e.message}`);\n }\n otherApps = await B.all(otherApps.map((app) => this.helpers.configureApp(app, APP_EXTENSION)));\n await helpers.installOtherApks(otherApps, this.adb, this.opts);\n }\n\n // install app\n if (!this.opts.app) {\n if (this.opts.fullReset) {\n this.log.errorAndThrow('Full reset requires an app capability, use fastReset if app is not provided');\n }\n this.log.debug('No app capability. Assuming it is already on the device');\n if (this.opts.fastReset) {\n await helpers.resetApp(this.adb, this.opts);\n }\n return;\n }\n if (!this.opts.skipUninstall) {\n await this.adb.uninstallApk(this.opts.appPackage);\n }\n await helpers.installApk(this.adb, this.opts);\n const apkStringsForLanguage = await helpers.pushStrings(this.opts.language, this.adb, this.opts);\n if (this.opts.language) {\n this.apkStrings[this.opts.language] = apkStringsForLanguage;\n }\n\n // This must run after installing the apk, otherwise it would cause the\n // install to fail. And before running the app.\n if (!_.isUndefined(this.opts.sharedPreferences)) {\n await this.setSharedPreferences(this.opts);\n }\n }\n\n async checkAppPresent () {\n this.log.debug('Checking whether app is actually present');\n if (!(await fs.exists(this.opts.app))) {\n this.log.errorAndThrow(`Could not find app apk at ${this.opts.app}`);\n }\n }\n\n async checkPackagePresent () {\n this.log.debug('Checking whether package is present on the device');\n if (!(await this.adb.shell(['pm', 'list', 'packages', this.opts.appPackage]))) {\n this.log.errorAndThrow(`Could not find package ${this.opts.appPackage} on the device`);\n }\n }\n\n // Set CompressedLayoutHierarchy on the device\n async setCompressedLayoutHierarchy (compress) {\n await this.bootstrap.sendAction('compressedLayoutHierarchy', {compressLayout: compress});\n }\n\n async deleteSession () {\n this.log.debug('Shutting down Android driver');\n\n try {\n if (!_.isEmpty(this._screenRecordingProperties)) {\n await this.stopRecordingScreen();\n }\n } catch (ign) {}\n\n await helpers.removeAllSessionWebSocketHandlers(this.server, this.sessionId);\n\n await this.mobileStopScreenStreaming();\n\n await super.deleteSession();\n\n if (this.bootstrap) {\n // certain cleanup we only care to do if the bootstrap was ever run\n await this.stopChromedriverProxies();\n if (this.opts.unicodeKeyboard && this.opts.resetKeyboard && this.defaultIME) {\n this.log.debug(`Resetting IME to ${this.defaultIME}`);\n await this.adb?.setIME(this.defaultIME);\n }\n if (!this.isChromeSession && !this.opts.dontStopAppOnReset) {\n await this.adb?.forceStop(this.opts.appPackage);\n }\n await this.adb?.goToHome();\n if (this.opts.fullReset && !this.opts.skipUninstall && !this.appOnDevice) {\n await this.adb?.uninstallApk(this.opts.appPackage);\n }\n await this.bootstrap.shutdown();\n this.bootstrap = null;\n } else {\n this.log.debug(\"Called deleteSession but bootstrap wasn't active\");\n }\n // some cleanup we want to do regardless, in case we are shutting down\n // mid-startup\n await this.adb?.stopLogcat();\n if (this.useUnlockHelperApp) {\n await this.adb?.forceStop('io.appium.unlock');\n }\n if (this._wasWindowAnimationDisabled) {\n this.log.info('Restoring window animation state');\n await this.adb?.setAnimationState(true);\n\n // This was necessary to change animation scale over Android P. We must reset the policy for the security.\n if (await this.adb?.getApiLevel() >= 28) {\n this.log.info('Restoring hidden api policy to the device default configuration');\n await this.adb?.setDefaultHiddenApiPolicy(!!this.opts.ignoreHiddenApiPolicyError);\n }\n }\n\n if (this.opts.reboot) {\n let avdName = this.opts.avd.replace('@', '');\n this.log.debug(`closing emulator '${avdName}'`);\n await this.adb?.killEmulator(avdName);\n }\n }\n\n async setSharedPreferences () {\n let sharedPrefs = this.opts.sharedPreferences;\n this.log.info('Trying to set shared preferences');\n let name = sharedPrefs.name;\n if (_.isUndefined(name)) {\n this.log.warn(`Skipping setting Shared preferences, name is undefined: ${JSON.stringify(sharedPrefs)}`);\n return false;\n }\n let remotePath = `/data/data/${this.opts.appPackage}/shared_prefs`;\n let remoteFile = `${remotePath}/${name}.xml`;\n let localPath = `/tmp/${name}.xml`;\n let builder = this.getPrefsBuilder();\n builder.build(sharedPrefs.prefs);\n this.log.info(`Creating temporary shared preferences: ${localPath}`);\n builder.toFile(localPath);\n this.log.info(`Creating shared_prefs remote folder: ${remotePath}`);\n await this.adb.shell(['mkdir', '-p', remotePath]);\n this.log.info(`Pushing shared_prefs to ${remoteFile}`);\n await this.adb.push(localPath, remoteFile);\n try {\n this.log.info(`Trying to remove shared preferences temporary file`);\n if (await fs.exists(localPath)) {\n await fs.unlink(localPath);\n }\n } catch (e) {\n this.log.warn(`Error trying to remove temporary file ${localPath}`);\n }\n return true;\n }\n\n getPrefsBuilder () {\n /* Add this method to create a new SharedPrefsBuilder instead of\n * directly creating the object on setSharedPreferences for testing purposes\n */\n return new SharedPrefsBuilder();\n }\n\n validateDesiredCaps (caps) {\n if (!super.validateDesiredCaps(caps)) {\n return false;\n }\n if ((!caps.browserName || !helpers.isChromeBrowser(caps.browserName)) && !caps.app && !caps.appPackage) {\n this.log.errorAndThrow('The desired capabilities must include either an app, appPackage or browserName');\n }\n return helpers.validateDesiredCaps(caps);\n }\n\n proxyActive (sessionId) {\n super.proxyActive(sessionId);\n\n return this.jwpProxyActive;\n }\n\n getProxyAvoidList (sessionId) {\n super.getProxyAvoidList(sessionId);\n\n return this.jwpProxyAvoid;\n }\n\n canProxy (sessionId) {\n super.canProxy(sessionId);\n\n // this will change depending on ChromeDriver status\n return _.isFunction(this.proxyReqRes);\n }\n}\n\nexport { AndroidDriver };\nexport default AndroidDriver;\n"],"mappings":"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"}
|
package/build/lib/logger.js
CHANGED
|
@@ -9,4 +9,4 @@ var _support = require("@appium/support");
|
|
|
9
9
|
const log = _support.logger.getLogger('AndroidDriver');
|
|
10
10
|
var _default = log;
|
|
11
11
|
exports.default = _default;
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3VwcG9ydCIsInJlcXVpcmUiLCJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2xvZ2dlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQW5kcm9pZERyaXZlcicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxNQUFNQyxHQUFHLEdBQUdDLGVBQU0sQ0FBQ0MsU0FBUyxDQUFDLGVBQWUsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FFL0JILEdBQUc7QUFBQUksT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|
package/build/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["log","logger","getLogger"],"sources":["../../lib/logger.js"],"sourcesContent":["import { logger } from '@appium/support';\nconst log = logger.getLogger('AndroidDriver');\n\nexport default log;\n"],"mappings":";;;;;;;AAAA;AACA,
|
|
1
|
+
{"version":3,"file":"logger.js","names":["_support","require","log","logger","getLogger","_default","exports","default"],"sources":["../../lib/logger.js"],"sourcesContent":["import { logger } from '@appium/support';\nconst log = logger.getLogger('AndroidDriver');\n\nexport default log;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,MAAMC,GAAG,GAAGC,eAAM,CAACC,SAAS,CAAC,eAAe,CAAC;AAAC,IAAAC,QAAA,GAE/BH,GAAG;AAAAI,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
package/build/lib/method-map.js
CHANGED
|
@@ -394,4 +394,4 @@ const newMethodMap = {
|
|
|
394
394
|
}
|
|
395
395
|
};
|
|
396
396
|
exports.newMethodMap = newMethodMap;
|
|
397
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuZXdNZXRob2RNYXAiLCJQT1NUIiwiY29tbWFuZCIsInBheWxvYWRQYXJhbXMiLCJyZXF1aXJlZCIsIkdFVCIsIm9wdGlvbmFsIiwid3JhcCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tZXRob2QtbWFwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBuZXdNZXRob2RNYXAgPSAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90aW1lb3V0cy9pbXBsaWNpdF93YWl0Jzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ2ltcGxpY2l0V2FpdCcsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnbXMnXSB9IH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvaW1lL2F2YWlsYWJsZV9lbmdpbmVzJzogeyBHRVQ6IHsgY29tbWFuZDogJ2F2YWlsYWJsZUlNRUVuZ2luZXMnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvaW1lL2FjdGl2ZV9lbmdpbmUnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0QWN0aXZlSU1FRW5naW5lJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2ltZS9hY3RpdmF0ZWQnOiB7IEdFVDogeyBjb21tYW5kOiAnaXNJTUVBY3RpdmF0ZWQnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvaW1lL2RlYWN0aXZhdGUnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ2RlYWN0aXZhdGVJTUVFbmdpbmUnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvaW1lL2FjdGl2YXRlJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdhY3RpdmF0ZUlNRUVuZ2luZScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2VuZ2luZSddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3dpbmRvdy86d2luZG93aGFuZGxlL3NpemUnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0V2luZG93U2l6ZScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9rZXlzJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ2tleXMnLCBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3ZhbHVlJ10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2VsZW1lbnQvOmVsZW1lbnRJZC9sb2NhdGlvbic6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRMb2NhdGlvbicgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzplbGVtZW50SWQvbG9jYXRpb25faW5fdmlldyc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRMb2NhdGlvbkluVmlldycgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzplbGVtZW50SWQvc2l6ZSc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRTaXplJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL2NsaWNrJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ2NsaWNrJywgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydlbGVtZW50J10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL2Rvd24nOiB7XG4gICAgUE9TVDogeyBjb21tYW5kOiAndG91Y2hEb3duJywgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWyd4JywgJ3knXSB9IH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvdG91Y2gvdXAnOiB7XG4gICAgUE9TVDogeyBjb21tYW5kOiAndG91Y2hVcCcsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsneCcsICd5J10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL21vdmUnOiB7XG4gICAgUE9TVDogeyBjb21tYW5kOiAndG91Y2hNb3ZlJywgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWyd4JywgJ3knXSB9IH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvdG91Y2gvbG9uZ2NsaWNrJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICd0b3VjaExvbmdDbGljaycsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2VsZW1lbnRzJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvdG91Y2gvZmxpY2snOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2ZsaWNrJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHtcbiAgICAgICAgb3B0aW9uYWw6IFtcbiAgICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgICAgJ3hzcGVlZCcsXG4gICAgICAgICAgJ3lzcGVlZCcsXG4gICAgICAgICAgJ3hvZmZzZXQnLFxuICAgICAgICAgICd5b2Zmc2V0JyxcbiAgICAgICAgICAnc3BlZWQnXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL3BlcmZvcm0nOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3BlcmZvcm1Ub3VjaCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHdyYXA6ICdhY3Rpb25zJywgcmVxdWlyZWQ6IFsnYWN0aW9ucyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL211bHRpL3BlcmZvcm0nOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3BlcmZvcm1NdWx0aUFjdGlvbicsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2FjdGlvbnMnXSwgb3B0aW9uYWw6IFsnZWxlbWVudElkJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9sb2NrJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ2xvY2snLCBwYXlsb2FkUGFyYW1zOiB7IG9wdGlvbmFsOiBbJ3NlY29uZHMnXSB9IH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS91bmxvY2snOiB7IFBPU1Q6IHsgY29tbWFuZDogJ3VubG9jaycgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2lzX2xvY2tlZCc6IHsgUE9TVDogeyBjb21tYW5kOiAnaXNMb2NrZWQnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL3N0YXJ0X3JlY29yZGluZ19zY3JlZW4nOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3N0YXJ0UmVjb3JkaW5nU2NyZWVuJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgb3B0aW9uYWw6IFsnb3B0aW9ucyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9zdG9wX3JlY29yZGluZ19zY3JlZW4nOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3N0b3BSZWNvcmRpbmdTY3JlZW4nLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyBvcHRpb25hbDogWydvcHRpb25zJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL3BlcmZvcm1hbmNlRGF0YS90eXBlcyc6IHsgUE9TVDogeyBjb21tYW5kOiAnZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2dldFBlcmZvcm1hbmNlRGF0YSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnZ2V0UGVyZm9ybWFuY2VEYXRhJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IFsncGFja2FnZU5hbWUnLCAnZGF0YVR5cGUnXSxcbiAgICAgICAgb3B0aW9uYWw6IFsnZGF0YVJlYWRUaW1lb3V0J11cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvcHJlc3Nfa2V5Y29kZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAncHJlc3NLZXlDb2RlJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsna2V5Y29kZSddLCBvcHRpb25hbDogWydtZXRhc3RhdGUnLCAnZmxhZ3MnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2xvbmdfcHJlc3Nfa2V5Y29kZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnbG9uZ1ByZXNzS2V5Q29kZScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2tleWNvZGUnXSwgb3B0aW9uYWw6IFsnbWV0YXN0YXRlJywgJ2ZsYWdzJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9maW5nZXJfcHJpbnQnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2ZpbmdlcnByaW50JyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnZmluZ2VycHJpbnRJZCddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2Uvc2VuZF9zbXMnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3NlbmRTTVMnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydwaG9uZU51bWJlcicsICdtZXNzYWdlJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9nc21fY2FsbCc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnZ3NtQ2FsbCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3Bob25lTnVtYmVyJywgJ2FjdGlvbiddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvZ3NtX3NpZ25hbCc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnZ3NtU2lnbmFsJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnc2lnbmFsU3RyZW5ndGgnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2dzbV92b2ljZSc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdnc21Wb2ljZScsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnc3RhdGUnXSB9IH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9wb3dlcl9jYXBhY2l0eSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAncG93ZXJDYXBhY2l0eScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3BlcmNlbnQnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3Bvd2VyX2FjJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ3Bvd2VyQUMnLCBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3N0YXRlJ10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvbmV0d29ya19zcGVlZCc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnbmV0d29ya1NwZWVkJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnbmV0c3BlZWQnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2tleWV2ZW50Jzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdrZXlldmVudCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2tleWNvZGUnXSwgb3B0aW9uYWw6IFsnbWV0YXN0YXRlJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9jdXJyZW50X2FjdGl2aXR5JzogeyBHRVQ6IHsgY29tbWFuZDogJ2dldEN1cnJlbnRBY3Rpdml0eScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2N1cnJlbnRfcGFja2FnZSc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRDdXJyZW50UGFja2FnZScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2FwcF9zdGF0ZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAncXVlcnlBcHBTdGF0ZScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbWydhcHBJZCddLCBbJ2J1bmRsZUlkJ11dIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvdG9nZ2xlX2FpcnBsYW5lX21vZGUnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ3RvZ2dsZUZsaWdodE1vZGUnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS90b2dnbGVfZGF0YSc6IHsgUE9TVDogeyBjb21tYW5kOiAndG9nZ2xlRGF0YScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3RvZ2dsZV93aWZpJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICd0b2dnbGVXaUZpJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvdG9nZ2xlX2xvY2F0aW9uX3NlcnZpY2VzJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICd0b2dnbGVMb2NhdGlvblNlcnZpY2VzJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2Uvb3Blbl9ub3RpZmljYXRpb25zJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICdvcGVuTm90aWZpY2F0aW9ucycgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3N0YXJ0X2FjdGl2aXR5Jzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdzdGFydEFjdGl2aXR5JyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IFsnYXBwUGFja2FnZScsICdhcHBBY3Rpdml0eSddLFxuICAgICAgICBvcHRpb25hbDogW1xuICAgICAgICAgICdhcHBXYWl0UGFja2FnZScsXG4gICAgICAgICAgJ2FwcFdhaXRBY3Rpdml0eScsXG4gICAgICAgICAgJ2ludGVudEFjdGlvbicsXG4gICAgICAgICAgJ2ludGVudENhdGVnb3J5JyxcbiAgICAgICAgICAnaW50ZW50RmxhZ3MnLFxuICAgICAgICAgICdvcHRpb25hbEludGVudEFyZ3VtZW50cycsXG4gICAgICAgICAgJ2RvbnRTdG9wQXBwT25SZXNldCdcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9zeXN0ZW1fYmFycyc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRTeXN0ZW1CYXJzJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvZGlzcGxheV9kZW5zaXR5JzogeyBHRVQ6IHsgY29tbWFuZDogJ2dldERpc3BsYXlEZW5zaXR5JyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9hcHAvbGF1bmNoJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICdsYXVuY2hBcHAnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2FwcC9jbG9zZSc6IHsgUE9TVDogeyBjb21tYW5kOiAnY2xvc2VBcHAnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2FwcC9yZXNldCc6IHsgUE9TVDogeyBjb21tYW5kOiAncmVzZXQnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2FwcC9iYWNrZ3JvdW5kJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnc2Vjb25kcyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9hcHAvZW5kX3Rlc3RfY292ZXJhZ2UnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2VuZENvdmVyYWdlJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnaW50ZW50JywgJ3BhdGgnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vYXBwL3N0cmluZ3MnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2dldFN0cmluZ3MnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyBvcHRpb25hbDogWydsYW5ndWFnZScsICdzdHJpbmdGaWxlJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2VsZW1lbnQvOmVsZW1lbnRJZC92YWx1ZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnc2V0VmFsdWVJbW1lZGlhdGUnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWyd0ZXh0J10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2VsZW1lbnQvOmVsZW1lbnRJZC9yZXBsYWNlX3ZhbHVlJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdyZXBsYWNlVmFsdWUnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWyd0ZXh0J10gfVxuICAgIH1cbiAgfVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxNQUFNQSxZQUFZLEdBQXlCO0VBQ2hELDRDQUE0QyxFQUFFO0lBQzVDQyxJQUFJLEVBQUU7TUFBRUMsT0FBTyxFQUFFLGNBQWM7TUFBRUMsYUFBYSxFQUFFO1FBQUVDLFFBQVEs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
|
|
397
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuZXdNZXRob2RNYXAiLCJQT1NUIiwiY29tbWFuZCIsInBheWxvYWRQYXJhbXMiLCJyZXF1aXJlZCIsIkdFVCIsIm9wdGlvbmFsIiwid3JhcCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbWV0aG9kLW1hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgbmV3TWV0aG9kTWFwID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvdGltZW91dHMvaW1wbGljaXRfd2FpdCc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdpbXBsaWNpdFdhaXQnLCBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ21zJ10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2ltZS9hdmFpbGFibGVfZW5naW5lcyc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdhdmFpbGFibGVJTUVFbmdpbmVzJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2ltZS9hY3RpdmVfZW5naW5lJzogeyBHRVQ6IHsgY29tbWFuZDogJ2dldEFjdGl2ZUlNRUVuZ2luZScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9pbWUvYWN0aXZhdGVkJzogeyBHRVQ6IHsgY29tbWFuZDogJ2lzSU1FQWN0aXZhdGVkJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2ltZS9kZWFjdGl2YXRlJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICdkZWFjdGl2YXRlSU1FRW5naW5lJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2ltZS9hY3RpdmF0ZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnYWN0aXZhdGVJTUVFbmdpbmUnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydlbmdpbmUnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC93aW5kb3cvOndpbmRvd2hhbmRsZS9zaXplJzogeyBHRVQ6IHsgY29tbWFuZDogJ2dldFdpbmRvd1NpemUnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQva2V5cyc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdrZXlzJywgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWyd2YWx1ZSddIH0gfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LzplbGVtZW50SWQvbG9jYXRpb24nOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0TG9jYXRpb24nIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86ZWxlbWVudElkL2xvY2F0aW9uX2luX3ZpZXcnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0TG9jYXRpb25JblZpZXcnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86ZWxlbWVudElkL3NpemUnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0U2l6ZScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90b3VjaC9jbGljayc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdjbGljaycsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsnZWxlbWVudCddIH0gfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90b3VjaC9kb3duJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ3RvdWNoRG93bicsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsneCcsICd5J10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL3VwJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ3RvdWNoVXAnLCBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3gnLCAneSddIH0gfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90b3VjaC9tb3ZlJzoge1xuICAgIFBPU1Q6IHsgY29tbWFuZDogJ3RvdWNoTW92ZScsIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsneCcsICd5J10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL2xvbmdjbGljayc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAndG91Y2hMb25nQ2xpY2snLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydlbGVtZW50cyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL3RvdWNoL2ZsaWNrJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdmbGljaycsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7XG4gICAgICAgIG9wdGlvbmFsOiBbXG4gICAgICAgICAgJ2VsZW1lbnQnLFxuICAgICAgICAgICd4c3BlZWQnLFxuICAgICAgICAgICd5c3BlZWQnLFxuICAgICAgICAgICd4b2Zmc2V0JyxcbiAgICAgICAgICAneW9mZnNldCcsXG4gICAgICAgICAgJ3NwZWVkJ1xuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90b3VjaC9wZXJmb3JtJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdwZXJmb3JtVG91Y2gnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyB3cmFwOiAnYWN0aW9ucycsIHJlcXVpcmVkOiBbJ2FjdGlvbnMnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC90b3VjaC9tdWx0aS9wZXJmb3JtJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdwZXJmb3JtTXVsdGlBY3Rpb24nLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydhY3Rpb25zJ10sIG9wdGlvbmFsOiBbJ2VsZW1lbnRJZCddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvbG9jayc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdsb2NrJywgcGF5bG9hZFBhcmFtczogeyBvcHRpb25hbDogWydzZWNvbmRzJ10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvdW5sb2NrJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICd1bmxvY2snIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9pc19sb2NrZWQnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ2lzTG9ja2VkJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9zdGFydF9yZWNvcmRpbmdfc2NyZWVuJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdzdGFydFJlY29yZGluZ1NjcmVlbicsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IG9wdGlvbmFsOiBbJ29wdGlvbnMnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vc3RvcF9yZWNvcmRpbmdfc2NyZWVuJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdzdG9wUmVjb3JkaW5nU2NyZWVuJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgb3B0aW9uYWw6IFsnb3B0aW9ucyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9wZXJmb3JtYW5jZURhdGEvdHlwZXMnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ2dldFBlcmZvcm1hbmNlRGF0YVR5cGVzJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9nZXRQZXJmb3JtYW5jZURhdGEnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2dldFBlcmZvcm1hbmNlRGF0YScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7XG4gICAgICAgIHJlcXVpcmVkOiBbJ3BhY2thZ2VOYW1lJywgJ2RhdGFUeXBlJ10sXG4gICAgICAgIG9wdGlvbmFsOiBbJ2RhdGFSZWFkVGltZW91dCddXG4gICAgICB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3ByZXNzX2tleWNvZGUnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3ByZXNzS2V5Q29kZScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2tleWNvZGUnXSwgb3B0aW9uYWw6IFsnbWV0YXN0YXRlJywgJ2ZsYWdzJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9sb25nX3ByZXNzX2tleWNvZGUnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2xvbmdQcmVzc0tleUNvZGUnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydrZXljb2RlJ10sIG9wdGlvbmFsOiBbJ21ldGFzdGF0ZScsICdmbGFncyddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvZmluZ2VyX3ByaW50Jzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdmaW5nZXJwcmludCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2ZpbmdlcnByaW50SWQnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3NlbmRfc21zJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdzZW5kU01TJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsncGhvbmVOdW1iZXInLCAnbWVzc2FnZSddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvZ3NtX2NhbGwnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2dzbUNhbGwnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydwaG9uZU51bWJlcicsICdhY3Rpb24nXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2dzbV9zaWduYWwnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ2dzbVNpZ25hbCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3NpZ25hbFN0cmVuZ3RoJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9nc21fdm9pY2UnOiB7XG4gICAgUE9TVDogeyBjb21tYW5kOiAnZ3NtVm9pY2UnLCBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3N0YXRlJ10gfSB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvcG93ZXJfY2FwYWNpdHknOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3Bvd2VyQ2FwYWNpdHknLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydwZXJjZW50J10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9wb3dlcl9hYyc6IHtcbiAgICBQT1NUOiB7IGNvbW1hbmQ6ICdwb3dlckFDJywgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydzdGF0ZSddIH0gfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL25ldHdvcmtfc3BlZWQnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ25ldHdvcmtTcGVlZCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ25ldHNwZWVkJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9rZXlldmVudCc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAna2V5ZXZlbnQnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogWydrZXljb2RlJ10sIG9wdGlvbmFsOiBbJ21ldGFzdGF0ZSddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvY3VycmVudF9hY3Rpdml0eSc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXRDdXJyZW50QWN0aXZpdHknIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9jdXJyZW50X3BhY2thZ2UnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0Q3VycmVudFBhY2thZ2UnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9hcHBfc3RhdGUnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3F1ZXJ5QXBwU3RhdGUnLFxuICAgICAgcGF5bG9hZFBhcmFtczogeyByZXF1aXJlZDogW1snYXBwSWQnXSwgWydidW5kbGVJZCddXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3RvZ2dsZV9haXJwbGFuZV9tb2RlJzogeyBQT1NUOiB7IGNvbW1hbmQ6ICd0b2dnbGVGbGlnaHRNb2RlJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2UvdG9nZ2xlX2RhdGEnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ3RvZ2dsZURhdGEnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS90b2dnbGVfd2lmaSc6IHsgUE9TVDogeyBjb21tYW5kOiAndG9nZ2xlV2lGaScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL3RvZ2dsZV9sb2NhdGlvbl9zZXJ2aWNlcyc6IHsgUE9TVDogeyBjb21tYW5kOiAndG9nZ2xlTG9jYXRpb25TZXJ2aWNlcycgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL29wZW5fbm90aWZpY2F0aW9ucyc6IHsgUE9TVDogeyBjb21tYW5kOiAnb3Blbk5vdGlmaWNhdGlvbnMnIH0gfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2RldmljZS9zdGFydF9hY3Rpdml0eSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnc3RhcnRBY3Rpdml0eScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7XG4gICAgICAgIHJlcXVpcmVkOiBbJ2FwcFBhY2thZ2UnLCAnYXBwQWN0aXZpdHknXSxcbiAgICAgICAgb3B0aW9uYWw6IFtcbiAgICAgICAgICAnYXBwV2FpdFBhY2thZ2UnLFxuICAgICAgICAgICdhcHBXYWl0QWN0aXZpdHknLFxuICAgICAgICAgICdpbnRlbnRBY3Rpb24nLFxuICAgICAgICAgICdpbnRlbnRDYXRlZ29yeScsXG4gICAgICAgICAgJ2ludGVudEZsYWdzJyxcbiAgICAgICAgICAnb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMnLFxuICAgICAgICAgICdkb250U3RvcEFwcE9uUmVzZXQnXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9kZXZpY2Uvc3lzdGVtX2JhcnMnOiB7IEdFVDogeyBjb21tYW5kOiAnZ2V0U3lzdGVtQmFycycgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vZGV2aWNlL2Rpc3BsYXlfZGVuc2l0eSc6IHsgR0VUOiB7IGNvbW1hbmQ6ICdnZXREaXNwbGF5RGVuc2l0eScgfSB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vYXBwL2xhdW5jaCc6IHsgUE9TVDogeyBjb21tYW5kOiAnbGF1bmNoQXBwJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9hcHAvY2xvc2UnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ2Nsb3NlQXBwJyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9hcHAvcmVzZXQnOiB7IFBPU1Q6IHsgY29tbWFuZDogJ3Jlc2V0JyB9IH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9hcHAvYmFja2dyb3VuZCc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAnYmFja2dyb3VuZCcsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ3NlY29uZHMnXSB9XG4gICAgfVxuICB9LFxuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9hcHBpdW0vYXBwL2VuZF90ZXN0X2NvdmVyYWdlJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdlbmRDb3ZlcmFnZScsXG4gICAgICBwYXlsb2FkUGFyYW1zOiB7IHJlcXVpcmVkOiBbJ2ludGVudCcsICdwYXRoJ10gfVxuICAgIH1cbiAgfSxcbiAgJy9zZXNzaW9uLzpzZXNzaW9uSWQvYXBwaXVtL2FwcC9zdHJpbmdzJzoge1xuICAgIFBPU1Q6IHtcbiAgICAgIGNvbW1hbmQ6ICdnZXRTdHJpbmdzJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgb3B0aW9uYWw6IFsnbGFuZ3VhZ2UnLCAnc3RyaW5nRmlsZSddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9lbGVtZW50LzplbGVtZW50SWQvdmFsdWUnOiB7XG4gICAgUE9TVDoge1xuICAgICAgY29tbWFuZDogJ3NldFZhbHVlSW1tZWRpYXRlJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsndGV4dCddIH1cbiAgICB9XG4gIH0sXG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2FwcGl1bS9lbGVtZW50LzplbGVtZW50SWQvcmVwbGFjZV92YWx1ZSc6IHtcbiAgICBQT1NUOiB7XG4gICAgICBjb21tYW5kOiAncmVwbGFjZVZhbHVlJyxcbiAgICAgIHBheWxvYWRQYXJhbXM6IHsgcmVxdWlyZWQ6IFsndGV4dCddIH1cbiAgICB9XG4gIH1cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU8sTUFBTUEsWUFBWSxHQUF5QjtFQUNoRCw0Q0FBNEMsRUFBRTtJQUM1Q0MsSUFBSSxFQUFFO01BQUVDLE9BQU8sRUFBRSxjQUFjO01BQUVDLGFBQWEsRUFBRTtR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
|