appium-android-driver 5.0.11 → 5.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +1 -1
- package/build/lib/android-helpers.js +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/app-management.js +24 -11
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/lib/commands/app-management.js +33 -15
- package/package.json +7 -6
|
@@ -377,4 +377,4 @@ var _default = extensions;
|
|
|
377
377
|
exports.default = _default;require('source-map-support').install();
|
|
378
378
|
|
|
379
379
|
|
|
380
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiLCJuYW1lcyI6WyJzd2lwZVN0ZXBzUGVyU2VjIiwiZHJhZ1N0ZXBzUGVyU2VjIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImtleWV2ZW50Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImxvZyIsIndhcm4iLCJwcmVzc0tleUNvZGUiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwibG9uZ1ByZXNzS2V5Q29kZSIsImdldE9yaWVudGF0aW9uIiwicGFyYW1zIiwibmF0dXJhbE9yaWVudGF0aW9uIiwib3B0cyIsImFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsInRvVXBwZXJDYXNlIiwic2V0T3JpZW50YXRpb24iLCJmYWtlRmxpY2siLCJ4U3BlZWQiLCJ5U3BlZWQiLCJmYWtlRmxpY2tFbGVtZW50IiwiZWxlbWVudElkIiwieG9mZnNldCIsInlvZmZzZXQiLCJzcGVlZCIsInN3aXBlIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsInRvdWNoQ291bnQiLCJlbElkIiwic3dpcGVPcHRzIiwic3RlcHMiLCJNYXRoIiwicm91bmQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkb1N3aXBlIiwicGluY2hDbG9zZSIsInBlcmNlbnQiLCJwaW5jaE9wdHMiLCJkaXJlY3Rpb24iLCJwaW5jaE9wZW4iLCJmbGljayIsImVsZW1lbnQiLCJ4T2Zmc2V0IiwieU9mZnNldCIsImRyYWciLCJkZXN0RWxJZCIsImRyYWdPcHRzIiwiZG9EcmFnIiwibG9jayIsInNlY29uZHMiLCJhZGIiLCJpc05hTiIsImZsb2F0U2Vjb25kcyIsInBhcnNlRmxvYXQiLCJCIiwiZGVsYXkiLCJ1bmxvY2siLCJpc0xvY2tlZCIsImlzU2NyZWVuTG9ja2VkIiwiYW5kcm9pZEhlbHBlcnMiLCJjYXBzIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwic2VuZFRlbG5ldENvbW1hbmQiLCJmaW5nZXJwcmludCIsImZpbmdlcnByaW50SWQiLCJpc0VtdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInNlbmRTTVMiLCJwaG9uZU51bWJlciIsIm1lc3NhZ2UiLCJnc21DYWxsIiwiYWN0aW9uIiwiZ3NtU2lnbmFsIiwic2lnbmFsU3RyZW5naCIsImdzbVZvaWNlIiwic3RhdGUiLCJwb3dlckFDIiwicG93ZXJDYXBhY2l0eSIsImJhdHRlcnlQZXJjZW50IiwibmV0d29ya1NwZWVkIiwic2Vuc29yU2V0Iiwic2Vuc29yIiwic2Vuc29yVHlwZSIsInZhbHVlIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwiLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwicG5nRGlyIiwiYW5kcm9pZFNjcmVlbnNob3RQYXRoIiwicG5nIiwicG9zaXgiLCJyZXNvbHZlIiwiY21kIiwic2hlbGwiLCJmaWxlU2l6ZSIsIkVycm9yIiwicHVsbCIsImppbXAiLCJyZWFkIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCIsInN0ZG91dCIsInN0ZGVyciIsImNvZGUiLCJleGVjdXRhYmxlIiwiZGVmYXVsdEFyZ3MiLCJjb25jYXQiLCJlbmNvZGluZyIsImlzQnVmZmVyIiwibGVuZ3RoIiwidG9TdHJpbmciLCJnZXRTY3JlZW5zaG90IiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImltYWdlIiwiZSIsImluZm8iLCJlcnIiLCJzY3JlZW5PcmllbnRhdGlvbiIsImdldFNjcmVlbk9yaWVudGF0aW9uIiwicm90YXRlIiwiZ2V0QnVmZmVyIiwicHJvbWlzaWZ5IiwiY29udGV4dCIsImltZ0J1ZmZlciIsIk1JTUVfUE5HIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFuZHJvaWRIZWxwZXJzIGZyb20gJy4uL2FuZHJvaWQtaGVscGVycyc7XG5pbXBvcnQgeyBmcywgdXRpbCwgdGVtcERpcn0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3Qgc3dpcGVTdGVwc1BlclNlYyA9IDI4O1xuY29uc3QgZHJhZ1N0ZXBzUGVyU2VjID0gNDA7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMua2V5ZXZlbnQgPSBhc3luYyBmdW5jdGlvbiBrZXlldmVudCAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICAvLyBUT0RPIGRlcHJlY2F0ZSBrZXlldmVudDsgY3VycmVudGx5IHdkIG9ubHkgaW1wbGVtZW50cyBrZXlldmVudFxuICB0aGlzLmxvZy53YXJuKCdrZXlldmVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgdXNlIHByZXNzS2V5Q29kZScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcmVzc0tleUNvZGUoa2V5Y29kZSwgbWV0YXN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIHByZXNzS2V5Q29kZSAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbigncHJlc3NLZXlDb2RlJywge2tleWNvZGUsIG1ldGFzdGF0ZX0pO1xufTtcblxuY29tbWFuZHMubG9uZ1ByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIGxvbmdQcmVzc0tleUNvZGUgKGtleWNvZGUsIG1ldGFzdGF0ZSA9IG51bGwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2xvbmdQcmVzc0tleUNvZGUnLCB7a2V5Y29kZSwgbWV0YXN0YXRlfSk7XG59O1xuXG5jb21tYW5kcy5nZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldE9yaWVudGF0aW9uICgpIHtcbiAgbGV0IHBhcmFtcyA9IHtcbiAgICBuYXR1cmFsT3JpZW50YXRpb246ICEhdGhpcy5vcHRzLmFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24sXG4gIH07XG4gIGxldCBvcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29yaWVudGF0aW9uJywgcGFyYW1zKTtcbiAgcmV0dXJuIG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5jb21tYW5kcy5zZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE9yaWVudGF0aW9uIChvcmllbnRhdGlvbikge1xuICBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgb3JpZW50YXRpb24sXG4gICAgbmF0dXJhbE9yaWVudGF0aW9uOiAhIXRoaXMub3B0cy5hbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignb3JpZW50YXRpb24nLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZmFrZUZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmFrZUZsaWNrICh4U3BlZWQsIHlTcGVlZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZmxpY2snLCB7eFNwZWVkLCB5U3BlZWR9KTtcbn07XG5cbmNvbW1hbmRzLmZha2VGbGlja0VsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmYWtlRmxpY2tFbGVtZW50IChlbGVtZW50SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHNwZWVkKSB7XG4gIGxldCBwYXJhbXMgPSB7eG9mZnNldCwgeW9mZnNldCwgc3BlZWQsIGVsZW1lbnRJZH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmZsaWNrJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnN3aXBlID0gYXN5bmMgZnVuY3Rpb24gc3dpcGUgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgdG91Y2hDb3VudCwgZWxJZCkge1xuICBpZiAoc3RhcnRYID09PSAnbnVsbCcpIHtcbiAgICBzdGFydFggPSAwLjU7XG4gIH1cbiAgaWYgKHN0YXJ0WSA9PT0gJ251bGwnKSB7XG4gICAgc3RhcnRZID0gMC41O1xuICB9XG4gIGxldCBzd2lwZU9wdHMgPSB7c3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksXG4gICAgICAgICAgICAgICAgICAgc3RlcHM6IE1hdGgucm91bmQoZHVyYXRpb24gKiBzd2lwZVN0ZXBzUGVyU2VjKX07XG4gIC8vIGdvaW5nIHRoZSBsb25nIHdheSBhbmQgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBhbmQgbnVsbCBzaW5jZVxuICAvLyB3ZSBjYW4ndCBiZSBhc3N1cmVkIGBlbElkYCBpcyBhIHN0cmluZyBhbmQgbm90IGFuIGludFxuICBpZiAodXRpbC5oYXNWYWx1ZShlbElkKSkge1xuICAgIHN3aXBlT3B0cy5lbGVtZW50SWQgPSBlbElkO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmRvU3dpcGUoc3dpcGVPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmRvU3dpcGUgPSBhc3luYyBmdW5jdGlvbiBkb1N3aXBlIChzd2lwZU9wdHMpIHtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3dpcGVPcHRzLmVsZW1lbnRJZCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpzd2lwZScsIHN3aXBlT3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3N3aXBlJywgc3dpcGVPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMucGluY2hDbG9zZSA9IGFzeW5jIGZ1bmN0aW9uIHBpbmNoQ2xvc2UgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgcGVyY2VudCwgc3RlcHMsIGVsSWQpIHtcbiAgbGV0IHBpbmNoT3B0cyA9IHtcbiAgICBkaXJlY3Rpb246ICdpbicsXG4gICAgZWxlbWVudElkOiBlbElkLFxuICAgIHBlcmNlbnQsXG4gICAgc3RlcHNcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6cGluY2gnLCBwaW5jaE9wdHMpO1xufTtcblxuY29tbWFuZHMucGluY2hPcGVuID0gYXN5bmMgZnVuY3Rpb24gcGluY2hPcGVuIChzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHBlcmNlbnQsIHN0ZXBzLCBlbElkKSB7XG4gIGxldCBwaW5jaE9wdHMgPSB7ZGlyZWN0aW9uOiAnb3V0JywgZWxlbWVudElkOiBlbElkLCBwZXJjZW50LCBzdGVwc307XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBpbmNoJywgcGluY2hPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmxpY2sgKGVsZW1lbnQsIHhTcGVlZCwgeVNwZWVkLCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCkge1xuICBpZiAoZWxlbWVudCkge1xuICAgIGF3YWl0IHRoaXMuZmFrZUZsaWNrRWxlbWVudChlbGVtZW50LCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdGhpcy5mYWtlRmxpY2soeFNwZWVkLCB5U3BlZWQpO1xuICB9XG59O1xuXG5jb21tYW5kcy5kcmFnID0gYXN5bmMgZnVuY3Rpb24gZHJhZyAoc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCB0b3VjaENvdW50LCBlbGVtZW50SWQsIGRlc3RFbElkKSB7XG4gIGxldCBkcmFnT3B0cyA9IHtcbiAgICBlbGVtZW50SWQsIGRlc3RFbElkLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSxcbiAgICBzdGVwczogTWF0aC5yb3VuZChkdXJhdGlvbiAqIGRyYWdTdGVwc1BlclNlYylcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9EcmFnKGRyYWdPcHRzKTtcblxufTtcblxuY29tbWFuZHMuZG9EcmFnID0gYXN5bmMgZnVuY3Rpb24gZG9EcmFnIChkcmFnT3B0cykge1xuICBpZiAodXRpbC5oYXNWYWx1ZShkcmFnT3B0cy5lbGVtZW50SWQpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6ZHJhZycsIGRyYWdPcHRzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZHJhZycsIGRyYWdPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMubG9jayA9IGFzeW5jIGZ1bmN0aW9uIGxvY2sgKHNlY29uZHMpIHtcbiAgYXdhaXQgdGhpcy5hZGIubG9jaygpO1xuICBpZiAoaXNOYU4oc2Vjb25kcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmbG9hdFNlY29uZHMgPSBwYXJzZUZsb2F0KHNlY29uZHMpO1xuICBpZiAoZmxvYXRTZWNvbmRzIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgQi5kZWxheSgxMDAwICogZmxvYXRTZWNvbmRzKTtcbiAgYXdhaXQgdGhpcy51bmxvY2soKTtcbn07XG5cbmNvbW1hbmRzLmlzTG9ja2VkID0gYXN5bmMgZnVuY3Rpb24gaXNMb2NrZWQgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuaXNTY3JlZW5Mb2NrZWQoKTtcbn07XG5cbmNvbW1hbmRzLnVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHVubG9jayAoKSB7XG4gIHJldHVybiBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG9wZW5Ob3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29wZW5Ob3RpZmljYXRpb24nKTtcbn07XG5cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNlbmRUZWxuZXRDb21tYW5kKGBnZW8gZml4ICR7bG9uZ2l0dWRlfSAke2xhdGl0dWRlfWApO1xufTtcblxuY29tbWFuZHMuZmluZ2VycHJpbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5nZXJwcmludCAoZmluZ2VycHJpbnRJZCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZmluZ2VycHJpbnQgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5maW5nZXJwcmludChmaW5nZXJwcmludElkKTtcbn07XG5cbmNvbW1hbmRzLnNlbmRTTVMgPSBhc3luYyBmdW5jdGlvbiBzZW5kU01TIChwaG9uZU51bWJlciwgbWVzc2FnZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnc2VuZFNNUyBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbmRTTVMocGhvbmVOdW1iZXIsIG1lc3NhZ2UpO1xufTtcblxuY29tbWFuZHMuZ3NtQ2FsbCA9IGFzeW5jIGZ1bmN0aW9uIGdzbUNhbGwgKHBob25lTnVtYmVyLCBhY3Rpb24pIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2dzbUNhbGwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21DYWxsKHBob25lTnVtYmVyLCBhY3Rpb24pO1xufTtcblxuY29tbWFuZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzaWduYWxTdHJlbmdoKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdnc21TaWduYWwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21TaWduYWwoc2lnbmFsU3RyZW5naCk7XG59O1xuXG5jb21tYW5kcy5nc21Wb2ljZSA9IGFzeW5jIGZ1bmN0aW9uIGdzbVZvaWNlIChzdGF0ZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZ3NtVm9pY2UgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21Wb2ljZShzdGF0ZSk7XG59O1xuXG5jb21tYW5kcy5wb3dlckFDID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJBQyAoc3RhdGUpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3Bvd2VyQUMgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5wb3dlckFDKHN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnBvd2VyQ2FwYWNpdHkgPSBhc3luYyBmdW5jdGlvbiBwb3dlckNhcGFjaXR5IChiYXR0ZXJ5UGVyY2VudCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygncG93ZXJDYXBhY2l0eSBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnBvd2VyQ2FwYWNpdHkoYmF0dGVyeVBlcmNlbnQpO1xufTtcblxuY29tbWFuZHMubmV0d29ya1NwZWVkID0gYXN5bmMgZnVuY3Rpb24gbmV0d29ya1NwZWVkIChuZXR3b3JrU3BlZWQpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ25ldHdvcmtTcGVlZCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLm5ldHdvcmtTcGVlZChuZXR3b3JrU3BlZWQpO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIHNlbnNvcnMgdmFsdWVzIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Vuc29yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2Vuc29yVHlwZSAtIHNlbnNvciB0eXBlIGRlY2xhcmVkIGluIGFkYi5TRU5TT1JTXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSB2YWx1ZSB0byBzZXQgdG8gdGhlIHNlbnNvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBTZW5zb3JcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHNlbnNvclR5cGUgaXMgbm90IGRlZmluZWRcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHZhbHVlIGZvciB0aGUgc2Ugc29yIGlzIG5vdCBkZWZpbmVkXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBkZXZpY2VUeXBlIGlzIG5vdCBhbiBlbXVsYXRvclxuICovXG5jb21tYW5kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciA9IHt9KSB7XG4gIGNvbnN0IHtzZW5zb3JUeXBlLCB2YWx1ZX0gPSBzZW5zb3I7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzZW5zb3JUeXBlKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCdzZW5zb3JUeXBlJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAndmFsdWUnIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3NlbnNvclNldCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbnNvclNldChzZW5zb3JUeXBlLCB2YWx1ZSk7XG59O1xuXG5oZWxwZXJzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYlNoZWxsID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwgKGFkYiwgb3B0cykge1xuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy5wbmcnfSk7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMobG9jYWxGaWxlKSkge1xuICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcG5nRGlyID0gb3B0cy5hbmRyb2lkU2NyZWVuc2hvdFBhdGggfHwgJy9kYXRhL2xvY2FsL3RtcC8nO1xuICAgIGNvbnN0IHBuZyA9IHBhdGgucG9zaXgucmVzb2x2ZShwbmdEaXIsICdzY3JlZW5zaG90LnBuZycpO1xuICAgIGNvbnN0IGNtZCA9IFsnL3N5c3RlbS9iaW4vcm0nLCBgJHtwbmd9O2AsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnLCBwbmddO1xuICAgIGF3YWl0IGFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghYXdhaXQgYWRiLmZpbGVTaXplKHBuZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNpemUgb2YgdGhlIHRha2VuIHNjcmVlbnNob3QgZXF1YWxzIHRvIHplcm8uJyk7XG4gICAgfVxuICAgIGF3YWl0IGFkYi5wdWxsKHBuZywgbG9jYWxGaWxlKTtcbiAgICByZXR1cm4gYXdhaXQgamltcC5yZWFkKGxvY2FsRmlsZSk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhsb2NhbEZpbGUpKSB7XG4gICAgICBhd2FpdCBmcy51bmxpbmsobG9jYWxGaWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbmhlbHBlcnMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQgKGFkYikge1xuICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoYWRiLmV4ZWN1dGFibGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoWydleGVjLW91dCcsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW5jb2Rpbmc6ICdiaW5hcnknLCBpc0J1ZmZlcjogdHJ1ZX0pO1xuICAvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciwgdGhyb3dcbiAgaWYgKGNvZGUgfHwgc3RkZXJyLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuc2hvdCByZXR1cm5lZCBlcnJvciwgY29kZTogJyR7Y29kZX0nLCBzdGRlcnI6ICcke3N0ZGVyci50b1N0cmluZygpfSdgKTtcbiAgfVxuICAvLyBpZiB3ZSBkb24ndCBnZXQgYW55dGhpbmcgYXQgYWxsLCB0aHJvd1xuICBpZiAoIXN0ZG91dC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjcmVlbnNob3QgcmV0dXJuZWQgbm8gZGF0YScpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGppbXAucmVhZChzdGRvdXQpO1xufTtcblxuY29tbWFuZHMuZ2V0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3QgKCkge1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGxldCBpbWFnZSA9IG51bGw7XG4gIGlmIChhcGlMZXZlbCA+IDIwKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgc2NyZWVuc2hvdGluZyBhcHByb2FjaCBpcyB3YXkgZmFzdGVyLCBzaW5jZSBpdCByZXF1aXJlcyBsZXNzIGV4dGVybmFsIGNvbW1hbmRzXG4gICAgICAvLyB0byBiZSBleGVjdXRlZC4gVW5mb3J0dW5hdGVseSwgZXhlYy1vdXQgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IG5ld2VyIEFuZHJvaWQvU0RLIHZlcnNpb25zICg1LjAgYW5kIGxhdGVyKVxuICAgICAgaW1hZ2UgPSBhd2FpdCB0aGlzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQodGhpcy5hZGIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIHdpdGggJ2FkYiBleGVjLW91dCcgYmVjYXVzZSBvZiAnJHtlLm1lc3NhZ2V9Jy4gYCArXG4gICAgICAgIGBEZWZhdWx0aW5nIHRvICdhZGIgc2hlbGwnIGNhbGxgKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpbWFnZSkge1xuICAgIHRyeSB7XG4gICAgICBpbWFnZSA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyID0gYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIGJlY2F1c2Ugb2YgJyR7ZS5tZXNzYWdlfScuIGAgK1xuICAgICAgICBgTWFrZSBzdXJlIHRoZSAnTGF5b3V0UGFyYW1zLkZMQUdfU0VDVVJFJyBpcyBub3Qgc2V0IGZvciBgICtcbiAgICAgICAgYHRoZSBjdXJyZW50IHZpZXdgO1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICAgIH1cbiAgfVxuICBpZiAoYXBpTGV2ZWwgPCAyMykge1xuICAgIC8vIEFuZHJvaWQgYnVnIDg0MzM3NDIgLSByb3RhdGUgc2NyZWVuc2hvdCBpZiBzY3JlZW4gaXMgcm90YXRlZFxuICAgIGxldCBzY3JlZW5PcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYWRiLmdldFNjcmVlbk9yaWVudGF0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGltYWdlID0gYXdhaXQgaW1hZ2Uucm90YXRlKC05MCAqIHNjcmVlbk9yaWVudGF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCByb3RhdGUgc2NyZWVuc2hvdCBkdWUgdG8gZXJyb3I6ICR7ZXJyfWApO1xuICAgIH1cbiAgfVxuICBjb25zdCBnZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWFnZS5nZXRCdWZmZXIsIHtjb250ZXh0OiBpbWFnZX0pO1xuICBjb25zdCBpbWdCdWZmZXIgPSBhd2FpdCBnZXRCdWZmZXIoamltcC5NSU1FX1BORyk7XG4gIHJldHVybiBpbWdCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRyxFQUF6QjtBQUNBLE1BQU1DLGVBQWUsR0FBRyxFQUF4QjtBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFBUSxDQUFDRyxRQUFULEdBQW9CLGVBQWVBLFFBQWYsQ0FBeUJDLE9BQXpCLEVBQWtDQyxTQUFTLEdBQUcsSUFBOUMsRUFBb0Q7RUFFdEUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsOENBQWQ7RUFDQSxPQUFPLE1BQU0sS0FBS0MsWUFBTCxDQUFrQkosT0FBbEIsRUFBMkJDLFNBQTNCLENBQWI7QUFDRCxDQUpEOztBQU1BTCxRQUFRLENBQUNRLFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QkosT0FBN0IsRUFBc0NDLFNBQVMsR0FBRyxJQUFsRCxFQUF3RDtFQUM5RSxPQUFPLE1BQU0sS0FBS0ksU0FBTCxDQUFlQyxVQUFmLENBQTBCLGNBQTFCLEVBQTBDO0lBQUNOLE9BQUQ7SUFBVUM7RUFBVixDQUExQyxDQUFiO0FBQ0QsQ0FGRDs7QUFJQUwsUUFBUSxDQUFDVyxnQkFBVCxHQUE0QixlQUFlQSxnQkFBZixDQUFpQ1AsT0FBakMsRUFBMENDLFNBQVMsR0FBRyxJQUF0RCxFQUE0RDtFQUN0RixPQUFPLE1BQU0sS0FBS0ksU0FBTCxDQUFlQyxVQUFmLENBQTBCLGtCQUExQixFQUE4QztJQUFDTixPQUFEO0lBQVVDO0VBQVYsQ0FBOUMsQ0FBYjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ1ksY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0VBQ3pELElBQUlDLE1BQU0sR0FBRztJQUNYQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsS0FBS0MsSUFBTCxDQUFVQztFQURyQixDQUFiO0VBR0EsSUFBSUMsV0FBVyxHQUFHLE1BQU0sS0FBS1IsU0FBTCxDQUFlQyxVQUFmLENBQTBCLGFBQTFCLEVBQXlDRyxNQUF6QyxDQUF4QjtFQUNBLE9BQU9JLFdBQVcsQ0FBQ0MsV0FBWixFQUFQO0FBQ0QsQ0FORDs7QUFRQWxCLFFBQVEsQ0FBQ21CLGNBQVQsR0FBMEIsZUFBZUEsY0FBZixDQUErQkYsV0FBL0IsRUFBNEM7RUFDcEVBLFdBQVcsR0FBR0EsV0FBVyxDQUFDQyxXQUFaLEVBQWQ7RUFDQSxJQUFJTCxNQUFNLEdBQUc7SUFDWEksV0FEVztJQUVYSCxrQkFBa0IsRUFBRSxDQUFDLENBQUMsS0FBS0MsSUFBTCxDQUFVQztFQUZyQixDQUFiO0VBSUEsT0FBTyxNQUFNLEtBQUtQLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixhQUExQixFQUF5Q0csTUFBekMsQ0FBYjtBQUNELENBUEQ7O0FBU0FiLFFBQVEsQ0FBQ29CLFNBQVQsR0FBcUIsZUFBZUEsU0FBZixDQUEwQkMsTUFBMUIsRUFBa0NDLE1BQWxDLEVBQTBDO0VBQzdELE9BQU8sTUFBTSxLQUFLYixTQUFMLENBQWVDLFVBQWYsQ0FBMEIsT0FBMUIsRUFBbUM7SUFBQ1csTUFBRDtJQUFTQztFQUFULENBQW5DLENBQWI7QUFDRCxDQUZEOztBQUlBdEIsUUFBUSxDQUFDdUIsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsQ0FBaUNDLFNBQWpDLEVBQTRDQyxPQUE1QyxFQUFxREMsT0FBckQsRUFBOERDLEtBQTlELEVBQXFFO0VBQy9GLElBQUlkLE1BQU0sR0FBRztJQUFDWSxPQUFEO0lBQVVDLE9BQVY7SUFBbUJDLEtBQW5CO0lBQTBCSDtFQUExQixDQUFiO0VBQ0EsT0FBTyxNQUFNLEtBQUtmLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixlQUExQixFQUEyQ0csTUFBM0MsQ0FBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQzRCLEtBQVQsR0FBaUIsZUFBZUEsS0FBZixDQUFzQkMsTUFBdEIsRUFBOEJDLE1BQTlCLEVBQXNDQyxJQUF0QyxFQUE0Q0MsSUFBNUMsRUFBa0RDLFFBQWxELEVBQTREQyxVQUE1RCxFQUF3RUMsSUFBeEUsRUFBOEU7RUFDN0YsSUFBSU4sTUFBTSxLQUFLLE1BQWYsRUFBdUI7SUFDckJBLE1BQU0sR0FBRyxHQUFUO0VBQ0Q7O0VBQ0QsSUFBSUMsTUFBTSxLQUFLLE1BQWYsRUFBdUI7SUFDckJBLE1BQU0sR0FBRyxHQUFUO0VBQ0Q7O0VBQ0QsSUFBSU0sU0FBUyxHQUFHO0lBQUNQLE1BQUQ7SUFBU0MsTUFBVDtJQUFpQkMsSUFBakI7SUFBdUJDLElBQXZCO0lBQ0NLLEtBQUssRUFBRUMsSUFBSSxDQUFDQyxLQUFMLENBQVdOLFFBQVEsR0FBR25DLGdCQUF0QjtFQURSLENBQWhCOztFQUlBLElBQUkwQyxjQUFLQyxRQUFMLENBQWNOLElBQWQsQ0FBSixFQUF5QjtJQUN2QkMsU0FBUyxDQUFDWixTQUFWLEdBQXNCVyxJQUF0QjtFQUNEOztFQUNELE9BQU8sTUFBTSxLQUFLTyxPQUFMLENBQWFOLFNBQWIsQ0FBYjtBQUNELENBZkQ7O0FBaUJBcEMsUUFBUSxDQUFDMEMsT0FBVCxHQUFtQixlQUFlQSxPQUFmLENBQXdCTixTQUF4QixFQUFtQztFQUNwRCxJQUFJSSxjQUFLQyxRQUFMLENBQWNMLFNBQVMsQ0FBQ1osU0FBeEIsQ0FBSixFQUF3QztJQUN0QyxPQUFPLE1BQU0sS0FBS2YsU0FBTCxDQUFlQyxVQUFmLENBQTBCLGVBQTFCLEVBQTJDMEIsU0FBM0MsQ0FBYjtFQUNELENBRkQsTUFFTztJQUNMLE9BQU8sTUFBTSxLQUFLM0IsU0FBTCxDQUFlQyxVQUFmLENBQTBCLE9BQTFCLEVBQW1DMEIsU0FBbkMsQ0FBYjtFQUNEO0FBQ0YsQ0FORDs7QUFRQXBDLFFBQVEsQ0FBQzJDLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQmQsTUFBM0IsRUFBbUNDLE1BQW5DLEVBQTJDQyxJQUEzQyxFQUFpREMsSUFBakQsRUFBdURDLFFBQXZELEVBQWlFVyxPQUFqRSxFQUEwRVAsS0FBMUUsRUFBaUZGLElBQWpGLEVBQXVGO0VBQzNHLElBQUlVLFNBQVMsR0FBRztJQUNkQyxTQUFTLEVBQUUsSUFERztJQUVkdEIsU0FBUyxFQUFFVyxJQUZHO0lBR2RTLE9BSGM7SUFJZFA7RUFKYyxDQUFoQjtFQU1BLE9BQU8sTUFBTSxLQUFLNUIsU0FBTCxDQUFlQyxVQUFmLENBQTBCLGVBQTFCLEVBQTJDbUMsU0FBM0MsQ0FBYjtBQUNELENBUkQ7O0FBVUE3QyxRQUFRLENBQUMrQyxTQUFULEdBQXFCLGVBQWVBLFNBQWYsQ0FBMEJsQixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLElBQTFDLEVBQWdEQyxJQUFoRCxFQUFzREMsUUFBdEQsRUFBZ0VXLE9BQWhFLEVBQXlFUCxLQUF6RSxFQUFnRkYsSUFBaEYsRUFBc0Y7RUFDekcsSUFBSVUsU0FBUyxHQUFHO0lBQUNDLFNBQVMsRUFBRSxLQUFaO0lBQW1CdEIsU0FBUyxFQUFFVyxJQUE5QjtJQUFvQ1MsT0FBcEM7SUFBNkNQO0VBQTdDLENBQWhCO0VBQ0EsT0FBTyxNQUFNLEtBQUs1QixTQUFMLENBQWVDLFVBQWYsQ0FBMEIsZUFBMUIsRUFBMkNtQyxTQUEzQyxDQUFiO0FBQ0QsQ0FIRDs7QUFLQTdDLFFBQVEsQ0FBQ2dELEtBQVQsR0FBaUIsZUFBZUEsS0FBZixDQUFzQkMsT0FBdEIsRUFBK0I1QixNQUEvQixFQUF1Q0MsTUFBdkMsRUFBK0M0QixPQUEvQyxFQUF3REMsT0FBeEQsRUFBaUV4QixLQUFqRSxFQUF3RTtFQUN2RixJQUFJc0IsT0FBSixFQUFhO0lBQ1gsTUFBTSxLQUFLMUIsZ0JBQUwsQ0FBc0IwQixPQUF0QixFQUErQkMsT0FBL0IsRUFBd0NDLE9BQXhDLEVBQWlEeEIsS0FBakQsQ0FBTjtFQUNELENBRkQsTUFFTztJQUNMLE1BQU0sS0FBS1AsU0FBTCxDQUFlQyxNQUFmLEVBQXVCQyxNQUF2QixDQUFOO0VBQ0Q7QUFDRixDQU5EOztBQVFBdEIsUUFBUSxDQUFDb0QsSUFBVCxHQUFnQixlQUFlQSxJQUFmLENBQXFCdkIsTUFBckIsRUFBNkJDLE1BQTdCLEVBQXFDQyxJQUFyQyxFQUEyQ0MsSUFBM0MsRUFBaURDLFFBQWpELEVBQTJEQyxVQUEzRCxFQUF1RVYsU0FBdkUsRUFBa0Y2QixRQUFsRixFQUE0RjtFQUMxRyxJQUFJQyxRQUFRLEdBQUc7SUFDYjlCLFNBRGE7SUFDRjZCLFFBREU7SUFDUXhCLE1BRFI7SUFDZ0JDLE1BRGhCO0lBQ3dCQyxJQUR4QjtJQUM4QkMsSUFEOUI7SUFFYkssS0FBSyxFQUFFQyxJQUFJLENBQUNDLEtBQUwsQ0FBV04sUUFBUSxHQUFHbEMsZUFBdEI7RUFGTSxDQUFmO0VBSUEsT0FBTyxNQUFNLEtBQUt3RCxNQUFMLENBQVlELFFBQVosQ0FBYjtBQUVELENBUEQ7O0FBU0F0RCxRQUFRLENBQUN1RCxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJELFFBQXZCLEVBQWlDO0VBQ2pELElBQUlkLGNBQUtDLFFBQUwsQ0FBY2EsUUFBUSxDQUFDOUIsU0FBdkIsQ0FBSixFQUF1QztJQUNyQyxPQUFPLE1BQU0sS0FBS2YsU0FBTCxDQUFlQyxVQUFmLENBQTBCLGNBQTFCLEVBQTBDNEMsUUFBMUMsQ0FBYjtFQUNELENBRkQsTUFFTztJQUNMLE9BQU8sTUFBTSxLQUFLN0MsU0FBTCxDQUFlQyxVQUFmLENBQTBCLE1BQTFCLEVBQWtDNEMsUUFBbEMsQ0FBYjtFQUNEO0FBQ0YsQ0FORDs7QUFRQXRELFFBQVEsQ0FBQ3dELElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkMsT0FBckIsRUFBOEI7RUFDNUMsTUFBTSxLQUFLQyxHQUFMLENBQVNGLElBQVQsRUFBTjs7RUFDQSxJQUFJRyxLQUFLLENBQUNGLE9BQUQsQ0FBVCxFQUFvQjtJQUNsQjtFQUNEOztFQUVELE1BQU1HLFlBQVksR0FBR0MsVUFBVSxDQUFDSixPQUFELENBQS9COztFQUNBLElBQUlHLFlBQVksSUFBSSxDQUFwQixFQUF1QjtJQUNyQjtFQUNEOztFQUNELE1BQU1FLGtCQUFFQyxLQUFGLENBQVEsT0FBT0gsWUFBZixDQUFOO0VBQ0EsTUFBTSxLQUFLSSxNQUFMLEVBQU47QUFDRCxDQVpEOztBQWNBaEUsUUFBUSxDQUFDaUUsUUFBVCxHQUFvQixlQUFlQSxRQUFmLEdBQTJCO0VBQzdDLE9BQU8sTUFBTSxLQUFLUCxHQUFMLENBQVNRLGNBQVQsRUFBYjtBQUNELENBRkQ7O0FBSUFsRSxRQUFRLENBQUNnRSxNQUFULEdBQWtCLGVBQWVBLE1BQWYsR0FBeUI7RUFDekMsT0FBTyxNQUFNRyx3QkFBZUgsTUFBZixDQUFzQixJQUF0QixFQUE0QixLQUFLTixHQUFqQyxFQUFzQyxLQUFLVSxJQUEzQyxDQUFiO0FBQ0QsQ0FGRDs7QUFJQXBFLFFBQVEsQ0FBQ3FFLGlCQUFULEdBQTZCLGVBQWVBLGlCQUFmLEdBQW9DO0VBQy9ELE9BQU8sTUFBTSxLQUFLNUQsU0FBTCxDQUFlQyxVQUFmLENBQTBCLGtCQUExQixDQUFiO0FBQ0QsQ0FGRDs7QUFJQVYsUUFBUSxDQUFDc0UsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQ0MsU0FBdEMsRUFBaUQ7RUFDdEUsT0FBTyxNQUFNLEtBQUtkLEdBQUwsQ0FBU2UsaUJBQVQsQ0FBNEIsV0FBVUQsU0FBVSxJQUFHRCxRQUFTLEVBQTVELENBQWI7QUFDRCxDQUZEOztBQUlBdkUsUUFBUSxDQUFDMEUsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCQyxhQUE1QixFQUEyQztFQUNoRSxJQUFJLENBQUMsS0FBS0MsVUFBTCxFQUFMLEVBQXdCO0lBQ3RCLEtBQUt0RSxHQUFMLENBQVN1RSxhQUFULENBQXVCLG9EQUF2QjtFQUNEOztFQUNELE1BQU0sS0FBS25CLEdBQUwsQ0FBU2dCLFdBQVQsQ0FBcUJDLGFBQXJCLENBQU47QUFDRCxDQUxEOztBQU9BM0UsUUFBUSxDQUFDOEUsT0FBVCxHQUFtQixlQUFlQSxPQUFmLENBQXdCQyxXQUF4QixFQUFxQ0MsT0FBckMsRUFBOEM7RUFDL0QsSUFBSSxDQUFDLEtBQUtKLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixnREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVNvQixPQUFULENBQWlCQyxXQUFqQixFQUE4QkMsT0FBOUIsQ0FBTjtBQUNELENBTEQ7O0FBT0FoRixRQUFRLENBQUNpRixPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JGLFdBQXhCLEVBQXFDRyxNQUFyQyxFQUE2QztFQUM5RCxJQUFJLENBQUMsS0FBS04sVUFBTCxFQUFMLEVBQXdCO0lBQ3RCLEtBQUt0RSxHQUFMLENBQVN1RSxhQUFULENBQXVCLGdEQUF2QjtFQUNEOztFQUNELE1BQU0sS0FBS25CLEdBQUwsQ0FBU3VCLE9BQVQsQ0FBaUJGLFdBQWpCLEVBQThCRyxNQUE5QixDQUFOO0FBQ0QsQ0FMRDs7QUFPQWxGLFFBQVEsQ0FBQ21GLFNBQVQsR0FBcUIsZUFBZUEsU0FBZixDQUEwQkMsYUFBMUIsRUFBeUM7RUFDNUQsSUFBSSxDQUFDLEtBQUtSLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixrREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVN5QixTQUFULENBQW1CQyxhQUFuQixDQUFOO0FBQ0QsQ0FMRDs7QUFPQXBGLFFBQVEsQ0FBQ3FGLFFBQVQsR0FBb0IsZUFBZUEsUUFBZixDQUF5QkMsS0FBekIsRUFBZ0M7RUFDbEQsSUFBSSxDQUFDLEtBQUtWLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixpREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVMyQixRQUFULENBQWtCQyxLQUFsQixDQUFOO0FBQ0QsQ0FMRDs7QUFPQXRGLFFBQVEsQ0FBQ3VGLE9BQVQsR0FBbUIsZUFBZUEsT0FBZixDQUF3QkQsS0FBeEIsRUFBK0I7RUFDaEQsSUFBSSxDQUFDLEtBQUtWLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixnREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVM2QixPQUFULENBQWlCRCxLQUFqQixDQUFOO0FBQ0QsQ0FMRDs7QUFPQXRGLFFBQVEsQ0FBQ3dGLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QkMsY0FBOUIsRUFBOEM7RUFDckUsSUFBSSxDQUFDLEtBQUtiLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixzREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVM4QixhQUFULENBQXVCQyxjQUF2QixDQUFOO0FBQ0QsQ0FMRDs7QUFPQXpGLFFBQVEsQ0FBQzBGLFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QkEsWUFBN0IsRUFBMkM7RUFDakUsSUFBSSxDQUFDLEtBQUtkLFVBQUwsRUFBTCxFQUF3QjtJQUN0QixLQUFLdEUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QixxREFBdkI7RUFDRDs7RUFDRCxNQUFNLEtBQUtuQixHQUFMLENBQVNnQyxZQUFULENBQXNCQSxZQUF0QixDQUFOO0FBQ0QsQ0FMRDs7QUFtQkExRixRQUFRLENBQUMyRixTQUFULEdBQXFCLGVBQWVBLFNBQWYsQ0FBMEJDLE1BQU0sR0FBRyxFQUFuQyxFQUF1QztFQUMxRCxNQUFNO0lBQUNDLFVBQUQ7SUFBYUM7RUFBYixJQUFzQkYsTUFBNUI7O0VBQ0EsSUFBSSxDQUFDcEQsY0FBS0MsUUFBTCxDQUFjb0QsVUFBZCxDQUFMLEVBQWdDO0lBQzlCLEtBQUt2RixHQUFMLENBQVN1RSxhQUFULENBQXdCLG1DQUF4QjtFQUNEOztFQUNELElBQUksQ0FBQ3JDLGNBQUtDLFFBQUwsQ0FBY3FELEtBQWQsQ0FBTCxFQUEyQjtJQUN6QixLQUFLeEYsR0FBTCxDQUFTdUUsYUFBVCxDQUF3Qiw4QkFBeEI7RUFDRDs7RUFDRCxJQUFJLENBQUMsS0FBS0QsVUFBTCxFQUFMLEVBQXdCO0lBQ3RCLEtBQUt0RSxHQUFMLENBQVN1RSxhQUFULENBQXVCLGtEQUF2QjtFQUNEOztFQUNELE1BQU0sS0FBS25CLEdBQUwsQ0FBU2lDLFNBQVQsQ0FBbUJFLFVBQW5CLEVBQStCQyxLQUEvQixDQUFOO0FBQ0QsQ0FaRDs7QUFjQTdGLE9BQU8sQ0FBQzhGLDZCQUFSLEdBQXdDLGVBQWVBLDZCQUFmLENBQThDckMsR0FBOUMsRUFBbUQzQyxJQUFuRCxFQUF5RDtFQUMvRixNQUFNaUYsU0FBUyxHQUFHLE1BQU1DLGlCQUFRQyxJQUFSLENBQWE7SUFBQ0MsTUFBTSxFQUFFLFFBQVQ7SUFBbUJDLE1BQU0sRUFBRTtFQUEzQixDQUFiLENBQXhCOztFQUNBLElBQUksTUFBTUMsWUFBR0MsTUFBSCxDQUFVTixTQUFWLENBQVYsRUFBZ0M7SUFDOUIsTUFBTUssWUFBR0UsTUFBSCxDQUFVUCxTQUFWLENBQU47RUFDRDs7RUFDRCxJQUFJO0lBQ0YsTUFBTVEsTUFBTSxHQUFHekYsSUFBSSxDQUFDMEYscUJBQUwsSUFBOEIsa0JBQTdDOztJQUNBLE1BQU1DLEdBQUcsR0FBR1IsY0FBS1MsS0FBTCxDQUFXQyxPQUFYLENBQW1CSixNQUFuQixFQUEyQixnQkFBM0IsQ0FBWjs7SUFDQSxNQUFNSyxHQUFHLEdBQUcsQ0FBQyxnQkFBRCxFQUFvQixHQUFFSCxHQUFJLEdBQTFCLEVBQThCLHVCQUE5QixFQUF1RCxJQUF2RCxFQUE2REEsR0FBN0QsQ0FBWjtJQUNBLE1BQU1oRCxHQUFHLENBQUNvRCxLQUFKLENBQVVELEdBQVYsQ0FBTjs7SUFDQSxJQUFJLEVBQUMsTUFBTW5ELEdBQUcsQ0FBQ3FELFFBQUosQ0FBYUwsR0FBYixDQUFQLENBQUosRUFBOEI7TUFDNUIsTUFBTSxJQUFJTSxLQUFKLENBQVUsa0RBQVYsQ0FBTjtJQUNEOztJQUNELE1BQU10RCxHQUFHLENBQUN1RCxJQUFKLENBQVNQLEdBQVQsRUFBY1YsU0FBZCxDQUFOO0lBQ0EsT0FBTyxNQUFNa0IsY0FBS0MsSUFBTCxDQUFVbkIsU0FBVixDQUFiO0VBQ0QsQ0FWRCxTQVVVO0lBQ1IsSUFBSSxNQUFNSyxZQUFHQyxNQUFILENBQVVOLFNBQVYsQ0FBVixFQUFnQztNQUM5QixNQUFNSyxZQUFHRSxNQUFILENBQVVQLFNBQVYsQ0FBTjtJQUNEO0VBQ0Y7QUFDRixDQXBCRDs7QUFzQkEvRixPQUFPLENBQUNtSCwrQkFBUixHQUEwQyxlQUFlQSwrQkFBZixDQUFnRDFELEdBQWhELEVBQXFEO0VBQzdGLElBQUk7SUFBQzJELE1BQUQ7SUFBU0MsTUFBVDtJQUFpQkM7RUFBakIsSUFBeUIsTUFBTSx3QkFBSzdELEdBQUcsQ0FBQzhELFVBQUosQ0FBZXRCLElBQXBCLEVBQ0R4QyxHQUFHLENBQUM4RCxVQUFKLENBQWVDLFdBQWYsQ0FDR0MsTUFESCxDQUNVLENBQUMsVUFBRCxFQUFhLHVCQUFiLEVBQXNDLElBQXRDLENBRFYsQ0FEQyxFQUdEO0lBQUNDLFFBQVEsRUFBRSxRQUFYO0lBQXFCQyxRQUFRLEVBQUU7RUFBL0IsQ0FIQyxDQUFuQzs7RUFLQSxJQUFJTCxJQUFJLElBQUlELE1BQU0sQ0FBQ08sTUFBbkIsRUFBMkI7SUFDekIsTUFBTSxJQUFJYixLQUFKLENBQVcscUNBQW9DTyxJQUFLLGVBQWNELE1BQU0sQ0FBQ1EsUUFBUCxFQUFrQixHQUFwRixDQUFOO0VBQ0Q7O0VBRUQsSUFBSSxDQUFDVCxNQUFNLENBQUNRLE1BQVosRUFBb0I7SUFDbEIsTUFBTSxJQUFJYixLQUFKLENBQVUsNkJBQVYsQ0FBTjtFQUNEOztFQUVELE9BQU8sTUFBTUUsY0FBS0MsSUFBTCxDQUFVRSxNQUFWLENBQWI7QUFDRCxDQWZEOztBQWlCQXJILFFBQVEsQ0FBQytILGFBQVQsR0FBeUIsZUFBZUEsYUFBZixHQUFnQztFQUN2RCxNQUFNQyxRQUFRLEdBQUcsTUFBTSxLQUFLdEUsR0FBTCxDQUFTdUUsV0FBVCxFQUF2QjtFQUNBLElBQUlDLEtBQUssR0FBRyxJQUFaOztFQUNBLElBQUlGLFFBQVEsR0FBRyxFQUFmLEVBQW1CO0lBQ2pCLElBQUk7TUFHRkUsS0FBSyxHQUFHLE1BQU0sS0FBS2QsK0JBQUwsQ0FBcUMsS0FBSzFELEdBQTFDLENBQWQ7SUFDRCxDQUpELENBSUUsT0FBT3lFLENBQVAsRUFBVTtNQUNWLEtBQUs3SCxHQUFMLENBQVM4SCxJQUFULENBQWUsOERBQTZERCxDQUFDLENBQUNuRCxPQUFRLEtBQXhFLEdBQ1gsZ0NBREg7SUFFRDtFQUNGOztFQUNELElBQUksQ0FBQ2tELEtBQUwsRUFBWTtJQUNWLElBQUk7TUFDRkEsS0FBSyxHQUFHLE1BQU0sS0FBS25DLDZCQUFMLENBQW1DLEtBQUtyQyxHQUF4QyxFQUE2QyxLQUFLM0MsSUFBbEQsQ0FBZDtJQUNELENBRkQsQ0FFRSxPQUFPb0gsQ0FBUCxFQUFVO01BQ1YsTUFBTUUsR0FBRyxHQUFJLDBDQUF5Q0YsQ0FBQyxDQUFDbkQsT0FBUSxLQUFwRCxHQUNULDBEQURTLEdBRVQsa0JBRkg7TUFHQSxLQUFLMUUsR0FBTCxDQUFTdUUsYUFBVCxDQUF1QndELEdBQXZCO0lBQ0Q7RUFDRjs7RUFDRCxJQUFJTCxRQUFRLEdBQUcsRUFBZixFQUFtQjtJQUVqQixJQUFJTSxpQkFBaUIsR0FBRyxNQUFNLEtBQUs1RSxHQUFMLENBQVM2RSxvQkFBVCxFQUE5Qjs7SUFDQSxJQUFJO01BQ0ZMLEtBQUssR0FBRyxNQUFNQSxLQUFLLENBQUNNLE1BQU4sQ0FBYSxDQUFDLEVBQUQsR0FBTUYsaUJBQW5CLENBQWQ7SUFDRCxDQUZELENBRUUsT0FBT0QsR0FBUCxFQUFZO01BQ1osS0FBSy9ILEdBQUwsQ0FBU0MsSUFBVCxDQUFlLDZDQUE0QzhILEdBQUksRUFBL0Q7SUFDRDtFQUNGOztFQUNELE1BQU1JLFNBQVMsR0FBRzNFLGtCQUFFNEUsU0FBRixDQUFZUixLQUFLLENBQUNPLFNBQWxCLEVBQTZCO0lBQUNFLE9BQU8sRUFBRVQ7RUFBVixDQUE3QixDQUFsQjs7RUFDQSxNQUFNVSxTQUFTLEdBQUcsTUFBTUgsU0FBUyxDQUFDdkIsY0FBSzJCLFFBQU4sQ0FBakM7RUFDQSxPQUFPRCxTQUFTLENBQUNkLFFBQVYsQ0FBbUIsUUFBbkIsQ0FBUDtBQUNELENBbkNEOztBQXFDQWdCLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjN0ksVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUifQ==
|
|
380
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiLCJuYW1lcyI6WyJzd2lwZVN0ZXBzUGVyU2VjIiwiZHJhZ1N0ZXBzUGVyU2VjIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImtleWV2ZW50Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImxvZyIsIndhcm4iLCJwcmVzc0tleUNvZGUiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwibG9uZ1ByZXNzS2V5Q29kZSIsImdldE9yaWVudGF0aW9uIiwicGFyYW1zIiwibmF0dXJhbE9yaWVudGF0aW9uIiwib3B0cyIsImFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsInRvVXBwZXJDYXNlIiwic2V0T3JpZW50YXRpb24iLCJmYWtlRmxpY2siLCJ4U3BlZWQiLCJ5U3BlZWQiLCJmYWtlRmxpY2tFbGVtZW50IiwiZWxlbWVudElkIiwieG9mZnNldCIsInlvZmZzZXQiLCJzcGVlZCIsInN3aXBlIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsInRvdWNoQ291bnQiLCJlbElkIiwic3dpcGVPcHRzIiwic3RlcHMiLCJNYXRoIiwicm91bmQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkb1N3aXBlIiwicGluY2hDbG9zZSIsInBlcmNlbnQiLCJwaW5jaE9wdHMiLCJkaXJlY3Rpb24iLCJwaW5jaE9wZW4iLCJmbGljayIsImVsZW1lbnQiLCJ4T2Zmc2V0IiwieU9mZnNldCIsImRyYWciLCJkZXN0RWxJZCIsImRyYWdPcHRzIiwiZG9EcmFnIiwibG9jayIsInNlY29uZHMiLCJhZGIiLCJpc05hTiIsImZsb2F0U2Vjb25kcyIsInBhcnNlRmxvYXQiLCJCIiwiZGVsYXkiLCJ1bmxvY2siLCJpc0xvY2tlZCIsImlzU2NyZWVuTG9ja2VkIiwiYW5kcm9pZEhlbHBlcnMiLCJjYXBzIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwic2VuZFRlbG5ldENvbW1hbmQiLCJmaW5nZXJwcmludCIsImZpbmdlcnByaW50SWQiLCJpc0VtdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInNlbmRTTVMiLCJwaG9uZU51bWJlciIsIm1lc3NhZ2UiLCJnc21DYWxsIiwiYWN0aW9uIiwiZ3NtU2lnbmFsIiwic2lnbmFsU3RyZW5naCIsImdzbVZvaWNlIiwic3RhdGUiLCJwb3dlckFDIiwicG93ZXJDYXBhY2l0eSIsImJhdHRlcnlQZXJjZW50IiwibmV0d29ya1NwZWVkIiwic2Vuc29yU2V0Iiwic2Vuc29yIiwic2Vuc29yVHlwZSIsInZhbHVlIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwiLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwicG5nRGlyIiwiYW5kcm9pZFNjcmVlbnNob3RQYXRoIiwicG5nIiwicG9zaXgiLCJyZXNvbHZlIiwiY21kIiwic2hlbGwiLCJmaWxlU2l6ZSIsIkVycm9yIiwicHVsbCIsImppbXAiLCJyZWFkIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCIsInN0ZG91dCIsInN0ZGVyciIsImNvZGUiLCJleGVjIiwiZXhlY3V0YWJsZSIsImRlZmF1bHRBcmdzIiwiY29uY2F0IiwiZW5jb2RpbmciLCJpc0J1ZmZlciIsImxlbmd0aCIsInRvU3RyaW5nIiwiZ2V0U2NyZWVuc2hvdCIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJpbWFnZSIsImUiLCJpbmZvIiwiZXJyIiwic2NyZWVuT3JpZW50YXRpb24iLCJnZXRTY3JlZW5PcmllbnRhdGlvbiIsInJvdGF0ZSIsImdldEJ1ZmZlciIsInByb21pc2lmeSIsImNvbnRleHQiLCJpbWdCdWZmZXIiLCJNSU1FX1BORyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hY3Rpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHRlbXBEaXJ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBqaW1wIGZyb20gJ2ppbXAnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IHN3aXBlU3RlcHNQZXJTZWMgPSAyODtcbmNvbnN0IGRyYWdTdGVwc1BlclNlYyA9IDQwO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmtleWV2ZW50ID0gYXN5bmMgZnVuY3Rpb24ga2V5ZXZlbnQgKGtleWNvZGUsIG1ldGFzdGF0ZSA9IG51bGwpIHtcbiAgLy8gVE9ETyBkZXByZWNhdGUga2V5ZXZlbnQ7IGN1cnJlbnRseSB3ZCBvbmx5IGltcGxlbWVudHMga2V5ZXZlbnRcbiAgdGhpcy5sb2cud2Fybigna2V5ZXZlbnQgd2lsbCBiZSBkZXByZWNhdGVkIHVzZSBwcmVzc0tleUNvZGUnKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJlc3NLZXlDb2RlKGtleWNvZGUsIG1ldGFzdGF0ZSk7XG59O1xuXG5jb21tYW5kcy5wcmVzc0tleUNvZGUgPSBhc3luYyBmdW5jdGlvbiBwcmVzc0tleUNvZGUgKGtleWNvZGUsIG1ldGFzdGF0ZSA9IG51bGwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzS2V5Q29kZScsIHtrZXljb2RlLCBtZXRhc3RhdGV9KTtcbn07XG5cbmNvbW1hbmRzLmxvbmdQcmVzc0tleUNvZGUgPSBhc3luYyBmdW5jdGlvbiBsb25nUHJlc3NLZXlDb2RlIChrZXljb2RlLCBtZXRhc3RhdGUgPSBudWxsKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdsb25nUHJlc3NLZXlDb2RlJywge2tleWNvZGUsIG1ldGFzdGF0ZX0pO1xufTtcblxuY29tbWFuZHMuZ2V0T3JpZW50YXRpb24gPSBhc3luYyBmdW5jdGlvbiBnZXRPcmllbnRhdGlvbiAoKSB7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgbmF0dXJhbE9yaWVudGF0aW9uOiAhIXRoaXMub3B0cy5hbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uLFxuICB9O1xuICBsZXQgb3JpZW50YXRpb24gPSBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdvcmllbnRhdGlvbicsIHBhcmFtcyk7XG4gIHJldHVybiBvcmllbnRhdGlvbi50b1VwcGVyQ2FzZSgpO1xufTtcblxuY29tbWFuZHMuc2V0T3JpZW50YXRpb24gPSBhc3luYyBmdW5jdGlvbiBzZXRPcmllbnRhdGlvbiAob3JpZW50YXRpb24pIHtcbiAgb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbi50b1VwcGVyQ2FzZSgpO1xuICBsZXQgcGFyYW1zID0ge1xuICAgIG9yaWVudGF0aW9uLFxuICAgIG5hdHVyYWxPcmllbnRhdGlvbjogISF0aGlzLm9wdHMuYW5kcm9pZE5hdHVyYWxPcmllbnRhdGlvbixcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29yaWVudGF0aW9uJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLmZha2VGbGljayA9IGFzeW5jIGZ1bmN0aW9uIGZha2VGbGljayAoeFNwZWVkLCB5U3BlZWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2ZsaWNrJywge3hTcGVlZCwgeVNwZWVkfSk7XG59O1xuXG5jb21tYW5kcy5mYWtlRmxpY2tFbGVtZW50ID0gYXN5bmMgZnVuY3Rpb24gZmFrZUZsaWNrRWxlbWVudCAoZWxlbWVudElkLCB4b2Zmc2V0LCB5b2Zmc2V0LCBzcGVlZCkge1xuICBsZXQgcGFyYW1zID0ge3hvZmZzZXQsIHlvZmZzZXQsIHNwZWVkLCBlbGVtZW50SWR9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpmbGljaycsIHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy5zd2lwZSA9IGFzeW5jIGZ1bmN0aW9uIHN3aXBlIChzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHRvdWNoQ291bnQsIGVsSWQpIHtcbiAgaWYgKHN0YXJ0WCA9PT0gJ251bGwnKSB7XG4gICAgc3RhcnRYID0gMC41O1xuICB9XG4gIGlmIChzdGFydFkgPT09ICdudWxsJykge1xuICAgIHN0YXJ0WSA9IDAuNTtcbiAgfVxuICBsZXQgc3dpcGVPcHRzID0ge3N0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLFxuICAgICAgICAgICAgICAgICAgIHN0ZXBzOiBNYXRoLnJvdW5kKGR1cmF0aW9uICogc3dpcGVTdGVwc1BlclNlYyl9O1xuICAvLyBnb2luZyB0aGUgbG9uZyB3YXkgYW5kIGNoZWNraW5nIGZvciB1bmRlZmluZWQgYW5kIG51bGwgc2luY2VcbiAgLy8gd2UgY2FuJ3QgYmUgYXNzdXJlZCBgZWxJZGAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBpbnRcbiAgaWYgKHV0aWwuaGFzVmFsdWUoZWxJZCkpIHtcbiAgICBzd2lwZU9wdHMuZWxlbWVudElkID0gZWxJZDtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5kb1N3aXBlKHN3aXBlT3B0cyk7XG59O1xuXG5jb21tYW5kcy5kb1N3aXBlID0gYXN5bmMgZnVuY3Rpb24gZG9Td2lwZSAoc3dpcGVPcHRzKSB7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHN3aXBlT3B0cy5lbGVtZW50SWQpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6c3dpcGUnLCBzd2lwZU9wdHMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzd2lwZScsIHN3aXBlT3B0cyk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnBpbmNoQ2xvc2UgPSBhc3luYyBmdW5jdGlvbiBwaW5jaENsb3NlIChzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHBlcmNlbnQsIHN0ZXBzLCBlbElkKSB7XG4gIGxldCBwaW5jaE9wdHMgPSB7XG4gICAgZGlyZWN0aW9uOiAnaW4nLFxuICAgIGVsZW1lbnRJZDogZWxJZCxcbiAgICBwZXJjZW50LFxuICAgIHN0ZXBzXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBpbmNoJywgcGluY2hPcHRzKTtcbn07XG5cbmNvbW1hbmRzLnBpbmNoT3BlbiA9IGFzeW5jIGZ1bmN0aW9uIHBpbmNoT3BlbiAoc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCBwZXJjZW50LCBzdGVwcywgZWxJZCkge1xuICBsZXQgcGluY2hPcHRzID0ge2RpcmVjdGlvbjogJ291dCcsIGVsZW1lbnRJZDogZWxJZCwgcGVyY2VudCwgc3RlcHN9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpwaW5jaCcsIHBpbmNoT3B0cyk7XG59O1xuXG5jb21tYW5kcy5mbGljayA9IGFzeW5jIGZ1bmN0aW9uIGZsaWNrIChlbGVtZW50LCB4U3BlZWQsIHlTcGVlZCwgeE9mZnNldCwgeU9mZnNldCwgc3BlZWQpIHtcbiAgaWYgKGVsZW1lbnQpIHtcbiAgICBhd2FpdCB0aGlzLmZha2VGbGlja0VsZW1lbnQoZWxlbWVudCwgeE9mZnNldCwgeU9mZnNldCwgc3BlZWQpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRoaXMuZmFrZUZsaWNrKHhTcGVlZCwgeVNwZWVkKTtcbiAgfVxufTtcblxuY29tbWFuZHMuZHJhZyA9IGFzeW5jIGZ1bmN0aW9uIGRyYWcgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgdG91Y2hDb3VudCwgZWxlbWVudElkLCBkZXN0RWxJZCkge1xuICBsZXQgZHJhZ09wdHMgPSB7XG4gICAgZWxlbWVudElkLCBkZXN0RWxJZCwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksXG4gICAgc3RlcHM6IE1hdGgucm91bmQoZHVyYXRpb24gKiBkcmFnU3RlcHNQZXJTZWMpXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmRvRHJhZyhkcmFnT3B0cyk7XG5cbn07XG5cbmNvbW1hbmRzLmRvRHJhZyA9IGFzeW5jIGZ1bmN0aW9uIGRvRHJhZyAoZHJhZ09wdHMpIHtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoZHJhZ09wdHMuZWxlbWVudElkKSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmRyYWcnLCBkcmFnT3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2RyYWcnLCBkcmFnT3B0cyk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmxvY2sgPSBhc3luYyBmdW5jdGlvbiBsb2NrIChzZWNvbmRzKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmxvY2soKTtcbiAgaWYgKGlzTmFOKHNlY29uZHMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZmxvYXRTZWNvbmRzID0gcGFyc2VGbG9hdChzZWNvbmRzKTtcbiAgaWYgKGZsb2F0U2Vjb25kcyA8PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF3YWl0IEIuZGVsYXkoMTAwMCAqIGZsb2F0U2Vjb25kcyk7XG4gIGF3YWl0IHRoaXMudW5sb2NrKCk7XG59O1xuXG5jb21tYW5kcy5pc0xvY2tlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzTG9ja2VkICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzU2NyZWVuTG9ja2VkKCk7XG59O1xuXG5jb21tYW5kcy51bmxvY2sgPSBhc3luYyBmdW5jdGlvbiB1bmxvY2sgKCkge1xuICByZXR1cm4gYXdhaXQgYW5kcm9pZEhlbHBlcnMudW5sb2NrKHRoaXMsIHRoaXMuYWRiLCB0aGlzLmNhcHMpO1xufTtcblxuY29tbWFuZHMub3Blbk5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBvcGVuTm90aWZpY2F0aW9ucyAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdvcGVuTm90aWZpY2F0aW9uJyk7XG59O1xuXG5jb21tYW5kcy5zZXRMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldExvY2F0aW9uIChsYXRpdHVkZSwgbG9uZ2l0dWRlKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5zZW5kVGVsbmV0Q29tbWFuZChgZ2VvIGZpeCAke2xvbmdpdHVkZX0gJHtsYXRpdHVkZX1gKTtcbn07XG5cbmNvbW1hbmRzLmZpbmdlcnByaW50ID0gYXN5bmMgZnVuY3Rpb24gZmluZ2VycHJpbnQgKGZpbmdlcnByaW50SWQpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2ZpbmdlcnByaW50IG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZmluZ2VycHJpbnQoZmluZ2VycHJpbnRJZCk7XG59O1xuXG5jb21tYW5kcy5zZW5kU01TID0gYXN5bmMgZnVuY3Rpb24gc2VuZFNNUyAocGhvbmVOdW1iZXIsIG1lc3NhZ2UpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3NlbmRTTVMgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5zZW5kU01TKHBob25lTnVtYmVyLCBtZXNzYWdlKTtcbn07XG5cbmNvbW1hbmRzLmdzbUNhbGwgPSBhc3luYyBmdW5jdGlvbiBnc21DYWxsIChwaG9uZU51bWJlciwgYWN0aW9uKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdnc21DYWxsIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZ3NtQ2FsbChwaG9uZU51bWJlciwgYWN0aW9uKTtcbn07XG5cbmNvbW1hbmRzLmdzbVNpZ25hbCA9IGFzeW5jIGZ1bmN0aW9uIGdzbVNpZ25hbCAoc2lnbmFsU3RyZW5naCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZ3NtU2lnbmFsIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZ3NtU2lnbmFsKHNpZ25hbFN0cmVuZ2gpO1xufTtcblxuY29tbWFuZHMuZ3NtVm9pY2UgPSBhc3luYyBmdW5jdGlvbiBnc21Wb2ljZSAoc3RhdGUpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2dzbVZvaWNlIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZ3NtVm9pY2Uoc3RhdGUpO1xufTtcblxuY29tbWFuZHMucG93ZXJBQyA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyQUMgKHN0YXRlKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdwb3dlckFDIG1ldGhvZCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIucG93ZXJBQyhzdGF0ZSk7XG59O1xuXG5jb21tYW5kcy5wb3dlckNhcGFjaXR5ID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJDYXBhY2l0eSAoYmF0dGVyeVBlcmNlbnQpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3Bvd2VyQ2FwYWNpdHkgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5wb3dlckNhcGFjaXR5KGJhdHRlcnlQZXJjZW50KTtcbn07XG5cbmNvbW1hbmRzLm5ldHdvcmtTcGVlZCA9IGFzeW5jIGZ1bmN0aW9uIG5ldHdvcmtTcGVlZCAobmV0d29ya1NwZWVkKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCduZXR3b3JrU3BlZWQgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5uZXR3b3JrU3BlZWQobmV0d29ya1NwZWVkKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5zb3JzIHZhbHVlcyBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNlbnNvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNlbnNvclR5cGUgLSBzZW5zb3IgdHlwZSBkZWNsYXJlZCBpbiBhZGIuU0VOU09SU1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHZhbHVlIC0gdmFsdWUgdG8gc2V0IHRvIHRoZSBzZW5zb3JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gU2Vuc29yXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBzZW5zb3JUeXBlIGlzIG5vdCBkZWZpbmVkXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiB2YWx1ZSBmb3IgdGhlIHNlIHNvciBpcyBub3QgZGVmaW5lZFxuICogQHRocm93cyB7RXJyb3J9IC0gSWYgZGV2aWNlVHlwZSBpcyBub3QgYW4gZW11bGF0b3JcbiAqL1xuY29tbWFuZHMuc2Vuc29yU2V0ID0gYXN5bmMgZnVuY3Rpb24gc2Vuc29yU2V0IChzZW5zb3IgPSB7fSkge1xuICBjb25zdCB7c2Vuc29yVHlwZSwgdmFsdWV9ID0gc2Vuc29yO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoc2Vuc29yVHlwZSkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAnc2Vuc29yVHlwZScgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICBpZiAoIXV0aWwuaGFzVmFsdWUodmFsdWUpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgJ3ZhbHVlJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdzZW5zb3JTZXQgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5zZW5zb3JTZXQoc2Vuc29yVHlwZSwgdmFsdWUpO1xufTtcblxuaGVscGVycy5nZXRTY3JlZW5zaG90RGF0YVdpdGhBZGJTaGVsbCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3REYXRhV2l0aEFkYlNoZWxsIChhZGIsIG9wdHMpIHtcbiAgY29uc3QgbG9jYWxGaWxlID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdhcHBpdW0nLCBzdWZmaXg6ICcucG5nJ30pO1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICBhd2FpdCBmcy51bmxpbmsobG9jYWxGaWxlKTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHBuZ0RpciA9IG9wdHMuYW5kcm9pZFNjcmVlbnNob3RQYXRoIHx8ICcvZGF0YS9sb2NhbC90bXAvJztcbiAgICBjb25zdCBwbmcgPSBwYXRoLnBvc2l4LnJlc29sdmUocG5nRGlyLCAnc2NyZWVuc2hvdC5wbmcnKTtcbiAgICBjb25zdCBjbWQgPSBbJy9zeXN0ZW0vYmluL3JtJywgYCR7cG5nfTtgLCAnL3N5c3RlbS9iaW4vc2NyZWVuY2FwJywgJy1wJywgcG5nXTtcbiAgICBhd2FpdCBhZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWF3YWl0IGFkYi5maWxlU2l6ZShwbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzaXplIG9mIHRoZSB0YWtlbiBzY3JlZW5zaG90IGVxdWFscyB0byB6ZXJvLicpO1xuICAgIH1cbiAgICBhd2FpdCBhZGIucHVsbChwbmcsIGxvY2FsRmlsZSk7XG4gICAgcmV0dXJuIGF3YWl0IGppbXAucmVhZChsb2NhbEZpbGUpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobG9jYWxGaWxlKSkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGxvY2FsRmlsZSk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQgPSBhc3luYyBmdW5jdGlvbiBnZXRTY3JlZW5zaG90RGF0YVdpdGhBZGJFeGVjT3V0IChhZGIpIHtcbiAgbGV0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBleGVjKGFkYi5leGVjdXRhYmxlLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGIuZXhlY3V0YWJsZS5kZWZhdWx0QXJnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KFsnZXhlYy1vdXQnLCAnL3N5c3RlbS9iaW4vc2NyZWVuY2FwJywgJy1wJ10pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2VuY29kaW5nOiAnYmluYXJ5JywgaXNCdWZmZXI6IHRydWV9KTtcbiAgLy8gaWYgdGhlcmUgaXMgYW4gZXJyb3IsIHRocm93XG4gIGlmIChjb2RlIHx8IHN0ZGVyci5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbnNob3QgcmV0dXJuZWQgZXJyb3IsIGNvZGU6ICcke2NvZGV9Jywgc3RkZXJyOiAnJHtzdGRlcnIudG9TdHJpbmcoKX0nYCk7XG4gIH1cbiAgLy8gaWYgd2UgZG9uJ3QgZ2V0IGFueXRoaW5nIGF0IGFsbCwgdGhyb3dcbiAgaWYgKCFzdGRvdXQubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTY3JlZW5zaG90IHJldHVybmVkIG5vIGRhdGEnKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBqaW1wLnJlYWQoc3Rkb3V0KTtcbn07XG5cbmNvbW1hbmRzLmdldFNjcmVlbnNob3QgPSBhc3luYyBmdW5jdGlvbiBnZXRTY3JlZW5zaG90ICgpIHtcbiAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICBsZXQgaW1hZ2UgPSBudWxsO1xuICBpZiAoYXBpTGV2ZWwgPiAyMCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIHNjcmVlbnNob3RpbmcgYXBwcm9hY2ggaXMgd2F5IGZhc3Rlciwgc2luY2UgaXQgcmVxdWlyZXMgbGVzcyBleHRlcm5hbCBjb21tYW5kc1xuICAgICAgLy8gdG8gYmUgZXhlY3V0ZWQuIFVuZm9ydHVuYXRlbHksIGV4ZWMtb3V0IG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBieSBuZXdlciBBbmRyb2lkL1NESyB2ZXJzaW9ucyAoNS4wIGFuZCBsYXRlcilcbiAgICAgIGltYWdlID0gYXdhaXQgdGhpcy5nZXRTY3JlZW5zaG90RGF0YVdpdGhBZGJFeGVjT3V0KHRoaXMuYWRiKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBDYW5ub3QgZ2V0IHNjcmVlbnNob3QgZGF0YSB3aXRoICdhZGIgZXhlYy1vdXQnIGJlY2F1c2Ugb2YgJyR7ZS5tZXNzYWdlfScuIGAgK1xuICAgICAgICBgRGVmYXVsdGluZyB0byAnYWRiIHNoZWxsJyBjYWxsYCk7XG4gICAgfVxuICB9XG4gIGlmICghaW1hZ2UpIHtcbiAgICB0cnkge1xuICAgICAgaW1hZ2UgPSBhd2FpdCB0aGlzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYlNoZWxsKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVyciA9IGBDYW5ub3QgZ2V0IHNjcmVlbnNob3QgZGF0YSBiZWNhdXNlIG9mICcke2UubWVzc2FnZX0nLiBgICtcbiAgICAgICAgYE1ha2Ugc3VyZSB0aGUgJ0xheW91dFBhcmFtcy5GTEFHX1NFQ1VSRScgaXMgbm90IHNldCBmb3IgYCArXG4gICAgICAgIGB0aGUgY3VycmVudCB2aWV3YDtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coZXJyKTtcbiAgICB9XG4gIH1cbiAgaWYgKGFwaUxldmVsIDwgMjMpIHtcbiAgICAvLyBBbmRyb2lkIGJ1ZyA4NDMzNzQyIC0gcm90YXRlIHNjcmVlbnNob3QgaWYgc2NyZWVuIGlzIHJvdGF0ZWRcbiAgICBsZXQgc2NyZWVuT3JpZW50YXRpb24gPSBhd2FpdCB0aGlzLmFkYi5nZXRTY3JlZW5PcmllbnRhdGlvbigpO1xuICAgIHRyeSB7XG4gICAgICBpbWFnZSA9IGF3YWl0IGltYWdlLnJvdGF0ZSgtOTAgKiBzY3JlZW5PcmllbnRhdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBDb3VsZCBub3Qgcm90YXRlIHNjcmVlbnNob3QgZHVlIHRvIGVycm9yOiAke2Vycn1gKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZ2V0QnVmZmVyID0gQi5wcm9taXNpZnkoaW1hZ2UuZ2V0QnVmZmVyLCB7Y29udGV4dDogaW1hZ2V9KTtcbiAgY29uc3QgaW1nQnVmZmVyID0gYXdhaXQgZ2V0QnVmZmVyKGppbXAuTUlNRV9QTkcpO1xuICByZXR1cm4gaW1nQnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7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
|
|
@@ -36,4 +36,4 @@ var _default = extensions;
|
|
|
36
36
|
exports.default = _default;require('source-map-support').install();
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FsZXJ0LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImdldEFsZXJ0VGV4dCIsImVycm9ycyIsIk5vdFlldEltcGxlbWVudGVkRXJyb3IiLCJzZXRBbGVydFRleHQiLCJwb3N0QWNjZXB0QWxlcnQiLCJwb3N0RGlzbWlzc0FsZXJ0IiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FsZXJ0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmdldEFsZXJ0VGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEFsZXJ0VGV4dCAoKSB7XG4gIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xufTtcblxuY29tbWFuZHMuc2V0QWxlcnRUZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0QWxlcnRUZXh0ICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5jb21tYW5kcy5wb3N0QWNjZXB0QWxlcnQgPSBhc3luYyBmdW5jdGlvbiBwb3N0QWNjZXB0QWxlcnQgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoKTtcbn07XG5cbmNvbW1hbmRzLnBvc3REaXNtaXNzQWxlcnQgPSBhc3luYyBmdW5jdGlvbiBwb3N0RGlzbWlzc0FsZXJ0ICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csWUFBVCxHQUF3QixlQUFlQSxZQUFmLEdBQStCO0VBQ3JELE1BQU0sSUFBSUMsa0JBQUEsQ0FBT0Msc0JBQVgsRUFBTjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ00sWUFBVCxHQUF3QixlQUFlQSxZQUFmLEdBQStCO0VBQ3JELE1BQU0sSUFBSUYsa0JBQUEsQ0FBT0Msc0JBQVgsRUFBTjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ08sZUFBVCxHQUEyQixlQUFlQSxlQUFmLEdBQWtDO0VBQzNELE1BQU0sSUFBSUgsa0JBQUEsQ0FBT0Msc0JBQVgsRUFBTjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ1EsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsR0FBbUM7RUFDN0QsTUFBTSxJQUFJSixrQkFBQSxDQUFPQyxzQkFBWCxFQUFOO0FBQ0QsQ0FGRDs7QUFJQUksTUFBTSxDQUFDQyxNQUFQLENBQWNSLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIn0=
|
|
@@ -50,19 +50,32 @@ commands.queryAppState = async function queryAppState(appId) {
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
commands.activateApp = async function activateApp(appId) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
this.log.debug(`Activating '${appId}'`);
|
|
54
|
+
const apiLevel = await this.adb.getApiLevel();
|
|
55
|
+
|
|
56
|
+
if (apiLevel < 24) {
|
|
57
|
+
const cmd = ['monkey', '-p', appId, '-c', 'android.intent.category.LAUNCHER', '1'];
|
|
58
|
+
let output = '';
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
output = await this.adb.shell(cmd);
|
|
62
|
+
this.log.debug(`Command stdout: ${output}`);
|
|
63
|
+
} catch (e) {
|
|
64
|
+
this.log.errorAndThrow(`Cannot activate '${appId}'. Original error: ${e.message}`);
|
|
65
|
+
}
|
|
55
66
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.log.errorAndThrow(`Cannot activate '${appId}'. Original error: ${e.message}`);
|
|
67
|
+
if (output.includes('monkey aborted')) {
|
|
68
|
+
this.log.errorAndThrow(`Cannot activate '${appId}'. Are you sure it is installed?`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return;
|
|
62
72
|
}
|
|
63
73
|
|
|
64
|
-
|
|
65
|
-
|
|
74
|
+
const stdout = await this.adb.shell(['am', apiLevel < 26 ? 'start' : 'start-activity', '-a', 'android.intent.action.MAIN', '-c', 'android.intent.category.LAUNCHER', '-f', '0x10420000', '-n', await this.adb.resolveLaunchableActivity(appId)]);
|
|
75
|
+
this.log.debug(stdout);
|
|
76
|
+
|
|
77
|
+
if (/^error:/mi.test(stdout)) {
|
|
78
|
+
throw new Error(`Cannot activate '${appId}'. Original error: ${stdout}`);
|
|
66
79
|
}
|
|
67
80
|
};
|
|
68
81
|
|
|
@@ -115,4 +128,4 @@ var _default = commands;
|
|
|
115
128
|
exports.default = _default;require('source-map-support').install();
|
|
116
129
|
|
|
117
130
|
|
|
118
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiQVBQX0VYVEVOU0lPTlMiLCJjb21tYW5kcyIsImlzQXBwSW5zdGFsbGVkIiwiYXBwSWQiLCJhZGIiLCJxdWVyeUFwcFN0YXRlIiwibG9nIiwiaW5mbyIsIkFQUF9TVEFURSIsIk5PVF9JTlNUQUxMRUQiLCJwcm9jZXNzRXhpc3RzIiwiTk9UX1JVTk5JTkciLCJhcHBJZFJlIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsImxpbmUiLCJkdW1wV2luZG93cyIsInNwbGl0IiwidGVzdCIsInNvbWUiLCJ4IiwiaW5jbHVkZXMiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJhY3RpdmF0ZUFwcCIsImNtZCIsIm91dHB1dCIsImRlYnVnIiwiam9pbiIsInNoZWxsIiwiZSIsImVycm9yQW5kVGhyb3ciLCJtZXNzYWdlIiwicmVtb3ZlQXBwIiwib3B0aW9ucyIsInVuaW5zdGFsbEFwayIsInRlcm1pbmF0ZUFwcCIsImZvcmNlU3RvcCIsInRpbWVvdXQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJpc05hTiIsInBhcnNlSW50Iiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImluc3RhbGxBcHAiLCJhcHBQYXRoIiwibG9jYWxQYXRoIiwiaGVscGVycyIsImNvbmZpZ3VyZUFwcCIsImluc3RhbGwiLCJtb2JpbGVDbGVhckFwcCIsIm9wdHMiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsImNsZWFyIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEFQUF9FWFRFTlNJT05TID0gWycuYXBrJywgJy5hcGtzJ107XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFZlcmlmeSB3aGV0aGVyIGFuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZCBvciBub3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkXG4gKi9cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGFwcElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5pc0FwcEluc3RhbGxlZChhcHBJZCk7XG59O1xuXG4vKipcbiAqIFF1ZXJpZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBjb3JyZXNwb25kaW5nIGNvbnN0YW50LCB3aGljaCBkZXNjcmliZXNcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlOlxuICogMCAtIGlzIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZFxuICogMSAtIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkLCBidXQgaXMgbm90IHJ1bm5pbmdcbiAqIDMgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmRcbiAqIDQgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGZvcmVncm91bmRcbiAqL1xuY29tbWFuZHMucXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwU3RhdGUgKGFwcElkKSB7XG4gIHRoaXMubG9nLmluZm8oYFF1ZXJ5aW5nIHRoZSBzdGF0ZSBvZiAnJHthcHBJZH0nYCk7XG4gIGlmICghYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQoYXBwSWQpKSB7XG4gICAgcmV0dXJuIEFQUF9TVEFURS5OT1RfSU5TVEFMTEVEO1xuICB9XG4gIGlmICghYXdhaXQgdGhpcy5hZGIucHJvY2Vzc0V4aXN0cyhhcHBJZCkpIHtcbiAgICByZXR1cm4gQVBQX1NUQVRFLk5PVF9SVU5OSU5HO1xuICB9XG4gIGNvbnN0IGFwcElkUmUgPSBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAoYXBwSWQpfS9gKTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIChhd2FpdCB0aGlzLmFkYi5kdW1wV2luZG93cygpKS5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAoYXBwSWRSZS50ZXN0KGxpbmUpICYmIFsnbUN1cnJlbnRGb2N1cycsICdtRm9jdXNlZEFwcCddLnNvbWUoKHgpID0+IGxpbmUuaW5jbHVkZXMoeCkpKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFQUF9TVEFURS5SVU5OSU5HX0lOX0JBQ0tHUk9VTkQ7XG59O1xuXG4vKipcbiAqIEFjdGl2YXRlcyB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gb3IgbGF1bmNoZXMgaXQgaWYgbmVjZXNzYXJ5LlxuICogVGhlIGFjdGlvbiBpcyBkb25lIHdpdGggbW9ua2V5IHRvb2wgYW5kIGxpdGVyYWxseSBzaW11bGF0ZXNcbiAqIGNsaWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uIGljb24gb24gdGhlIGRhc2hib2FyZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqL1xuY29tbWFuZHMuYWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUFwcCAoYXBwSWQpIHtcbiAgY29uc3QgY21kID0gWydtb25rZXknLFxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ0ODYwNDc1L2hvdy10by11c2UtdGhlLW1vbmtleS1jb21tYW5kLXdpdGgtYW4tYW5kcm9pZC1zeXN0ZW0tdGhhdC1kb2VzbnQtaGF2ZS1waHlzaWNhbFxuICAgICctLXBjdC1zeXNrZXlzJywgJzAnLFxuICAgICctcCcsIGFwcElkLFxuICAgICctYycsICdhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUicsXG4gICAgJzEnXTtcbiAgbGV0IG91dHB1dCA9ICcnO1xuICB0cnkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBBY3RpdmF0aW5nICcke2FwcElkfScgd2l0aCAnYWRiIHNoZWxsICR7Y21kLmpvaW4oJyAnKX0nIGNvbW1hbmRgKTtcbiAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb21tYW5kIHN0ZG91dDogJHtvdXRwdXR9YCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG4gIGlmIChvdXRwdXQuaW5jbHVkZXMoJ21vbmtleSBhYm9ydGVkJykpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gQXJlIHlvdSBzdXJlIGl0IGlzIGluc3RhbGxlZD9gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBVbmluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbMjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB1bmluc3RhbGxlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ga2VlcERhdGEgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGtlZXAgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkYXRhIGFuZCBjYWNoZSBmb2xkZXJzIGFmdGVyIHVuaW5zdGFsbC5cbiAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBhcHBsaWNhdGlvbiBpZiBpcyBpbnN0YWxsZWQuXG4gKiBUaGUgY2FsbCBpcyBpZ25vcmVkIGlmIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEBwYXJhbSB7P1VuaW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc2V0IG9mIHJlbW92YWwgb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhY2thZ2Ugd2FzIGZvdW5kIG9uIHRoZSBkZXZpY2UgYW5kXG4gKiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHVuaW5zdGFsbGVkLlxuICovXG5jb21tYW5kcy5yZW1vdmVBcHAgPSBhc3luYyBmdW5jdGlvbiByZW1vdmVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhhcHBJZCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRlcm1pbmF0ZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfHN0cmluZ30gdGltZW91dCBbNTAwXSAtIFRoZSBjb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB0ZXJtaW5hdGVkLlxuICovXG5cbi8qKlxuICogVGVybWluYXRlcyB0aGUgYXBwIGlmIGl0IGlzIHJ1bm5pbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKiBAcGFyYW0gez9UZXJtaW5hdGVPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBhcHBsaWNhdGlvbiB0ZXJtaW5hdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYXBwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB0ZXJtaW5hdGVkLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBhcHAgaGFzIG5vdCBiZWVuIHRlcm1pbmF0ZWQgd2l0aGluIHRoZSBnaXZlbiB0aW1lb3V0LlxuICovXG5jb21tYW5kcy50ZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgdGhpcy5sb2cuaW5mbyhgVGVybWluYXRpbmcgJyR7YXBwSWR9J2ApO1xuICBpZiAoIShhd2FpdCB0aGlzLmFkYi5wcm9jZXNzRXhpc3RzKGFwcElkKSkpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBUaGUgYXBwICcke2FwcElkfScgaXMgbm90IHJ1bm5pbmdgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKGFwcElkKTtcbiAgY29uc3QgdGltZW91dCA9IHV0aWwuaGFzVmFsdWUob3B0aW9ucy50aW1lb3V0KSAmJiAhaXNOYU4ob3B0aW9ucy50aW1lb3V0KSA/IHBhcnNlSW50KG9wdGlvbnMudGltZW91dCwgMTApIDogNTAwO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGFwcElkKSA8PSBBUFBfU1RBVEUuTk9UX1JVTk5JTkcsXG4gICAgICB7d2FpdE1zOiB0aW1lb3V0LCBpbnRlcnZhbE1zOiAxMDB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCcke2FwcElkfScgaXMgc3RpbGwgcnVubmluZyBhZnRlciAke3RpbWVvdXR9bXMgdGltZW91dGApO1xuICB9XG4gIHRoaXMubG9nLmluZm8oYCcke2FwcElkfScgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlcm1pbmF0ZWRgKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbNjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyBpbnN0YWxsZWQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiB0byB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBsb2NhbCBhcGsgcGF0aCBvciBhIHJlbW90ZSB1cmxcbiAqIEBwYXJhbSB7P0luc3RhbGxPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBpbnN0YWxsYXRpb24gb3B0aW9uc1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBnaXZlbiBhcGsgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IHJlYWNoYWJsZVxuICovXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGxvY2FsUGF0aCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwUGF0aCwgQVBQX0VYVEVOU0lPTlMpO1xuICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKGxvY2FsUGF0aCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsZWFyQXBwT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBhcHBJZCBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBiZSBjbGVhcmVkXG4gKi9cblxuLyoqXG4gKiBEZWxldGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIHtDbGVhckFwcE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBjbGVhbmluZyBvZiB0aGUgYXBwIGRhdGEgZmFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xlYXJBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbGVhckFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHthcHBJZH0gPSBvcHRzO1xuICBpZiAoIWFwcElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdhcHBJZCcgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5jbGVhcihhcHBJZCk7XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsY0FBYyxHQUFHLENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FBdkI7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjs7O0FBUUFBLFFBQVEsQ0FBQ0MsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCQyxLQUEvQixFQUFzQztFQUM5RCxPQUFPLE1BQU0sS0FBS0MsR0FBTCxDQUFTRixjQUFULENBQXdCQyxLQUF4QixDQUFiO0FBQ0QsQ0FGRDs7QUFlQUYsUUFBUSxDQUFD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
|
|
131
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiQVBQX0VYVEVOU0lPTlMiLCJjb21tYW5kcyIsImlzQXBwSW5zdGFsbGVkIiwiYXBwSWQiLCJhZGIiLCJxdWVyeUFwcFN0YXRlIiwibG9nIiwiaW5mbyIsIkFQUF9TVEFURSIsIk5PVF9JTlNUQUxMRUQiLCJwcm9jZXNzRXhpc3RzIiwiTk9UX1JVTk5JTkciLCJhcHBJZFJlIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsImxpbmUiLCJkdW1wV2luZG93cyIsInNwbGl0IiwidGVzdCIsInNvbWUiLCJ4IiwiaW5jbHVkZXMiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJhY3RpdmF0ZUFwcCIsImRlYnVnIiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImNtZCIsIm91dHB1dCIsInNoZWxsIiwiZSIsImVycm9yQW5kVGhyb3ciLCJtZXNzYWdlIiwic3Rkb3V0IiwicmVzb2x2ZUxhdW5jaGFibGVBY3Rpdml0eSIsIkVycm9yIiwicmVtb3ZlQXBwIiwib3B0aW9ucyIsInVuaW5zdGFsbEFwayIsInRlcm1pbmF0ZUFwcCIsImZvcmNlU3RvcCIsInRpbWVvdXQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJpc05hTiIsInBhcnNlSW50Iiwid2FpdEZvckNvbmRpdGlvbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpbnN0YWxsQXBwIiwiYXBwUGF0aCIsImxvY2FsUGF0aCIsImhlbHBlcnMiLCJjb25maWd1cmVBcHAiLCJpbnN0YWxsIiwibW9iaWxlQ2xlYXJBcHAiLCJvcHRzIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJjbGVhciJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQVBQX1NUQVRFIH0gZnJvbSAnLi4vYW5kcm9pZC1oZWxwZXJzJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBBUFBfRVhURU5TSU9OUyA9IFsnLmFwaycsICcuYXBrcyddO1xuXG5sZXQgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciBhbiBhcHBsaWNhdGlvbiBpcyBpbnN0YWxsZWQgb3Igbm90XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgYXBwIGlzIGluc3RhbGxlZFxuICovXG5jb21tYW5kcy5pc0FwcEluc3RhbGxlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzQXBwSW5zdGFsbGVkIChhcHBJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQoYXBwSWQpO1xufTtcblxuLyoqXG4gKiBRdWVyaWVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgY29ycmVzcG9uZGluZyBjb25zdGFudCwgd2hpY2ggZGVzY3JpYmVzXG4gKiAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzdGF0ZTpcbiAqIDAgLSBpcyB0aGUgYXBwIGlzIG5vdCBpbnN0YWxsZWRcbiAqIDEgLSBpZiB0aGUgYXBwIGlzIGluc3RhbGxlZCwgYnV0IGlzIG5vdCBydW5uaW5nXG4gKiAzIC0gaWYgdGhlIGFwcCBpcyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kXG4gKiA0IC0gaWYgdGhlIGFwcCBpcyBydW5uaW5nIGluIHRoZSBmb3JlZ3JvdW5kXG4gKi9cbmNvbW1hbmRzLnF1ZXJ5QXBwU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFN0YXRlIChhcHBJZCkge1xuICB0aGlzLmxvZy5pbmZvKGBRdWVyeWluZyB0aGUgc3RhdGUgb2YgJyR7YXBwSWR9J2ApO1xuICBpZiAoIWF3YWl0IHRoaXMuYWRiLmlzQXBwSW5zdGFsbGVkKGFwcElkKSkge1xuICAgIHJldHVybiBBUFBfU1RBVEUuTk9UX0lOU1RBTExFRDtcbiAgfVxuICBpZiAoIWF3YWl0IHRoaXMuYWRiLnByb2Nlc3NFeGlzdHMoYXBwSWQpKSB7XG4gICAgcmV0dXJuIEFQUF9TVEFURS5OT1RfUlVOTklORztcbiAgfVxuICBjb25zdCBhcHBJZFJlID0gbmV3IFJlZ0V4cChgXFxcXGIke18uZXNjYXBlUmVnRXhwKGFwcElkKX0vYCk7XG4gIGZvciAoY29uc3QgbGluZSBvZiAoYXdhaXQgdGhpcy5hZGIuZHVtcFdpbmRvd3MoKSkuc3BsaXQoJ1xcbicpKSB7XG4gICAgaWYgKGFwcElkUmUudGVzdChsaW5lKSAmJiBbJ21DdXJyZW50Rm9jdXMnLCAnbUZvY3VzZWRBcHAnXS5zb21lKCh4KSA9PiBsaW5lLmluY2x1ZGVzKHgpKSkge1xuICAgICAgcmV0dXJuIEFQUF9TVEFURS5SVU5OSU5HX0lOX0ZPUkVHUk9VTkQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBBUFBfU1RBVEUuUlVOTklOR19JTl9CQUNLR1JPVU5EO1xufTtcblxuLyoqXG4gKiBBY3RpdmF0ZXMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIG9yIGxhdW5jaGVzIGl0IGlmIG5lY2Vzc2FyeS5cbiAqIFRoZSBhY3Rpb24gaXMgZG9uZSB3aXRoIG1vbmtleSB0b29sIGFuZCBsaXRlcmFsbHkgc2ltdWxhdGVzXG4gKiBjbGlja2luZyB0aGUgY29ycmVzcG9uZGluZyBhcHBsaWNhdGlvbiBpY29uIG9uIHRoZSBkYXNoYm9hcmQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKi9cbmNvbW1hbmRzLmFjdGl2YXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZhdGVBcHAgKGFwcElkKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBBY3RpdmF0aW5nICcke2FwcElkfSdgKTtcbiAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAvLyBGYWxsYmFjayB0byBNb25rZXkgaW4gb2xkZXIgQVBJc1xuICBpZiAoYXBpTGV2ZWwgPCAyNCkge1xuICAgIC8vIFRoZSBtb25rZXkgY29tbWFuZCBjb3VsZCByYWlzZSBhbiBpc3N1ZSBhcyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NDg2MDQ3NS9ob3ctdG8tdXNlLXRoZS1tb25rZXktY29tbWFuZC13aXRoLWFuLWFuZHJvaWQtc3lzdGVtLXRoYXQtZG9lc250LWhhdmUtcGh5c2ljYWxcbiAgICAvLyBidXQgJy0tcGN0LXN5c2tleXMgMCcgY291bGQgY2F1c2UgYW5vdGhlciBiYWNrZ3JvdW5kIHByb2Nlc3MgaXNzdWUuIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2lzc3Vlcy8xNjk0MSNpc3N1ZWNvbW1lbnQtMTEyOTgzNzI4NVxuICAgIGNvbnN0IGNtZCA9IFsnbW9ua2V5JyxcbiAgICAgICctcCcsIGFwcElkLFxuICAgICAgJy1jJywgJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJyxcbiAgICAgICcxJ107XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYENvbW1hbmQgc3Rkb3V0OiAke291dHB1dH1gKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAob3V0cHV0LmluY2x1ZGVzKCdtb25rZXkgYWJvcnRlZCcpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gQXJlIHlvdSBzdXJlIGl0IGlzIGluc3RhbGxlZD9gKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoW1xuICAgICdhbScsIChhcGlMZXZlbCA8IDI2KSA/ICdzdGFydCcgOiAnc3RhcnQtYWN0aXZpdHknLFxuICAgICctYScsICdhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTicsXG4gICAgJy1jJywgJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJyxcbiAgICAvLyBGTEFHX0FDVElWSVRZX1JFT1JERVJfVE9fRlJPTlQgfCBGTEFHX0FDVElWSVRZX0JST1VHSFRfVE9fRlJPTlQgfCBGTEFHX0FDVElWSVRZX05FV19UQVNLXG4gICAgJy1mJywgJzB4MTA0MjAwMDAnLFxuICAgICctbicsIGF3YWl0IHRoaXMuYWRiLnJlc29sdmVMYXVuY2hhYmxlQWN0aXZpdHkoYXBwSWQpLFxuICBdKTtcbiAgdGhpcy5sb2cuZGVidWcoc3Rkb3V0KTtcbiAgaWYgKC9eZXJyb3I6L21pLnRlc3Qoc3Rkb3V0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGFjdGl2YXRlICcke2FwcElkfScuIE9yaWdpbmFsIGVycm9yOiAke3N0ZG91dH1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBVbmluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbMjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB1bmluc3RhbGxlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ga2VlcERhdGEgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGtlZXAgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkYXRhIGFuZCBjYWNoZSBmb2xkZXJzIGFmdGVyIHVuaW5zdGFsbC5cbiAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBhcHBsaWNhdGlvbiBpZiBpcyBpbnN0YWxsZWQuXG4gKiBUaGUgY2FsbCBpcyBpZ25vcmVkIGlmIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEBwYXJhbSB7P1VuaW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc2V0IG9mIHJlbW92YWwgb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhY2thZ2Ugd2FzIGZvdW5kIG9uIHRoZSBkZXZpY2UgYW5kXG4gKiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHVuaW5zdGFsbGVkLlxuICovXG5jb21tYW5kcy5yZW1vdmVBcHAgPSBhc3luYyBmdW5jdGlvbiByZW1vdmVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhhcHBJZCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRlcm1pbmF0ZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfHN0cmluZ30gdGltZW91dCBbNTAwXSAtIFRoZSBjb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB0ZXJtaW5hdGVkLlxuICovXG5cbi8qKlxuICogVGVybWluYXRlcyB0aGUgYXBwIGlmIGl0IGlzIHJ1bm5pbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKiBAcGFyYW0gez9UZXJtaW5hdGVPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBhcHBsaWNhdGlvbiB0ZXJtaW5hdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYXBwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB0ZXJtaW5hdGVkLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBhcHAgaGFzIG5vdCBiZWVuIHRlcm1pbmF0ZWQgd2l0aGluIHRoZSBnaXZlbiB0aW1lb3V0LlxuICovXG5jb21tYW5kcy50ZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgdGhpcy5sb2cuaW5mbyhgVGVybWluYXRpbmcgJyR7YXBwSWR9J2ApO1xuICBpZiAoIShhd2FpdCB0aGlzLmFkYi5wcm9jZXNzRXhpc3RzKGFwcElkKSkpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBUaGUgYXBwICcke2FwcElkfScgaXMgbm90IHJ1bm5pbmdgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKGFwcElkKTtcbiAgY29uc3QgdGltZW91dCA9IHV0aWwuaGFzVmFsdWUob3B0aW9ucy50aW1lb3V0KSAmJiAhaXNOYU4ob3B0aW9ucy50aW1lb3V0KSA/IHBhcnNlSW50KG9wdGlvbnMudGltZW91dCwgMTApIDogNTAwO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGFwcElkKSA8PSBBUFBfU1RBVEUuTk9UX1JVTk5JTkcsXG4gICAgICB7d2FpdE1zOiB0aW1lb3V0LCBpbnRlcnZhbE1zOiAxMDB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCcke2FwcElkfScgaXMgc3RpbGwgcnVubmluZyBhZnRlciAke3RpbWVvdXR9bXMgdGltZW91dGApO1xuICB9XG4gIHRoaXMubG9nLmluZm8oYCcke2FwcElkfScgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlcm1pbmF0ZWRgKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbNjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyBpbnN0YWxsZWQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiB0byB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBsb2NhbCBhcGsgcGF0aCBvciBhIHJlbW90ZSB1cmxcbiAqIEBwYXJhbSB7P0luc3RhbGxPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBpbnN0YWxsYXRpb24gb3B0aW9uc1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBnaXZlbiBhcGsgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IHJlYWNoYWJsZVxuICovXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGxvY2FsUGF0aCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwUGF0aCwgQVBQX0VYVEVOU0lPTlMpO1xuICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKGxvY2FsUGF0aCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsZWFyQXBwT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBhcHBJZCBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBiZSBjbGVhcmVkXG4gKi9cblxuLyoqXG4gKiBEZWxldGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIHtDbGVhckFwcE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBjbGVhbmluZyBvZiB0aGUgYXBwIGRhdGEgZmFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xlYXJBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbGVhckFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHthcHBJZH0gPSBvcHRzO1xuICBpZiAoIWFwcElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdhcHBJZCcgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5jbGVhcihhcHBJZCk7XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsY0FBYyxHQUFHLENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FBdkI7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjs7O0FBUUFBLFFBQVEsQ0FBQ0MsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCQyxLQUEvQixFQUFzQztFQUM5RCxPQUFPLE1BQU0sS0FBS0MsR0FBTCxDQUFTRixjQUFULENBQXdCQyxLQUF4QixDQUFiO0FBQ0QsQ0FGRDs7QUFlQUYsUUFBUSxDQUFDSSxhQUFULEdBQXlCLGVBQWVB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
|
|
@@ -405,4 +405,4 @@ var _default = extensions;
|
|
|
405
405
|
exports.default = _default;require('source-map-support').install();
|
|
406
406
|
|
|
407
407
|
|
|
408
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZ2V0Q29udGV4dHMiLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsIm9wdHMiLCJhc3NpZ25Db250ZXh0cyIsInNldENvbnRleHQiLCJuYW1lIiwidXRpbCIsImhhc1ZhbHVlIiwiV0VCVklFV19XSU4iLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjb250ZXh0cyIsIl8iLCJpbmNsdWRlcyIsImVycm9ycyIsIk5vU3VjaENvbnRleHRFcnJvciIsInN3aXRjaENvbnRleHQiLCJtb2JpbGVHZXRDb250ZXh0cyIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3cyIsInBhcnNlV2Vidmlld05hbWVzIiwiTkFUSVZFX1dJTiIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ2hyb21lZHJpdmVyQ29udGV4dCIsInN0YXJ0Q2hyb21lZHJpdmVyUHJveHkiLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJFcnJvciIsIldFQlZJRVdfQkFTRSIsImFwcFBhY2thZ2UiLCJpc1dlYkNvbnRleHQiLCJjb250ZXh0IiwiY2QiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsInNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIiLCJjbG9uZURlZXAiLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYW5kcm9pZFBhY2thZ2UiLCJtYXRjaCIsImxlbmd0aCIsImNocm9tZUFuZHJvaWRQYWNrYWdlIiwiaGFzIiwibWFwIiwid20iLCJ3ZWJ2aWV3TmFtZSIsImtub3duUGFja2FnZSIsIktOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIiwiYXBwU3RhdGUiLCJxdWVyeUFwcFN0YXRlIiwiQVBQX1NUQVRFIiwiUlVOTklOR19JTl9CQUNLR1JPVU5EIiwiUlVOTklOR19JTl9GT1JFR1JPVU5EIiwiaW5mbyIsInNldHVwTmV3Q2hyb21lZHJpdmVyIiwiY3VyRGV2aWNlSWQiLCJvbiIsIkNocm9tZWRyaXZlciIsIkVWRU5UX0NIQU5HRUQiLCJtc2ciLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJvbkNocm9tZWRyaXZlclN0b3AiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsInByb3h5UmVxIiwiYmluZCIsInByb3h5Q29tbWFuZCIsImp3cHJveHkiLCJjb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJ3YXJuIiwiZXJyIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJrZXlzIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsIm1lc3NhZ2UiLCJ2aWV3TmFtZSIsIkNIUk9NSVVNX1dJTiIsInNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lIiwiY2hyb21lT3B0aW9ucyIsImlzQXJyYXkiLCJhcmdzIiwiZGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJhY3Rpdml0eSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImVsIiwiZmluZEVsT3JFbHMiLCJjbGljayIsIkVMRU1FTlQiLCJlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwia25vd25QYWNrYWdlcyIsImNocm9tZUJ1bmRsZUlkIiwiY2hyb21lQW5kcm9pZEFjdGl2aXR5IiwiYXBwQWN0aXZpdHkiLCJoYXNXb3JraW5nV2VidmlldyIsInJlc3RhcnQiLCJnZXRDaHJvbWVkcml2ZXJQb3J0IiwicG9ydFNwZWMiLCJnZXRQb3J0IiwiQiIsInByb21pc2lmeSIsIlBvcnRGaW5kZXIiLCJwb3J0IiwiZm91bmRQb3J0IiwicG90ZW50aWFsUG9ydCIsInN0b3BQb3J0IiwicGFyc2VJbnQiLCJpc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImRldGFpbHMiLCJnZXRXZWJ2aWV3RGV0YWlscyIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJleGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNtZEFyZ3MiLCJjaHJvbWVkcml2ZXJBcmdzIiwidmVyYm9zZSIsInNob3dDaHJvbWVkcml2ZXJMb2ciLCJleGVjdXRhYmxlRGlyIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsIm1hcHBpbmdQYXRoIiwiY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUiLCJidW5kbGVJZCIsInVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlIiwiZGlzYWJsZUJ1aWxkQ2hlY2siLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImlzQXV0b2Rvd25sb2FkRW5hYmxlZCIsIm9wdCIsImVuZHNXaXRoIiwibWVyZ2UiLCJjYXBzIiwiY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyIsInN0YXJ0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBDaHJvbWVkcml2ZXIgZnJvbSAnYXBwaXVtLWNocm9tZWRyaXZlcic7XG5pbXBvcnQgUG9ydEZpbmRlciBmcm9tICdwb3J0ZmluZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIHdlYnZpZXdIZWxwZXJzLFxuICBOQVRJVkVfV0lOLCBXRUJWSUVXX0JBU0UsIFdFQlZJRVdfV0lOLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTXG59IGZyb20gJy4uL3dlYnZpZXctaGVscGVycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuXG5jb25zdCBDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUgPSAnY2hyb21lZHJpdmVyX2F1dG9kb3dubG9hZCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBY3R1YWwgTUpTT05XUCBjb21tYW5kIGhhbmRsZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5jb21tYW5kcy5nZXRDdXJyZW50Q29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDb250ZXh0ICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgYG51bGxgLCBpbmRpY2F0aW5nIG5vIGNvbnRleHRcbiAgLy8gZXhwbGljaXRseSBzZXQsIGl0IGlzIHRoZSBkZWZhdWx0IGNvbnRleHRcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCB8fCB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xufTtcblxuY29tbWFuZHMuZ2V0Q29udGV4dHMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0cyAoKSB7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgcmV0dXJuIHRoaXMuYXNzaWduQ29udGV4dHMod2Vidmlld3NNYXBwaW5nKTtcbn07XG5cbmNvbW1hbmRzLnNldENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzZXRDb250ZXh0IChuYW1lKSB7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShuYW1lKSkge1xuICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuICB9IGVsc2UgaWYgKG5hbWUgPT09IFdFQlZJRVdfV0lOKSB7XG4gICAgLy8gaGFuZGxlIHNldENvbnRleHQgXCJXRUJWSUVXXCJcbiAgICBuYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgfVxuICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0IHdlIHdhbnQsIGRvIG5vdGhpbmdcbiAgaWYgKG5hbWUgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgY29uc3QgY29udGV4dHMgPSB0aGlzLmFzc2lnbkNvbnRleHRzKHdlYnZpZXdzTWFwcGluZyk7XG4gIC8vIGlmIHRoZSBjb250ZXh0IHdlIHdhbnQgZG9lc24ndCBleGlzdCwgZmFpbFxuICBpZiAoIV8uaW5jbHVkZXMoY29udGV4dHMsIG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuc3dpdGNoQ29udGV4dChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB0aGlzLmN1ckNvbnRleHQgPSBuYW1lO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVyeSB7P3N0cmluZ30gd2Vidmlld05hbWUgQW4gYWN0dWFsIHdlYnZpZXcgbmFtZSBmb3Igc3dpdGNoaW5nIGNvbnRleHQuXG4gKiBUaGlzIHZhbHVlIGJlY29tZXMgbnVsbCB3aGVuIGZhaWxpbmcgdG8gZmluZCBhIFBJRCBmb3IgYSB3ZWJ2aWV3LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcganNvbiBkZW1vbnN0cmF0ZXMgdGhlIGV4YW1wbGUgb2YgV2Vidmlld3NNYXBwaW5nIG9iamVjdC5cbiAqIE5vdGUgdGhhdCBgZGVzY3JpcHRpb25gIGluIGBwYWdlYCBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIG1vc3QgbGlrZWx5IHdoZW4gaXQgY29tZXMgdG8gTW9iaWxlIENocm9tZSlcbiAqIHtcbiAqICAgXCJwcm9jXCI6IFwiQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXzIyMTM4XCIsXG4gKiAgIFwid2Vidmlld1wiOiBcIldFQlZJRVdfMjIxMzhcIixcbiAqICAgXCJpbmZvXCI6IHtcbiAqICAgICBcIkFuZHJvaWQtUGFja2FnZVwiOiBcImlvLmFwcGl1bS5zZXR0aW5nc1wiLFxuICogICAgIFwiQnJvd3NlclwiOiBcIkNocm9tZS83NC4wLjM3MjkuMTg1XCIsXG4gKiAgICAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBBbmRyb2lkIFNESyBidWlsdCBmb3IgeDg2IEJ1aWxkL1FTUjEuMTkwOTIwLjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83NC4wLjM3MjkuMTg1IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCIsXG4gKiAgICAgXCJWOC1WZXJzaW9uXCI6IFwiNy40LjI4OC4yOFwiLFxuICogICAgIFwiV2ViS2l0LVZlcnNpb25cIjogXCI1MzcuMzYgKEAyMjk1NTY4MmY5NGNlMDkzMzYxOTdiZmI4ZGZmZWE5OTFmYTMyZjBkKVwiLFxuICogICAgIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovLzEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9icm93c2VyXCJcbiAqICAgfSxcbiAqICAgXCJwYWdlc1wiOiBbXG4gKiAgICAge1xuICogICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIntcXFwiYXR0YWNoZWRcXFwiOnRydWUsXFxcImVtcHR5XFxcIjpmYWxzZSxcXFwiaGVpZ2h0XFxcIjoxNDU4LFxcXCJzY3JlZW5YXFxcIjowLFxcXCJzY3JlZW5ZXFxcIjozMzYsXFxcInZpc2libGVcXFwiOnRydWUsXFxcIndpZHRoXFxcIjoxMDgwfVwiLFxuICogICAgICAgXCJkZXZ0b29sc0Zyb250ZW5kVXJsXCI6IFwiaHR0cDovL2Nocm9tZS1kZXZ0b29scy1mcm9udGVuZC5hcHBzcG90LmNvbS9zZXJ2ZV9yZXYvQDIyOTU1NjgyZjk0Y2UwOTMzNjE5N2JmYjhkZmZlYTk5MWZhMzJmMGQvaW5zcGVjdG9yLmh0bWw/d3M9MTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL3BhZ2UvMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIixcbiAqICAgICAgIFwiaWRcIjogXCIyNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiLFxuICogICAgICAgXCJ0aXRsZVwiOiBcIlJlbGVhc2VzIMK3IGFwcGl1bS9hcHBpdW0gwrcgR2l0SHViXCIsXG4gKiAgICAgICBcInR5cGVcIjogXCJwYWdlXCIsXG4gKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL3JlbGVhc2VzXCIsXG4gKiAgICAgICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly8xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvcGFnZS8yNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiXG4gKiAgICAgfVxuICogICBdLFxuICogICBcIndlYnZpZXdOYW1lXCI6IFwiV0VCVklFV19jb20uaW8uYXBwaXVtLnNldHRpbmdcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0dXJucyBhIHdlYnZpZXdzTWFwcGluZyBiYXNlZCBvbiBDRFAgZW5kcG9pbnRzXG4gKlxuICogQHJldHVybiB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0Q29udGV4dHMgKCkge1xuICBjb25zdCBvcHRzID0ge1xuICAgIGFuZHJvaWREZXZpY2VTb2NrZXQ6IHRoaXMub3B0cy5hbmRyb2lkRGV2aWNlU29ja2V0LFxuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB0cnVlLFxuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQ6IHRoaXMub3B0cy53ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjogdHJ1ZVxuICB9O1xuICByZXR1cm4gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbn07XG5cbmhlbHBlcnMuYXNzaWduQ29udGV4dHMgPSBmdW5jdGlvbiBhc3NpZ25Db250ZXh0cyAod2Vidmlld3NNYXBwaW5nKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3MgPSB3ZWJ2aWV3SGVscGVycy5wYXJzZVdlYnZpZXdOYW1lcyh3ZWJ2aWV3c01hcHBpbmcsIG9wdHMpO1xuICB0aGlzLmNvbnRleHRzID0gW05BVElWRV9XSU4sIC4uLndlYnZpZXdzXTtcbiAgdGhpcy5sb2cuZGVidWcoYEF2YWlsYWJsZSBjb250ZXh0czogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRleHRzKX1gKTtcbiAgcmV0dXJuIHRoaXMuY29udGV4dHM7XG59O1xuXG5oZWxwZXJzLnN3aXRjaENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzd2l0Y2hDb250ZXh0IChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgLy8gV2UgaGF2ZSBzb21lIG9wdGlvbnMgd2hlbiBpdCBjb21lcyB0byB3ZWJ2aWV3cy4gSWYgd2Ugd2FudCBhXG4gIC8vIENocm9tZWRyaXZlciB3ZWJ2aWV3LCB3ZSBjYW4gb25seSBjb250cm9sIG9uZSBhdCBhIHRpbWUuXG4gIGlmICh0aGlzLmlzQ2hyb21lZHJpdmVyQ29udGV4dChuYW1lKSkge1xuICAgIC8vIHN0YXJ0IHByb3h5aW5nIGNvbW1hbmRzIGRpcmVjdGx5IHRvIGNocm9tZWRyaXZlclxuICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVkcml2ZXJQcm94eShuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNDaHJvbWVkcml2ZXJDb250ZXh0KHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICAvLyBpZiB3ZSdyZSBtb3ZpbmcgdG8gYSBub24tY2hyb21lZHJpdmVyIHdlYnZpZXcsIGFuZCBvdXIgY3VycmVudCBjb250ZXh0XG4gICAgLy8gX2lzXyBhIGNocm9tZWRyaXZlciB3ZWJ2aWV3LCBpZiBjYXBzIHJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgaXMgc2V0XG4gICAgLy8gdG8gdHJ1ZSB0aGVuIGtpbGwgY2hyb21lZHJpdmVyIHNlc3Npb24gdXNpbmcgc3RvcENocm9tZWRyaXZlclByb3hpZXMgb3JcbiAgICAvLyBlbHNlIHNpbXBseSBzdXNwZW5kIHByb3h5aW5nIHRvIHRoZSBsYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRzLnJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIHNldCB0byB0cnVlOyBraWxsaW5nIGV4aXN0aW5nIGNocm9tZWRyaXZlcnMnKTtcbiAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWRuJ3Qga25vdyBob3cgdG8gaGFuZGxlIHN3aXRjaGluZyB0byBjb250ZXh0ICcke25hbWV9J2ApO1xuICB9XG59O1xuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogT24tb2JqZWN0IGNvbnRleHQtcmVsYXRlZCBoZWxwZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLy8gVGhlIHJlYXNvbiB0aGlzIGlzIGEgZnVuY3Rpb24gYW5kIG5vdCBqdXN0IGEgY29uc3RhbnQgaXMgdGhhdCBib3RoIGFuZHJvaWQtXG4vLyBkcml2ZXIgYW5kIHNlbGVuZHJvaWQtZHJpdmVyIHVzZSB0aGlzIGxvZ2ljLCBhbmQgZWFjaCBvbmUgcmV0dXJuc1xuLy8gYSBkaWZmZXJlbnQgZGVmYXVsdCBjb250ZXh0IG5hbWVcbmhlbHBlcnMuZGVmYXVsdENvbnRleHROYW1lID0gZnVuY3Rpb24gZGVmYXVsdENvbnRleHROYW1lICgpIHtcbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5oZWxwZXJzLmRlZmF1bHRXZWJ2aWV3TmFtZSA9IGZ1bmN0aW9uIGRlZmF1bHRXZWJ2aWV3TmFtZSAoKSB7XG4gIHJldHVybiBXRUJWSUVXX0JBU0UgKyB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbn07XG5cbmhlbHBlcnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCAhPT0gbnVsbCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU47XG59O1xuXG4vLyBUdXJuIG9uIHByb3h5aW5nIHRvIGFuIGV4aXN0aW5nIENocm9tZWRyaXZlciBzZXNzaW9uIG9yIGEgbmV3IG9uZVxuaGVscGVycy5zdGFydENocm9tZWRyaXZlclByb3h5ID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRDaHJvbWVkcml2ZXJQcm94eSAoY29udGV4dCwgd2Vidmlld3NNYXBwaW5nKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIGNocm9tZS1iYWNrZWQgd2VidmlldyBjb250ZXh0ICcke2NvbnRleHR9J2ApO1xuXG4gIGxldCBjZDtcbiAgaWYgKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF0pIHtcbiAgICAvLyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSd2ZSBhbHJlYWR5IHNldCB1cCBhIGNocm9tZWRyaXZlciBmb3IgYSBjb250ZXh0LFxuICAgIC8vIHdlIHdhbnQgdG8gcmVjb25uZWN0IHRvIGl0LCBub3QgY3JlYXRlIGEgd2hvbGUgbmV3IG9uZVxuICAgIHRoaXMubG9nLmRlYnVnKGBGb3VuZCBleGlzdGluZyBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nLiBVc2luZyBpdC5gKTtcbiAgICBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgYXdhaXQgc2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlcih0aGlzLmxvZywgY2QpO1xuICB9IGVsc2Uge1xuICAgIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcbiAgICBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHAgPSB0cnVlO1xuXG4gICAgLy8gaWYgcmVxdWVzdGVkLCB0ZWxsIGNocm9tZWRyaXZlciB0byBhdHRhY2ggdG8gdGhlIGFuZHJvaWQgcGFja2FnZSB3ZSBoYXZlXG4gICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IG5hbWUsIHJhdGhlciB0aGFuIHRoZSBwYWNrYWdlIG9mIHRoZSBBVVQuXG4gICAgLy8gQW5kIHR1cm4gdGhpcyBvbiBieSBkZWZhdWx0IGZvciBjaHJvbWUtLWlmIGNocm9tZSBwb3BzIHVwIHdpdGggYSB3ZWJ2aWV3XG4gICAgLy8gYW5kIHNvbWVvbmUgd2FudHMgdG8gc3dpdGNoIHRvIGl0LCB3ZSBzaG91bGQgbGV0IGNocm9tZWRyaXZlciBjb25uZWN0IHRvXG4gICAgLy8gY2hyb21lIHJhdGhlciB0aGFuIHN0YXlpbmcgc3R1Y2sgb24gdGhlIEFVVFxuICAgIGlmIChvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSB8fCBjb250ZXh0ID09PSBgJHtXRUJWSUVXX0JBU0V9Y2hyb21lYCkge1xuICAgICAgbGV0IGFuZHJvaWRQYWNrYWdlID0gY29udGV4dC5tYXRjaChgJHtXRUJWSUVXX0JBU0V9KC4rKWApO1xuICAgICAgaWYgKGFuZHJvaWRQYWNrYWdlICYmIGFuZHJvaWRQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlWzFdO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSkge1xuICAgICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uJykgJiYgIXRoaXMub3B0cy5lbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBXaGVuIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBjYXBhYmlsaXR5IGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQsIHRyeSB0byBpZGVudGlmeVxuICAgICAgICAgIC8vIGNocm9tZUFuZHJvaWRQYWNrYWdlIGJhc2VkIG9uIGNvbnRleHRzLCBrbm93biBjaHJvbWUgdmFyaWFudCBwYWNrYWdlcyBhbmQgcXVlcnlBcHBTdGF0ZSByZXN1bHRcbiAgICAgICAgICAvLyBzaW5jZSB3ZWJ2aWV3c01hcHBpbmcgZG9lcyBub3QgaGF2ZSBpbmZvIG9iamVjdFxuICAgICAgICAgIGNvbnN0IGNvbnRleHRzID0gd2Vidmlld3NNYXBwaW5nLm1hcCgod20pID0+IHdtLndlYnZpZXdOYW1lKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtub3duUGFja2FnZSBvZiBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMoY29udGV4dHMsIGAke1dFQlZJRVdfQkFTRX0ke2tub3duUGFja2FnZX1gKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGtub3duUGFja2FnZSk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbQVBQX1NUQVRFLlJVTk5JTkdfSU5fQkFDS0dST1VORCwgQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORF0sIGFwcFN0YXRlKSkge1xuICAgICAgICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0ga25vd25QYWNrYWdlO1xuICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBxdWVyeWluZyBzdGF0ZXMgb2YgQ2hyb21lIGFwcCBwYWNrYWdlc2ApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCB3bSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICAgICAgICAgIGlmICh3bS53ZWJ2aWV3TmFtZSA9PT0gY29udGV4dCAmJiBfLmhhcyh3bT8uaW5mbywgJ0FuZHJvaWQtUGFja2FnZScpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSB3bS5pbmZvWydBbmRyb2lkLVBhY2thZ2UnXTtcbiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYElkZW50aWZpZWQgY2hyb21lQW5kcm9pZFBhY2thZ2UgYXMgJyR7b3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZX0nIGAgK1xuICAgICAgICAgICAgICAgIGBmb3IgY29udGV4dCAnJHtjb250ZXh0fScgYnkgQ0RQYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNkID0gYXdhaXQgdGhpcy5zZXR1cE5ld0Nocm9tZWRyaXZlcihvcHRzLCB0aGlzLmFkYi5jdXJEZXZpY2VJZCwgdGhpcy5hZGIsIGNvbnRleHQpO1xuICAgIC8vIGJpbmQgb3VyIHN0b3AvZXhpdCBoYW5kbGVyLCBwYXNzaW5nIGluIGNvbnRleHQgc28gd2Uga25vdyB3aGljaFxuICAgIC8vIG9uZSBzdG9wcGVkIHVuZXhwZWN0ZWRseVxuICAgIGNkLm9uKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VELCAobXNnKSA9PiB7XG4gICAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgICB0aGlzLm9uQ2hyb21lZHJpdmVyU3RvcChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBzYXZlIHRoZSBjaHJvbWVkcml2ZXIgb2JqZWN0IHVuZGVyIHRoZSBjb250ZXh0XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XSA9IGNkO1xuICB9XG4gIC8vIGhvb2sgdXAgdGhlIGxvY2FsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gcHJveHkgdGhpcyBiaXpcbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBjZDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbn07XG5cbi8vIFN0b3AgcHJveHlpbmcgdG8gYW55IENocm9tZWRyaXZlclxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiBzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IG51bGw7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbn07XG5cbi8vIEhhbmRsZSBhbiBvdXQtb2YtYmFuZCBDaHJvbWVkcml2ZXIgc3RvcCBldmVudFxuaGVscGVycy5vbkNocm9tZWRyaXZlclN0b3AgPSBhc3luYyBmdW5jdGlvbiBvbkNocm9tZWRyaXZlclN0b3AgKGNvbnRleHQpIHtcbiAgdGhpcy5sb2cud2FybihgQ2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH0gc3RvcHBlZCB1bmV4cGVjdGVkbHlgKTtcbiAgaWYgKGNvbnRleHQgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIC8vIHdlIGV4aXRlZCB1bmV4cGVjdGVkbHkgd2hpbGUgYXV0b21hdGluZyB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBzbyB3YW50XG4gICAgLy8gdG8gc2h1dCBkb3duIHRoZSBzZXNzaW9uIGFuZCByZXNwb25kIHdpdGggYW4gZXJyb3JcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKCdDaHJvbWVkcml2ZXIgcXVpdCB1bmV4cGVjdGVkbHkgZHVyaW5nIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgYSBDaHJvbWVkcml2ZXIgaW4gdGhlIG5vbi1hY3RpdmUgY29udGV4dCBiYXJmcywgd2UgZG9uJ3QgcmVhbGx5XG4gICAgLy8gY2FyZSwgd2UnbGwganVzdCBtYWtlIGEgbmV3IG9uZSBuZXh0IHRpbWUgd2UgbmVlZCB0aGUgY29udGV4dC5cbiAgICB0aGlzLmxvZy53YXJuKFwiQ2hyb21lZHJpdmVyIHF1aXQgdW5leHBlY3RlZGx5LCBidXQgaXQgd2Fzbid0IHRoZSBhY3RpdmUgXCIgK1xuICAgICAgJ2NvbnRleHQsIGlnbm9yaW5nJyk7XG4gICAgZGVsZXRlIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gIH1cbn07XG5cbi8vIEludGVudGlvbmFsbHkgc3RvcCBhbGwgdGhlIGNocm9tZWRyaXZlcnMgY3VycmVudGx5IGFjdGl2ZSwgYW5kIGlnbm9yZVxuLy8gdGhlaXIgZXhpdCBldmVudHNcbmhlbHBlcnMuc3RvcENocm9tZWRyaXZlclByb3hpZXMgPSBhc3luYyBmdW5jdGlvbiBzdG9wQ2hyb21lZHJpdmVyUHJveGllcyAoKSB7XG4gIHRoaXMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5KCk7IC8vIG1ha2Ugc3VyZSB3ZSB0dXJuIG9mZiB0aGUgcHJveHkgZmxhZ1xuICBmb3IgKGxldCBjb250ZXh0IG9mIF8ua2V5cyh0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzKSkge1xuICAgIGxldCBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgdGhpcy5sb2cuZGVidWcoYFN0b3BwaW5nIGNocm9tZWRyaXZlciBmb3IgY29udGV4dCAke2NvbnRleHR9YCk7XG4gICAgLy8gc3RvcCBsaXN0ZW5pbmcgZm9yIHRoZSBzdG9wcGVkIHN0YXRlIGV2ZW50XG4gICAgY2QucmVtb3ZlQWxsTGlzdGVuZXJzKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VEKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2Quc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3Igc3RvcHBpbmcgQ2hyb21lZHJpdmVyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuaGVscGVycy5pc0Nocm9tZWRyaXZlckNvbnRleHQgPSBmdW5jdGlvbiBpc0Nocm9tZWRyaXZlckNvbnRleHQgKHZpZXdOYW1lKSB7XG4gIHJldHVybiBfLmluY2x1ZGVzKHZpZXdOYW1lLCBXRUJWSUVXX1dJTikgfHwgdmlld05hbWUgPT09IENIUk9NSVVNX1dJTjtcbn07XG5cbmhlbHBlcnMuc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUgPSBmdW5jdGlvbiBzaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSAoKSB7XG4gIHJldHVybiAhIXRoaXMub3B0cy5jaHJvbWVPcHRpb25zICYmXG4gICAgICAgICBfLmlzQXJyYXkodGhpcy5vcHRzLmNocm9tZU9wdGlvbnMuYXJncykgJiZcbiAgICAgICAgIHRoaXMub3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MuaW5jbHVkZXMoJy0tbm8tZmlyc3QtcnVuJyk7XG59O1xuXG5oZWxwZXJzLmRpc21pc3NDaHJvbWVXZWxjb21lID0gYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0Nocm9tZVdlbGNvbWUgKCkge1xuICB0aGlzLmxvZy5pbmZvKCdUcnlpbmcgdG8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZScpO1xuICBsZXQgYWN0aXZpdHkgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRBY3Rpdml0eSgpO1xuICBpZiAoYWN0aXZpdHkgIT09ICdvcmcuY2hyb21pdW0uY2hyb21lLmJyb3dzZXIuZmlyc3RydW4uRmlyc3RSdW5BY3Rpdml0eScpIHtcbiAgICB0aGlzLmxvZy5pbmZvKCdDaHJvbWUgd2VsY29tZSBkaWFsb2cgbmV2ZXIgc2hvd2VkIHVwISBDb250aW51aW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBlbCA9IGF3YWl0IHRoaXMuZmluZEVsT3JFbHMoJ2lkJywgJ2NvbS5hbmRyb2lkLmNocm9tZTppZC90ZXJtc19hY2NlcHQnLCBmYWxzZSk7XG4gIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIHRyeSB7XG4gICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL25lZ2F0aXZlX2J1dHRvbicsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLmNsaWNrKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gRE8gTk9USElORywgVEhJUyBERVZJQ0UgRElETlQgTEFVTkNIIFRIRSBTSUdOSU4gRElBTE9HXG4gICAgLy8gSVQgTVVTVCBCRSBBIE5PTiBHTVMgREVWSUNFXG4gICAgdGhpcy5sb2cud2FybihgVGhpcyBkZXZpY2UgZGlkIG5vdCBzaG93IENocm9tZSBTaWduSW4gZGlhbG9nLCAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5zdGFydENocm9tZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZVNlc3Npb24gKCkge1xuICB0aGlzLmxvZy5pbmZvKCdTdGFydGluZyBhIGNocm9tZS1iYXNlZCBicm93c2VyIHNlc3Npb24nKTtcbiAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuXG4gIGNvbnN0IGtub3duUGFja2FnZXMgPSBbXG4gICAgJ29yZy5jaHJvbWl1bS5jaHJvbWUuc2hlbGwnLFxuICAgICdjb20uYW5kcm9pZC5jaHJvbWUnLFxuICAgICdjb20uY2hyb21lLmJldGEnLFxuICAgICdvcmcuY2hyb21pdW0uY2hyb21lJyxcbiAgICAnb3JnLmNocm9taXVtLndlYnZpZXdfc2hlbGwnLFxuICBdO1xuXG4gIGlmIChfLmluY2x1ZGVzKGtub3duUGFja2FnZXMsIHRoaXMub3B0cy5hcHBQYWNrYWdlKSkge1xuICAgIG9wdHMuY2hyb21lQnVuZGxlSWQgPSB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eSA9IHRoaXMub3B0cy5hcHBBY3Rpdml0eTtcbiAgfVxuICB0aGlzLmNocm9tZWRyaXZlciA9IGF3YWl0IHRoaXMuc2V0dXBOZXdDaHJvbWVkcml2ZXIob3B0cywgdGhpcy5hZGIuY3VyRGV2aWNlSWQsIHRoaXMuYWRiKTtcbiAgdGhpcy5jaHJvbWVkcml2ZXIub24oQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQsIChtc2cpID0+IHtcbiAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgdGhpcy5vbkNocm9tZWRyaXZlclN0b3AoQ0hST01JVU1fV0lOKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBDaHJvbWUgc2Vzc2lvbiwgd2UgZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXNcbiAgLy8gYXBwcm9wcmlhdGVseSBzZXQgYW5kIHRoYXQgdGhpcyBjaHJvbWVkcml2ZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3RcbiAgLy8gb2Ygc2Vzc2lvbiBjaHJvbWVkcml2ZXJzIHNvIHdlIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGhcbiAgdGhpcy5jdXJDb250ZXh0ID0gQ0hST01JVU1fV0lOO1xuICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW0NIUk9NSVVNX1dJTl0gPSB0aGlzLmNocm9tZWRyaXZlcjtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcblxuICBpZiAodGhpcy5zaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSgpKSB7XG4gICAgLy8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZSBkaWFsb2dcbiAgICBhd2FpdCB0aGlzLmRpc21pc3NDaHJvbWVXZWxjb21lKCk7XG4gIH1cbn07XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEludGVybmFsIGxpYnJhcnkgZnVuY3Rpb25zXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5hc3luYyBmdW5jdGlvbiBzZXR1cEV4aXN0aW5nQ2hyb21lZHJpdmVyIChsb2csIGNocm9tZWRyaXZlcikge1xuICAvLyBjaGVjayB0aGUgc3RhdHVzIGJ5IHNlbmRpbmcgYSBzaW1wbGUgd2luZG93LWJhc2VkIGNvbW1hbmQgdG8gQ2hyb21lRHJpdmVyXG4gIC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yLCB3ZSB3YW50IHRvIHJlY3JlYXRlIHRoZSBDaHJvbWVEcml2ZXIgc2Vzc2lvblxuICBpZiAoIWF3YWl0IGNocm9tZWRyaXZlci5oYXNXb3JraW5nV2VidmlldygpKSB7XG4gICAgbG9nLmRlYnVnKCdDaHJvbWVEcml2ZXIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdy4gJyArXG4gICAgICAgICAgICAgICAgICdSZS1pbml0aWFsaXppbmcgdGhlIHNlc3Npb24uJyk7XG4gICAgYXdhaXQgY2hyb21lZHJpdmVyLnJlc3RhcnQoKTtcbiAgfVxuICByZXR1cm4gY2hyb21lZHJpdmVyO1xufVxuXG4vKipcbiAqIEZpbmQgYSBmcmVlIHBvcnQgdG8gaGF2ZSBDaHJvbWVkcml2ZXIgbGlzdGVuIG9uLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IHBvcnRTcGVjIC0gQXJyYXkgd2hpY2ggaXMgYSBsaXN0IG9mIHBvcnRzLiBBIGxpc3QgaXRlbSBtYXlcbiAqIGFsc28gaXRzZWxmIGJlIGFuIGFycmF5IG9mIGxlbmd0aCAyIHNwZWNpZnlpbmcgYSBzdGFydCBhbmQgZW5kIHBvcnQgb2ZcbiAqIGEgcmFuZ2UuIFNvbWUgdmFsaWQgcG9ydCBzcGVjczpcbiAqICAgIC0gWzgwMDAsIDgwMDEsIDgwMDJdXG4gKiAgICAtIFtbODAwMCwgODAwNV1dXG4gKiAgICAtIFs4MDAwLCBbOTAwMCwgOTEwMF1dXG4gKiBAcGFyYW0ge09iamVjdD99IGxvZyBMb2dnZXIgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgZnJlZSBwb3J0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlclBvcnQgKHBvcnRTcGVjLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IGdldFBvcnQgPSBCLnByb21pc2lmeShQb3J0RmluZGVyLmdldFBvcnQsIHtjb250ZXh0OiBQb3J0RmluZGVyfSk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgZGlkbid0IGdpdmUgdXMgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGNocm9tZWRyaXZlclxuICAvLyBwb3J0IHJhbmdlcywganVzdCBmaW5kIGFueSBmcmVlIHBvcnRcbiAgaWYgKCFwb3J0U3BlYykge1xuICAgIGNvbnN0IHBvcnQgPSBhd2FpdCBnZXRQb3J0KCk7XG4gICAgbG9nPy5kZWJ1ZyhgQSBwb3J0IHdhcyBub3QgZ2l2ZW4sIHVzaW5nIHJhbmRvbSBmcmVlIHBvcnQ6ICR7cG9ydH1gKTtcbiAgICByZXR1cm4gcG9ydDtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSBmaW5kIHRoZSBmcmVlIHBvcnQgYmFzZWQgb24gYSBsaXN0IG9yIHJhbmdlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyXG4gIGxvZz8uZGVidWcoYEZpbmRpbmcgYSBmcmVlIHBvcnQgZm9yIGNocm9tZWRyaXZlciB1c2luZyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICBsZXQgZm91bmRQb3J0ID0gbnVsbDtcbiAgZm9yIChjb25zdCBwb3RlbnRpYWxQb3J0IG9mIHBvcnRTcGVjKSB7XG4gICAgbGV0IHBvcnQsIHN0b3BQb3J0O1xuICAgIGlmIChfLmlzQXJyYXkocG90ZW50aWFsUG9ydCkpIHtcbiAgICAgIChbcG9ydCwgc3RvcFBvcnRdID0gcG90ZW50aWFsUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChwb3RlbnRpYWxQb3J0LCAxMCk7IC8vIGVuc3VyZSB3ZSBoYXZlIGEgbnVtYmVyIGFuZCBub3QgYSBzdHJpbmdcbiAgICAgIHN0b3BQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZz8uZGVidWcoYENoZWNraW5nIHBvcnQgcmFuZ2UgJHtwb3J0fToke3N0b3BQb3J0fWApO1xuICAgICAgZm91bmRQb3J0ID0gYXdhaXQgZ2V0UG9ydCh7cG9ydCwgc3RvcFBvcnR9KTtcbiAgICAgIGJyZWFrO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZz8uZGVidWcoYE5vdGhpbmcgaW4gcG9ydCByYW5nZSAke3BvcnR9OiR7c3RvcFBvcnR9IHdhcyBhdmFpbGFibGVgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZm91bmRQb3J0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGZyZWUgcG9ydCBmb3IgY2hyb21lZHJpdmVyIHVzaW5nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgY2hyb21lZHJpdmVyUG9ydHMgc3BlYyAke0pTT04uc3RyaW5naWZ5KHBvcnRTcGVjKX1gKTtcbiAgfVxuXG4gIGxvZz8uZGVidWcoYFVzaW5nIGZyZWUgcG9ydCAke2ZvdW5kUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICByZXR1cm4gZm91bmRQb3J0O1xufVxuXG5oZWxwZXJzLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCA9IGZ1bmN0aW9uIGlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCAoKSB7XG4gIGlmICh0aGlzLmlzRmVhdHVyZUVuYWJsZWQoQ0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHRoaXM/LmxvZz8uZGVidWcoYEF1dG9tYXRlZCBDaHJvbWVkcml2ZXIgZG93bmxvYWQgaXMgZGlzYWJsZWQuIGAgK1xuICAgIGBVc2UgJyR7Q0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFfScgc2VydmVyIGZlYXR1cmUgdG8gZW5hYmxlIGl0YCk7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBhc3luYyBmdW5jdGlvbiBzZXR1cE5ld0Nocm9tZWRyaXZlciAob3B0cywgY3VyRGV2aWNlSWQsIGFkYiwgY29udGV4dCA9IG51bGwpIHtcbiAgaWYgKG9wdHMuY2hyb21lRHJpdmVyUG9ydCkge1xuICAgIHRoaXM/LmxvZz8ud2FybihgVGhlICdjaHJvbWVEcml2ZXJQb3J0JyBjYXBhYmlsaXR5IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJ2Nocm9tZWRyaXZlclBvcnQnIGluc3RlYWRgKTtcbiAgICBvcHRzLmNocm9tZWRyaXZlclBvcnQgPSBvcHRzLmNocm9tZURyaXZlclBvcnQ7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVkcml2ZXJQb3J0KSB7XG4gICAgdGhpcz8ubG9nPy5kZWJ1ZyhgVXNpbmcgdXNlci1zcGVjaWZpZWQgcG9ydCAke29wdHMuY2hyb21lZHJpdmVyUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICB9IGVsc2Uge1xuICAgIC8vIGlmIGEgc2luZ2xlIHBvcnQgd2Fzbid0IGdpdmVuLCB3ZSdsbCBsb29rIGZvciBhIGZyZWUgb25lXG4gICAgb3B0cy5jaHJvbWVkcml2ZXJQb3J0ID0gYXdhaXQgZ2V0Q2hyb21lZHJpdmVyUG9ydChvcHRzLmNocm9tZWRyaXZlclBvcnRzLCB0aGlzPy5sb2cpO1xuICB9XG5cbiAgY29uc3QgZGV0YWlscyA9IGNvbnRleHQgPyB3ZWJ2aWV3SGVscGVycy5nZXRXZWJ2aWV3RGV0YWlscyhhZGIsIGNvbnRleHQpIDogdW5kZWZpbmVkO1xuICBpZiAoIV8uaXNFbXB0eShkZXRhaWxzKSkge1xuICAgIHRoaXM/LmxvZz8uZGVidWcoJ1Bhc3Npbmcgd2ViIHZpZXcgZGV0YWlscyB0byB0aGUgQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRldGFpbHMsIG51bGwsIDIpKTtcbiAgfVxuXG4gIGNvbnN0IGNocm9tZWRyaXZlciA9IG5ldyBDaHJvbWVkcml2ZXIoe1xuICAgIHBvcnQ6IG9wdHMuY2hyb21lZHJpdmVyUG9ydCxcbiAgICBleGVjdXRhYmxlOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGUsXG4gICAgYWRiLFxuICAgIGNtZEFyZ3M6IG9wdHMuY2hyb21lZHJpdmVyQXJncyxcbiAgICB2ZXJib3NlOiAhIW9wdHMuc2hvd0Nocm9tZWRyaXZlckxvZyxcbiAgICBleGVjdXRhYmxlRGlyOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIsXG4gICAgbWFwcGluZ1BhdGg6IG9wdHMuY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUsXG4gICAgYnVuZGxlSWQ6IG9wdHMuY2hyb21lQnVuZGxlSWQsXG4gICAgdXNlU3lzdGVtRXhlY3V0YWJsZTogb3B0cy5jaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlLFxuICAgIGRpc2FibGVCdWlsZENoZWNrOiBvcHRzLmNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrLFxuICAgIGRldGFpbHMsXG4gICAgaXNBdXRvZG93bmxvYWRFbmFibGVkOiB0aGlzPy5pc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQ/LigpXG4gIH0pO1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGVyZSBhcmUgY2hyb21lT3B0aW9uc1xuICBvcHRzLmNocm9tZU9wdGlvbnMgPSBvcHRzLmNocm9tZU9wdGlvbnMgfHwge307XG4gIC8vIHRyeSBvdXQgYW55IHByZWZpeGVkIGNocm9tZU9wdGlvbnMsXG4gIC8vIGFuZCBzdHJpcCB0aGUgcHJlZml4XG4gIGZvciAoY29uc3Qgb3B0IG9mIF8ua2V5cyhvcHRzKSkge1xuICAgIGlmIChvcHQuZW5kc1dpdGgoJzpjaHJvbWVPcHRpb25zJykpIHtcbiAgICAgIHRoaXM/LmxvZz8ud2FybihgTWVyZ2luZyAnJHtvcHR9JyBpbnRvICdjaHJvbWVPcHRpb25zJy4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgXy5tZXJnZShvcHRzLmNocm9tZU9wdGlvbnMsIG9wdHNbb3B0XSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2FwcyA9IHdlYnZpZXdIZWxwZXJzLmNyZWF0ZUNocm9tZWRyaXZlckNhcHMob3B0cywgY3VyRGV2aWNlSWQsIGRldGFpbHMpO1xuICB0aGlzPy5sb2c/LmRlYnVnKGBCZWZvcmUgc3RhcnRpbmcgY2hyb21lZHJpdmVyLCBhbmRyb2lkUGFja2FnZSBpcyAnJHtjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2V9J2ApO1xuICBhd2FpdCBjaHJvbWVkcml2ZXIuc3RhcnQoY2Fwcyk7XG4gIHJldHVybiBjaHJvbWVkcml2ZXI7XG59O1xuY29uc3Qgc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBoZWxwZXJzLnNldHVwTmV3Q2hyb21lZHJpdmVyO1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMsIHNldHVwTmV3Q2hyb21lZHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOzs7Ozs7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRywyQkFBMUM7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBTUFGLFFBQVEsQ0FBQ0csaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsR0FBb0M7RUFHL0QsT0FBTyxLQUFLQyxVQUFMLElBQW1CLEtBQUtDLGtCQUFMLEVBQTFCO0FBQ0QsQ0FKRDs7QUFNQUwsUUFBUSxDQUFDTSxXQUFULEdBQXVCLGVBQWVBLFdBQWYsR0FBOEI7RUFDbkQsTUFBTUMsZUFBZSxHQUFHLE1BQU1DLHdCQUFlQyxrQkFBZixDQUFrQyxLQUFLQyxHQUF2QyxFQUE0QyxLQUFLQyxJQUFqRCxDQUE5QjtFQUNBLE9BQU8sS0FBS0MsY0FBTCxDQUFvQkwsZUFBcEIsQ0FBUDtBQUNELENBSEQ7O0FBS0FQLFFBQVEsQ0FBQ2EsVUFBVCxHQUFzQixlQUFlQSxVQUFmLENBQTJCQyxJQUEzQixFQUFpQztFQUNyRCxJQUFJLENBQUNDLGNBQUtDLFFBQUwsQ0FBY0YsSUFBZCxDQUFMLEVBQTBCO0lBQ3hCQSxJQUFJLEdBQUcsS0FBS1Qsa0JBQUwsRUFBUDtFQUNELENBRkQsTUFFTyxJQUFJUyxJQUFJLEtBQUtHLDJCQUFiLEVBQTBCO0lBRS9CSCxJQUFJLEdBQUcsS0FBS0ksa0JBQUwsRUFBUDtFQUNEOztFQUVELElBQUlKLElBQUksS0FBSyxLQUFLVixVQUFsQixFQUE4QjtJQUM1QjtFQUNEOztFQUVELE1BQU1HLGVBQWUsR0FBRyxNQUFNQyx3QkFBZUMsa0JBQWYsQ0FBa0MsS0FBS0MsR0FB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
|
|
408
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZ2V0Q29udGV4dHMiLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsIm9wdHMiLCJhc3NpZ25Db250ZXh0cyIsInNldENvbnRleHQiLCJuYW1lIiwidXRpbCIsImhhc1ZhbHVlIiwiV0VCVklFV19XSU4iLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjb250ZXh0cyIsIl8iLCJpbmNsdWRlcyIsImVycm9ycyIsIk5vU3VjaENvbnRleHRFcnJvciIsInN3aXRjaENvbnRleHQiLCJtb2JpbGVHZXRDb250ZXh0cyIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3cyIsInBhcnNlV2Vidmlld05hbWVzIiwiTkFUSVZFX1dJTiIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ2hyb21lZHJpdmVyQ29udGV4dCIsInN0YXJ0Q2hyb21lZHJpdmVyUHJveHkiLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJFcnJvciIsIldFQlZJRVdfQkFTRSIsImFwcFBhY2thZ2UiLCJpc1dlYkNvbnRleHQiLCJjb250ZXh0IiwiY2QiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsInNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIiLCJjbG9uZURlZXAiLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYW5kcm9pZFBhY2thZ2UiLCJtYXRjaCIsImxlbmd0aCIsImNocm9tZUFuZHJvaWRQYWNrYWdlIiwiaGFzIiwibWFwIiwid20iLCJ3ZWJ2aWV3TmFtZSIsImtub3duUGFja2FnZSIsIktOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIiwiYXBwU3RhdGUiLCJxdWVyeUFwcFN0YXRlIiwiQVBQX1NUQVRFIiwiUlVOTklOR19JTl9CQUNLR1JPVU5EIiwiUlVOTklOR19JTl9GT1JFR1JPVU5EIiwiaW5mbyIsInNldHVwTmV3Q2hyb21lZHJpdmVyIiwiY3VyRGV2aWNlSWQiLCJvbiIsIkNocm9tZWRyaXZlciIsIkVWRU5UX0NIQU5HRUQiLCJtc2ciLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJvbkNocm9tZWRyaXZlclN0b3AiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsInByb3h5UmVxIiwiYmluZCIsInByb3h5Q29tbWFuZCIsImp3cHJveHkiLCJjb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJ3YXJuIiwiZXJyIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJrZXlzIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsIm1lc3NhZ2UiLCJ2aWV3TmFtZSIsIkNIUk9NSVVNX1dJTiIsInNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lIiwiY2hyb21lT3B0aW9ucyIsImlzQXJyYXkiLCJhcmdzIiwiZGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJhY3Rpdml0eSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImVsIiwiZmluZEVsT3JFbHMiLCJjbGljayIsIkVMRU1FTlQiLCJlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwia25vd25QYWNrYWdlcyIsImNocm9tZUJ1bmRsZUlkIiwiY2hyb21lQW5kcm9pZEFjdGl2aXR5IiwiYXBwQWN0aXZpdHkiLCJoYXNXb3JraW5nV2VidmlldyIsInJlc3RhcnQiLCJnZXRDaHJvbWVkcml2ZXJQb3J0IiwicG9ydFNwZWMiLCJnZXRQb3J0IiwiQiIsInByb21pc2lmeSIsIlBvcnRGaW5kZXIiLCJwb3J0IiwiZm91bmRQb3J0IiwicG90ZW50aWFsUG9ydCIsInN0b3BQb3J0IiwicGFyc2VJbnQiLCJpc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImRldGFpbHMiLCJnZXRXZWJ2aWV3RGV0YWlscyIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJleGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNtZEFyZ3MiLCJjaHJvbWVkcml2ZXJBcmdzIiwidmVyYm9zZSIsInNob3dDaHJvbWVkcml2ZXJMb2ciLCJleGVjdXRhYmxlRGlyIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsIm1hcHBpbmdQYXRoIiwiY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUiLCJidW5kbGVJZCIsInVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlIiwiZGlzYWJsZUJ1aWxkQ2hlY2siLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImlzQXV0b2Rvd25sb2FkRW5hYmxlZCIsIm9wdCIsImVuZHNXaXRoIiwibWVyZ2UiLCJjYXBzIiwiY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyIsInN0YXJ0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBDaHJvbWVkcml2ZXIgZnJvbSAnYXBwaXVtLWNocm9tZWRyaXZlcic7XG5pbXBvcnQgUG9ydEZpbmRlciBmcm9tICdwb3J0ZmluZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIHdlYnZpZXdIZWxwZXJzLFxuICBOQVRJVkVfV0lOLCBXRUJWSUVXX0JBU0UsIFdFQlZJRVdfV0lOLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTXG59IGZyb20gJy4uL3dlYnZpZXctaGVscGVycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuXG5jb25zdCBDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUgPSAnY2hyb21lZHJpdmVyX2F1dG9kb3dubG9hZCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBY3R1YWwgTUpTT05XUCBjb21tYW5kIGhhbmRsZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5jb21tYW5kcy5nZXRDdXJyZW50Q29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDb250ZXh0ICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgYG51bGxgLCBpbmRpY2F0aW5nIG5vIGNvbnRleHRcbiAgLy8gZXhwbGljaXRseSBzZXQsIGl0IGlzIHRoZSBkZWZhdWx0IGNvbnRleHRcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCB8fCB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xufTtcblxuY29tbWFuZHMuZ2V0Q29udGV4dHMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0cyAoKSB7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgcmV0dXJuIHRoaXMuYXNzaWduQ29udGV4dHMod2Vidmlld3NNYXBwaW5nKTtcbn07XG5cbmNvbW1hbmRzLnNldENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzZXRDb250ZXh0IChuYW1lKSB7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShuYW1lKSkge1xuICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuICB9IGVsc2UgaWYgKG5hbWUgPT09IFdFQlZJRVdfV0lOKSB7XG4gICAgLy8gaGFuZGxlIHNldENvbnRleHQgXCJXRUJWSUVXXCJcbiAgICBuYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgfVxuICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0IHdlIHdhbnQsIGRvIG5vdGhpbmdcbiAgaWYgKG5hbWUgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgY29uc3QgY29udGV4dHMgPSB0aGlzLmFzc2lnbkNvbnRleHRzKHdlYnZpZXdzTWFwcGluZyk7XG4gIC8vIGlmIHRoZSBjb250ZXh0IHdlIHdhbnQgZG9lc24ndCBleGlzdCwgZmFpbFxuICBpZiAoIV8uaW5jbHVkZXMoY29udGV4dHMsIG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuc3dpdGNoQ29udGV4dChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB0aGlzLmN1ckNvbnRleHQgPSBuYW1lO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVyeSB7P3N0cmluZ30gd2Vidmlld05hbWUgQW4gYWN0dWFsIHdlYnZpZXcgbmFtZSBmb3Igc3dpdGNoaW5nIGNvbnRleHQuXG4gKiBUaGlzIHZhbHVlIGJlY29tZXMgbnVsbCB3aGVuIGZhaWxpbmcgdG8gZmluZCBhIFBJRCBmb3IgYSB3ZWJ2aWV3LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcganNvbiBkZW1vbnN0cmF0ZXMgdGhlIGV4YW1wbGUgb2YgV2Vidmlld3NNYXBwaW5nIG9iamVjdC5cbiAqIE5vdGUgdGhhdCBgZGVzY3JpcHRpb25gIGluIGBwYWdlYCBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIG1vc3QgbGlrZWx5IHdoZW4gaXQgY29tZXMgdG8gTW9iaWxlIENocm9tZSlcbiAqIHtcbiAqICAgXCJwcm9jXCI6IFwiQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXzIyMTM4XCIsXG4gKiAgIFwid2Vidmlld1wiOiBcIldFQlZJRVdfMjIxMzhcIixcbiAqICAgXCJpbmZvXCI6IHtcbiAqICAgICBcIkFuZHJvaWQtUGFja2FnZVwiOiBcImlvLmFwcGl1bS5zZXR0aW5nc1wiLFxuICogICAgIFwiQnJvd3NlclwiOiBcIkNocm9tZS83NC4wLjM3MjkuMTg1XCIsXG4gKiAgICAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBBbmRyb2lkIFNESyBidWlsdCBmb3IgeDg2IEJ1aWxkL1FTUjEuMTkwOTIwLjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83NC4wLjM3MjkuMTg1IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCIsXG4gKiAgICAgXCJWOC1WZXJzaW9uXCI6IFwiNy40LjI4OC4yOFwiLFxuICogICAgIFwiV2ViS2l0LVZlcnNpb25cIjogXCI1MzcuMzYgKEAyMjk1NTY4MmY5NGNlMDkzMzYxOTdiZmI4ZGZmZWE5OTFmYTMyZjBkKVwiLFxuICogICAgIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovLzEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9icm93c2VyXCJcbiAqICAgfSxcbiAqICAgXCJwYWdlc1wiOiBbXG4gKiAgICAge1xuICogICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIntcXFwiYXR0YWNoZWRcXFwiOnRydWUsXFxcImVtcHR5XFxcIjpmYWxzZSxcXFwiaGVpZ2h0XFxcIjoxNDU4LFxcXCJzY3JlZW5YXFxcIjowLFxcXCJzY3JlZW5ZXFxcIjozMzYsXFxcInZpc2libGVcXFwiOnRydWUsXFxcIndpZHRoXFxcIjoxMDgwfVwiLFxuICogICAgICAgXCJkZXZ0b29sc0Zyb250ZW5kVXJsXCI6IFwiaHR0cDovL2Nocm9tZS1kZXZ0b29scy1mcm9udGVuZC5hcHBzcG90LmNvbS9zZXJ2ZV9yZXYvQDIyOTU1NjgyZjk0Y2UwOTMzNjE5N2JmYjhkZmZlYTk5MWZhMzJmMGQvaW5zcGVjdG9yLmh0bWw/d3M9MTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL3BhZ2UvMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIixcbiAqICAgICAgIFwiaWRcIjogXCIyNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiLFxuICogICAgICAgXCJ0aXRsZVwiOiBcIlJlbGVhc2VzIMK3IGFwcGl1bS9hcHBpdW0gwrcgR2l0SHViXCIsXG4gKiAgICAgICBcInR5cGVcIjogXCJwYWdlXCIsXG4gKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL3JlbGVhc2VzXCIsXG4gKiAgICAgICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly8xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvcGFnZS8yNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiXG4gKiAgICAgfVxuICogICBdLFxuICogICBcIndlYnZpZXdOYW1lXCI6IFwiV0VCVklFV19jb20uaW8uYXBwaXVtLnNldHRpbmdcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0dXJucyBhIHdlYnZpZXdzTWFwcGluZyBiYXNlZCBvbiBDRFAgZW5kcG9pbnRzXG4gKlxuICogQHJldHVybiB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0Q29udGV4dHMgKCkge1xuICBjb25zdCBvcHRzID0ge1xuICAgIGFuZHJvaWREZXZpY2VTb2NrZXQ6IHRoaXMub3B0cy5hbmRyb2lkRGV2aWNlU29ja2V0LFxuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB0cnVlLFxuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQ6IHRoaXMub3B0cy53ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjogdHJ1ZVxuICB9O1xuICByZXR1cm4gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbn07XG5cbmhlbHBlcnMuYXNzaWduQ29udGV4dHMgPSBmdW5jdGlvbiBhc3NpZ25Db250ZXh0cyAod2Vidmlld3NNYXBwaW5nKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3MgPSB3ZWJ2aWV3SGVscGVycy5wYXJzZVdlYnZpZXdOYW1lcyh3ZWJ2aWV3c01hcHBpbmcsIG9wdHMpO1xuICB0aGlzLmNvbnRleHRzID0gW05BVElWRV9XSU4sIC4uLndlYnZpZXdzXTtcbiAgdGhpcy5sb2cuZGVidWcoYEF2YWlsYWJsZSBjb250ZXh0czogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRleHRzKX1gKTtcbiAgcmV0dXJuIHRoaXMuY29udGV4dHM7XG59O1xuXG5oZWxwZXJzLnN3aXRjaENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzd2l0Y2hDb250ZXh0IChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgLy8gV2UgaGF2ZSBzb21lIG9wdGlvbnMgd2hlbiBpdCBjb21lcyB0byB3ZWJ2aWV3cy4gSWYgd2Ugd2FudCBhXG4gIC8vIENocm9tZWRyaXZlciB3ZWJ2aWV3LCB3ZSBjYW4gb25seSBjb250cm9sIG9uZSBhdCBhIHRpbWUuXG4gIGlmICh0aGlzLmlzQ2hyb21lZHJpdmVyQ29udGV4dChuYW1lKSkge1xuICAgIC8vIHN0YXJ0IHByb3h5aW5nIGNvbW1hbmRzIGRpcmVjdGx5IHRvIGNocm9tZWRyaXZlclxuICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVkcml2ZXJQcm94eShuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNDaHJvbWVkcml2ZXJDb250ZXh0KHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICAvLyBpZiB3ZSdyZSBtb3ZpbmcgdG8gYSBub24tY2hyb21lZHJpdmVyIHdlYnZpZXcsIGFuZCBvdXIgY3VycmVudCBjb250ZXh0XG4gICAgLy8gX2lzXyBhIGNocm9tZWRyaXZlciB3ZWJ2aWV3LCBpZiBjYXBzIHJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgaXMgc2V0XG4gICAgLy8gdG8gdHJ1ZSB0aGVuIGtpbGwgY2hyb21lZHJpdmVyIHNlc3Npb24gdXNpbmcgc3RvcENocm9tZWRyaXZlclByb3hpZXMgb3JcbiAgICAvLyBlbHNlIHNpbXBseSBzdXNwZW5kIHByb3h5aW5nIHRvIHRoZSBsYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRzLnJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIHNldCB0byB0cnVlOyBraWxsaW5nIGV4aXN0aW5nIGNocm9tZWRyaXZlcnMnKTtcbiAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWRuJ3Qga25vdyBob3cgdG8gaGFuZGxlIHN3aXRjaGluZyB0byBjb250ZXh0ICcke25hbWV9J2ApO1xuICB9XG59O1xuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogT24tb2JqZWN0IGNvbnRleHQtcmVsYXRlZCBoZWxwZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLy8gVGhlIHJlYXNvbiB0aGlzIGlzIGEgZnVuY3Rpb24gYW5kIG5vdCBqdXN0IGEgY29uc3RhbnQgaXMgdGhhdCBib3RoIGFuZHJvaWQtXG4vLyBkcml2ZXIgYW5kIHNlbGVuZHJvaWQtZHJpdmVyIHVzZSB0aGlzIGxvZ2ljLCBhbmQgZWFjaCBvbmUgcmV0dXJuc1xuLy8gYSBkaWZmZXJlbnQgZGVmYXVsdCBjb250ZXh0IG5hbWVcbmhlbHBlcnMuZGVmYXVsdENvbnRleHROYW1lID0gZnVuY3Rpb24gZGVmYXVsdENvbnRleHROYW1lICgpIHtcbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5oZWxwZXJzLmRlZmF1bHRXZWJ2aWV3TmFtZSA9IGZ1bmN0aW9uIGRlZmF1bHRXZWJ2aWV3TmFtZSAoKSB7XG4gIHJldHVybiBXRUJWSUVXX0JBU0UgKyB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbn07XG5cbmhlbHBlcnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCAhPT0gbnVsbCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU47XG59O1xuXG4vLyBUdXJuIG9uIHByb3h5aW5nIHRvIGFuIGV4aXN0aW5nIENocm9tZWRyaXZlciBzZXNzaW9uIG9yIGEgbmV3IG9uZVxuaGVscGVycy5zdGFydENocm9tZWRyaXZlclByb3h5ID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRDaHJvbWVkcml2ZXJQcm94eSAoY29udGV4dCwgd2Vidmlld3NNYXBwaW5nKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIGNocm9tZS1iYWNrZWQgd2VidmlldyBjb250ZXh0ICcke2NvbnRleHR9J2ApO1xuXG4gIGxldCBjZDtcbiAgaWYgKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF0pIHtcbiAgICAvLyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSd2ZSBhbHJlYWR5IHNldCB1cCBhIGNocm9tZWRyaXZlciBmb3IgYSBjb250ZXh0LFxuICAgIC8vIHdlIHdhbnQgdG8gcmVjb25uZWN0IHRvIGl0LCBub3QgY3JlYXRlIGEgd2hvbGUgbmV3IG9uZVxuICAgIHRoaXMubG9nLmRlYnVnKGBGb3VuZCBleGlzdGluZyBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nLiBVc2luZyBpdC5gKTtcbiAgICBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgYXdhaXQgc2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlcih0aGlzLmxvZywgY2QpO1xuICB9IGVsc2Uge1xuICAgIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcbiAgICBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHAgPSB0cnVlO1xuXG4gICAgLy8gaWYgcmVxdWVzdGVkLCB0ZWxsIGNocm9tZWRyaXZlciB0byBhdHRhY2ggdG8gdGhlIGFuZHJvaWQgcGFja2FnZSB3ZSBoYXZlXG4gICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IG5hbWUsIHJhdGhlciB0aGFuIHRoZSBwYWNrYWdlIG9mIHRoZSBBVVQuXG4gICAgLy8gQW5kIHR1cm4gdGhpcyBvbiBieSBkZWZhdWx0IGZvciBjaHJvbWUtLWlmIGNocm9tZSBwb3BzIHVwIHdpdGggYSB3ZWJ2aWV3XG4gICAgLy8gYW5kIHNvbWVvbmUgd2FudHMgdG8gc3dpdGNoIHRvIGl0LCB3ZSBzaG91bGQgbGV0IGNocm9tZWRyaXZlciBjb25uZWN0IHRvXG4gICAgLy8gY2hyb21lIHJhdGhlciB0aGFuIHN0YXlpbmcgc3R1Y2sgb24gdGhlIEFVVFxuICAgIGlmIChvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSB8fCBjb250ZXh0ID09PSBgJHtXRUJWSUVXX0JBU0V9Y2hyb21lYCkge1xuICAgICAgbGV0IGFuZHJvaWRQYWNrYWdlID0gY29udGV4dC5tYXRjaChgJHtXRUJWSUVXX0JBU0V9KC4rKWApO1xuICAgICAgaWYgKGFuZHJvaWRQYWNrYWdlICYmIGFuZHJvaWRQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlWzFdO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSkge1xuICAgICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uJykgJiYgIXRoaXMub3B0cy5lbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBXaGVuIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBjYXBhYmlsaXR5IGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQsIHRyeSB0byBpZGVudGlmeVxuICAgICAgICAgIC8vIGNocm9tZUFuZHJvaWRQYWNrYWdlIGJhc2VkIG9uIGNvbnRleHRzLCBrbm93biBjaHJvbWUgdmFyaWFudCBwYWNrYWdlcyBhbmQgcXVlcnlBcHBTdGF0ZSByZXN1bHRcbiAgICAgICAgICAvLyBzaW5jZSB3ZWJ2aWV3c01hcHBpbmcgZG9lcyBub3QgaGF2ZSBpbmZvIG9iamVjdFxuICAgICAgICAgIGNvbnN0IGNvbnRleHRzID0gd2Vidmlld3NNYXBwaW5nLm1hcCgod20pID0+IHdtLndlYnZpZXdOYW1lKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtub3duUGFja2FnZSBvZiBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMoY29udGV4dHMsIGAke1dFQlZJRVdfQkFTRX0ke2tub3duUGFja2FnZX1gKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGtub3duUGFja2FnZSk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbQVBQX1NUQVRFLlJVTk5JTkdfSU5fQkFDS0dST1VORCwgQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORF0sIGFwcFN0YXRlKSkge1xuICAgICAgICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0ga25vd25QYWNrYWdlO1xuICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBxdWVyeWluZyBzdGF0ZXMgb2YgQ2hyb21lIGFwcCBwYWNrYWdlc2ApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCB3bSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICAgICAgICAgIGlmICh3bS53ZWJ2aWV3TmFtZSA9PT0gY29udGV4dCAmJiBfLmhhcyh3bT8uaW5mbywgJ0FuZHJvaWQtUGFja2FnZScpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSB3bS5pbmZvWydBbmRyb2lkLVBhY2thZ2UnXTtcbiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYElkZW50aWZpZWQgY2hyb21lQW5kcm9pZFBhY2thZ2UgYXMgJyR7b3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZX0nIGAgK1xuICAgICAgICAgICAgICAgIGBmb3IgY29udGV4dCAnJHtjb250ZXh0fScgYnkgQ0RQYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNkID0gYXdhaXQgdGhpcy5zZXR1cE5ld0Nocm9tZWRyaXZlcihvcHRzLCB0aGlzLmFkYi5jdXJEZXZpY2VJZCwgdGhpcy5hZGIsIGNvbnRleHQpO1xuICAgIC8vIGJpbmQgb3VyIHN0b3AvZXhpdCBoYW5kbGVyLCBwYXNzaW5nIGluIGNvbnRleHQgc28gd2Uga25vdyB3aGljaFxuICAgIC8vIG9uZSBzdG9wcGVkIHVuZXhwZWN0ZWRseVxuICAgIGNkLm9uKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VELCAobXNnKSA9PiB7XG4gICAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgICB0aGlzLm9uQ2hyb21lZHJpdmVyU3RvcChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBzYXZlIHRoZSBjaHJvbWVkcml2ZXIgb2JqZWN0IHVuZGVyIHRoZSBjb250ZXh0XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XSA9IGNkO1xuICB9XG4gIC8vIGhvb2sgdXAgdGhlIGxvY2FsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gcHJveHkgdGhpcyBiaXpcbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBjZDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbn07XG5cbi8vIFN0b3AgcHJveHlpbmcgdG8gYW55IENocm9tZWRyaXZlclxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiBzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IG51bGw7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbn07XG5cbi8vIEhhbmRsZSBhbiBvdXQtb2YtYmFuZCBDaHJvbWVkcml2ZXIgc3RvcCBldmVudFxuaGVscGVycy5vbkNocm9tZWRyaXZlclN0b3AgPSBhc3luYyBmdW5jdGlvbiBvbkNocm9tZWRyaXZlclN0b3AgKGNvbnRleHQpIHtcbiAgdGhpcy5sb2cud2FybihgQ2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH0gc3RvcHBlZCB1bmV4cGVjdGVkbHlgKTtcbiAgaWYgKGNvbnRleHQgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIC8vIHdlIGV4aXRlZCB1bmV4cGVjdGVkbHkgd2hpbGUgYXV0b21hdGluZyB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBzbyB3YW50XG4gICAgLy8gdG8gc2h1dCBkb3duIHRoZSBzZXNzaW9uIGFuZCByZXNwb25kIHdpdGggYW4gZXJyb3JcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKCdDaHJvbWVkcml2ZXIgcXVpdCB1bmV4cGVjdGVkbHkgZHVyaW5nIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgYSBDaHJvbWVkcml2ZXIgaW4gdGhlIG5vbi1hY3RpdmUgY29udGV4dCBiYXJmcywgd2UgZG9uJ3QgcmVhbGx5XG4gICAgLy8gY2FyZSwgd2UnbGwganVzdCBtYWtlIGEgbmV3IG9uZSBuZXh0IHRpbWUgd2UgbmVlZCB0aGUgY29udGV4dC5cbiAgICB0aGlzLmxvZy53YXJuKFwiQ2hyb21lZHJpdmVyIHF1aXQgdW5leHBlY3RlZGx5LCBidXQgaXQgd2Fzbid0IHRoZSBhY3RpdmUgXCIgK1xuICAgICAgJ2NvbnRleHQsIGlnbm9yaW5nJyk7XG4gICAgZGVsZXRlIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gIH1cbn07XG5cbi8vIEludGVudGlvbmFsbHkgc3RvcCBhbGwgdGhlIGNocm9tZWRyaXZlcnMgY3VycmVudGx5IGFjdGl2ZSwgYW5kIGlnbm9yZVxuLy8gdGhlaXIgZXhpdCBldmVudHNcbmhlbHBlcnMuc3RvcENocm9tZWRyaXZlclByb3hpZXMgPSBhc3luYyBmdW5jdGlvbiBzdG9wQ2hyb21lZHJpdmVyUHJveGllcyAoKSB7XG4gIHRoaXMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5KCk7IC8vIG1ha2Ugc3VyZSB3ZSB0dXJuIG9mZiB0aGUgcHJveHkgZmxhZ1xuICBmb3IgKGxldCBjb250ZXh0IG9mIF8ua2V5cyh0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzKSkge1xuICAgIGxldCBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgdGhpcy5sb2cuZGVidWcoYFN0b3BwaW5nIGNocm9tZWRyaXZlciBmb3IgY29udGV4dCAke2NvbnRleHR9YCk7XG4gICAgLy8gc3RvcCBsaXN0ZW5pbmcgZm9yIHRoZSBzdG9wcGVkIHN0YXRlIGV2ZW50XG4gICAgY2QucmVtb3ZlQWxsTGlzdGVuZXJzKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VEKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2Quc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3Igc3RvcHBpbmcgQ2hyb21lZHJpdmVyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuaGVscGVycy5pc0Nocm9tZWRyaXZlckNvbnRleHQgPSBmdW5jdGlvbiBpc0Nocm9tZWRyaXZlckNvbnRleHQgKHZpZXdOYW1lKSB7XG4gIHJldHVybiBfLmluY2x1ZGVzKHZpZXdOYW1lLCBXRUJWSUVXX1dJTikgfHwgdmlld05hbWUgPT09IENIUk9NSVVNX1dJTjtcbn07XG5cbmhlbHBlcnMuc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUgPSBmdW5jdGlvbiBzaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSAoKSB7XG4gIHJldHVybiAhIXRoaXMub3B0cy5jaHJvbWVPcHRpb25zICYmXG4gICAgICAgICBfLmlzQXJyYXkodGhpcy5vcHRzLmNocm9tZU9wdGlvbnMuYXJncykgJiZcbiAgICAgICAgIHRoaXMub3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MuaW5jbHVkZXMoJy0tbm8tZmlyc3QtcnVuJyk7XG59O1xuXG5oZWxwZXJzLmRpc21pc3NDaHJvbWVXZWxjb21lID0gYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0Nocm9tZVdlbGNvbWUgKCkge1xuICB0aGlzLmxvZy5pbmZvKCdUcnlpbmcgdG8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZScpO1xuICBsZXQgYWN0aXZpdHkgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRBY3Rpdml0eSgpO1xuICBpZiAoYWN0aXZpdHkgIT09ICdvcmcuY2hyb21pdW0uY2hyb21lLmJyb3dzZXIuZmlyc3RydW4uRmlyc3RSdW5BY3Rpdml0eScpIHtcbiAgICB0aGlzLmxvZy5pbmZvKCdDaHJvbWUgd2VsY29tZSBkaWFsb2cgbmV2ZXIgc2hvd2VkIHVwISBDb250aW51aW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBlbCA9IGF3YWl0IHRoaXMuZmluZEVsT3JFbHMoJ2lkJywgJ2NvbS5hbmRyb2lkLmNocm9tZTppZC90ZXJtc19hY2NlcHQnLCBmYWxzZSk7XG4gIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIHRyeSB7XG4gICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL25lZ2F0aXZlX2J1dHRvbicsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLmNsaWNrKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gRE8gTk9USElORywgVEhJUyBERVZJQ0UgRElETlQgTEFVTkNIIFRIRSBTSUdOSU4gRElBTE9HXG4gICAgLy8gSVQgTVVTVCBCRSBBIE5PTiBHTVMgREVWSUNFXG4gICAgdGhpcy5sb2cud2FybihgVGhpcyBkZXZpY2UgZGlkIG5vdCBzaG93IENocm9tZSBTaWduSW4gZGlhbG9nLCAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5zdGFydENocm9tZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZVNlc3Npb24gKCkge1xuICB0aGlzLmxvZy5pbmZvKCdTdGFydGluZyBhIGNocm9tZS1iYXNlZCBicm93c2VyIHNlc3Npb24nKTtcbiAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuXG4gIGNvbnN0IGtub3duUGFja2FnZXMgPSBbXG4gICAgJ29yZy5jaHJvbWl1bS5jaHJvbWUuc2hlbGwnLFxuICAgICdjb20uYW5kcm9pZC5jaHJvbWUnLFxuICAgICdjb20uY2hyb21lLmJldGEnLFxuICAgICdvcmcuY2hyb21pdW0uY2hyb21lJyxcbiAgICAnb3JnLmNocm9taXVtLndlYnZpZXdfc2hlbGwnLFxuICBdO1xuXG4gIGlmIChfLmluY2x1ZGVzKGtub3duUGFja2FnZXMsIHRoaXMub3B0cy5hcHBQYWNrYWdlKSkge1xuICAgIG9wdHMuY2hyb21lQnVuZGxlSWQgPSB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eSA9IHRoaXMub3B0cy5hcHBBY3Rpdml0eTtcbiAgfVxuICB0aGlzLmNocm9tZWRyaXZlciA9IGF3YWl0IHRoaXMuc2V0dXBOZXdDaHJvbWVkcml2ZXIob3B0cywgdGhpcy5hZGIuY3VyRGV2aWNlSWQsIHRoaXMuYWRiKTtcbiAgdGhpcy5jaHJvbWVkcml2ZXIub24oQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQsIChtc2cpID0+IHtcbiAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgdGhpcy5vbkNocm9tZWRyaXZlclN0b3AoQ0hST01JVU1fV0lOKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBDaHJvbWUgc2Vzc2lvbiwgd2UgZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXNcbiAgLy8gYXBwcm9wcmlhdGVseSBzZXQgYW5kIHRoYXQgdGhpcyBjaHJvbWVkcml2ZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3RcbiAgLy8gb2Ygc2Vzc2lvbiBjaHJvbWVkcml2ZXJzIHNvIHdlIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGhcbiAgdGhpcy5jdXJDb250ZXh0ID0gQ0hST01JVU1fV0lOO1xuICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW0NIUk9NSVVNX1dJTl0gPSB0aGlzLmNocm9tZWRyaXZlcjtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcblxuICBpZiAodGhpcy5zaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSgpKSB7XG4gICAgLy8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZSBkaWFsb2dcbiAgICBhd2FpdCB0aGlzLmRpc21pc3NDaHJvbWVXZWxjb21lKCk7XG4gIH1cbn07XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEludGVybmFsIGxpYnJhcnkgZnVuY3Rpb25zXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5hc3luYyBmdW5jdGlvbiBzZXR1cEV4aXN0aW5nQ2hyb21lZHJpdmVyIChsb2csIGNocm9tZWRyaXZlcikge1xuICAvLyBjaGVjayB0aGUgc3RhdHVzIGJ5IHNlbmRpbmcgYSBzaW1wbGUgd2luZG93LWJhc2VkIGNvbW1hbmQgdG8gQ2hyb21lRHJpdmVyXG4gIC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yLCB3ZSB3YW50IHRvIHJlY3JlYXRlIHRoZSBDaHJvbWVEcml2ZXIgc2Vzc2lvblxuICBpZiAoIWF3YWl0IGNocm9tZWRyaXZlci5oYXNXb3JraW5nV2VidmlldygpKSB7XG4gICAgbG9nLmRlYnVnKCdDaHJvbWVEcml2ZXIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdy4gJyArXG4gICAgICAgICAgICAgICAgICdSZS1pbml0aWFsaXppbmcgdGhlIHNlc3Npb24uJyk7XG4gICAgYXdhaXQgY2hyb21lZHJpdmVyLnJlc3RhcnQoKTtcbiAgfVxuICByZXR1cm4gY2hyb21lZHJpdmVyO1xufVxuXG4vKipcbiAqIEZpbmQgYSBmcmVlIHBvcnQgdG8gaGF2ZSBDaHJvbWVkcml2ZXIgbGlzdGVuIG9uLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IHBvcnRTcGVjIC0gQXJyYXkgd2hpY2ggaXMgYSBsaXN0IG9mIHBvcnRzLiBBIGxpc3QgaXRlbSBtYXlcbiAqIGFsc28gaXRzZWxmIGJlIGFuIGFycmF5IG9mIGxlbmd0aCAyIHNwZWNpZnlpbmcgYSBzdGFydCBhbmQgZW5kIHBvcnQgb2ZcbiAqIGEgcmFuZ2UuIFNvbWUgdmFsaWQgcG9ydCBzcGVjczpcbiAqICAgIC0gWzgwMDAsIDgwMDEsIDgwMDJdXG4gKiAgICAtIFtbODAwMCwgODAwNV1dXG4gKiAgICAtIFs4MDAwLCBbOTAwMCwgOTEwMF1dXG4gKiBAcGFyYW0ge09iamVjdD99IGxvZyBMb2dnZXIgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgZnJlZSBwb3J0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlclBvcnQgKHBvcnRTcGVjLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IGdldFBvcnQgPSBCLnByb21pc2lmeShQb3J0RmluZGVyLmdldFBvcnQsIHtjb250ZXh0OiBQb3J0RmluZGVyfSk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgZGlkbid0IGdpdmUgdXMgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGNocm9tZWRyaXZlclxuICAvLyBwb3J0IHJhbmdlcywganVzdCBmaW5kIGFueSBmcmVlIHBvcnRcbiAgaWYgKCFwb3J0U3BlYykge1xuICAgIGNvbnN0IHBvcnQgPSBhd2FpdCBnZXRQb3J0KCk7XG4gICAgbG9nPy5kZWJ1ZyhgQSBwb3J0IHdhcyBub3QgZ2l2ZW4sIHVzaW5nIHJhbmRvbSBmcmVlIHBvcnQ6ICR7cG9ydH1gKTtcbiAgICByZXR1cm4gcG9ydDtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSBmaW5kIHRoZSBmcmVlIHBvcnQgYmFzZWQgb24gYSBsaXN0IG9yIHJhbmdlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyXG4gIGxvZz8uZGVidWcoYEZpbmRpbmcgYSBmcmVlIHBvcnQgZm9yIGNocm9tZWRyaXZlciB1c2luZyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICBsZXQgZm91bmRQb3J0ID0gbnVsbDtcbiAgZm9yIChjb25zdCBwb3RlbnRpYWxQb3J0IG9mIHBvcnRTcGVjKSB7XG4gICAgbGV0IHBvcnQsIHN0b3BQb3J0O1xuICAgIGlmIChfLmlzQXJyYXkocG90ZW50aWFsUG9ydCkpIHtcbiAgICAgIChbcG9ydCwgc3RvcFBvcnRdID0gcG90ZW50aWFsUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChwb3RlbnRpYWxQb3J0LCAxMCk7IC8vIGVuc3VyZSB3ZSBoYXZlIGEgbnVtYmVyIGFuZCBub3QgYSBzdHJpbmdcbiAgICAgIHN0b3BQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZz8uZGVidWcoYENoZWNraW5nIHBvcnQgcmFuZ2UgJHtwb3J0fToke3N0b3BQb3J0fWApO1xuICAgICAgZm91bmRQb3J0ID0gYXdhaXQgZ2V0UG9ydCh7cG9ydCwgc3RvcFBvcnR9KTtcbiAgICAgIGJyZWFrO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZz8uZGVidWcoYE5vdGhpbmcgaW4gcG9ydCByYW5nZSAke3BvcnR9OiR7c3RvcFBvcnR9IHdhcyBhdmFpbGFibGVgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZm91bmRQb3J0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGZyZWUgcG9ydCBmb3IgY2hyb21lZHJpdmVyIHVzaW5nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgY2hyb21lZHJpdmVyUG9ydHMgc3BlYyAke0pTT04uc3RyaW5naWZ5KHBvcnRTcGVjKX1gKTtcbiAgfVxuXG4gIGxvZz8uZGVidWcoYFVzaW5nIGZyZWUgcG9ydCAke2ZvdW5kUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICByZXR1cm4gZm91bmRQb3J0O1xufVxuXG5oZWxwZXJzLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCA9IGZ1bmN0aW9uIGlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCAoKSB7XG4gIGlmICh0aGlzLmlzRmVhdHVyZUVuYWJsZWQoQ0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHRoaXM/LmxvZz8uZGVidWcoYEF1dG9tYXRlZCBDaHJvbWVkcml2ZXIgZG93bmxvYWQgaXMgZGlzYWJsZWQuIGAgK1xuICAgIGBVc2UgJyR7Q0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFfScgc2VydmVyIGZlYXR1cmUgdG8gZW5hYmxlIGl0YCk7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBhc3luYyBmdW5jdGlvbiBzZXR1cE5ld0Nocm9tZWRyaXZlciAob3B0cywgY3VyRGV2aWNlSWQsIGFkYiwgY29udGV4dCA9IG51bGwpIHtcbiAgaWYgKG9wdHMuY2hyb21lRHJpdmVyUG9ydCkge1xuICAgIHRoaXM/LmxvZz8ud2FybihgVGhlICdjaHJvbWVEcml2ZXJQb3J0JyBjYXBhYmlsaXR5IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJ2Nocm9tZWRyaXZlclBvcnQnIGluc3RlYWRgKTtcbiAgICBvcHRzLmNocm9tZWRyaXZlclBvcnQgPSBvcHRzLmNocm9tZURyaXZlclBvcnQ7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVkcml2ZXJQb3J0KSB7XG4gICAgdGhpcz8ubG9nPy5kZWJ1ZyhgVXNpbmcgdXNlci1zcGVjaWZpZWQgcG9ydCAke29wdHMuY2hyb21lZHJpdmVyUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICB9IGVsc2Uge1xuICAgIC8vIGlmIGEgc2luZ2xlIHBvcnQgd2Fzbid0IGdpdmVuLCB3ZSdsbCBsb29rIGZvciBhIGZyZWUgb25lXG4gICAgb3B0cy5jaHJvbWVkcml2ZXJQb3J0ID0gYXdhaXQgZ2V0Q2hyb21lZHJpdmVyUG9ydChvcHRzLmNocm9tZWRyaXZlclBvcnRzLCB0aGlzPy5sb2cpO1xuICB9XG5cbiAgY29uc3QgZGV0YWlscyA9IGNvbnRleHQgPyB3ZWJ2aWV3SGVscGVycy5nZXRXZWJ2aWV3RGV0YWlscyhhZGIsIGNvbnRleHQpIDogdW5kZWZpbmVkO1xuICBpZiAoIV8uaXNFbXB0eShkZXRhaWxzKSkge1xuICAgIHRoaXM/LmxvZz8uZGVidWcoJ1Bhc3Npbmcgd2ViIHZpZXcgZGV0YWlscyB0byB0aGUgQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRldGFpbHMsIG51bGwsIDIpKTtcbiAgfVxuXG4gIGNvbnN0IGNocm9tZWRyaXZlciA9IG5ldyBDaHJvbWVkcml2ZXIoe1xuICAgIHBvcnQ6IG9wdHMuY2hyb21lZHJpdmVyUG9ydCxcbiAgICBleGVjdXRhYmxlOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGUsXG4gICAgYWRiLFxuICAgIGNtZEFyZ3M6IG9wdHMuY2hyb21lZHJpdmVyQXJncyxcbiAgICB2ZXJib3NlOiAhIW9wdHMuc2hvd0Nocm9tZWRyaXZlckxvZyxcbiAgICBleGVjdXRhYmxlRGlyOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIsXG4gICAgbWFwcGluZ1BhdGg6IG9wdHMuY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUsXG4gICAgYnVuZGxlSWQ6IG9wdHMuY2hyb21lQnVuZGxlSWQsXG4gICAgdXNlU3lzdGVtRXhlY3V0YWJsZTogb3B0cy5jaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlLFxuICAgIGRpc2FibGVCdWlsZENoZWNrOiBvcHRzLmNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrLFxuICAgIGRldGFpbHMsXG4gICAgaXNBdXRvZG93bmxvYWRFbmFibGVkOiB0aGlzPy5pc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQ/LigpXG4gIH0pO1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGVyZSBhcmUgY2hyb21lT3B0aW9uc1xuICBvcHRzLmNocm9tZU9wdGlvbnMgPSBvcHRzLmNocm9tZU9wdGlvbnMgfHwge307XG4gIC8vIHRyeSBvdXQgYW55IHByZWZpeGVkIGNocm9tZU9wdGlvbnMsXG4gIC8vIGFuZCBzdHJpcCB0aGUgcHJlZml4XG4gIGZvciAoY29uc3Qgb3B0IG9mIF8ua2V5cyhvcHRzKSkge1xuICAgIGlmIChvcHQuZW5kc1dpdGgoJzpjaHJvbWVPcHRpb25zJykpIHtcbiAgICAgIHRoaXM/LmxvZz8ud2FybihgTWVyZ2luZyAnJHtvcHR9JyBpbnRvICdjaHJvbWVPcHRpb25zJy4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgXy5tZXJnZShvcHRzLmNocm9tZU9wdGlvbnMsIG9wdHNbb3B0XSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2FwcyA9IHdlYnZpZXdIZWxwZXJzLmNyZWF0ZUNocm9tZWRyaXZlckNhcHMob3B0cywgY3VyRGV2aWNlSWQsIGRldGFpbHMpO1xuICB0aGlzPy5sb2c/LmRlYnVnKGBCZWZvcmUgc3RhcnRpbmcgY2hyb21lZHJpdmVyLCBhbmRyb2lkUGFja2FnZSBpcyAnJHtjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2V9J2ApO1xuICBhd2FpdCBjaHJvbWVkcml2ZXIuc3RhcnQoY2Fwcyk7XG4gIHJldHVybiBjaHJvbWVkcml2ZXI7XG59O1xuY29uc3Qgc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBoZWxwZXJzLnNldHVwTmV3Q2hyb21lZHJpdmVyO1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMsIHNldHVwTmV3Q2hyb21lZHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOzs7Ozs7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRywyQkFBMUM7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBTUFGLFFBQVEsQ0FBQ0csaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsR0FBb0M7RUFHL0QsT0FBTyxLQUFLQyxVQUFMLElBQW1CLEtBQUtDLGtCQUFMLEVBQTFCO0FBQ0QsQ0FKRDs7QUFNQUwsUUFBUSxDQUFDTSxXQUFULEdBQXVCLGVBQWVBLFdBQWYsR0FBOEI7RUFDbkQsTUFBTUMsZUFBZSxHQUFHLE1BQU1DLHVCQUFBLENBQWVDLGtCQUFmLENBQWtDLEtBQUtDLEdBQXZDLEVBQTRDLEtBQUtDLElBQWpELENBQTlCO0VBQ0EsT0FBTyxLQUFLQyxjQUFMLENBQW9CTCxlQUFwQixDQUFQO0FBQ0QsQ0FIRDs7QUFLQVAsUUFBUSxDQUFDYSxVQUFULEdBQXNCLGVBQWVBLFVBQWYsQ0FBMkJDLElBQTNCLEVBQWlDO0VBQ3JELElBQUksQ0FBQ0MsYUFBQSxDQUFLQyxRQUFMLENBQWNGLElBQWQsQ0FBTCxFQUEwQjtJQUN4QkEsSUFBSSxHQUFHLEtBQUtULGtCQUFMLEVBQVA7RUFDRCxDQUZELE1BRU8sSUFBSVMsSUFBSSxLQUFLRywyQkFBYixFQUEwQjtJQUUvQkgsSUFBSSxHQUFHLEtBQUtJLGtCQUFMLEVBQVA7RUFDRDs7RUFFRCxJQUFJSixJQUFJLEtBQUssS0FBS1YsVUFBbEIsRUFBOEI7SUFDNUI7RUFDRDs7RUFFRCxNQUFNRyxlQUFlLEdBQUcsTUFBTUMsdUJBQUEsQ0FBZUMsa0JBQWYs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
|
|
@@ -222,4 +222,4 @@ var _default = extensions;
|
|
|
222
222
|
exports.default = _default;require('source-map-support').install();
|
|
223
223
|
|
|
224
224
|
|
|
225
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0QXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZWxlbWVudElkIiwicCIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJnZXROYW1lIiwiZWxlbWVudERpc3BsYXllZCIsImVsZW1lbnRFbmFibGVkIiwiZWxlbWVudFNlbGVjdGVkIiwic2V0RWxlbWVudFZhbHVlIiwia2V5cyIsInJlcGxhY2UiLCJ0ZXh0IiwiQXJyYXkiLCJqb2luIiwicGFyYW1zIiwidW5pY29kZUtleWJvYXJkIiwib3B0cyIsImRvU2V0RWxlbWVudFZhbHVlIiwic2V0VmFsdWUiLCJyZXBsYWNlVmFsdWUiLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImNsaWNrIiwiYWRiIiwiaW5wdXRUZXh0IiwiZ2V0VGV4dCIsImNsZWFyIiwibGVuZ3RoIiwibG9nIiwiZGVidWciLCJyZW1haW5pbmdMZW5ndGgiLCJsZW5ndGhUb1NlbmQiLCJjbGVhclRleHRGaWVsZCIsImdldExvY2F0aW9uIiwiZ2V0TG9jYXRpb25JblZpZXciLCJnZXRTaXplIiwiZ2V0RWxlbWVudFJlY3QiLCJ0b3VjaExvbmdDbGljayIsIngiLCJ5IiwiZHVyYXRpb24iLCJhbmRyb2lkSGVscGVycyIsInJlbW92ZU51bGxQcm9wZXJ0aWVzIiwidG91Y2hEb3duIiwidG91Y2hVcCIsInRvdWNoTW92ZSIsImNvbXBsZXhUYXAiLCJ0YXBDb3VudCIsInRvdWNoQ291bnQiLCJ0YXAiLCJjb3VudCIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiaSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9lbGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuZ2V0QXR0cmlidXRlID0gYXN5bmMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlIChhdHRyaWJ1dGUsIGVsZW1lbnRJZCkge1xuICBsZXQgcCA9IHthdHRyaWJ1dGUsIGVsZW1lbnRJZH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmdldEF0dHJpYnV0ZScsIHApO1xufTtcblxuY29tbWFuZHMuZ2V0TmFtZSA9IGFzeW5jIGZ1bmN0aW9uIGdldE5hbWUgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2NsYXNzTmFtZScsIGVsZW1lbnRJZCk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RGlzcGxheWVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudERpc3BsYXllZCAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZGlzcGxheWVkJywgZWxlbWVudElkKSA9PT0gJ3RydWUnO1xufTtcblxuY29tbWFuZHMuZWxlbWVudEVuYWJsZWQgPSBhc3luYyBmdW5jdGlvbiBlbGVtZW50RW5hYmxlZCAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIGVsZW1lbnRJZCkgPT09ICd0cnVlJztcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnRTZWxlY3RlZCA9IGFzeW5jIGZ1bmN0aW9uIGVsZW1lbnRTZWxlY3RlZCAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLCBlbGVtZW50SWQpID09PSAndHJ1ZSc7XG59O1xuXG5oZWxwZXJzLnNldEVsZW1lbnRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldEVsZW1lbnRWYWx1ZSAoa2V5cywgZWxlbWVudElkLCByZXBsYWNlID0gZmFsc2UpIHtcbiAgbGV0IHRleHQgPSBrZXlzO1xuICBpZiAoa2V5cyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgdGV4dCA9IGtleXMuam9pbignJyk7XG4gIH1cblxuICBsZXQgcGFyYW1zID0ge1xuICAgIGVsZW1lbnRJZCxcbiAgICB0ZXh0LFxuICAgIHJlcGxhY2UsXG4gICAgdW5pY29kZUtleWJvYXJkOiB0aGlzLm9wdHMudW5pY29kZUtleWJvYXJkXG4gIH07XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9TZXRFbGVtZW50VmFsdWUocGFyYW1zKTtcbn07XG5cbi8qKlxuICogUmVhc29uIGZvciBpc29sYXRpbmcgZG9TZXRFbGVtZW50VmFsdWUgZnJvbSBzZXRFbGVtZW50VmFsdWUgaXMgZm9yIHJldXNpbmcgc2V0RWxlbWVudFZhbHVlXG4gKiBhY3Jvc3MgYW5kcm9pZC1kcml2ZXJzIChsaWtlIGFwcGl1bS11aWF1dG9tYXRvcjItZHJpdmVyKSBhbmQgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi5cbiAqIE90aGVyIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgbmVlZCB0byBvdmVycmlkZSBkb1NldEVsZW1lbnRWYWx1ZVxuICogdG8gZmFjaWxpdGF0ZSBzZXRFbGVtZW50VmFsdWUuXG4gKi9cbmhlbHBlcnMuZG9TZXRFbGVtZW50VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBkb1NldEVsZW1lbnRWYWx1ZSAocGFyYW1zKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnNldFRleHQnLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuc2V0VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBzZXRWYWx1ZSAoa2V5cywgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnNldEVsZW1lbnRWYWx1ZShrZXlzLCBlbGVtZW50SWQsIGZhbHNlKTtcbn07XG5cbmNvbW1hbmRzLnJlcGxhY2VWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIHJlcGxhY2VWYWx1ZSAoa2V5cywgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnNldEVsZW1lbnRWYWx1ZShrZXlzLCBlbGVtZW50SWQsIHRydWUpO1xufTtcblxuY29tbWFuZHMuc2V0VmFsdWVJbW1lZGlhdGUgPSBhc3luYyBmdW5jdGlvbiBzZXRWYWx1ZUltbWVkaWF0ZSAoa2V5cywgZWxlbWVudElkKSB7XG4gIGxldCB0ZXh0ID0ga2V5cztcbiAgaWYgKGtleXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHRleHQgPSBrZXlzLmpvaW4oJycpO1xuICB9XG5cbiAgLy8gZmlyc3QsIG1ha2Ugc3VyZSB3ZSBhcmUgZm9jdXNlZCBvbiB0aGUgZWxlbWVudFxuICBhd2FpdCB0aGlzLmNsaWNrKGVsZW1lbnRJZCk7XG5cbiAgLy8gdGhlbiBzZW5kIHRocm91Z2ggYWRiXG4gIGF3YWl0IHRoaXMuYWRiLmlucHV0VGV4dCh0ZXh0KTtcbn07XG5cbmNvbW1hbmRzLmdldFRleHQgPSBhc3luYyBmdW5jdGlvbiBnZXRUZXh0IChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6Z2V0VGV4dCcsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmNsZWFyID0gYXN5bmMgZnVuY3Rpb24gY2xlYXIgKGVsZW1lbnRJZCkge1xuICBsZXQgdGV4dCA9IChhd2FpdCB0aGlzLmdldFRleHQoZWxlbWVudElkKSkgfHwgJyc7XG4gIGxldCBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgIC8vIGlmIGxlbmd0aCBpcyB6ZXJvIHRoZXJlIGFyZSB0d28gcG9zc2liaWxpdGllczpcbiAgICAvLyAgIDEuIHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlIHRleHQgZmllbGRcbiAgICAvLyAgIDIuIGl0IGlzIGEgcGFzc3dvcmQgZmllbGRcbiAgICAvLyBzaW5jZSB0aGVyZSBpcyBsaXR0bGUgb3ZlcmhlYWQgdG8gdGhlIGFkYiBjYWxsLCBkZWxldGUgMTAwIGVsZW1lbnRzXG4gICAgLy8gaWYgd2UgZ2V0IHplcm8sIGp1c3QgaW4gY2FzZSBpdCBpcyAjMlxuICAgIGxlbmd0aCA9IDEwMDtcbiAgfVxuICBhd2FpdCB0aGlzLmNsaWNrKGVsZW1lbnRJZCk7XG4gIHRoaXMubG9nLmRlYnVnKGBTZW5kaW5nIHVwIHRvICR7bGVuZ3RofSBjbGVhciBjaGFyYWN0ZXJzIHRvIGRldmljZWApO1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbCg1LCA1MDAsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgcmVtYWluaW5nTGVuZ3RoID0gbGVuZ3RoO1xuICAgIHdoaWxlIChyZW1haW5pbmdMZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbGVuZ3RoVG9TZW5kID0gcmVtYWluaW5nTGVuZ3RoIDwgNTAgPyByZW1haW5pbmdMZW5ndGggOiA1MDtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBTZW5kaW5nICR7bGVuZ3RoVG9TZW5kfSBjbGVhciBjaGFyYWN0ZXJzIHRvIGRldmljZWApO1xuICAgICAgYXdhaXQgdGhpcy5hZGIuY2xlYXJUZXh0RmllbGQobGVuZ3RoVG9TZW5kKTtcbiAgICAgIHJlbWFpbmluZ0xlbmd0aCAtPSBsZW5ndGhUb1NlbmQ7XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gY2xpY2sgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpjbGljaycsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9jYXRpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpnZXRMb2NhdGlvbicsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldExvY2F0aW9uSW5WaWV3ID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9jYXRpb25JblZpZXcgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbGVtZW50SWQpO1xufTtcblxuY29tbWFuZHMuZ2V0U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFNpemUgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpnZXRTaXplJywge2VsZW1lbnRJZH0pO1xufTtcblxuY29tbWFuZHMuZ2V0RWxlbWVudFJlY3QgPSBhc3luYyBmdW5jdGlvbiBnZXRFbGVtZW50UmVjdCAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmdldFJlY3QnLCB7ZWxlbWVudElkfSk7XG59O1xuXG5jb21tYW5kcy50b3VjaExvbmdDbGljayA9IGFzeW5jIGZ1bmN0aW9uIHRvdWNoTG9uZ0NsaWNrIChlbGVtZW50SWQsIHgsIHksIGR1cmF0aW9uKSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudElkLCB4LCB5LCBkdXJhdGlvbn07XG4gIGFuZHJvaWRIZWxwZXJzLnJlbW92ZU51bGxQcm9wZXJ0aWVzKHBhcmFtcyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnRvdWNoTG9uZ0NsaWNrJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoRG93biA9IGFzeW5jIGZ1bmN0aW9uIHRvdWNoRG93biAoZWxlbWVudElkLCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudElkLCB4LCB5fTtcbiAgYW5kcm9pZEhlbHBlcnMucmVtb3ZlTnVsbFByb3BlcnRpZXMocGFyYW1zKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6dG91Y2hEb3duJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoVXAgPSBhc3luYyBmdW5jdGlvbiB0b3VjaFVwIChlbGVtZW50SWQsIHgsIHkpIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50SWQsIHgsIHl9O1xuICBhbmRyb2lkSGVscGVycy5yZW1vdmVOdWxsUHJvcGVydGllcyhwYXJhbXMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDp0b3VjaFVwJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoTW92ZSA9IGFzeW5jIGZ1bmN0aW9uIHRvdWNoTW92ZSAoZWxlbWVudElkLCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudElkLCB4LCB5fTtcbiAgYW5kcm9pZEhlbHBlcnMucmVtb3ZlTnVsbFByb3BlcnRpZXMocGFyYW1zKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6dG91Y2hNb3ZlJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLmNvbXBsZXhUYXAgPSBhc3luYyBmdW5jdGlvbiBjb21wbGV4VGFwICh0YXBDb3VudCwgdG91Y2hDb3VudCwgZHVyYXRpb24sIHgsIHkpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2NsaWNrJywge3gsIHl9KTtcbn07XG5cbmNvbW1hbmRzLnRhcCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQgPSBudWxsLCB4ID0gbnVsbCwgeSA9IG51bGwsIGNvdW50ID0gMSkge1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoZWxlbWVudElkKSAmJiAhdXRpbC5oYXNWYWx1ZSh4KSAmJiAhdXRpbC5oYXNWYWx1ZSh5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRWl0aGVyIGVsZW1lbnQgdG8gdGFwIG9yIGJvdGggYWJzb2x1dGUgY29vcmRpbmF0ZXMgc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpKSB7XG4gICAgICAvLyBGSVhNRTogYm9vdHN0cmFwIGlnbm9yZXMgcmVsYXRpdmUgY29vcmRpbmF0ZXNcbiAgICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6Y2xpY2snLCB7ZWxlbWVudElkLCB4LCB5fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2NsaWNrJywge3gsIHl9KTtcbiAgICB9XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QkMsU0FBN0IsRUFBd0NDLFNBQXhDLEVBQW1EO0VBQ3pFLElBQUlDLENBQUMsR0FBRztJQUFDRixTQUFEO0lBQVlDO0VBQVosQ0FBUjtFQUNBLE9BQU8sTUFBTSxLQUFLRSxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsc0JBQTFCLEVBQWtERixDQUFsRCxDQUFiO0FBQ0QsQ0FIRDs7QUFLQU4sUUFBUSxDQUFDUyxPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JKLFNBQXhCLEVBQW1DO0VBQ3BELE9BQU8sTUFBTSxLQUFLRixZQUFMLENBQWtCLFdBQWxCLEVBQStCRSxTQUEvQixDQUFiO0FBQ0QsQ0FGRDs7QUFJ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
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2VsZW1lbnQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0QXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZWxlbWVudElkIiwicCIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJnZXROYW1lIiwiZWxlbWVudERpc3BsYXllZCIsImVsZW1lbnRFbmFibGVkIiwiZWxlbWVudFNlbGVjdGVkIiwic2V0RWxlbWVudFZhbHVlIiwia2V5cyIsInJlcGxhY2UiLCJ0ZXh0IiwiQXJyYXkiLCJqb2luIiwicGFyYW1zIiwidW5pY29kZUtleWJvYXJkIiwib3B0cyIsImRvU2V0RWxlbWVudFZhbHVlIiwic2V0VmFsdWUiLCJyZXBsYWNlVmFsdWUiLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImNsaWNrIiwiYWRiIiwiaW5wdXRUZXh0IiwiZ2V0VGV4dCIsImNsZWFyIiwibGVuZ3RoIiwibG9nIiwiZGVidWciLCJyZXRyeUludGVydmFsIiwicmVtYWluaW5nTGVuZ3RoIiwibGVuZ3RoVG9TZW5kIiwiY2xlYXJUZXh0RmllbGQiLCJnZXRMb2NhdGlvbiIsImdldExvY2F0aW9uSW5WaWV3IiwiZ2V0U2l6ZSIsImdldEVsZW1lbnRSZWN0IiwidG91Y2hMb25nQ2xpY2siLCJ4IiwieSIsImR1cmF0aW9uIiwiYW5kcm9pZEhlbHBlcnMiLCJyZW1vdmVOdWxsUHJvcGVydGllcyIsInRvdWNoRG93biIsInRvdWNoVXAiLCJ0b3VjaE1vdmUiLCJjb21wbGV4VGFwIiwidGFwQ291bnQiLCJ0b3VjaENvdW50IiwidGFwIiwiY291bnQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJFcnJvciIsImkiLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYW5kcm9pZEhlbHBlcnMgZnJvbSAnLi4vYW5kcm9pZC1oZWxwZXJzJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmdldEF0dHJpYnV0ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZSAoYXR0cmlidXRlLCBlbGVtZW50SWQpIHtcbiAgbGV0IHAgPSB7YXR0cmlidXRlLCBlbGVtZW50SWR9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpnZXRBdHRyaWJ1dGUnLCBwKTtcbn07XG5cbmNvbW1hbmRzLmdldE5hbWUgPSBhc3luYyBmdW5jdGlvbiBnZXROYW1lIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCdjbGFzc05hbWUnLCBlbGVtZW50SWQpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudERpc3BsYXllZCA9IGFzeW5jIGZ1bmN0aW9uIGVsZW1lbnREaXNwbGF5ZWQgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXllZCcsIGVsZW1lbnRJZCkgPT09ICd0cnVlJztcbn07XG5cbmNvbW1hbmRzLmVsZW1lbnRFbmFibGVkID0gYXN5bmMgZnVuY3Rpb24gZWxlbWVudEVuYWJsZWQgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLCBlbGVtZW50SWQpID09PSAndHJ1ZSc7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50U2VsZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiBlbGVtZW50U2VsZWN0ZWQgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJywgZWxlbWVudElkKSA9PT0gJ3RydWUnO1xufTtcblxuaGVscGVycy5zZXRFbGVtZW50VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBzZXRFbGVtZW50VmFsdWUgKGtleXMsIGVsZW1lbnRJZCwgcmVwbGFjZSA9IGZhbHNlKSB7XG4gIGxldCB0ZXh0ID0ga2V5cztcbiAgaWYgKGtleXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHRleHQgPSBrZXlzLmpvaW4oJycpO1xuICB9XG5cbiAgbGV0IHBhcmFtcyA9IHtcbiAgICBlbGVtZW50SWQsXG4gICAgdGV4dCxcbiAgICByZXBsYWNlLFxuICAgIHVuaWNvZGVLZXlib2FyZDogdGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZFxuICB9O1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmRvU2V0RWxlbWVudFZhbHVlKHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJlYXNvbiBmb3IgaXNvbGF0aW5nIGRvU2V0RWxlbWVudFZhbHVlIGZyb20gc2V0RWxlbWVudFZhbHVlIGlzIGZvciByZXVzaW5nIHNldEVsZW1lbnRWYWx1ZVxuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgYW5kIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9TZXRFbGVtZW50VmFsdWVcbiAqIHRvIGZhY2lsaXRhdGUgc2V0RWxlbWVudFZhbHVlLlxuICovXG5oZWxwZXJzLmRvU2V0RWxlbWVudFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gZG9TZXRFbGVtZW50VmFsdWUgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpzZXRUZXh0JywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnNldFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWUgKGtleXMsIGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5zZXRFbGVtZW50VmFsdWUoa2V5cywgZWxlbWVudElkLCBmYWxzZSk7XG59O1xuXG5jb21tYW5kcy5yZXBsYWNlVmFsdWUgPSBhc3luYyBmdW5jdGlvbiByZXBsYWNlVmFsdWUgKGtleXMsIGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5zZXRFbGVtZW50VmFsdWUoa2V5cywgZWxlbWVudElkLCB0cnVlKTtcbn07XG5cbmNvbW1hbmRzLnNldFZhbHVlSW1tZWRpYXRlID0gYXN5bmMgZnVuY3Rpb24gc2V0VmFsdWVJbW1lZGlhdGUgKGtleXMsIGVsZW1lbnRJZCkge1xuICBsZXQgdGV4dCA9IGtleXM7XG4gIGlmIChrZXlzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICB0ZXh0ID0ga2V5cy5qb2luKCcnKTtcbiAgfVxuXG4gIC8vIGZpcnN0LCBtYWtlIHN1cmUgd2UgYXJlIGZvY3VzZWQgb24gdGhlIGVsZW1lbnRcbiAgYXdhaXQgdGhpcy5jbGljayhlbGVtZW50SWQpO1xuXG4gIC8vIHRoZW4gc2VuZCB0aHJvdWdoIGFkYlxuICBhd2FpdCB0aGlzLmFkYi5pbnB1dFRleHQodGV4dCk7XG59O1xuXG5jb21tYW5kcy5nZXRUZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0VGV4dCAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmdldFRleHQnLCB7ZWxlbWVudElkfSk7XG59O1xuXG5jb21tYW5kcy5jbGVhciA9IGFzeW5jIGZ1bmN0aW9uIGNsZWFyIChlbGVtZW50SWQpIHtcbiAgbGV0IHRleHQgPSAoYXdhaXQgdGhpcy5nZXRUZXh0KGVsZW1lbnRJZCkpIHx8ICcnO1xuICBsZXQgbGVuZ3RoID0gdGV4dC5sZW5ndGg7XG4gIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAvLyBpZiBsZW5ndGggaXMgemVybyB0aGVyZSBhcmUgdHdvIHBvc3NpYmlsaXRpZXM6XG4gICAgLy8gICAxLiB0aGVyZSBpcyBub3RoaW5nIGluIHRoZSB0ZXh0IGZpZWxkXG4gICAgLy8gICAyLiBpdCBpcyBhIHBhc3N3b3JkIGZpZWxkXG4gICAgLy8gc2luY2UgdGhlcmUgaXMgbGl0dGxlIG92ZXJoZWFkIHRvIHRoZSBhZGIgY2FsbCwgZGVsZXRlIDEwMCBlbGVtZW50c1xuICAgIC8vIGlmIHdlIGdldCB6ZXJvLCBqdXN0IGluIGNhc2UgaXQgaXMgIzJcbiAgICBsZW5ndGggPSAxMDA7XG4gIH1cbiAgYXdhaXQgdGhpcy5jbGljayhlbGVtZW50SWQpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgU2VuZGluZyB1cCB0byAke2xlbmd0aH0gY2xlYXIgY2hhcmFjdGVycyB0byBkZXZpY2VgKTtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwoNSwgNTAwLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IHJlbWFpbmluZ0xlbmd0aCA9IGxlbmd0aDtcbiAgICB3aGlsZSAocmVtYWluaW5nTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGxlbmd0aFRvU2VuZCA9IHJlbWFpbmluZ0xlbmd0aCA8IDUwID8gcmVtYWluaW5nTGVuZ3RoIDogNTA7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2VuZGluZyAke2xlbmd0aFRvU2VuZH0gY2xlYXIgY2hhcmFjdGVycyB0byBkZXZpY2VgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmNsZWFyVGV4dEZpZWxkKGxlbmd0aFRvU2VuZCk7XG4gICAgICByZW1haW5pbmdMZW5ndGggLT0gbGVuZ3RoVG9TZW5kO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb21tYW5kcy5jbGljayA9IGFzeW5jIGZ1bmN0aW9uIGNsaWNrIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6Y2xpY2snLCB7ZWxlbWVudElkfSk7XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6Z2V0TG9jYXRpb24nLCB7ZWxlbWVudElkfSk7XG59O1xuXG5jb21tYW5kcy5nZXRMb2NhdGlvbkluVmlldyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvY2F0aW9uSW5WaWV3IChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWxlbWVudElkKTtcbn07XG5cbmNvbW1hbmRzLmdldFNpemUgPSBhc3luYyBmdW5jdGlvbiBnZXRTaXplIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6Z2V0U2l6ZScsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RWxlbWVudFJlY3QgKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpnZXRSZWN0Jywge2VsZW1lbnRJZH0pO1xufTtcblxuY29tbWFuZHMudG91Y2hMb25nQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiB0b3VjaExvbmdDbGljayAoZWxlbWVudElkLCB4LCB5LCBkdXJhdGlvbikge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnRJZCwgeCwgeSwgZHVyYXRpb259O1xuICBhbmRyb2lkSGVscGVycy5yZW1vdmVOdWxsUHJvcGVydGllcyhwYXJhbXMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDp0b3VjaExvbmdDbGljaycsIHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy50b3VjaERvd24gPSBhc3luYyBmdW5jdGlvbiB0b3VjaERvd24gKGVsZW1lbnRJZCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnRJZCwgeCwgeX07XG4gIGFuZHJvaWRIZWxwZXJzLnJlbW92ZU51bGxQcm9wZXJ0aWVzKHBhcmFtcyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnRvdWNoRG93bicsIHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy50b3VjaFVwID0gYXN5bmMgZnVuY3Rpb24gdG91Y2hVcCAoZWxlbWVudElkLCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudElkLCB4LCB5fTtcbiAgYW5kcm9pZEhlbHBlcnMucmVtb3ZlTnVsbFByb3BlcnRpZXMocGFyYW1zKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6dG91Y2hVcCcsIHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy50b3VjaE1vdmUgPSBhc3luYyBmdW5jdGlvbiB0b3VjaE1vdmUgKGVsZW1lbnRJZCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnRJZCwgeCwgeX07XG4gIGFuZHJvaWRIZWxwZXJzLnJlbW92ZU51bGxQcm9wZXJ0aWVzKHBhcmFtcyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnRvdWNoTW92ZScsIHBhcmFtcyk7XG59O1xuXG5jb21tYW5kcy5jb21wbGV4VGFwID0gYXN5bmMgZnVuY3Rpb24gY29tcGxleFRhcCAodGFwQ291bnQsIHRvdWNoQ291bnQsIGR1cmF0aW9uLCB4LCB5KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdjbGljaycsIHt4LCB5fSk7XG59O1xuXG5jb21tYW5kcy50YXAgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkID0gbnVsbCwgeCA9IG51bGwsIHkgPSBudWxsLCBjb3VudCA9IDEpIHtcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGVsZW1lbnRJZCkgJiYgIXV0aWwuaGFzVmFsdWUoeCkgJiYgIXV0aWwuaGFzVmFsdWUoeSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVpdGhlciBlbGVtZW50IHRvIHRhcCBvciBib3RoIGFic29sdXRlIGNvb3JkaW5hdGVzIHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUoZWxlbWVudElkKSkge1xuICAgICAgLy8gRklYTUU6IGJvb3RzdHJhcCBpZ25vcmVzIHJlbGF0aXZlIGNvb3JkaW5hdGVzXG4gICAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmNsaWNrJywge2VsZW1lbnRJZCwgeCwgeX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdjbGljaycsIHt4LCB5fSk7XG4gICAgfVxuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBLElBQUlBLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFFQUYsUUFBUSxDQUFDRyxZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJDLFNBQTdCLEVBQXdDQyxTQUF4QyxFQUFtRDtFQUN6RSxJQUFJQyxDQUFDLEdBQUc7SUFBQ0YsU0FBRDtJQUFZQztFQUFaLENBQVI7RUFDQSxPQUFPLE1BQU0sS0FBS0UsU0FBTCxDQUFlQyxVQUFmLENBQTBCLHNCQUExQixFQUFrREYsQ0FBbEQsQ0FBYjtBQUNELENBSEQ7O0FBS0FOLFFBQVEsQ0FBQ1MsT0FBVCxHQUFtQixlQUFlQSxPQUFmLENBQXdCSixTQUF4QixFQUFtQztFQUNwRCxPQUFPLE1BQU0sS0FBS0YsWUFBTCxDQUFrQixXQUFsQixFQUErQkUsU0FBL0IsQ0FB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
|