appium-uiautomator2-driver 2.2.0 → 2.3.0

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.
@@ -11,7 +11,7 @@ var _cssSelectorParser = require("css-selector-parser");
11
11
 
12
12
  var _lodash = require("lodash");
13
13
 
14
- var _baseDriver = require("@appium/base-driver");
14
+ var _driver = require("appium/driver");
15
15
 
16
16
  const parser = new _cssSelectorParser.CssSelectorParser();
17
17
  parser.registerSelectorPseudos('has');
@@ -221,13 +221,13 @@ class CssConverter {
221
221
  try {
222
222
  cssObj = parser.parse(this.selector);
223
223
  } catch (e) {
224
- throw new _baseDriver.errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e}'`);
224
+ throw new _driver.errors.InvalidSelectorError(`Invalid CSS selector '${this.selector}'. Reason: '${e}'`);
225
225
  }
226
226
 
227
227
  try {
228
228
  return this.parseCssObject(cssObj);
229
229
  } catch (e) {
230
- throw new _baseDriver.errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e}'`);
230
+ throw new _driver.errors.InvalidSelectorError(`Unsupported CSS selector '${this.selector}'. Reason: '${e}'`);
231
231
  }
232
232
  }
233
233
 
@@ -237,4 +237,4 @@ var _default = CssConverter;
237
237
  exports.default = _default;require('source-map-support').install();
238
238
 
239
239
 
240
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nzcy1jb252ZXJ0ZXIuanMiLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsImVzY2FwZVJlZ0V4cCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxNQUFNLEdBQUcsSUFBSUMsb0NBQUosRUFBZjtBQUNBRCxNQUFNLENBQUNFLHVCQUFQLENBQStCLEtBQS9CO0FBQ0FGLE1BQU0sQ0FBQ0csd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUM7QUFDQUgsTUFBTSxDQUFDSSx3QkFBUCxDQUFnQyxHQUFoQyxFQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxFQUErQyxHQUEvQztBQUNBSixNQUFNLENBQUNLLGlCQUFQO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcscUNBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLFdBRG9CLEVBQ1AsU0FETyxFQUNJLFdBREosRUFDaUIsU0FEakIsRUFDNEIsV0FENUIsRUFFcEIsU0FGb0IsRUFFVCxnQkFGUyxFQUVTLFlBRlQsRUFFdUIsVUFGdkIsQ0FBdEI7QUFLQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FEb0IsRUFDWCxVQURXLENB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
240
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nzcy1jb252ZXJ0ZXIuanMiLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsImVzY2FwZVJlZ0V4cCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxNQUFNLEdBQUcsSUFBSUMsb0NBQUosRUFBZjtBQUNBRCxNQUFNLENBQUNFLHVCQUFQLENBQStCLEtBQS9CO0FBQ0FGLE1BQU0sQ0FBQ0csd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUM7QUFDQUgsTUFBTSxDQUFDSSx3QkFBUCxDQUFnQyxHQUFoQyxFQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxFQUErQyxHQUEvQztBQUNBSixNQUFNLENBQUNLLGlCQUFQO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcscUNBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLFdBRG9CLEVBQ1AsU0FETyxFQUNJLFdBREosRUFDaUIsU0FEakIsRUFDNEIsV0FENUIsRUFFcEIsU0FGb0IsRUFFVCxnQkFGUyxFQUVTLFlBRlQsRUFFdUIsVUFGdkIsQ0FBdEI7QUFLQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FEb0IsRUFDWCxVQURXLENBQXRCO0FB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
@@ -11,11 +11,11 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _baseDriver = require("@appium/base-driver");
14
+ var _driver = require("appium/driver");
15
15
 
16
16
  var _uiautomator = require("./uiautomator2");
17
17
 
18
- var _support = require("@appium/support");
18
+ var _support = require("appium/support");
19
19
 
20
20
  var _asyncbox = require("asyncbox");
21
21
 
@@ -54,7 +54,7 @@ const NO_PROXY = [['GET', new RegExp('^/session/(?!.*/)')], ['GET', new RegExp('
54
54
  const CHROME_NO_PROXY = [['GET', new RegExp('^/session/[^/]+/appium')], ['GET', new RegExp('^/session/[^/]+/context')], ['GET', new RegExp('^/session/[^/]+/element/[^/]+/rect')], ['GET', new RegExp('^/session/[^/]+/orientation')], ['POST', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/context')], ['POST', new RegExp('^/session/[^/]+/orientation')], ['POST', new RegExp('^/session/[^/]+/touch/multi/perform')], ['POST', new RegExp('^/session/[^/]+/touch/perform')], ['POST', new RegExp('^/session/[^/]+/execute$')], ['POST', new RegExp('^/session/[^/]+/execute/sync')], ['GET', new RegExp('^/session/[^/]+/log/types$')], ['POST', new RegExp('^/session/[^/]+/log$')], ['GET', new RegExp('^/session/[^/]+/se/log/types$')], ['POST', new RegExp('^/session/[^/]+/se/log$')]];
55
55
  const MEMOIZED_FUNCTIONS = ['getStatusBarHeight', 'getDevicePixelRatio'];
56
56
 
57
- class AndroidUiautomator2Driver extends _baseDriver.BaseDriver {
57
+ class AndroidUiautomator2Driver extends _driver.BaseDriver {
58
58
  constructor(opts = {}, shouldValidateCaps = true) {
59
59
  delete opts.shell;
60
60
  super(opts, shouldValidateCaps);
@@ -65,7 +65,7 @@ class AndroidUiautomator2Driver extends _baseDriver.BaseDriver {
65
65
  this.defaultIME = null;
66
66
  this.jwpProxyAvoid = NO_PROXY;
67
67
  this.apkStrings = {};
68
- this.settings = new _baseDriver.DeviceSettings({
68
+ this.settings = new _driver.DeviceSettings({
69
69
  ignoreUnimportantViews: false,
70
70
  allowInvisibleElements: false
71
71
  }, this.onSettingsUpdate.bind(this));
@@ -625,4 +625,4 @@ var _default = AndroidUiautomator2Driver;
625
625
  exports.default = _default;require('source-map-support').install();
626
626
 
627
627
 
628
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ1aWF1dG9tYXRvcjJIZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJERVZJQ0VfUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJERVZJQ0VfUE9SVCIsIk1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCIsIkxPQ0FMSE9TVF9JUDQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIkFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInVpYXV0b21hdG9yMiIsImp3cFByb3h5QWN0aXZlIiwiZGVmYXVsdElNRSIsImp3cFByb3h5QXZvaWQiLCJhcGtTdHJpbmdzIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJhbGxvd0ludmlzaWJsZUVsZW1lbnRzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImZuIiwiXyIsIm1lbW9pemUiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwiY2FwcyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsImlzQ2hyb21lU2Vzc2lvbiIsImxvZyIsImluZm8iLCJwa2ciLCJhY3Rpdml0eSIsImdldENocm9tZVBrZyIsImJyb3dzZXJOYW1lIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwicmVib290Iiwic2V0QXZkRnJvbUNhcGFiaWxpdGllcyIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiIsImNoZWNrQXBwUHJlc2VudCIsInN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiIsImZpbGxEZXZpY2VEZXRhaWxzIiwibWpwZWdTY3JlZW5zaG90VXJsIiwibWpwZWdTdHJlYW0iLCJtanBlZyIsIk1KcGVnU3RyZWFtIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInBpeGVsUmF0aW8iLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwic3RhdEJhckhlaWdodCIsImdldFN0YXR1c0JhckhlaWdodCIsInZpZXdwb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsImRyaXZlckRhdGEiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJkZWJ1ZyIsInVpYTJEYXRhIiwiandwcm94eSIsImNvbW1hbmQiLCJpc0VtdWxhdG9yIiwiYWRiIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiYWxsb2NhdGVTeXN0ZW1Qb3J0IiwiZm9yd2FyZFBvcnQiLCJsb2NhbFBvcnQiLCJjaGVja1BvcnRTdGF0dXMiLCJzeXN0ZW1Qb3J0IiwiX2hhc1N5c3RlbVBvcnRJbkNhcHMiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJyZWxlYXNlU3lzdGVtUG9ydCIsInJlbW92ZVBvcnRGb3J3YXJkIiwiYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0IiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImNyZWF0ZUFEQiIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJzZXRIaWRkZW5BcGlQb2xpY3kiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsImhhc1ZhbHVlIiwiZ3BzRW5hYmxlZCIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJ3YXJuIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJpbml0RGV2aWNlIiwiaW5pdFVpQXV0b21hdG9yMlNlcnZlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwic3RhcnRTZXNzaW9uIiwiYWRkRGV2aWNlSW5mb1RvQ2FwcyIsInNraXBVbmxvY2siLCJ1bmxvY2siLCJzdGFydENocm9tZVNlc3Npb24iLCJlbnN1cmVBcHBTdGFydHMiLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJ1aWF1dG9tYXRvcjJPcHRzIiwiaG9zdCIsInJlbW90ZUFkYkhvc3QiLCJkZXZpY2VQb3J0IiwiYXBrIiwidG1wRGlyIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJyZWFkVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiVWlBdXRvbWF0b3IyU2VydmVyIiwicHJveHlSZXFSZXMiLCJwcm94eUNvbW1hbmQiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiaW5zdGFsbFNlcnZlckFwayIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIlNFUlZFUl9QQUNLQUdFX0lEIiwiU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCIsInN0ZGVyciIsIm1lc3NhZ2UiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwicGFyc2VBcnJheSIsIm90aGVyQXBwcyIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwibm9SZXNldCIsImlzQXBwSW5zdGFsbGVkIiwibm9TaWduIiwiY2hlY2tBcGtDZXJ0IiwicmVxdWlyZURlZmF1bHRDZXJ0Iiwic2lnbkFwcCIsInNraXBVbmluc3RhbGwiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsImFuZHJvaWRDb3ZlcmFnZSIsInN0YXJ0QXBwIiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJyZXRyeSIsInVzZXIiLCJ1c2VyUHJvZmlsZSIsImlzRW1wdHkiLCJfc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJpZ24iLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJlcnIiLCJ1bmljb2RlS2V5Ym9hcmQiLCJyZXNldEtleWJvYXJkIiwic2V0SU1FIiwiZW5kQW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwiYnJvYWRjYXN0IiwiZm9yY2VTdG9wIiwic3RvcExvZ2NhdCIsImVycm9yIiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzdG9wIiwiZnMiLCJleGlzdHMiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJyZXN0YXJ0IiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImlzQ2hyb21lQnJvd3NlciIsImNtZCIsInRvUGFpcnMiLCJhbmRyb2lkQ29tbWFuZHMiLCJwcm90b3R5cGUiLCJjb21tYW5kcyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBVaUF1dG9tYXRvcjJTZXJ2ZXIsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXG59IGZyb20gJy4vdWlhdXRvbWF0b3IyJztcbmltcG9ydCB7IGZzLCB1dGlsLCBtanBlZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHsgREVGQVVMVF9BREJfUE9SVCB9IGZyb20gJ2FwcGl1bS1hZGInO1xuaW1wb3J0IHVpYXV0b21hdG9yMkhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIGFuZHJvaWRIZWxwZXJzLCBhbmRyb2lkQ29tbWFuZHMsIFNFVFRJTkdTX0hFTFBFUl9QS0dfSURcbn0gZnJvbSAnYXBwaXVtLWFuZHJvaWQtZHJpdmVyJztcbmltcG9ydCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OIH0gZnJvbSAnLi9leHRlbnNpb25zJztcblxuXG5jb25zdCBoZWxwZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdWlhdXRvbWF0b3IySGVscGVycywgYW5kcm9pZEhlbHBlcnMpO1xuXG4vLyBUaGUgcmFuZ2Ugb2YgcG9ydHMgd2UgY2FuIHVzZSBvbiB0aGUgc3lzdGVtIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZVxuLy8gVWlBdXRvbWF0b3IyIEhUVFAgc2VydmVyIG9uIHRoZSBkZXZpY2VcbmNvbnN0IERFVklDRV9QT1JUX1JBTkdFID0gWzgyMDAsIDgyOTldO1xuXG4vLyBUaGUgZ3VhcmQgaXMgbmVlZGVkIHRvIGF2b2lkIGR5bmFtaWMgc3lzdGVtIHBvcnQgYWxsb2NhdGlvbiBjb25mbGljdHMgZm9yXG4vLyBwYXJhbGxlbCBkcml2ZXIgc2Vzc2lvbnNcbmNvbnN0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3VpYTJfZGV2aWNlX3BvcnRfZ3VhcmQnKSxcbiAge3RpbWVvdXQ6IDI1LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCBVaUF1dG9tYXRvcjIgbGlzdGVucyB0byBvbiB0aGUgZGV2aWNlLiBXZSB3aWxsIGZvcndhcmRcbi8vIG9uZSBvZiB0aGUgcG9ydHMgYWJvdmUgb24gdGhlIHN5c3RlbSB0byB0aGlzIHBvcnQgb24gdGhlIGRldmljZS5cbmNvbnN0IERFVklDRV9QT1JUID0gNjc5MDtcbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCB0aGUgVWlBdXRvbWF0b3IyIE1KUEVHIHNlcnZlciBsaXN0ZW5zIHRvIG9uIHRoZSBkZXZpY2UuXG4vLyBXZSB3aWxsIGZvcndhcmQgb25lIG9mIHRoZSBwb3J0cyBhYm92ZSBvbiB0aGUgc3lzdGVtIHRvIHRoaXMgcG9ydCBvbiB0aGVcbi8vIGRldmljZS5cbmNvbnN0IE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCA9IDc4MTA7XG5cbmNvbnN0IExPQ0FMSE9TVF9JUDQgPSAnMTI3LjAuMC4xJztcblxuLy8gTk9fUFJPWFkgY29udGFpbnMgdGhlIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBVaUF1dG9tYXRvcjIgc2VydmVyLlxuLy8gVE9ETzogIEFkZCB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gVWlBdXRvbWF0b3IyIHNlcnZlci5cbi8vIFRPRE86IE5lZWQgdG8gc2VncmVnYXRlIHRoZSBwYXRocyBiZXR0ZXIgd2F5IHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2hlcmV2ZXIgYXBwbGljYWJsZS5cbi8vIChOb3Qgc2VncmVnYXRpbmcgcmlnaHQgYXdheSBiZWNhdXNlIG1vcmUgcGF0aHMgdG8gYmUgYWRkZWQgaW4gdGhlIE5PX1BST1hZIGxpc3QpXG5jb25zdCBOT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKD8hLiovKScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnRfW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0L1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvY3VycmVudF9hY3Rpdml0eScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL2N1cnJlbnRfcGFja2FnZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9hdHRyaWJ1dGUnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZGlzcGxheWVkJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2VuYWJsZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvbG9jYXRpb25faW5fdmlldycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9uYW1lJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3NjcmVlbnNob3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvc2VsZWN0ZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9jYXRpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdGltZW91dHMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3VybCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL1teL10rX2FsZXJ0JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FjdGlvbnMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcC9bXi9dJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL3N0YXJ0X2FjdGl2aXR5JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9jb21wYXJlX2ltYWdlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvKD8hc2V0X2NsaXBib2FyZClbXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9lbGVtZW50L1teL10rL3JlcGxhY2VfdmFsdWUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZWxlbWVudC9bXi9dKy92YWx1ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9nZXRQZXJmb3JtYW5jZURhdGEnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vcGVyZm9ybWFuY2VEYXRhL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2V4ZWN1dGVfZHJpdmVyJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0YXJ0X3JlY29yZGluZ19zY3JlZW4nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc3RvcF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtLy4qZXZlbnQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2tleXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG5cbiAgLy8gTUpTT05XUCBjb21tYW5kc1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2cvdHlwZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZV9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZycpXSxcbiAgLy8gVzNDIGNvbW1hbmRzXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nL3R5cGVzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy93aW5kb3cvcmVjdCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZycpXSxcbl07XG5cbi8vIFRoaXMgaXMgYSBzZXQgb2YgbWV0aG9kcyBhbmQgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIENocm9tZWRyaXZlci5cbmNvbnN0IENIUk9NRV9OT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3JlY3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG5cbiAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgbW9iaWxlOiBjb21tYW5kcyB3b3JraW5nIGluIHdlYiBjb250ZXh0XG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcblxuICAvLyBNSlNPTldQIGNvbW1hbmRzXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZy90eXBlcyQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2ckJyldLFxuICAvLyBXM0MgY29tbWFuZHNcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cvdHlwZXMkJyldLFxuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2ckJyldLFxuXTtcblxuY29uc3QgTUVNT0laRURfRlVOQ1RJT05TID0gW1xuICAnZ2V0U3RhdHVzQmFySGVpZ2h0JyxcbiAgJ2dldERldmljZVBpeGVsUmF0aW8nLFxuXTtcblxuY2xhc3MgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgLy8gYHNoZWxsYCBvdmVyd3JpdGVzIGFkYi5zaGVsbCwgc28gcmVtb3ZlXG4gICAgZGVsZXRlIG9wdHMuc2hlbGw7XG5cbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICAgICdjc3Mgc2VsZWN0b3InLFxuICAgICAgJy1hbmRyb2lkIHVpYXV0b21hdG9yJ1xuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy51aWF1dG9tYXRvcjIgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IE5PX1BST1hZO1xuICAgIHRoaXMuYXBrU3RyaW5ncyA9IHt9OyAvLyBtYXAgb2YgbGFuZ3VhZ2UgLT4gc3RyaW5ncyBvYmpcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3Moe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IGZhbHNlLCBhbGxvd0ludmlzaWJsZUVsZW1lbnRzOiBmYWxzZX0sXG4gICAgICAgIHRoaXMub25TZXR0aW5nc1VwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAvLyBoYW5kbGUgd2VidmlldyBtZWNoYW5pY3MgZnJvbSBBbmRyb2lkRHJpdmVyXG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcblxuICAgIC8vIG1lbW9pemUgZnVuY3Rpb25zIGhlcmUsIHNvIHRoYXQgdGhleSBhcmUgZG9uZSBvbiBhIHBlci1pbnN0YW5jZSBiYXNpc1xuICAgIGZvciAoY29uc3QgZm4gb2YgTUVNT0laRURfRlVOQ1RJT05TKSB7XG4gICAgICB0aGlzW2ZuXSA9IF8ubWVtb2l6ZSh0aGlzW2ZuXSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIHJldHVybiBzdXBlci52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpICYmIGFuZHJvaWRIZWxwZXJzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIG90aGVyU2Vzc2lvbkRhdGEgZm9yIG11bHRpcGxlIHNlc3Npb25zXG4gICAgICBsZXQgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc2VydmVyRGV0YWlscyA9IHtcbiAgICAgICAgcGxhdGZvcm06ICdMSU5VWCcsXG4gICAgICAgIHdlYlN0b3JhZ2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGFrZXNTY3JlZW5zaG90OiB0cnVlLFxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZGF0YWJhc2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbkNvbnRleHRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgd2FybmluZ3M6IHt9LFxuICAgICAgICBkZXNpcmVkOiB0aGlzLmNhcHMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNhcHMgPSBPYmplY3QuYXNzaWduKHNlcnZlckRldGFpbHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG5cbiAgICAgIGxldCBkZWZhdWx0T3B0cyA9IHtcbiAgICAgICAgZnVsbFJlc2V0OiBmYWxzZSxcbiAgICAgICAgYXV0b0xhdW5jaDogdHJ1ZSxcbiAgICAgICAgYWRiUG9ydDogREVGQVVMVF9BREJfUE9SVCxcbiAgICAgICAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiA5MDAwMFxuICAgICAgfTtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5vcHRzLCBkZWZhdWx0T3B0cyk7XG5cbiAgICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKFwiV2UncmUgZ29pbmcgdG8gcnVuIGEgQ2hyb21lLWJhc2VkIHNlc3Npb25cIik7XG4gICAgICAgIGxldCB7cGtnLCBhY3Rpdml0eX0gPSBoZWxwZXJzLmdldENocm9tZVBrZyh0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICAgICAgICB0aGlzLm9wdHMuYXBwUGFja2FnZSA9IHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gcGtnO1xuICAgICAgICB0aGlzLm9wdHMuYXBwQWN0aXZpdHkgPSB0aGlzLmNhcHMuYXBwQWN0aXZpdHkgPSBhY3Rpdml0eTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQ2hyb21lLXR5cGUgcGFja2FnZSBhbmQgYWN0aXZpdHkgYXJlICR7cGtnfSBhbmQgJHthY3Rpdml0eX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgdGhpcy5zZXRBdmRGcm9tQ2FwYWJpbGl0aWVzKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrQXBwUHJlc2VudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICAvLyB0aGUgYXBwIGlzbid0IGFuIGFjdHVhbCBhcHAgZmlsZSBidXQgcmF0aGVyIHNvbWV0aGluZyB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGFzc3VtZSBpcyBvbiB0aGUgZGV2aWNlIGFuZCBqdXN0IGxhdW5jaCB2aWEgdGhlIGFwcFBhY2thZ2VcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9JyBkaXJlY3RseSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBOZWl0aGVyICdhcHAnIG5vciAnYXBwUGFja2FnZScgd2FzIHNldC4gU3RhcnRpbmcgVWlBdXRvbWF0b3IyIGAgK1xuICAgICAgICAgICd3aXRob3V0IHRoZSB0YXJnZXQgYXBwbGljYXRpb24nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0cy5hZGJQb3J0ID0gdGhpcy5vcHRzLmFkYlBvcnQgfHwgREVGQVVMVF9BREJfUE9SVDtcblxuICAgICAgYXdhaXQgdGhpcy5zdGFydFVpQXV0b21hdG9yMlNlc3Npb24oKTtcbiAgICAgIGF3YWl0IHRoaXMuZmlsbERldmljZURldGFpbHMoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIE1KUEVHIHN0cmVhbSByZWFkaW5nIFVSTDogJyR7dGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybH0nYCk7XG4gICAgICAgIHRoaXMubWpwZWdTdHJlYW0gPSBuZXcgbWpwZWcuTUpwZWdTdHJlYW0odGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCk7XG4gICAgICAgIGF3YWl0IHRoaXMubWpwZWdTdHJlYW0uc3RhcnQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbc2Vzc2lvbklkLCB0aGlzLmNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaWxsRGV2aWNlRGV0YWlscyAoKSB7XG4gICAgdGhpcy5jYXBzLnBpeGVsUmF0aW8gPSBhd2FpdCB0aGlzLmdldERldmljZVBpeGVsUmF0aW8oKTtcbiAgICB0aGlzLmNhcHMuc3RhdEJhckhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0U3RhdHVzQmFySGVpZ2h0KCk7XG4gICAgdGhpcy5jYXBzLnZpZXdwb3J0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0Vmlld1BvcnRSZWN0KCk7XG4gIH1cblxuICBnZXQgZHJpdmVyRGF0YSAoKSB7XG4gICAgLy8gVE9ETyBmaWxsIG91dCByZXNvdXJjZSBpbmZvIGhlcmVcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBhc3luYyBnZXRTZXNzaW9uICgpIHtcbiAgICBsZXQgc2Vzc2lvbkRhdGEgPSBhd2FpdCBzdXBlci5nZXRTZXNzaW9uKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgc2Vzc2lvbiBkZXRhaWxzIGZyb20gc2VydmVyIHRvIG1peCBpbicpO1xuICAgIGxldCB1aWEyRGF0YSA9IGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnLycsICdHRVQnLCB7fSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNlc3Npb25EYXRhLCB1aWEyRGF0YSk7XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZVN5c3RlbVBvcnQgKCkge1xuICAgIGNvbnN0IGZvcndhcmRQb3J0ID0gYXN5bmMgKGxvY2FsUG9ydCkgPT4ge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEZvcndhcmRpbmcgVWlBdXRvbWF0b3IyIFNlcnZlciBwb3J0ICR7REVWSUNFX1BPUlR9IHRvIGxvY2FsIHBvcnQgJHtsb2NhbFBvcnR9YCk7XG4gICAgICBpZiAoKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyhsb2NhbFBvcnQsIExPQ0FMSE9TVF9JUDQpKSA9PT0gJ29wZW4nKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFVpQXV0b21hdG9yMiBTZXJ2ZXIgY2Fubm90IHN0YXJ0IGJlY2F1c2UgdGhlIGxvY2FsIHBvcnQgIyR7bG9jYWxQb3J0fSBpcyBidXN5LiBgICtcbiAgICAgICAgICBgTWFrZSBzdXJlIHRoZSBwb3J0IHlvdSBwcm92aWRlIHZpYSAnc3lzdGVtUG9ydCcgY2FwYWJpbGl0eSBpcyBub3Qgb2NjdXBpZWQuIGAgK1xuICAgICAgICAgIGBUaGlzIHNpdHVhdGlvbiBtaWdodCBvZnRlbiBiZSBhIHJlc3VsdCBvZiBhbiBpbmFjY3VyYXRlIHNlc3Npb25zIG1hbmFnZW1lbnQsIGUuZy4gYCArXG4gICAgICAgICAgYG9sZCBhdXRvbWF0aW9uIHNlc3Npb25zIG9uIHRoZSBzYW1lIGRldmljZSBtdXN0IGFsd2F5cyBiZSBjbG9zZWQgYmVmb3JlIHN0YXJ0aW5nIG5ldyBvbmVzLmApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQobG9jYWxQb3J0LCBERVZJQ0VfUE9SVCk7XG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9wdHMuc3lzdGVtUG9ydCkge1xuICAgICAgdGhpcy5faGFzU3lzdGVtUG9ydEluQ2FwcyA9IHRydWU7XG4gICAgICByZXR1cm4gYXdhaXQgZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH1cblxuICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBERVZJQ0VfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMub3B0cy5zeXN0ZW1Qb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH19LiBgICtcbiAgICAgICAgICBgUGxlYXNlIHNldCB0aGUgYXZhaWxhYmxlIHBvcnQgbnVtYmVyIGJ5IHByb3ZpZGluZyB0aGUgc3lzdGVtUG9ydCBjYXBhYmlsaXR5IG9yIGAgK1xuICAgICAgICAgIGBkb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZvcndhcmRQb3J0KHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbGVhc2VTeXN0ZW1Qb3J0ICgpIHtcbiAgICBpZiAoIXRoaXMub3B0cy5zeXN0ZW1Qb3J0IHx8ICF0aGlzLmFkYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9oYXNTeXN0ZW1Qb3J0SW5DYXBzKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLnN5c3RlbVBvcnQpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcndhcmRQb3J0KHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQsIE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsZWFzZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiAoKSB7XG4gICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICBsZXQge3VkaWQsIGVtUG9ydH0gPSBhd2FpdCBoZWxwZXJzLmdldERldmljZUluZm9Gcm9tQ2Fwcyh0aGlzLm9wdHMpO1xuICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLm9wdHMuZW1Qb3J0ID0gZW1Qb3J0O1xuXG4gICAgLy8gbm93IHRoYXQgd2Uga25vdyBvdXIgamF2YSB2ZXJzaW9uIGFuZCBkZXZpY2UgaW5mbywgd2UgY2FuIGNyZWF0ZSBvdXJcbiAgICAvLyBBREIgaW5zdGFuY2VcbiAgICB0aGlzLmFkYiA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLmNyZWF0ZUFEQih0aGlzLm9wdHMpO1xuXG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuXG4gICAgaWYgKGFwaUxldmVsIDwgMjEpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ1VJQXV0b21hdG9yMiBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBBbmRyb2lkIDUuMCAoTG9sbGlwb3ApLiAnICtcbiAgICAgICAgJ1lvdSBjb3VsZCBzdGlsbCB1c2Ugb3RoZXIgc3VwcG9ydGVkIGJhY2tlbmRzIGluIG9yZGVyIHRvIGF1dG9tYXRlIG9sZGVyIEFuZHJvaWQgdmVyc2lvbnMuJyk7XG4gICAgfVxuXG4gICAgaWYgKGFwaUxldmVsID49IDI4KSB7IC8vIEFuZHJvaWQgUFxuICAgICAgdGhpcy5sb2cuaW5mbygnUmVsYXhpbmcgaGlkZGVuIGFwaSBwb2xpY3knKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEhpZGRlbkFwaVBvbGljeSgnMScsICEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIHRvIGVuYWJsZS9kaXNhYmxlIGdwcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb25cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMuZ3BzRW5hYmxlZCkpIHtcbiAgICAgIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gJHt0aGlzLm9wdHMuZ3BzRW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnfSBncHMgbG9jYXRpb24gcHJvdmlkZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlcih0aGlzLm9wdHMuZ3BzRW5hYmxlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBTb3JyeSEgJ2dwc0VuYWJsZWQnIGNhcGFiaWxpdHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9yc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGdldCBhcHBQYWNrYWdlIGV0IGFsIGZyb20gbWFuaWZlc3QgaWYgbmVjZXNzYXJ5XG4gICAgY29uc3QgYXBwSW5mbyA9IGF3YWl0IGhlbHBlcnMuZ2V0TGF1bmNoSW5mbyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAvLyBhbmQgZ2V0IGl0IG9udG8gb3VyICdvcHRzJyBvYmplY3Qgc28gd2UgdXNlIGl0IGZyb20gbm93IG9uXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIGFwcEluZm8gfHwge30pO1xuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZCwgcGxhdGZvcm0gdmVyc2lvbiwgc2NyZWVuIHNpemUsIHNjcmVlbiBkZW5zaXR5LCBtb2RlbCBhbmQgbWFudWZhY3R1cmVyIGRldGFpbHNcbiAgICB0aGlzLmNhcHMuZGV2aWNlTmFtZSA9IHRoaXMuYWRiLmN1ckRldmljZUlkO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VVRElEID0gdGhpcy5vcHRzLnVkaWQ7XG5cbiAgICAvLyBzdGFydCBhbiBhdmQsIHNldCB0aGUgbGFuZ3VhZ2UvbG9jYWxlLCBwaWNrIGFuIGVtdWxhdG9yLCBldGMuLi5cbiAgICAvLyBUT0RPIHdpdGggbXVsdGlwbGUgZGV2aWNlcyB3ZSdsbCBuZWVkIHRvIHBhcmFtZXRlcml6ZSB0aGlzXG4gICAgdGhpcy5kZWZhdWx0SU1FID0gYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgZGV2aWNlIGJ5IGZvcndhcmRpbmcgdGhlIFVpQXV0b21hdG9yMiBwb3J0XG4gICAgLy8gVGhpcyBjYWxsIG11dGF0ZXMgdGhpcy5vcHRzLnN5c3RlbVBvcnQgaWYgaXQgaXMgbm90IHNldCBleHBsaWNpdGx5XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcblxuICAgIC8vIFByZXBhcmUgdGhlIGRldmljZSBieSBmb3J3YXJkaW5nIHRoZSBVaUF1dG9tYXRvcjIgTUpQRUcgc2VydmVyIHBvcnQgKGlmXG4gICAgLy8gYXBwbGljYWJsZSlcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG5cbiAgICAvLyBzZXQgdXAgdGhlIG1vZGlmaWVkIFVpQXV0b21hdG9yMiBzZXJ2ZXIgZXRjXG4gICAgYXdhaXQgdGhpcy5pbml0VWlBdXRvbWF0b3IyU2VydmVyKCk7XG5cbiAgICAvLyBTaG91bGQgYmUgYWZ0ZXIgaW5zdGFsbGluZyBpby5hcHBpdW0uc2V0dGluZ3MgaW4gaGVscGVycy5pbml0RGV2aWNlXG4gICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uICYmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgMjYpKSB7IC8vIEFQSSBsZXZlbCAyNiBpcyBBbmRyb2lkIDguMC5cbiAgICAgIC8vIEdyYW50aW5nIGFuZHJvaWQucGVybWlzc2lvbi5TRVRfQU5JTUFUSU9OX1NDQUxFIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgYW5pbWF0aW9ucyB1bmRlciBBUEkgbGV2ZWwgMjZcbiAgICAgIC8vIFJlYWQgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vcHVsbC8xMTY0MCNpc3N1ZWNvbW1lbnQtNDM4MjYwNDc3XG4gICAgICAvLyBgLS1uby13aW5kb3ctYW5pbWF0aW9uYCB3b3JrcyBvdmVyIEFuZHJvaWQgOCB0byBkaXNhYmxlIGFsbCBvZiBhbmltYXRpb25zXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0Rpc2FibGluZyBhbmltYXRpb24gdmlhIGlvLmFwcGl1bS5zZXR0aW5ncycpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1dpbmRvdyBhbmltYXRpb24gaXMgYWxyZWFkeSBkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNldCB1cCBhcHAgdW5kZXIgdGVzdFxuICAgIC8vIHByZXBhcmUgb3VyIGFjdHVhbCBBVVQsIGdldCBpdCBvbiB0aGUgZGV2aWNlLCBldGMuLi5cbiAgICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcblxuICAgIC8vIEFkZGluZyBBVVQgcGFja2FnZSBuYW1lIGluIHRoZSBjYXBhYmlsaXRpZXMgaWYgcGFja2FnZSBuYW1lIG5vdCBleGlzdCBpbiBjYXBzXG4gICAgaWYgKCF0aGlzLmNhcHMuYXBwUGFja2FnZSAmJiBhcHBJbmZvKSB7XG4gICAgICB0aGlzLmNhcHMuYXBwUGFja2FnZSA9IGFwcEluZm8uYXBwUGFja2FnZTtcbiAgICB9XG5cbiAgICAvLyBsYXVuY2ggVWlBdXRvbWF0b3IyIGFuZCB3YWl0IHRpbGwgaXRzIG9ubGluZSBhbmQgd2UgaGF2ZSBhIHNlc3Npb25cbiAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5zdGFydFNlc3Npb24odGhpcy5jYXBzKTtcblxuICAgIGF3YWl0IHRoaXMuYWRkRGV2aWNlSW5mb1RvQ2FwcygpO1xuXG4gICAgLy8gVW5sb2NrIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHNlc3Npb24gaXMgc3RhcnRlZC5cbiAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5sb2NrKSB7XG4gICAgICAvLyB1bmxvY2sgdGhlIGRldmljZSB0byBwcmVwYXJlIGl0IGZvciB0ZXN0aW5nXG4gICAgICBhd2FpdCBoZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwgdGhpcy5jYXBzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdza2lwVW5sb2NrJyBjYXBhYmlsaXR5IHNldCwgc28gc2tpcHBpbmcgZGV2aWNlIHVubG9ja2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikgeyAvLyBzdGFydCBhIGNocm9tZWRyaXZlciBzZXNzaW9uXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbih0aGlzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hdXRvTGF1bmNoICYmIHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICBhd2FpdCB0aGlzLmVuc3VyZUFwcFN0YXJ0cygpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBpbml0aWFsIG9yaWVudGF0aW9uIGlzIHJlcXVlc3RlZCwgc2V0IGl0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLm9yaWVudGF0aW9uKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiB0byAnJHt0aGlzLm9wdHMub3JpZW50YXRpb259J2ApO1xuICAgICAgYXdhaXQgdGhpcy5zZXRPcmllbnRhdGlvbih0aGlzLm9wdHMub3JpZW50YXRpb24pO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gaW1tZWRpYXRlbHkgZ2V0IGludG8gYSB3ZWJ2aWV3LCBzZXQgb3VyIGNvbnRleHRcbiAgICAvLyBhcHByb3ByaWF0ZWx5XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgY29uc3Qgdmlld05hbWUgPSB0aGlzLmRlZmF1bHRXZWJ2aWV3TmFtZSgpO1xuICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMub3B0cy5hdXRvV2Vidmlld1RpbWVvdXQgfHwgMjAwMDtcbiAgICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgYXV0byB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgLyA1MDAsIDUwMCwgdGhpcy5zZXRDb250ZXh0LmJpbmQodGhpcyksIHZpZXdOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBub3cgdGhhdCBldmVyeXRoaW5nIGhhcyBzdGFydGVkIHN1Y2Nlc3NmdWxseSwgdHVybiBvbiBwcm94eWluZyBzbyBhbGxcbiAgICAvLyBzdWJzZXF1ZW50IHNlc3Npb24gcmVxdWVzdHMgZ28gc3RyYWlnaHQgdG8vZnJvbSB1aWF1dG9tYXRvcjJcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGFkZERldmljZUluZm9Ub0NhcHMgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBtYW51ZmFjdHVyZXIsXG4gICAgICBtb2RlbCxcbiAgICAgIHJlYWxEaXNwbGF5U2l6ZSxcbiAgICAgIGRpc3BsYXlEZW5zaXR5LFxuICAgIH0gPSBhd2FpdCB0aGlzLm1vYmlsZUdldERldmljZUluZm8oKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlQXBpTGV2ZWwgPSBwYXJzZUludChhcGlWZXJzaW9uLCAxMCk7XG4gICAgdGhpcy5jYXBzLnBsYXRmb3JtVmVyc2lvbiA9IHBsYXRmb3JtVmVyc2lvbjtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuU2l6ZSA9IHJlYWxEaXNwbGF5U2l6ZTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuRGVuc2l0eSA9IGRpc3BsYXlEZW5zaXR5O1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNb2RlbCA9IG1vZGVsO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNYW51ZmFjdHVyZXIgPSBtYW51ZmFjdHVyZXI7XG4gIH1cblxuICBhc3luYyBpbml0VWlBdXRvbWF0b3IyU2VydmVyICgpIHtcbiAgICAvLyBicm9rZW4gb3V0IGZvciByZWFkYWJpbGl0eVxuICAgIGNvbnN0IHVpYXV0b21hdG9yMk9wdHMgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdHMucmVtb3RlQWRiSG9zdCB8fCB0aGlzLm9wdHMuaG9zdCB8fCBMT0NBTEhPU1RfSVA0LFxuICAgICAgc3lzdGVtUG9ydDogdGhpcy5vcHRzLnN5c3RlbVBvcnQsXG4gICAgICBkZXZpY2VQb3J0OiBERVZJQ0VfUE9SVCxcbiAgICAgIGFkYjogdGhpcy5hZGIsXG4gICAgICBhcGs6IHRoaXMub3B0cy5hcHAsXG4gICAgICB0bXBEaXI6IHRoaXMub3B0cy50bXBEaXIsXG4gICAgICBhcHBQYWNrYWdlOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgIGFwcEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiAhIXRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uLFxuICAgICAgZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U6IHRoaXMub3B0cy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSxcbiAgICAgIHJlYWRUaW1lb3V0OiB0aGlzLm9wdHMudWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQsXG4gICAgfTtcbiAgICAvLyBub3cgdGhhdCB3ZSBoYXZlIHBhY2thZ2UgYW5kIGFjdGl2aXR5LCB3ZSBjYW4gY3JlYXRlIGFuIGluc3RhbmNlIG9mXG4gICAgLy8gdWlhdXRvbWF0b3IyIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9wdGlvbnNcbiAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG5ldyBVaUF1dG9tYXRvcjJTZXJ2ZXIodGhpcy5sb2csIHVpYXV0b21hdG9yMk9wdHMpO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2tpcFNlcnZlckluc3RhbGxhdGlvbikge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgJ3NraXBTZXJ2ZXJJbnN0YWxsYXRpb24nIGlzIHNldC4gU2tpcHBpbmcgVUlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsYXRpb24uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmluc3RhbGxTZXJ2ZXJBcGsodGhpcy5vcHRzLnVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmFkZFRvRGV2aWNlSWRsZVdoaXRlbGlzdChcbiAgICAgICAgICBTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBTRVJWRVJfUEFDS0FHRV9JRCwgU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IGFkZCBzZXJ2ZXIgcGFja2FnZXMgdG8gdGhlIERvemUgd2hpdGVsaXN0LiBPcmlnaW5hbCBlcnJvcjogYCArXG4gICAgICAgICAgKGUuc3RkZXJyIHx8IGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRBVVQgKCkge1xuICAgIC8vIFVuaW5zdGFsbCBhbnkgdW5pbnN0YWxsT3RoZXJQYWNrYWdlcyB3aGljaCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSB7XG4gICAgICBhd2FpdCBoZWxwZXJzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMoXG4gICAgICAgIHRoaXMuYWRiLFxuICAgICAgICBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpLFxuICAgICAgICBbU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgU0VSVkVSX1BBQ0tBR0VfSUQsIFNFUlZFUl9URVNUX1BBQ0tBR0VfSURdXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEluc3RhbGwgYW55IFwib3RoZXJBcHBzXCIgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy5vdGhlckFwcHMpIHtcbiAgICAgIGxldCBvdGhlckFwcHM7XG4gICAgICB0cnkge1xuICAgICAgICBvdGhlckFwcHMgPSBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLm90aGVyQXBwcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBcIm90aGVyQXBwc1wiIGNhcGFiaWxpdHk6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgb3RoZXJBcHBzID0gYXdhaXQgQi5hbGwob3RoZXJBcHBzXG4gICAgICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pKSk7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxPdGhlckFwa3Mob3RoZXJBcHBzLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmICEoYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQodGhpcy5vcHRzLmFwcFBhY2thZ2UpKVxuICAgICAgICAgIHx8ICF0aGlzLm9wdHMubm9SZXNldCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5ub1NpZ24gJiYgIWF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm9wdHMuYXBwLCB0aGlzLm9wdHMuYXBwUGFja2FnZSwge1xuICAgICAgICAgIHJlcXVpcmVEZWZhdWx0Q2VydDogZmFsc2UsXG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgYXdhaXQgaGVscGVycy5zaWduQXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMuYXBwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxBcGsodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1Zygnbm9SZXNldCBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZSBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnRnVsbCByZXNldCByZXF1aXJlcyBhbiBhcHAgY2FwYWJpbGl0eSwgdXNlIGZhc3RSZXNldCBpZiBhcHAgaXMgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gYXBwIGNhcGFiaWxpdHkuIEFzc3VtaW5nIGl0IGlzIGFscmVhZHkgb24gdGhlIGRldmljZScpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mYXN0UmVzZXQgJiYgdGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgICAgYXdhaXQgaGVscGVycy5yZXNldEFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBlbnN1cmVBcHBTdGFydHMgKCkge1xuICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFjdGl2aXR5IGFuZCBwYWNrYWdlIHRvIHdhaXQgZm9yXG4gICAgY29uc3QgYXBwV2FpdFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgfHwgdGhpcy5vcHRzLmFwcFBhY2thZ2U7XG4gICAgY29uc3QgYXBwV2FpdEFjdGl2aXR5ID0gdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSB8fCB0aGlzLm9wdHMuYXBwQWN0aXZpdHk7XG5cbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0vJHt0aGlzLm9wdHMuYXBwQWN0aXZpdHl9IGAgK1xuICAgICAgYGFuZCB3YWl0aW5nIGZvciAnJHthcHBXYWl0UGFja2FnZX0vJHthcHBXYWl0QWN0aXZpdHl9J2ApO1xuXG4gICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYGFuZHJvaWRDb3ZlcmFnZSBpcyBjb25maWd1cmVkLiBgICtcbiAgICAgICAgYCBTdGFydGluZyBpbnN0cnVtZW50YXRpb24gb2YgJyR7dGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZX0nLi4uYCk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5hbmRyb2lkQ292ZXJhZ2UodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSwgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKHtcbiAgICAgICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uIHx8ICdhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTicsXG4gICAgICAgIGNhdGVnb3J5OiB0aGlzLm9wdHMuaW50ZW50Q2F0ZWdvcnkgfHwgJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJyxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyB8fCAnMHgxMDIwMDAwMCcsIC8vIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEXG4gICAgICAgIHdhaXRQa2c6IHRoaXMub3B0cy5hcHBXYWl0UGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwV2FpdEFjdGl2aXR5LFxuICAgICAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICAgICAgd2FpdER1cmF0aW9uOiB0aGlzLm9wdHMuYXBwV2FpdER1cmF0aW9uLFxuICAgICAgICBvcHRpb25hbEludGVudEFyZ3VtZW50czogdGhpcy5vcHRzLm9wdGlvbmFsSW50ZW50QXJndW1lbnRzLFxuICAgICAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICAgICAgcmV0cnk6IHRydWUsXG4gICAgICAgIHVzZXI6IHRoaXMub3B0cy51c2VyUHJvZmlsZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIFVpQXV0b21hdG9yMiBzZXNzaW9uJyk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuXG4gICAgYXdhaXQgYW5kcm9pZEhlbHBlcnMucmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzKHRoaXMuc2VydmVyLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICBhd2FpdCB0aGlzLm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcoKTtcblxuICAgIGlmICh0aGlzLnVpYXV0b21hdG9yMikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcygpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBzdG9wIENocm9tZURyaXZlciBwcm94aWVzOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuandwUHJveHlBY3RpdmUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5kZWxldGVTZXNzaW9uKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBwcm94eSBkZWxldGVTZXNzaW9uIHRvIFVpQXV0b21hdG9yMjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy51aWF1dG9tYXRvcjIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5hZGIpIHtcbiAgICAgIGlmICh0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkICYmIHRoaXMub3B0cy5yZXNldEtleWJvYXJkICYmIHRoaXMuZGVmYXVsdElNRSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgUmVzZXR0aW5nIElNRSB0byAnJHt0aGlzLmRlZmF1bHRJTUV9J2ApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldElNRSh0aGlzLmRlZmF1bHRJTUUpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVzZXQgSU1FOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdTaHV0dGluZyBkb3duIHRoZSBhZGIgcHJvY2VzcyBvZiBpbnN0cnVtZW50YXRpb24uLi4nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuZW5kQW5kcm9pZENvdmVyYWdlKCk7XG4gICAgICAgIC8vIFVzZSB0aGlzIGJyb2FkY2FzdCBpbnRlbnQgdG8gbm90aWZ5IGl0J3MgdGltZSB0byBkdW1wIGNvdmVyYWdlIHRvIGZpbGVcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBTZW5kaW5nIGludGVudCBicm9hZGNhc3QgJyR7dGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZUVuZEludGVudH0nIGF0IHRoZSBlbmQgb2YgaW5zdHJ1bWVudGluZy5gKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5icm9hZGNhc3QodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybignTm8gYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IGlzIGNvbmZpZ3VyZWQgaW4gY2Fwcy4gUG9zc2libHkgeW91IGNhbm5vdCBnZXQgY292ZXJhZ2UgZmlsZS4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0Nocm9tZVNlc3Npb25cbiAgICAgICAgICAgICYmICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0XG4gICAgICAgICAgICAmJiAhdGhpcy5vcHRzLm5vUmVzZXQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBmb3JjZSBzdG9wIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZGVidWcoYENhcGFiaWxpdHkgJ2Z1bGxSZXNldCcgc2V0IHRvICd0cnVlJywgVW5pbnN0YWxsaW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfSdgKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byB1bmluc3RhbGwgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gVGhpcyB2YWx1ZSBjYW4gYmUgdHJ1ZSBpZiB0ZXN0IHRhcmdldCBkZXZpY2UgaXMgPD0gMjZcbiAgICAgIGlmICh0aGlzLl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3Jpbmcgd2luZG93IGFuaW1hdGlvbiBzdGF0ZScpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZSh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0b3BMb2djYXQoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVsZWFzZVN5c3RlbVBvcnQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZW1vdmUgc3lzdGVtIHBvcnQgZm9yd2FyZDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBJZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVsZWFzZU1qcGVnU2VydmVyUG9ydCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlbW92ZSBNSlBFRyBzZXJ2ZXIgcG9ydCBmb3J3YXJkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIC8vIElnbm9yZSwgdGhpcyBibG9jayB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW4gd2UgZmFsbCBpbiBjYXRjaCBibG9ja1xuICAgICAgICAvLyBhbmQgYmVmb3JlIGV2ZW4gcG9ydCBmb3J3YXJkLlxuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyOCkgeyAvLyBBbmRyb2lkIFBcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIGhpZGRlbiBhcGkgcG9saWN5IHRvIHRoZSBkZXZpY2UgZGVmYXVsdCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3koISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICBsZXQgYXZkTmFtZSA9IHRoaXMub3B0cy5hdmQucmVwbGFjZSgnQCcsICcnKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENsb3NpbmcgZW11bGF0b3IgJyR7YXZkTmFtZX0nYCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIua2lsbEVtdWxhdG9yKGF2ZE5hbWUpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gY2xvc2UgZW11bGF0b3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWpwZWdTdHJlYW0pIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ0Nsb3NpbmcgTUpQRUcgc3RyZWFtJyk7XG4gICAgICB0aGlzLm1qcGVnU3RyZWFtLnN0b3AoKTtcbiAgICB9XG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG5cbiAgYXN5bmMgY2hlY2tBcHBQcmVzZW50ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgd2hldGhlciBhcHAgaXMgYWN0dWFsbHkgcHJlc2VudCcpO1xuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm9wdHMuYXBwKSkpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBmaW5kIGFwcCBhcGsgYXQgJyR7dGhpcy5vcHRzLmFwcH0nYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25TZXR0aW5nc1VwZGF0ZSAoKSB7XG4gICAgLy8gaW50ZW50aW9uYWxseSBkbyBub3RoaW5nIGhlcmUsIHNpbmNlIGNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzIHByb3hpZXNcbiAgICAvLyBzZXR0aW5ncyB0byB0aGUgdWlhdXRvMiBzZXJ2ZXIgYWxyZWFkeVxuICB9XG5cbiAgLy8gTmVlZCB0byBvdmVycmlkZSBhbmRyb2lkLWRyaXZlcidzIHZlcnNpb24gb2YgdGhpcyBzaW5jZSB3ZSBkb24ndCBhY3R1YWxseVxuICAvLyBoYXZlIGEgYm9vdHN0cmFwOyBpbnN0ZWFkIHdlIGp1c3QgcmVzdGFydCBhZGIgYW5kIHJlLWZvcndhcmQgdGhlIFVpQXV0b21hdG9yMlxuICAvLyBwb3J0XG4gIGFzeW5jIHdyYXBCb290c3RyYXBEaXNjb25uZWN0ICh3cmFwcGVkKSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlU3lzdGVtUG9ydCgpO1xuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQoKTtcbiAgfVxuXG4gIHByb3h5QWN0aXZlIChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5wcm94eUFjdGl2ZShzZXNzaW9uSWQpO1xuXG4gICAgLy8gd2UgYWx3YXlzIGhhdmUgYW4gYWN0aXZlIHByb3h5IHRvIHRoZSBVaUF1dG9tYXRvcjIgc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjYW5Qcm94eSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuY2FuUHJveHkoc2Vzc2lvbklkKTtcblxuICAgIC8vIHdlIGNhbiBhbHdheXMgcHJveHkgdG8gdGhlIHVpYXV0b21hdG9yMiBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5nZXRQcm94eUF2b2lkTGlzdChzZXNzaW9uSWQpO1xuICAgIC8vIHdlIGFyZSBtYWludGFpbmluZyB0d28gc2V0cyBvZiBOT19QUk9YWSBsaXN0cywgb25lIGZvciBjaHJvbWVkcml2ZXIoQ0hST01FX05PX1BST1hZKVxuICAgIC8vIGFuZCBvbmUgZm9yIHVpYXV0b21hdG9yMihOT19QUk9YWSksIGJhc2VkIG9uIGN1cnJlbnQgY29udGV4dCB3aWxsIHJldHVybiByZWxhdGVkIE5PX1BST1hZIGxpc3RcbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLmNocm9tZWRyaXZlcikpIHtcbiAgICAgIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgd2VidmlldyhjaHJvbWVkcml2ZXIpLCB0aGVuIHJldHVybiBDSFJPTUVfTk9fUFJPWFkgbGlzdFxuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gQ0hST01FX05PX1BST1hZO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBOT19QUk9YWTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0cy5uYXRpdmVXZWJTY3JlZW5zaG90KSB7XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBbLi4udGhpcy5qd3BQcm94eUF2b2lkLCBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUF2b2lkO1xuICB9XG5cbiAgZ2V0IGlzQ2hyb21lU2Vzc2lvbiAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNDaHJvbWVCcm93c2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gIH1cbn1cblxuLy8gZmlyc3QgYWRkIHRoZSBhbmRyb2lkLWRyaXZlciBjb21tYW5kcyB3aGljaCB3ZSB3aWxsIGZhbGwgYmFjayB0b1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhhbmRyb2lkQ29tbWFuZHMpKSB7XG4gIEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbn1cblxuLy8gdGhlbiBvdmVyd3JpdGUgd2l0aCBhbnkgdWlhdXRvbWF0b3IyLXNwZWNpZmljIGNvbW1hbmRzXG5mb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG59XG5cbmV4cG9ydCB7IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCQyxnQkFBbEIsRUFBdUNDLG1DQUF2QyxDQUFoQjtBQUlBLE1BQU1DLGlCQUFpQixHQUFHLENBQUMsSUFBRCxFQUFPLElBQVAsQ0FBMUI7O0FBSUEsTUFBTUMsNEJBQTRC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
628
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ1aWF1dG9tYXRvcjJIZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJERVZJQ0VfUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJERVZJQ0VfUE9SVCIsIk1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCIsIkxPQ0FMSE9TVF9JUDQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIkFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInVpYXV0b21hdG9yMiIsImp3cFByb3h5QWN0aXZlIiwiZGVmYXVsdElNRSIsImp3cFByb3h5QXZvaWQiLCJhcGtTdHJpbmdzIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJhbGxvd0ludmlzaWJsZUVsZW1lbnRzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImZuIiwiXyIsIm1lbW9pemUiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwiY2FwcyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsImlzQ2hyb21lU2Vzc2lvbiIsImxvZyIsImluZm8iLCJwa2ciLCJhY3Rpdml0eSIsImdldENocm9tZVBrZyIsImJyb3dzZXJOYW1lIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwicmVib290Iiwic2V0QXZkRnJvbUNhcGFiaWxpdGllcyIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiIsImNoZWNrQXBwUHJlc2VudCIsInN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiIsImZpbGxEZXZpY2VEZXRhaWxzIiwibWpwZWdTY3JlZW5zaG90VXJsIiwibWpwZWdTdHJlYW0iLCJtanBlZyIsIk1KcGVnU3RyZWFtIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInBpeGVsUmF0aW8iLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwic3RhdEJhckhlaWdodCIsImdldFN0YXR1c0JhckhlaWdodCIsInZpZXdwb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsImRyaXZlckRhdGEiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJkZWJ1ZyIsInVpYTJEYXRhIiwiandwcm94eSIsImNvbW1hbmQiLCJpc0VtdWxhdG9yIiwiYWRiIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiYWxsb2NhdGVTeXN0ZW1Qb3J0IiwiZm9yd2FyZFBvcnQiLCJsb2NhbFBvcnQiLCJjaGVja1BvcnRTdGF0dXMiLCJzeXN0ZW1Qb3J0IiwiX2hhc1N5c3RlbVBvcnRJbkNhcHMiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJyZWxlYXNlU3lzdGVtUG9ydCIsInJlbW92ZVBvcnRGb3J3YXJkIiwiYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0IiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImNyZWF0ZUFEQiIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJzZXRIaWRkZW5BcGlQb2xpY3kiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsImhhc1ZhbHVlIiwiZ3BzRW5hYmxlZCIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJ3YXJuIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJpbml0RGV2aWNlIiwiaW5pdFVpQXV0b21hdG9yMlNlcnZlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwic3RhcnRTZXNzaW9uIiwiYWRkRGV2aWNlSW5mb1RvQ2FwcyIsInNraXBVbmxvY2siLCJ1bmxvY2siLCJzdGFydENocm9tZVNlc3Npb24iLCJlbnN1cmVBcHBTdGFydHMiLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJ1aWF1dG9tYXRvcjJPcHRzIiwiaG9zdCIsInJlbW90ZUFkYkhvc3QiLCJkZXZpY2VQb3J0IiwiYXBrIiwidG1wRGlyIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJyZWFkVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiVWlBdXRvbWF0b3IyU2VydmVyIiwicHJveHlSZXFSZXMiLCJwcm94eUNvbW1hbmQiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiaW5zdGFsbFNlcnZlckFwayIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIlNFUlZFUl9QQUNLQUdFX0lEIiwiU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCIsInN0ZGVyciIsIm1lc3NhZ2UiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwicGFyc2VBcnJheSIsIm90aGVyQXBwcyIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwibm9SZXNldCIsImlzQXBwSW5zdGFsbGVkIiwibm9TaWduIiwiY2hlY2tBcGtDZXJ0IiwicmVxdWlyZURlZmF1bHRDZXJ0Iiwic2lnbkFwcCIsInNraXBVbmluc3RhbGwiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsImFuZHJvaWRDb3ZlcmFnZSIsInN0YXJ0QXBwIiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJyZXRyeSIsInVzZXIiLCJ1c2VyUHJvZmlsZSIsImlzRW1wdHkiLCJfc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJpZ24iLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJlcnIiLCJ1bmljb2RlS2V5Ym9hcmQiLCJyZXNldEtleWJvYXJkIiwic2V0SU1FIiwiZW5kQW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwiYnJvYWRjYXN0IiwiZm9yY2VTdG9wIiwic3RvcExvZ2NhdCIsImVycm9yIiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzdG9wIiwiZnMiLCJleGlzdHMiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJyZXN0YXJ0IiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImlzQ2hyb21lQnJvd3NlciIsImNtZCIsInRvUGFpcnMiLCJhbmRyb2lkQ29tbWFuZHMiLCJwcm90b3R5cGUiLCJjb21tYW5kcyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQge1xuICBVaUF1dG9tYXRvcjJTZXJ2ZXIsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXG59IGZyb20gJy4vdWlhdXRvbWF0b3IyJztcbmltcG9ydCB7IGZzLCB1dGlsLCBtanBlZyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgY29tbWFuZHMgZnJvbSAnLi9jb21tYW5kcy9pbmRleCc7XG5pbXBvcnQgeyBERUZBVUxUX0FEQl9QT1JUIH0gZnJvbSAnYXBwaXVtLWFkYic7XG5pbXBvcnQgdWlhdXRvbWF0b3IySGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgYW5kcm9pZEhlbHBlcnMsIGFuZHJvaWRDb21tYW5kcywgU0VUVElOR1NfSEVMUEVSX1BLR19JRFxufSBmcm9tICdhcHBpdW0tYW5kcm9pZC1kcml2ZXInO1xuaW1wb3J0IGRlc2lyZWRDYXBDb25zdHJhaW50cyBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSwgY2hlY2tQb3J0U3RhdHVzIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQVBLX0VYVEVOU0lPTiwgQVBLU19FWFRFTlNJT04gfSBmcm9tICcuL2V4dGVuc2lvbnMnO1xuXG5cbmNvbnN0IGhlbHBlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB1aWF1dG9tYXRvcjJIZWxwZXJzLCBhbmRyb2lkSGVscGVycyk7XG5cbi8vIFRoZSByYW5nZSBvZiBwb3J0cyB3ZSBjYW4gdXNlIG9uIHRoZSBzeXN0ZW0gZm9yIGNvbW11bmljYXRpbmcgdG8gdGhlXG4vLyBVaUF1dG9tYXRvcjIgSFRUUCBzZXJ2ZXIgb24gdGhlIGRldmljZVxuY29uc3QgREVWSUNFX1BPUlRfUkFOR0UgPSBbODIwMCwgODI5OV07XG5cbi8vIFRoZSBndWFyZCBpcyBuZWVkZWQgdG8gYXZvaWQgZHluYW1pYyBzeXN0ZW0gcG9ydCBhbGxvY2F0aW9uIGNvbmZsaWN0cyBmb3Jcbi8vIHBhcmFsbGVsIGRyaXZlciBzZXNzaW9uc1xuY29uc3QgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRCA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChcbiAgcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCAndWlhMl9kZXZpY2VfcG9ydF9ndWFyZCcpLFxuICB7dGltZW91dDogMjUsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuLy8gVGhpcyBpcyB0aGUgcG9ydCB0aGF0IFVpQXV0b21hdG9yMiBsaXN0ZW5zIHRvIG9uIHRoZSBkZXZpY2UuIFdlIHdpbGwgZm9yd2FyZFxuLy8gb25lIG9mIHRoZSBwb3J0cyBhYm92ZSBvbiB0aGUgc3lzdGVtIHRvIHRoaXMgcG9ydCBvbiB0aGUgZGV2aWNlLlxuY29uc3QgREVWSUNFX1BPUlQgPSA2NzkwO1xuLy8gVGhpcyBpcyB0aGUgcG9ydCB0aGF0IHRoZSBVaUF1dG9tYXRvcjIgTUpQRUcgc2VydmVyIGxpc3RlbnMgdG8gb24gdGhlIGRldmljZS5cbi8vIFdlIHdpbGwgZm9yd2FyZCBvbmUgb2YgdGhlIHBvcnRzIGFib3ZlIG9uIHRoZSBzeXN0ZW0gdG8gdGhpcyBwb3J0IG9uIHRoZVxuLy8gZGV2aWNlLlxuY29uc3QgTUpQRUdfU0VSVkVSX0RFVklDRV9QT1JUID0gNzgxMDtcblxuY29uc3QgTE9DQUxIT1NUX0lQNCA9ICcxMjcuMC4wLjEnO1xuXG4vLyBOT19QUk9YWSBjb250YWlucyB0aGUgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIFVpQXV0b21hdG9yMiBzZXJ2ZXIuXG4vLyBUT0RPOiAgQWRkIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBVaUF1dG9tYXRvcjIgc2VydmVyLlxuLy8gVE9ETzogTmVlZCB0byBzZWdyZWdhdGUgdGhlIHBhdGhzIGJldHRlciB3YXkgdXNpbmcgcmVndWxhciBleHByZXNzaW9ucyB3aGVyZXZlciBhcHBsaWNhYmxlLlxuLy8gKE5vdCBzZWdyZWdhdGluZyByaWdodCBhd2F5IGJlY2F1c2UgbW9yZSBwYXRocyB0byBiZSBhZGRlZCBpbiB0aGUgTk9fUFJPWFkgbGlzdClcbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi8oPyEuKi8pJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydF9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnQvW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9bXi9dKy9jdXJyZW50X2FjdGl2aXR5JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvY3VycmVudF9wYWNrYWdlJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZGV2aWNlL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc2V0dGluZ3MnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHRzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2F0dHJpYnV0ZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9kaXNwbGF5ZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZW5hYmxlZCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9sb2NhdGlvbl9pbl92aWV3JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL25hbWUnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvc2NyZWVuc2hvdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9zZWxlY3RlZCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zY3JlZW5zaG90JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90aW1lb3V0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdXJsJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvW14vXStfYWxlcnQkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWN0aW9ucycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0L1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwL1teL10nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvc3RhcnRfYWN0aXZpdHknKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vYXBwL1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2NvbXBhcmVfaW1hZ2VzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS8oPyFzZXRfY2xpcGJvYXJkKVteL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2VsZW1lbnQvW14vXSsvcmVwbGFjZV92YWx1ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9lbGVtZW50L1teL10rL3ZhbHVlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2dldFBlcmZvcm1hbmNlRGF0YScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9wZXJmb3JtYW5jZURhdGEvdHlwZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc2V0dGluZ3MnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZXhlY3V0ZV9kcml2ZXInKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc3RhcnRfcmVjb3JkaW5nX3NjcmVlbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9zdG9wX3JlY29yZGluZ19zY3JlZW4nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vLipldmVudCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvaW1lL1teL10rJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsva2V5cycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvY2F0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdGltZW91dHMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3VybCcpXSxcblxuICAvLyBNSlNPTldQIGNvbW1hbmRzXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZy90eXBlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlX2FzeW5jJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nJyldLFxuICAvLyBXM0MgY29tbWFuZHNcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cvdHlwZXMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3dpbmRvdy9yZWN0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nJyldLFxuXTtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gQ2hyb21lZHJpdmVyLlxuY29uc3QgQ0hST01FX05PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvcmVjdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvcGVyZm9ybScpXSxcblxuICAvLyB0aGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSBtb2JpbGU6IGNvbW1hbmRzIHdvcmtpbmcgaW4gd2ViIGNvbnRleHRcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUkJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZS9zeW5jJyldLFxuXG4gIC8vIE1KU09OV1AgY29tbWFuZHNcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9nL3R5cGVzJCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZyQnKV0sXG4gIC8vIFczQyBjb21tYW5kc1xuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZy90eXBlcyQnKV0sXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZyQnKV0sXG5dO1xuXG5jb25zdCBNRU1PSVpFRF9GVU5DVElPTlMgPSBbXG4gICdnZXRTdGF0dXNCYXJIZWlnaHQnLFxuICAnZ2V0RGV2aWNlUGl4ZWxSYXRpbycsXG5dO1xuXG5jbGFzcyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgICAvLyBgc2hlbGxgIG92ZXJ3cml0ZXMgYWRiLnNoZWxsLCBzbyByZW1vdmVcbiAgICBkZWxldGUgb3B0cy5zaGVsbDtcblxuICAgIHN1cGVyKG9wdHMsIHNob3VsZFZhbGlkYXRlQ2Fwcyk7XG4gICAgdGhpcy5sb2NhdG9yU3RyYXRlZ2llcyA9IFtcbiAgICAgICd4cGF0aCcsXG4gICAgICAnaWQnLFxuICAgICAgJ2NsYXNzIG5hbWUnLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgICAnLWFuZHJvaWQgdWlhdXRvbWF0b3InXG4gICAgXTtcbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuZGVmYXVsdElNRSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG4gICAgdGhpcy5hcGtTdHJpbmdzID0ge307IC8vIG1hcCBvZiBsYW5ndWFnZSAtPiBzdHJpbmdzIG9ialxuXG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2UsIGFsbG93SW52aXNpYmxlRWxlbWVudHM6IGZhbHNlfSxcbiAgICAgICAgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuICAgIC8vIGhhbmRsZSB3ZWJ2aWV3IG1lY2hhbmljcyBmcm9tIEFuZHJvaWREcml2ZXJcbiAgICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVycyA9IHt9O1xuXG4gICAgLy8gbWVtb2l6ZSBmdW5jdGlvbnMgaGVyZSwgc28gdGhhdCB0aGV5IGFyZSBkb25lIG9uIGEgcGVyLWluc3RhbmNlIGJhc2lzXG4gICAgZm9yIChjb25zdCBmbiBvZiBNRU1PSVpFRF9GVU5DVElPTlMpIHtcbiAgICAgIHRoaXNbZm5dID0gXy5tZW1vaXplKHRoaXNbZm5dKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZURlc2lyZWRDYXBzIChjYXBzKSB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlRGVzaXJlZENhcHMoY2FwcykgJiYgYW5kcm9pZEhlbHBlcnMudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVE9ETyBoYW5kbGUgb3RoZXJTZXNzaW9uRGF0YSBmb3IgbXVsdGlwbGUgc2Vzc2lvbnNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG5cbiAgICAgIGxldCBzZXJ2ZXJEZXRhaWxzID0ge1xuICAgICAgICBwbGF0Zm9ybTogJ0xJTlVYJyxcbiAgICAgICAgd2ViU3RvcmFnZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0YWtlc1NjcmVlbnNob3Q6IHRydWUsXG4gICAgICAgIGphdmFzY3JpcHRFbmFibGVkOiB0cnVlLFxuICAgICAgICBkYXRhYmFzZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBuZXR3b3JrQ29ubmVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGxvY2F0aW9uQ29udGV4dEVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICB3YXJuaW5nczoge30sXG4gICAgICAgIGRlc2lyZWQ6IHRoaXMuY2FwcyxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcblxuICAgICAgbGV0IGRlZmF1bHRPcHRzID0ge1xuICAgICAgICBmdWxsUmVzZXQ6IGZhbHNlLFxuICAgICAgICBhdXRvTGF1bmNoOiB0cnVlLFxuICAgICAgICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwXG4gICAgICB9O1xuICAgICAgXy5kZWZhdWx0cyh0aGlzLm9wdHMsIGRlZmF1bHRPcHRzKTtcblxuICAgICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oXCJXZSdyZSBnb2luZyB0byBydW4gYSBDaHJvbWUtYmFzZWQgc2Vzc2lvblwiKTtcbiAgICAgICAgbGV0IHtwa2csIGFjdGl2aXR5fSA9IGhlbHBlcnMuZ2V0Q2hyb21lUGtnKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gICAgICAgIHRoaXMub3B0cy5hcHBQYWNrYWdlID0gdGhpcy5jYXBzLmFwcFBhY2thZ2UgPSBwa2c7XG4gICAgICAgIHRoaXMub3B0cy5hcHBBY3Rpdml0eSA9IHRoaXMuY2Fwcy5hcHBBY3Rpdml0eSA9IGFjdGl2aXR5O1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBDaHJvbWUtdHlwZSBwYWNrYWdlIGFuZCBhY3Rpdml0eSBhcmUgJHtwa2d9IGFuZCAke2FjdGl2aXR5fWApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICB0aGlzLnNldEF2ZEZyb21DYXBhYmlsaXRpZXMoY2Fwcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICAgIC8vIGZpbmQgYW5kIGNvcHksIG9yIGRvd25sb2FkIGFuZCB1bnppcCBhbiBhcHAgdXJsIG9yIHBhdGhcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAodGhpcy5vcHRzLmFwcCwgW0FQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tBcHBQcmVzZW50KCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICAgIC8vIHRoZSBhcHAgaXNuJ3QgYW4gYWN0dWFsIGFwcCBmaWxlIGJ1dCByYXRoZXIgc29tZXRoaW5nIHdlIHdhbnQgdG9cbiAgICAgICAgLy8gYXNzdW1lIGlzIG9uIHRoZSBkZXZpY2UgYW5kIGp1c3QgbGF1bmNoIHZpYSB0aGUgYXBwUGFja2FnZVxuICAgICAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nIGRpcmVjdGx5IG9uIHRoZSBkZXZpY2VgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYE5laXRoZXIgJ2FwcCcgbm9yICdhcHBQYWNrYWdlJyB3YXMgc2V0LiBTdGFydGluZyBVaUF1dG9tYXRvcjIgYCArXG4gICAgICAgICAgJ3dpdGhvdXQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhpcy5vcHRzLmFkYlBvcnQgPSB0aGlzLm9wdHMuYWRiUG9ydCB8fCBERUZBVUxUX0FEQl9QT1JUO1xuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbigpO1xuICAgICAgYXdhaXQgdGhpcy5maWxsRGV2aWNlRGV0YWlscygpO1xuICAgICAgaWYgKHRoaXMub3B0cy5tanBlZ1NjcmVlbnNob3RVcmwpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgTUpQRUcgc3RyZWFtIHJlYWRpbmcgVVJMOiAnJHt0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsfSdgKTtcbiAgICAgICAgdGhpcy5tanBlZ1N0cmVhbSA9IG5ldyBtanBlZy5NSnBlZ1N0cmVhbSh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5zdGFydCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtzZXNzaW9uSWQsIHRoaXMuY2Fwc107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbGxEZXZpY2VEZXRhaWxzICgpIHtcbiAgICB0aGlzLmNhcHMucGl4ZWxSYXRpbyA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlUGl4ZWxSYXRpbygpO1xuICAgIHRoaXMuY2Fwcy5zdGF0QmFySGVpZ2h0ID0gYXdhaXQgdGhpcy5nZXRTdGF0dXNCYXJIZWlnaHQoKTtcbiAgICB0aGlzLmNhcHMudmlld3BvcnRSZWN0ID0gYXdhaXQgdGhpcy5nZXRWaWV3UG9ydFJlY3QoKTtcbiAgfVxuXG4gIGdldCBkcml2ZXJEYXRhICgpIHtcbiAgICAvLyBUT0RPIGZpbGwgb3V0IHJlc291cmNlIGluZm8gaGVyZVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlc3Npb24gKCkge1xuICAgIGxldCBzZXNzaW9uRGF0YSA9IGF3YWl0IHN1cGVyLmdldFNlc3Npb24oKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnR2V0dGluZyBzZXNzaW9uIGRldGFpbHMgZnJvbSBzZXJ2ZXIgdG8gbWl4IGluJyk7XG4gICAgbGV0IHVpYTJEYXRhID0gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvJywgJ0dFVCcsIHt9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc2Vzc2lvbkRhdGEsIHVpYTJEYXRhKTtcbiAgfVxuXG4gIGlzRW11bGF0b3IgKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzRW11bGF0b3IodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gIH1cblxuICBzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIChjYXBzKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdmQpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ2F2ZCBuYW1lIGRlZmluZWQsIGlnbm9yaW5nIGRldmljZSBuYW1lIGFuZCBwbGF0Zm9ybSB2ZXJzaW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2Fwcy5kZXZpY2VOYW1lKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBkZXZpY2VOYW1lIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZXMnKTtcbiAgICAgIH1cbiAgICAgIGlmICghY2Fwcy5wbGF0Zm9ybVZlcnNpb24pIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIHBsYXRmb3JtVmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVkJyk7XG4gICAgICB9XG4gICAgICBsZXQgYXZkRGV2aWNlID0gY2Fwcy5kZXZpY2VOYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Xy5dL2csICctJyk7XG4gICAgICB0aGlzLm9wdHMuYXZkID0gYCR7YXZkRGV2aWNlfV9fJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn1gO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFsbG9jYXRlU3lzdGVtUG9ydCAoKSB7XG4gICAgY29uc3QgZm9yd2FyZFBvcnQgPSBhc3luYyAobG9jYWxQb3J0KSA9PiB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgRm9yd2FyZGluZyBVaUF1dG9tYXRvcjIgU2VydmVyIHBvcnQgJHtERVZJQ0VfUE9SVH0gdG8gbG9jYWwgcG9ydCAke2xvY2FsUG9ydH1gKTtcbiAgICAgIGlmICgoYXdhaXQgY2hlY2tQb3J0U3RhdHVzKGxvY2FsUG9ydCwgTE9DQUxIT1NUX0lQNCkpID09PSAnb3BlbicpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVWlBdXRvbWF0b3IyIFNlcnZlciBjYW5ub3Qgc3RhcnQgYmVjYXVzZSB0aGUgbG9jYWwgcG9ydCAjJHtsb2NhbFBvcnR9IGlzIGJ1c3kuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgdGhlIHBvcnQgeW91IHByb3ZpZGUgdmlhICdzeXN0ZW1Qb3J0JyBjYXBhYmlsaXR5IGlzIG5vdCBvY2N1cGllZC4gYCArXG4gICAgICAgICAgYFRoaXMgc2l0dWF0aW9uIG1pZ2h0IG9mdGVuIGJlIGEgcmVzdWx0IG9mIGFuIGluYWNjdXJhdGUgc2Vzc2lvbnMgbWFuYWdlbWVudCwgZS5nLiBgICtcbiAgICAgICAgICBgb2xkIGF1dG9tYXRpb24gc2Vzc2lvbnMgb24gdGhlIHNhbWUgZGV2aWNlIG11c3QgYWx3YXlzIGJlIGNsb3NlZCBiZWZvcmUgc3RhcnRpbmcgbmV3IG9uZXMuYCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5mb3J3YXJkUG9ydChsb2NhbFBvcnQsIERFVklDRV9QT1JUKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5zeXN0ZW1Qb3J0KSB7XG4gICAgICB0aGlzLl9oYXNTeXN0ZW1Qb3J0SW5DYXBzID0gdHJ1ZTtcbiAgICAgIHJldHVybiBhd2FpdCBmb3J3YXJkUG9ydCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfVxuXG4gICAgYXdhaXQgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IERFVklDRV9QT1JUX1JBTkdFO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5vcHRzLnN5c3RlbVBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShzdGFydFBvcnQsIGVuZFBvcnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KFxuICAgICAgICAgIGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fX0uIGAgK1xuICAgICAgICAgIGBQbGVhc2Ugc2V0IHRoZSBhdmFpbGFibGUgcG9ydCBudW1iZXIgYnkgcHJvdmlkaW5nIHRoZSBzeXN0ZW1Qb3J0IGNhcGFiaWxpdHkgb3IgYCArXG4gICAgICAgICAgYGRvdWJsZSBjaGVjayB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlIGxvY2tpbmcgcG9ydHMgd2l0aGluIHRoaXMgcmFuZ2UgYW5kIHRlcm1pbmF0ZSBgICtcbiAgICAgICAgICBgdGhlc2Ugd2hpY2ggYXJlIG5vdCBuZWVkZWQgYW55bW9yZWApO1xuICAgICAgfVxuICAgICAgYXdhaXQgZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVsZWFzZVN5c3RlbVBvcnQgKCkge1xuICAgIGlmICghdGhpcy5vcHRzLnN5c3RlbVBvcnQgfHwgIXRoaXMuYWRiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hhc1N5c3RlbVBvcnRJbkNhcHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRChhc3luYyAoKSA9PiBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCkpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0ICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCwgTUpQRUdfU0VSVkVSX0RFVklDRV9QT1JUKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0ICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLm1qcGVnU2VydmVyUG9ydCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRVaUF1dG9tYXRvcjJTZXNzaW9uICgpIHtcbiAgICAvLyBnZXQgZGV2aWNlIHVkaWQgZm9yIHRoaXMgc2Vzc2lvblxuICAgIGxldCB7dWRpZCwgZW1Qb3J0fSA9IGF3YWl0IGhlbHBlcnMuZ2V0RGV2aWNlSW5mb0Zyb21DYXBzKHRoaXMub3B0cyk7XG4gICAgdGhpcy5vcHRzLnVkaWQgPSB1ZGlkO1xuICAgIHRoaXMub3B0cy5lbVBvcnQgPSBlbVBvcnQ7XG5cbiAgICAvLyBub3cgdGhhdCB3ZSBrbm93IG91ciBqYXZhIHZlcnNpb24gYW5kIGRldmljZSBpbmZvLCB3ZSBjYW4gY3JlYXRlIG91clxuICAgIC8vIEFEQiBpbnN0YW5jZVxuICAgIHRoaXMuYWRiID0gYXdhaXQgYW5kcm9pZEhlbHBlcnMuY3JlYXRlQURCKHRoaXMub3B0cyk7XG5cbiAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG5cbiAgICBpZiAoYXBpTGV2ZWwgPCAyMSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVUlBdXRvbWF0b3IyIGlzIG9ubHkgc3VwcG9ydGVkIHNpbmNlIEFuZHJvaWQgNS4wIChMb2xsaXBvcCkuICcgK1xuICAgICAgICAnWW91IGNvdWxkIHN0aWxsIHVzZSBvdGhlciBzdXBwb3J0ZWQgYmFja2VuZHMgaW4gb3JkZXIgdG8gYXV0b21hdGUgb2xkZXIgQW5kcm9pZCB2ZXJzaW9ucy4nKTtcbiAgICB9XG5cbiAgICBpZiAoYXBpTGV2ZWwgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICB0aGlzLmxvZy5pbmZvKCdSZWxheGluZyBoaWRkZW4gYXBpIHBvbGljeScpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SGlkZGVuQXBpUG9saWN5KCcxJywgISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgdG8gZW5hYmxlL2Rpc2FibGUgZ3BzIGJlZm9yZSBydW5uaW5nIHRoZSBhcHBsaWNhdGlvblxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5ncHNFbmFibGVkKSkge1xuICAgICAgaWYgKHRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFRyeWluZyB0byAke3RoaXMub3B0cy5ncHNFbmFibGVkID8gJ2VuYWJsZScgOiAnZGlzYWJsZSd9IGdwcyBsb2NhdGlvbiBwcm92aWRlcmApO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi50b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyKHRoaXMub3B0cy5ncHNFbmFibGVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFNvcnJ5ISAnZ3BzRW5hYmxlZCcgY2FwYWJpbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZ2V0IGFwcFBhY2thZ2UgZXQgYWwgZnJvbSBtYW5pZmVzdCBpZiBuZWNlc3NhcnlcbiAgICBjb25zdCBhcHBJbmZvID0gYXdhaXQgaGVscGVycy5nZXRMYXVuY2hJbmZvKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIC8vIGFuZCBnZXQgaXQgb250byBvdXIgJ29wdHMnIG9iamVjdCBzbyB3ZSB1c2UgaXQgZnJvbSBub3cgb25cbiAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0cywgYXBwSW5mbyB8fCB7fSk7XG5cbiAgICAvLyBzZXQgYWN0dWFsIGRldmljZSBuYW1lLCB1ZGlkLCBwbGF0Zm9ybSB2ZXJzaW9uLCBzY3JlZW4gc2l6ZSwgc2NyZWVuIGRlbnNpdHksIG1vZGVsIGFuZCBtYW51ZmFjdHVyZXIgZGV0YWlsc1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VOYW1lID0gdGhpcy5hZGIuY3VyRGV2aWNlSWQ7XG4gICAgdGhpcy5jYXBzLmRldmljZVVESUQgPSB0aGlzLm9wdHMudWRpZDtcblxuICAgIC8vIHN0YXJ0IGFuIGF2ZCwgc2V0IHRoZSBsYW5ndWFnZS9sb2NhbGUsIHBpY2sgYW4gZW11bGF0b3IsIGV0Yy4uLlxuICAgIC8vIFRPRE8gd2l0aCBtdWx0aXBsZSBkZXZpY2VzIHdlJ2xsIG5lZWQgdG8gcGFyYW1ldGVyaXplIHRoaXNcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBhd2FpdCBoZWxwZXJzLmluaXREZXZpY2UodGhpcy5hZGIsIHRoaXMub3B0cyk7XG5cbiAgICAvLyBQcmVwYXJlIHRoZSBkZXZpY2UgYnkgZm9yd2FyZGluZyB0aGUgVWlBdXRvbWF0b3IyIHBvcnRcbiAgICAvLyBUaGlzIGNhbGwgbXV0YXRlcyB0aGlzLm9wdHMuc3lzdGVtUG9ydCBpZiBpdCBpcyBub3Qgc2V0IGV4cGxpY2l0bHlcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlU3lzdGVtUG9ydCgpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgZGV2aWNlIGJ5IGZvcndhcmRpbmcgdGhlIFVpQXV0b21hdG9yMiBNSlBFRyBzZXJ2ZXIgcG9ydCAoaWZcbiAgICAvLyBhcHBsaWNhYmxlKVxuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQoKTtcblxuICAgIC8vIHNldCB1cCB0aGUgbW9kaWZpZWQgVWlBdXRvbWF0b3IyIHNlcnZlciBldGNcbiAgICBhd2FpdCB0aGlzLmluaXRVaUF1dG9tYXRvcjJTZXJ2ZXIoKTtcblxuICAgIC8vIFNob3VsZCBiZSBhZnRlciBpbnN0YWxsaW5nIGlvLmFwcGl1bS5zZXR0aW5ncyBpbiBoZWxwZXJzLmluaXREZXZpY2VcbiAgICBpZiAodGhpcy5vcHRzLmRpc2FibGVXaW5kb3dBbmltYXRpb24gJiYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCAyNikpIHsgLy8gQVBJIGxldmVsIDI2IGlzIEFuZHJvaWQgOC4wLlxuICAgICAgLy8gR3JhbnRpbmcgYW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9BTklNQVRJT05fU0NBTEUgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhbmltYXRpb25zIHVuZGVyIEFQSSBsZXZlbCAyNlxuICAgICAgLy8gUmVhZCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9wdWxsLzExNjQwI2lzc3VlY29tbWVudC00MzgyNjA0NzdcbiAgICAgIC8vIGAtLW5vLXdpbmRvdy1hbmltYXRpb25gIHdvcmtzIG92ZXIgQW5kcm9pZCA4IHRvIGRpc2FibGUgYWxsIG9mIGFuaW1hdGlvbnNcbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FuaW1hdGlvbk9uKCkpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnRGlzYWJsaW5nIGFuaW1hdGlvbiB2aWEgaW8uYXBwaXVtLnNldHRpbmdzJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnV2luZG93IGFuaW1hdGlvbiBpcyBhbHJlYWR5IGRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHVwIGFwcCB1bmRlciB0ZXN0XG4gICAgLy8gcHJlcGFyZSBvdXIgYWN0dWFsIEFVVCwgZ2V0IGl0IG9uIHRoZSBkZXZpY2UsIGV0Yy4uLlxuICAgIGF3YWl0IHRoaXMuaW5pdEFVVCgpO1xuXG4gICAgLy8gQWRkaW5nIEFVVCBwYWNrYWdlIG5hbWUgaW4gdGhlIGNhcGFiaWxpdGllcyBpZiBwYWNrYWdlIG5hbWUgbm90IGV4aXN0IGluIGNhcHNcbiAgICBpZiAoIXRoaXMuY2Fwcy5hcHBQYWNrYWdlICYmIGFwcEluZm8pIHtcbiAgICAgIHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gYXBwSW5mby5hcHBQYWNrYWdlO1xuICAgIH1cblxuICAgIC8vIGxhdW5jaCBVaUF1dG9tYXRvcjIgYW5kIHdhaXQgdGlsbCBpdHMgb25saW5lIGFuZCB3ZSBoYXZlIGEgc2Vzc2lvblxuICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLnN0YXJ0U2Vzc2lvbih0aGlzLmNhcHMpO1xuXG4gICAgYXdhaXQgdGhpcy5hZGREZXZpY2VJbmZvVG9DYXBzKCk7XG5cbiAgICAvLyBVbmxvY2sgdGhlIGRldmljZSBhZnRlciB0aGUgc2Vzc2lvbiBpcyBzdGFydGVkLlxuICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmxvY2spIHtcbiAgICAgIC8vIHVubG9jayB0aGUgZGV2aWNlIHRvIHByZXBhcmUgaXQgZm9yIHRlc3RpbmdcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5sb2NrKHRoaXMsIHRoaXMuYWRiLCB0aGlzLmNhcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ3NraXBVbmxvY2snIGNhcGFiaWxpdHkgc2V0LCBzbyBza2lwcGluZyBkZXZpY2UgdW5sb2NrYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDaHJvbWVTZXNzaW9uKSB7IC8vIHN0YXJ0IGEgY2hyb21lZHJpdmVyIHNlc3Npb25cbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVTZXNzaW9uKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLmF1dG9MYXVuY2ggJiYgdGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgIGF3YWl0IHRoaXMuZW5zdXJlQXBwU3RhcnRzKCk7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIGluaXRpYWwgb3JpZW50YXRpb24gaXMgcmVxdWVzdGVkLCBzZXQgaXRcbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMub3JpZW50YXRpb24pKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBpbml0aWFsIG9yaWVudGF0aW9uIHRvICcke3RoaXMub3B0cy5vcmllbnRhdGlvbn0nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldE9yaWVudGF0aW9uKHRoaXMub3B0cy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgLy8gaWYgd2Ugd2FudCB0byBpbW1lZGlhdGVseSBnZXQgaW50byBhIHdlYnZpZXcsIHNldCBvdXIgY29udGV4dFxuICAgIC8vIGFwcHJvcHJpYXRlbHlcbiAgICBpZiAodGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBjb25zdCB2aWV3TmFtZSA9IHRoaXMuZGVmYXVsdFdlYnZpZXdOYW1lKCk7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5vcHRzLmF1dG9XZWJ2aWV3VGltZW91dCB8fCAyMDAwO1xuICAgICAgdGhpcy5sb2cuaW5mbyhgU2V0dGluZyBhdXRvIHdlYnZpZXcgdG8gY29udGV4dCAnJHt2aWV3TmFtZX0nIHdpdGggdGltZW91dCAke3RpbWVvdXR9bXNgKTtcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwodGltZW91dCAvIDUwMCwgNTAwLCB0aGlzLnNldENvbnRleHQuYmluZCh0aGlzKSwgdmlld05hbWUpO1xuICAgIH1cblxuICAgIC8vIG5vdyB0aGF0IGV2ZXJ5dGhpbmcgaGFzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCB0dXJuIG9uIHByb3h5aW5nIHNvIGFsbFxuICAgIC8vIHN1YnNlcXVlbnQgc2Vzc2lvbiByZXF1ZXN0cyBnbyBzdHJhaWdodCB0by9mcm9tIHVpYXV0b21hdG9yMlxuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgYXN5bmMgYWRkRGV2aWNlSW5mb1RvQ2FwcyAoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIG1hbnVmYWN0dXJlcixcbiAgICAgIG1vZGVsLFxuICAgICAgcmVhbERpc3BsYXlTaXplLFxuICAgICAgZGlzcGxheURlbnNpdHksXG4gICAgfSA9IGF3YWl0IHRoaXMubW9iaWxlR2V0RGV2aWNlSW5mbygpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VBcGlMZXZlbCA9IHBhcnNlSW50KGFwaVZlcnNpb24sIDEwKTtcbiAgICB0aGlzLmNhcHMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5TaXplID0gcmVhbERpc3BsYXlTaXplO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5EZW5zaXR5ID0gZGlzcGxheURlbnNpdHk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1vZGVsID0gbW9kZWw7XG4gICAgdGhpcy5jYXBzLmRldmljZU1hbnVmYWN0dXJlciA9IG1hbnVmYWN0dXJlcjtcbiAgfVxuXG4gIGFzeW5jIGluaXRVaUF1dG9tYXRvcjJTZXJ2ZXIgKCkge1xuICAgIC8vIGJyb2tlbiBvdXQgZm9yIHJlYWRhYmlsaXR5XG4gICAgY29uc3QgdWlhdXRvbWF0b3IyT3B0cyA9IHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0cy5yZW1vdGVBZGJIb3N0IHx8IHRoaXMub3B0cy5ob3N0IHx8IExPQ0FMSE9TVF9JUDQsXG4gICAgICBzeXN0ZW1Qb3J0OiB0aGlzLm9wdHMuc3lzdGVtUG9ydCxcbiAgICAgIGRldmljZVBvcnQ6IERFVklDRV9QT1JULFxuICAgICAgYWRiOiB0aGlzLmFkYixcbiAgICAgIGFwazogdGhpcy5vcHRzLmFwcCxcbiAgICAgIHRtcERpcjogdGhpcy5vcHRzLnRtcERpcixcbiAgICAgIGFwcFBhY2thZ2U6IHRoaXMub3B0cy5hcHBQYWNrYWdlLFxuICAgICAgYXBwQWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgIGRpc2FibGVXaW5kb3dBbmltYXRpb246ICEhdGhpcy5vcHRzLmRpc2FibGVXaW5kb3dBbmltYXRpb24sXG4gICAgICBkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZTogdGhpcy5vcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlLFxuICAgICAgcmVhZFRpbWVvdXQ6IHRoaXMub3B0cy51aWF1dG9tYXRvcjJTZXJ2ZXJSZWFkVGltZW91dCxcbiAgICB9O1xuICAgIC8vIG5vdyB0aGF0IHdlIGhhdmUgcGFja2FnZSBhbmQgYWN0aXZpdHksIHdlIGNhbiBjcmVhdGUgYW4gaW5zdGFuY2Ugb2ZcbiAgICAvLyB1aWF1dG9tYXRvcjIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uc1xuICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbmV3IFVpQXV0b21hdG9yMlNlcnZlcih0aGlzLmxvZywgdWlhdXRvbWF0b3IyT3B0cyk7XG4gICAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5UmVxUmVzLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuICAgIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy51aWF1dG9tYXRvcjIucHJveHlDb21tYW5kLmJpbmQodGhpcy51aWF1dG9tYXRvcjIpO1xuXG4gICAgaWYgKHRoaXMub3B0cy5za2lwU2VydmVySW5zdGFsbGF0aW9uKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAnc2tpcFNlcnZlckluc3RhbGxhdGlvbicgaXMgc2V0LiBTa2lwcGluZyBVSUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGxhdGlvbi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuaW5zdGFsbFNlcnZlckFwayh0aGlzLm9wdHMudWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0KFxuICAgICAgICAgIFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lELFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgYWRkIHNlcnZlciBwYWNrYWdlcyB0byB0aGUgRG96ZSB3aGl0ZWxpc3QuIE9yaWdpbmFsIGVycm9yOiBgICtcbiAgICAgICAgICAoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdEFVVCAoKSB7XG4gICAgLy8gVW5pbnN0YWxsIGFueSB1bmluc3RhbGxPdGhlclBhY2thZ2VzIHdoaWNoIHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpIHtcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyhcbiAgICAgICAgdGhpcy5hZGIsXG4gICAgICAgIGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyksXG4gICAgICAgIFtTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBTRVJWRVJfUEFDS0FHRV9JRCwgU0VSVkVSX1RFU1RfUEFDS0FHRV9JRF1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gSW5zdGFsbCBhbnkgXCJvdGhlckFwcHNcIiB0aGF0IHdlcmUgc3BlY2lmaWVkIGluIGNhcHNcbiAgICBpZiAodGhpcy5vcHRzLm90aGVyQXBwcykge1xuICAgICAgbGV0IG90aGVyQXBwcztcbiAgICAgIHRyeSB7XG4gICAgICAgIG90aGVyQXBwcyA9IGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMub3RoZXJBcHBzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IHBhcnNlIFwib3RoZXJBcHBzXCIgY2FwYWJpbGl0eTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBvdGhlckFwcHMgPSBhd2FpdCBCLmFsbChvdGhlckFwcHNcbiAgICAgICAgLm1hcCgoYXBwKSA9PiB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKGFwcCwgW0FQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OXSkpKTtcbiAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbE90aGVyQXBrcyhvdGhlckFwcHMsIHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLm5vUmVzZXQgJiYgIShhd2FpdCB0aGlzLmFkYi5pc0FwcEluc3RhbGxlZCh0aGlzLm9wdHMuYXBwUGFja2FnZSkpXG4gICAgICAgICAgfHwgIXRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRzLm5vU2lnbiAmJiAhYXdhaXQgdGhpcy5hZGIuY2hlY2tBcGtDZXJ0KHRoaXMub3B0cy5hcHAsIHRoaXMub3B0cy5hcHBQYWNrYWdlLCB7XG4gICAgICAgICAgcmVxdWlyZURlZmF1bHRDZXJ0OiBmYWxzZSxcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICBhd2FpdCBoZWxwZXJzLnNpZ25BcHAodGhpcy5hZGIsIHRoaXMub3B0cy5hcHApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5vcHRzLnNraXBVbmluc3RhbGwpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbEFwayh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdub1Jlc2V0IGhhcyBiZWVuIHJlcXVlc3RlZCBhbmQgdGhlIGFwcCBpcyBhbHJlYWR5IGluc3RhbGxlZC4gRG9pbmcgbm90aGluZycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGdWxsIHJlc2V0IHJlcXVpcmVzIGFuIGFwcCBjYXBhYmlsaXR5LCB1c2UgZmFzdFJlc2V0IGlmIGFwcCBpcyBub3QgcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBhcHAgY2FwYWJpbGl0eS4gQXNzdW1pbmcgaXQgaXMgYWxyZWFkeSBvbiB0aGUgZGV2aWNlJyk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZhc3RSZXNldCAmJiB0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICBhd2FpdCBoZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGVuc3VyZUFwcFN0YXJ0cyAoKSB7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYWN0aXZpdHkgYW5kIHBhY2thZ2UgdG8gd2FpdCBmb3JcbiAgICBjb25zdCBhcHBXYWl0UGFja2FnZSA9IHRoaXMub3B0cy5hcHBXYWl0UGFja2FnZSB8fCB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbiAgICBjb25zdCBhcHBXYWl0QWN0aXZpdHkgPSB0aGlzLm9wdHMuYXBwV2FpdEFjdGl2aXR5IHx8IHRoaXMub3B0cy5hcHBBY3Rpdml0eTtcblxuICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nICcke3RoaXMub3B0cy5hcHBQYWNrYWdlfS8ke3RoaXMub3B0cy5hcHBBY3Rpdml0eX0gYCArXG4gICAgICBgYW5kIHdhaXRpbmcgZm9yICcke2FwcFdhaXRQYWNrYWdlfS8ke2FwcFdhaXRBY3Rpdml0eX0nYCk7XG5cbiAgICBpZiAodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgYW5kcm9pZENvdmVyYWdlIGlzIGNvbmZpZ3VyZWQuIGAgK1xuICAgICAgICBgIFN0YXJ0aW5nIGluc3RydW1lbnRhdGlvbiBvZiAnJHt0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlfScuLi5gKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmFuZHJvaWRDb3ZlcmFnZSh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlLCBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc3RhcnRBcHAoe1xuICAgICAgICBwa2c6IHRoaXMub3B0cy5hcHBQYWNrYWdlLFxuICAgICAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgICAgICBhY3Rpb246IHRoaXMub3B0cy5pbnRlbnRBY3Rpb24gfHwgJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJyxcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSB8fCAnYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVInLFxuICAgICAgICBmbGFnczogdGhpcy5vcHRzLmludGVudEZsYWdzIHx8ICcweDEwMjAwMDAwJywgLy8gRkxBR19BQ1RJVklUWV9ORVdfVEFTSyB8IEZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERURcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6ICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0LFxuICAgICAgICByZXRyeTogdHJ1ZSxcbiAgICAgICAgdXNlcjogdGhpcy5vcHRzLnVzZXJQcm9maWxlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnRGVsZXRpbmcgVWlBdXRvbWF0b3IyIHNlc3Npb24nKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3BSZWNvcmRpbmdTY3JlZW4oKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgICBhd2FpdCBhbmRyb2lkSGVscGVycy5yZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnModGhpcy5zZXJ2ZXIsIHRoaXMuc2Vzc2lvbklkKTtcblxuICAgIGF3YWl0IHRoaXMubW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZygpO1xuXG4gICAgaWYgKHRoaXMudWlhdXRvbWF0b3IyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3BDaHJvbWVkcml2ZXJQcm94aWVzKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHN0b3AgQ2hyb21lRHJpdmVyIHByb3hpZXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5qd3BQcm94eUFjdGl2ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHByb3h5IGRlbGV0ZVNlc3Npb24gdG8gVWlBdXRvbWF0b3IyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmFkYikge1xuICAgICAgaWYgKHRoaXMub3B0cy51bmljb2RlS2V5Ym9hcmQgJiYgdGhpcy5vcHRzLnJlc2V0S2V5Ym9hcmQgJiYgdGhpcy5kZWZhdWx0SU1FKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBSZXNldHRpbmcgSU1FIHRvICcke3RoaXMuZGVmYXVsdElNRX0nYCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0SU1FKHRoaXMuZGVmYXVsdElNRSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZXNldCBJTUU6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1NodXR0aW5nIGRvd24gdGhlIGFkYiBwcm9jZXNzIG9mIGluc3RydW1lbnRhdGlvbi4uLicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5lbmRBbmRyb2lkQ292ZXJhZ2UoKTtcbiAgICAgICAgLy8gVXNlIHRoaXMgYnJvYWRjYXN0IGludGVudCB0byBub3RpZnkgaXQncyB0aW1lIHRvIGR1bXAgY292ZXJhZ2UgdG8gZmlsZVxuICAgICAgICBpZiAodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oYFNlbmRpbmcgaW50ZW50IGJyb2FkY2FzdCAnJHt0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50fScgYXQgdGhlIGVuZCBvZiBpbnN0cnVtZW50aW5nLmApO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmJyb2FkY2FzdCh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKCdObyBhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQgaXMgY29uZmlndXJlZCBpbiBjYXBzLiBQb3NzaWJseSB5b3UgY2Fubm90IGdldCBjb3ZlcmFnZSBmaWxlLicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2hyb21lU2Vzc2lvblxuICAgICAgICAgICAgJiYgIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXRcbiAgICAgICAgICAgICYmICF0aGlzLm9wdHMubm9SZXNldCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5mb3JjZVN0b3AodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIGZvcmNlIHN0b3AgYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLnNraXBVbmluc3RhbGwpIHtcbiAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2FwYWJpbGl0eSAnZnVsbFJlc2V0JyBzZXQgdG8gJ3RydWUnLCBVbmluc3RhbGxpbmcgJyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9J2ApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHVuaW5zdGFsbCBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBUaGlzIHZhbHVlIGNhbiBiZSB0cnVlIGlmIHRlc3QgdGFyZ2V0IGRldmljZSBpcyA8PSAyNlxuICAgICAgaWYgKHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyB3aW5kb3cgYW5pbWF0aW9uIHN0YXRlJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKHRydWUpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGIuc3RvcExvZ2NhdCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWxlYXNlU3lzdGVtUG9ydCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlbW92ZSBzeXN0ZW0gcG9ydCBmb3J3YXJkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIC8vIElnbm9yZSwgdGhpcyBibG9jayB3aWxsIGFsc28gYmUgY2FsbGVkIHdoZW4gd2UgZmFsbCBpbiBjYXRjaCBibG9ja1xuICAgICAgICAvLyBhbmQgYmVmb3JlIGV2ZW4gcG9ydCBmb3J3YXJkLlxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVtb3ZlIE1KUEVHIHNlcnZlciBwb3J0IGZvcndhcmQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgLy8gSWdub3JlLCB0aGlzIGJsb2NrIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbiB3ZSBmYWxsIGluIGNhdGNoIGJsb2NrXG4gICAgICAgIC8vIGFuZCBiZWZvcmUgZXZlbiBwb3J0IGZvcndhcmQuXG4gICAgICB9XG5cbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpID49IDI4KSB7IC8vIEFuZHJvaWQgUFxuICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3JpbmcgaGlkZGVuIGFwaSBwb2xpY3kgdG8gdGhlIGRldmljZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSghIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICAgIGxldCBhdmROYW1lID0gdGhpcy5vcHRzLmF2ZC5yZXBsYWNlKCdAJywgJycpO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ2xvc2luZyBlbXVsYXRvciAnJHthdmROYW1lfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5raWxsRW11bGF0b3IoYXZkTmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byBjbG9zZSBlbXVsYXRvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5tanBlZ1N0cmVhbSkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnQ2xvc2luZyBNSlBFRyBzdHJlYW0nKTtcbiAgICAgIHRoaXMubWpwZWdTdHJlYW0uc3RvcCgpO1xuICAgIH1cbiAgICBhd2FpdCBzdXBlci5kZWxldGVTZXNzaW9uKCk7XG4gIH1cblxuICBhc3luYyBjaGVja0FwcFByZXNlbnQgKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdDaGVja2luZyB3aGV0aGVyIGFwcCBpcyBhY3R1YWxseSBwcmVzZW50Jyk7XG4gICAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHRoaXMub3B0cy5hcHApKSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGZpbmQgYXBwIGFwayBhdCAnJHt0aGlzLm9wdHMuYXBwfSdgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNldHRpbmdzVXBkYXRlICgpIHtcbiAgICAvLyBpbnRlbnRpb25hbGx5IGRvIG5vdGhpbmcgaGVyZSwgc2luY2UgY29tbWFuZHMudXBkYXRlU2V0dGluZ3MgcHJveGllc1xuICAgIC8vIHNldHRpbmdzIHRvIHRoZSB1aWF1dG8yIHNlcnZlciBhbHJlYWR5XG4gIH1cblxuICAvLyBOZWVkIHRvIG92ZXJyaWRlIGFuZHJvaWQtZHJpdmVyJ3MgdmVyc2lvbiBvZiB0aGlzIHNpbmNlIHdlIGRvbid0IGFjdHVhbGx5XG4gIC8vIGhhdmUgYSBib290c3RyYXA7IGluc3RlYWQgd2UganVzdCByZXN0YXJ0IGFkYiBhbmQgcmUtZm9yd2FyZCB0aGUgVWlBdXRvbWF0b3IyXG4gIC8vIHBvcnRcbiAgYXN5bmMgd3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgKHdyYXBwZWQpIHtcbiAgICBhd2FpdCB3cmFwcGVkKCk7XG4gICAgYXdhaXQgdGhpcy5hZGIucmVzdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuYWxsb2NhdGVTeXN0ZW1Qb3J0KCk7XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZU1qcGVnU2VydmVyUG9ydCgpO1xuICB9XG5cbiAgcHJveHlBY3RpdmUgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLnByb3h5QWN0aXZlKHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBhbHdheXMgaGF2ZSBhbiBhY3RpdmUgcHJveHkgdG8gdGhlIFVpQXV0b21hdG9yMiBzZXJ2ZXJcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNhblByb3h5IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5jYW5Qcm94eShzZXNzaW9uSWQpO1xuXG4gICAgLy8gd2UgY2FuIGFsd2F5cyBwcm94eSB0byB0aGUgdWlhdXRvbWF0b3IyIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmdldFByb3h5QXZvaWRMaXN0KHNlc3Npb25JZCk7XG4gICAgLy8gd2UgYXJlIG1haW50YWluaW5nIHR3byBzZXRzIG9mIE5PX1BST1hZIGxpc3RzLCBvbmUgZm9yIGNocm9tZWRyaXZlcihDSFJPTUVfTk9fUFJPWFkpXG4gICAgLy8gYW5kIG9uZSBmb3IgdWlhdXRvbWF0b3IyKE5PX1BST1hZKSwgYmFzZWQgb24gY3VycmVudCBjb250ZXh0IHdpbGwgcmV0dXJuIHJlbGF0ZWQgTk9fUFJPWFkgbGlzdFxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMuY2hyb21lZHJpdmVyKSkge1xuICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgY29udGV4dCBpcyB3ZWJ2aWV3KGNocm9tZWRyaXZlciksIHRoZW4gcmV0dXJuIENIUk9NRV9OT19QUk9YWSBsaXN0XG4gICAgICB0aGlzLmp3cFByb3h5QXZvaWQgPSBDSFJPTUVfTk9fUFJPWFk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuandwUHJveHlBdm9pZCA9IE5PX1BST1hZO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRzLm5hdGl2ZVdlYlNjcmVlbnNob3QpIHtcbiAgICAgIHRoaXMuandwUHJveHlBdm9pZCA9IFsuLi50aGlzLmp3cFByb3h5QXZvaWQsIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NjcmVlbnNob3QnKV1dO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmp3cFByb3h5QXZvaWQ7XG4gIH1cblxuICBnZXQgaXNDaHJvbWVTZXNzaW9uICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0Nocm9tZUJyb3dzZXIodGhpcy5vcHRzLmJyb3dzZXJOYW1lKTtcbiAgfVxufVxuXG4vLyBmaXJzdCBhZGQgdGhlIGFuZHJvaWQtZHJpdmVyIGNvbW1hbmRzIHdoaWNoIHdlIHdpbGwgZmFsbCBiYWNrIHRvXG5mb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGFuZHJvaWRDb21tYW5kcykpIHtcbiAgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xufVxuXG4vLyB0aGVuIG92ZXJ3cml0ZSB3aXRoIGFueSB1aWF1dG9tYXRvcjItc3BlY2lmaWMgY29tbWFuZHNcbmZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoY29tbWFuZHMpKSB7XG4gIEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIucHJvdG90eXBlW2NtZF0gPSBmbjtcbn1cblxuZXhwb3J0IHsgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLGdCQUFsQixFQUF1Q0MsbUNBQXZDLENBQWhCO0FBSUEsTUFBTUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUExQjs7QUFJQSxNQUFNQyw0QkFBNEIsR0FBR0Ms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
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _path = _interopRequireDefault(require("path"));
13
13
 
14
- var _support = require("@appium/support");
14
+ var _support = require("appium/support");
15
15
 
16
16
  let helpers = {};
17
17
 
@@ -52,4 +52,4 @@ var _default = helpers;
52
52
  exports.default = _default;require('source-map-support').install();
53
53
 
54
54
 
55
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2hlbHBlcnMuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZW5zdXJlSW50ZXJuZXRQZXJtaXNzaW9uRm9yQXBwIiwiYWRiIiwiYXBwIiwiaGFzIiwiaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IiwibXNnIiwiRXJyb3IiLCJpc1dyaXRlYWJsZSIsImZpbGVQYXRoIiwiZnMiLCJhY2Nlc3MiLCJXX09LIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiY2xvc2UiLCJvcGVuIiwiaWduIiwic2lnbkFwcCIsImFwcFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInNpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBoZWxwZXJzID0ge307XG5cbmhlbHBlcnMuZW5zdXJlSW50ZXJuZXRQZXJtaXNzaW9uRm9yQXBwID0gYXN5bmMgZnVuY3Rpb24gKGFkYiwgYXBwKSB7XG4gIGxldCBoYXMgPSBhd2FpdCBhZGIuaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0KGFwcCk7XG4gIGlmIChoYXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG1zZyA9ICdZb3VyIGFwayBkb2VzIG5vdCBoYXZlIElOVEVSTkVUIHBlcm1pc3Npb25zLiBVaWF1dG9tYXRvcjIgbmVlZHMgJyArXG4gICAgICAgICAgICAndGhlIGludGVybmV0IHBlcm1pc3Npb24gdG8gcHJvY2VlZC4gUGxlYXNlIGNoZWNrIGlmIHlvdSBoYXZlICcgK1xuICAgICAgICAgICAgJzx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPVwiYW5kcm9pZC4qKnBlcm1pc3Npb24uSU5URVJORVRcIi8+JyArXG4gICAgICAgICAgICAnaW4geW91ciBBbmRyb2lkTWFuaWZlc3QueG1sJztcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59O1xuXG5oZWxwZXJzLmlzV3JpdGVhYmxlID0gYXN5bmMgZnVuY3Rpb24gaXNXcml0ZWFibGUgKGZpbGVQYXRoKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuYWNjZXNzKGZpbGVQYXRoLCBmcy5XX09LKTtcbiAgICBpZiAoc3lzdGVtLmlzV2luZG93cygpKSB7XG4gICAgICAvLyBPbiBvcGVyYXRpbmcgc3lzdGVtcywgd2hlcmUgYWNjZXNzLWNvbnRyb2wgcG9saWNpZXMgbWF5XG4gICAgICAvLyBsaW1pdCBhY2Nlc3MgdG8gdGhlIGZpbGUgc3lzdGVtLCBgZnMuYWNjZXNzYCBkb2VzIG5vdCB3b3JrXG4gICAgICAvLyBhcyBleHBlY3RlZC4gU2VlIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9ub2RlanMvcW1adEl3RFJTWW9cbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHNcbiAgICAgIGF3YWl0IGZzLmNsb3NlKGF3YWl0IGZzLm9wZW4oZmlsZVBhdGgsICdyKycpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuaGVscGVycy5zaWduQXBwID0gYXN5bmMgZnVuY3Rpb24gKGFkYiwgYXBwUGF0aCkge1xuICBpZiAoIWF3YWl0IHRoaXMuaXNXcml0ZWFibGUoYXBwUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHthcHBQYXRofScgaXMgbm90IHdyaXRlYWJsZS4gYCArXG4gICAgICBgUGxlYXNlIGdyYW50IHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoaXMgZmlsZSBvciB0byBpdHMgcGFyZW50IGZvbGRlciAnJHtwYXRoLmRpcm5hbWUoYXBwUGF0aCl9JyBgICtcbiAgICAgIGBmb3IgdGhlIEFwcGl1bSBwcm9jZXNzLCBzbyBpdCBjb3VsZCBzaWduIHRoZSBhcHBsaWNhdGlvbmApO1xuICB9XG4gIGF3YWl0IGFkYi5zaWduKGFwcFBhdGgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaGVscGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxJQUFJQSxPQUFPLEdBQUcsRUFBZDs7QUFFQUEsT0FBTyxDQUFDQyw4QkFBUixHQUF5QyxnQkFBZ0JDLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQjtFQUNqRSxJQUFJQyxHQUFHLEdBQUcsTUFBTUYsR0FBRyxDQUFDRyxpQ0FBSixDQUFzQ0YsR0FBdEMsQ0FBaEI7O0VBQ0EsSUFBSUMsR0FBSixFQUFTO0lBQ1A7RUFDRDs7RUFDRCxJQUFJRSxHQUFHLEdBQUcscUVBQ0EsK0RBREEsR0FFQSxpRUFGQSxHQUdBLDZCQUhWO0VBSUEsTUFBTSxJQUFJQyxLQUFKLENBQVVELEdBQVYsQ0FBTjtBQUNELENBVkQ7O0FBWUFOLE9BQU8sQ0FBQ1EsV0FBUixHQUFzQixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQztFQUMxRCxJQUFJO0lBQ0YsTUFBTUMsV0FBQSxDQUFHQyxNQUFILENBQVVGLFFBQVYsRUFBb0JDLFdBQUEsQ0FBR0UsSUFBdkIsQ0FBTjs7SUFDQSxJQUFJQyxlQUFBLENBQU9DLFNBQVAsRUFBSixFQUF3QjtNQUt0QixNQUFNSixXQUFBLENBQUdLLEtBQUgsQ0FBUyxNQUFNTCxXQUFBLENBQUdNLElBQUgsQ0FBUVAsUUFBUixFQUFrQixJQUFsQixDQUFmLENBQU47SUFDRDs7SUFDRCxPQUFPLElBQVA7RUFDRCxDQVZELENBVUUsT0FBT1EsR0FBUCxFQUFZO0lBQ1osT0FBTyxLQUFQO0VBQ0Q7QUFDRixDQWREOztBQWdCQWpCLE9BQU8sQ0FBQ2tCLE9BQVIsR0FBa0IsZ0JBQWdCaEIsR0FBaEIsRUFBcUJpQixPQUFyQixFQUE4QjtFQUM5QyxJQUFJLEVBQUMsTUFBTSxLQUFLWCxXQUFMLENBQWlCVyxPQUFqQixDQUFQLENBQUosRUFBc0M7SUFDcEMsTUFBTSxJQUFJWixLQUFKLENBQVcsdUJBQXNCWSxPQUFRLHNCQUEvQixHQUNiLHdFQUF1RUMsYUFBQSxDQUFLQyxPQUFMLENBQWFGLE9BQWIsQ0FBc0IsSUFEaEYsR0FFYiwwREFGRyxDQUFOO0VBR0Q7O0VBQ0QsTUFBTWpCLEdBQUcsQ0FBQ29CLElBQUosQ0FBU0gsT0FBVCxDQUFOO0FBQ0QsQ0FQRDs7ZUFTZW5CLE8ifQ==
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2hlbHBlcnMuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZW5zdXJlSW50ZXJuZXRQZXJtaXNzaW9uRm9yQXBwIiwiYWRiIiwiYXBwIiwiaGFzIiwiaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IiwibXNnIiwiRXJyb3IiLCJpc1dyaXRlYWJsZSIsImZpbGVQYXRoIiwiZnMiLCJhY2Nlc3MiLCJXX09LIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiY2xvc2UiLCJvcGVuIiwiaWduIiwic2lnbkFwcCIsImFwcFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInNpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cblxubGV0IGhlbHBlcnMgPSB7fTtcblxuaGVscGVycy5lbnN1cmVJbnRlcm5ldFBlcm1pc3Npb25Gb3JBcHAgPSBhc3luYyBmdW5jdGlvbiAoYWRiLCBhcHApIHtcbiAgbGV0IGhhcyA9IGF3YWl0IGFkYi5oYXNJbnRlcm5ldFBlcm1pc3Npb25Gcm9tTWFuaWZlc3QoYXBwKTtcbiAgaWYgKGhhcykge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbXNnID0gJ1lvdXIgYXBrIGRvZXMgbm90IGhhdmUgSU5URVJORVQgcGVybWlzc2lvbnMuIFVpYXV0b21hdG9yMiBuZWVkcyAnICtcbiAgICAgICAgICAgICd0aGUgaW50ZXJuZXQgcGVybWlzc2lvbiB0byBwcm9jZWVkLiBQbGVhc2UgY2hlY2sgaWYgeW91IGhhdmUgJyArXG4gICAgICAgICAgICAnPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9XCJhbmRyb2lkLioqcGVybWlzc2lvbi5JTlRFUk5FVFwiLz4nICtcbiAgICAgICAgICAgICdpbiB5b3VyIEFuZHJvaWRNYW5pZmVzdC54bWwnO1xuICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbn07XG5cbmhlbHBlcnMuaXNXcml0ZWFibGUgPSBhc3luYyBmdW5jdGlvbiBpc1dyaXRlYWJsZSAoZmlsZVBhdGgpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5hY2Nlc3MoZmlsZVBhdGgsIGZzLldfT0spO1xuICAgIGlmIChzeXN0ZW0uaXNXaW5kb3dzKCkpIHtcbiAgICAgIC8vIE9uIG9wZXJhdGluZyBzeXN0ZW1zLCB3aGVyZSBhY2Nlc3MtY29udHJvbCBwb2xpY2llcyBtYXlcbiAgICAgIC8vIGxpbWl0IGFjY2VzcyB0byB0aGUgZmlsZSBzeXN0ZW0sIGBmcy5hY2Nlc3NgIGRvZXMgbm90IHdvcmtcbiAgICAgIC8vIGFzIGV4cGVjdGVkLiBTZWUgaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL25vZGVqcy9xbVp0SXdEUlNZb1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlsc1xuICAgICAgYXdhaXQgZnMuY2xvc2UoYXdhaXQgZnMub3BlbihmaWxlUGF0aCwgJ3IrJykpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoaWduKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5oZWxwZXJzLnNpZ25BcHAgPSBhc3luYyBmdW5jdGlvbiAoYWRiLCBhcHBQYXRoKSB7XG4gIGlmICghYXdhaXQgdGhpcy5pc1dyaXRlYWJsZShhcHBQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGFwcGxpY2F0aW9uIGF0ICcke2FwcFBhdGh9JyBpcyBub3Qgd3JpdGVhYmxlLiBgICtcbiAgICAgIGBQbGVhc2UgZ3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhpcyBmaWxlIG9yIHRvIGl0cyBwYXJlbnQgZm9sZGVyICcke3BhdGguZGlybmFtZShhcHBQYXRoKX0nIGAgK1xuICAgICAgYGZvciB0aGUgQXBwaXVtIHByb2Nlc3MsIHNvIGl0IGNvdWxkIHNpZ24gdGhlIGFwcGxpY2F0aW9uYCk7XG4gIH1cbiAgYXdhaXQgYWRiLnNpZ24oYXBwUGF0aCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBoZWxwZXJzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLElBQUlBLE9BQU8sR0FBRyxFQUFkOztBQUVBQSxPQUFPLENBQUNDLDhCQUFSLEdBQXlDLGdCQUFnQkMsR0FBaEIsRUFBcUJDLEdBQXJCLEVBQTBCO0VBQ2pFLElBQUlDLEdBQUcsR0FBRyxNQUFNRixHQUFHLENBQUNHLGlDQUFKLENBQXNDRixHQUF0QyxDQUFoQjs7RUFDQSxJQUFJQyxHQUFKLEVBQVM7SUFDUDtFQUNEOztFQUNELElBQUlFLEdBQUcsR0FBRyxxRUFDQSwrREFEQSxHQUVBLGlFQUZBLEdBR0EsNkJBSFY7RUFJQSxNQUFNLElBQUlDLEtBQUosQ0FBVUQsR0FBVixDQUFOO0FBQ0QsQ0FWRDs7QUFZQU4sT0FBTyxDQUFDUSxXQUFSLEdBQXNCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDO0VBQzFELElBQUk7SUFDRixNQUFNQyxXQUFBLENBQUdDLE1BQUgsQ0FBVUYsUUFBVixFQUFvQkMsV0FBQSxDQUFHRSxJQUF2QixDQUFOOztJQUNBLElBQUlDLGVBQUEsQ0FBT0MsU0FBUCxFQUFKLEVBQXdCO01BS3RCLE1BQU1KLFdBQUEsQ0FBR0ssS0FBSCxDQUFTLE1BQU1MLFdBQUEsQ0FBR00sSUFBSCxDQUFRUCxRQUFSLEVBQWtCLElBQWxCLENBQWYsQ0FBTjtJQUNEOztJQUNELE9BQU8sSUFBUDtFQUNELENBVkQsQ0FVRSxPQUFPUSxHQUFQLEVBQVk7SUFDWixPQUFPLEtBQVA7RUFDRDtBQUNGLENBZEQ7O0FBZ0JBakIsT0FBTyxDQUFDa0IsT0FBUixHQUFrQixnQkFBZ0JoQixHQUFoQixFQUFxQmlCLE9BQXJCLEVBQThCO0VBQzlDLElBQUksRUFBQyxNQUFNLEtBQUtYLFdBQUwsQ0FBaUJXLE9BQWpCLENBQVAsQ0FBSixFQUFzQztJQUNwQyxNQUFNLElBQUlaLEtBQUosQ0FBVyx1QkFBc0JZLE9BQVEsc0JBQS9CLEdBQ2Isd0VBQXVFQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUYsT0FBYixDQUFzQixJQURoRixHQUViLDBEQUZHLENBQU47RUFHRDs7RUFDRCxNQUFNakIsR0FBRyxDQUFDb0IsSUFBSixDQUFTSCxPQUFULENBQU47QUFDRCxDQVBEOztlQVNlbkIsTyJ9
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _support = require("@appium/support");
10
+ var _support = require("appium/support");
11
11
 
12
12
  const log = _support.logger.getLogger('UiAutomator2');
13
13
 
@@ -15,4 +15,4 @@ var _default = log;
15
15
  exports.default = _default;require('source-map-support').install();
16
16
 
17
17
 
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdVaUF1dG9tYXRvcjInKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxNQUFNQSxHQUFHLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQixjQUFqQixDQUFaOztlQUVlRixHIn0=
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1VpQXV0b21hdG9yMicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLGNBQWpCLENBQVo7O2VBRWVGLEcifQ==