appium-adb 9.10.2 → 9.10.3

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.
@@ -1,221 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- require("source-map-support/register");
11
-
12
- var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
- var _support = require("@appium/support");
15
-
16
- var _bluebird = _interopRequireDefault(require("bluebird"));
17
-
18
- var _events = _interopRequireDefault(require("events"));
19
-
20
- var _teen_process = require("teen_process");
21
-
22
- const {
23
- EventEmitter
24
- } = _events.default;
25
-
26
- const log = _support.logger.getLogger('Logcat');
27
-
28
- const MAX_BUFFER_SIZE = 10000;
29
- const LOGCAT_PROC_STARTUP_TIMEOUT = 10000;
30
- const SUPPORTED_FORMATS = ['brief', 'process', 'tag', 'thread', 'raw', 'time', 'threadtime', 'long'];
31
- const SUPPORTED_PRIORITIES = ['v', 'd', 'i', 'w', 'e', 'f', 's'];
32
- const DEFAULT_PRIORITY = 'v';
33
- const DEFAULT_TAG = '*';
34
- const DEFAULT_FORMAT = 'threadtime';
35
-
36
- function requireFormat(format) {
37
- if (!SUPPORTED_FORMATS.includes(format)) {
38
- log.info(`The format value '${format}' is unknown. Supported values are: ${SUPPORTED_FORMATS}`);
39
- log.info(`Defaulting to '${DEFAULT_FORMAT}'`);
40
- return DEFAULT_FORMAT;
41
- }
42
-
43
- return format;
44
- }
45
-
46
- function requireSpec(spec) {
47
- const [tag, priority] = spec.split(':');
48
- let resultTag = tag;
49
-
50
- if (!resultTag) {
51
- log.info(`The tag value in spec '${spec}' cannot be empty`);
52
- log.info(`Defaulting to '${DEFAULT_TAG}'`);
53
- resultTag = DEFAULT_TAG;
54
- }
55
-
56
- if (!priority) {
57
- log.info(`The priority value in spec '${spec}' is empty. Defaulting to Verbose (${DEFAULT_PRIORITY})`);
58
- return `${resultTag}:${DEFAULT_PRIORITY}`;
59
- }
60
-
61
- if (!SUPPORTED_PRIORITIES.some(p => _lodash.default.toLower(priority) === _lodash.default.toLower(p))) {
62
- log.info(`The priority value in spec '${spec}' is unknown. Supported values are: ${SUPPORTED_PRIORITIES}`);
63
- log.info(`Defaulting to Verbose (${DEFAULT_PRIORITY})`);
64
- return `${resultTag}:${DEFAULT_PRIORITY}`;
65
- }
66
-
67
- return spec;
68
- }
69
-
70
- function formatFilterSpecs(filterSpecs) {
71
- if (!_lodash.default.isArray(filterSpecs)) {
72
- filterSpecs = [filterSpecs];
73
- }
74
-
75
- return filterSpecs.filter(spec => spec && _lodash.default.isString(spec) && !spec.startsWith('-')).map(spec => spec.includes(':') ? requireSpec(spec) : spec);
76
- }
77
-
78
- class Logcat extends EventEmitter {
79
- constructor(opts = {}) {
80
- super();
81
- this.adb = opts.adb;
82
- this.clearLogs = opts.clearDeviceLogsOnStart || false;
83
- this.debug = opts.debug;
84
- this.debugTrace = opts.debugTrace;
85
- this.maxBufferSize = opts.maxBufferSize || MAX_BUFFER_SIZE;
86
- this.logs = [];
87
- this.logIdxSinceLastRequest = 0;
88
- }
89
-
90
- async startCapture(opts = {}) {
91
- let started = false;
92
- return await new _bluebird.default(async (_resolve, _reject) => {
93
- const resolve = function (...args) {
94
- started = true;
95
-
96
- _resolve(...args);
97
- };
98
-
99
- const reject = function (...args) {
100
- started = true;
101
-
102
- _reject(...args);
103
- };
104
-
105
- if (this.clearLogs) {
106
- await this.clear();
107
- }
108
-
109
- const {
110
- format = DEFAULT_FORMAT,
111
- filterSpecs = []
112
- } = opts;
113
- const cmd = [...this.adb.defaultArgs, 'logcat', '-v', requireFormat(format), ...formatFilterSpecs(filterSpecs)];
114
- log.debug(`Starting logs capture with command: ${_support.util.quote([this.adb.path, ...cmd])}`);
115
- this.proc = new _teen_process.SubProcess(this.adb.path, cmd);
116
- this.proc.on('exit', (code, signal) => {
117
- log.error(`Logcat terminated with code ${code}, signal ${signal}`);
118
- this.proc = null;
119
-
120
- if (!started) {
121
- log.warn('Logcat not started. Continuing');
122
- resolve();
123
- }
124
- });
125
- this.proc.on('lines-stderr', lines => {
126
- for (let line of lines) {
127
- if (/execvp\(\)/.test(line)) {
128
- log.error('Logcat process failed to start');
129
- reject(new Error(`Logcat process failed to start. stderr: ${line}`));
130
- }
131
-
132
- this.outputHandler(_lodash.default.trim(line), 'STDERR: ');
133
- }
134
-
135
- resolve();
136
- });
137
- this.proc.on('lines-stdout', lines => {
138
- resolve();
139
-
140
- for (let line of lines) {
141
- this.outputHandler(_lodash.default.trim(line));
142
- }
143
- });
144
- await this.proc.start(0);
145
- setTimeout(resolve, LOGCAT_PROC_STARTUP_TIMEOUT);
146
- });
147
- }
148
-
149
- outputHandler(output, prefix = '') {
150
- if (!output) {
151
- return;
152
- }
153
-
154
- if (this.logs.length >= this.maxBufferSize) {
155
- this.logs.shift();
156
-
157
- if (this.logIdxSinceLastRequest > 0) {
158
- --this.logIdxSinceLastRequest;
159
- }
160
- }
161
-
162
- const outputObj = {
163
- timestamp: Date.now(),
164
- level: 'ALL',
165
- message: output
166
- };
167
- this.logs.push(outputObj);
168
- this.emit('output', outputObj);
169
- const isTrace = /W\/Trace/.test(output);
170
-
171
- if (this.debug && (!isTrace || this.debugTrace)) {
172
- log.debug(prefix + output);
173
- }
174
- }
175
-
176
- async stopCapture() {
177
- log.debug('Stopping logcat capture');
178
-
179
- if (!this.proc || !this.proc.isRunning) {
180
- log.debug('Logcat already stopped');
181
- this.proc = null;
182
- return;
183
- }
184
-
185
- this.proc.removeAllListeners('exit');
186
- await this.proc.stop();
187
- this.proc = null;
188
- }
189
-
190
- getLogs() {
191
- if (this.logIdxSinceLastRequest < this.logs.length) {
192
- const result = this.logs.slice(this.logIdxSinceLastRequest);
193
- this.logIdxSinceLastRequest = this.logs.length;
194
- return result;
195
- }
196
-
197
- return [];
198
- }
199
-
200
- getAllLogs() {
201
- return this.logs;
202
- }
203
-
204
- async clear() {
205
- log.debug('Clearing logcat logs from device');
206
-
207
- try {
208
- const args = [...this.adb.defaultArgs, 'logcat', '-c'];
209
- await (0, _teen_process.exec)(this.adb.path, args);
210
- } catch (err) {
211
- log.warn(`Failed to clear logcat logs: ${err.stderr || err.message}`);
212
- }
213
- }
214
-
215
- }
216
-
217
- var _default = Logcat;
218
- exports.default = _default;require('source-map-support').install();
219
-
220
-
221
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2NhdC5qcyIsIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsImV2ZW50cyIsImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIk1BWF9CVUZGRVJfU0laRSIsIkxPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCIsIlNVUFBPUlRFRF9GT1JNQVRTIiwiU1VQUE9SVEVEX1BSSU9SSVRJRVMiLCJERUZBVUxUX1BSSU9SSVRZIiwiREVGQVVMVF9UQUciLCJERUZBVUxUX0ZPUk1BVCIsInJlcXVpcmVGb3JtYXQiLCJmb3JtYXQiLCJpbmNsdWRlcyIsImluZm8iLCJyZXF1aXJlU3BlYyIsInNwZWMiLCJ0YWciLCJwcmlvcml0eSIsInNwbGl0IiwicmVzdWx0VGFnIiwic29tZSIsInAiLCJfIiwidG9Mb3dlciIsImZvcm1hdEZpbHRlclNwZWNzIiwiZmlsdGVyU3BlY3MiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwibWFwIiwiTG9nY2F0IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiYWRiIiwiY2xlYXJMb2dzIiwiY2xlYXJEZXZpY2VMb2dzT25TdGFydCIsImRlYnVnIiwiZGVidWdUcmFjZSIsIm1heEJ1ZmZlclNpemUiLCJsb2dzIiwibG9nSWR4U2luY2VMYXN0UmVxdWVzdCIsInN0YXJ0Q2FwdHVyZSIsInN0YXJ0ZWQiLCJCIiwiX3Jlc29sdmUiLCJfcmVqZWN0IiwicmVzb2x2ZSIsImFyZ3MiLCJyZWplY3QiLCJjbGVhciIsImNtZCIsImRlZmF1bHRBcmdzIiwidXRpbCIsInF1b3RlIiwicGF0aCIsInByb2MiLCJTdWJQcm9jZXNzIiwib24iLCJjb2RlIiwic2lnbmFsIiwiZXJyb3IiLCJ3YXJuIiwibGluZXMiLCJsaW5lIiwidGVzdCIsIkVycm9yIiwib3V0cHV0SGFuZGxlciIsInRyaW0iLCJzdGFydCIsInNldFRpbWVvdXQiLCJvdXRwdXQiLCJwcmVmaXgiLCJsZW5ndGgiLCJzaGlmdCIsIm91dHB1dE9iaiIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJsZXZlbCIsIm1lc3NhZ2UiLCJwdXNoIiwiZW1pdCIsImlzVHJhY2UiLCJzdG9wQ2FwdHVyZSIsImlzUnVubmluZyIsInJlbW92ZUFsbExpc3RlbmVycyIsInN0b3AiLCJnZXRMb2dzIiwicmVzdWx0Iiwic2xpY2UiLCJnZXRBbGxMb2dzIiwiZXhlYyIsImVyciIsInN0ZGVyciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2djYXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5jb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gZXZlbnRzO1xuaW1wb3J0IHsgU3ViUHJvY2VzcywgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0xvZ2NhdCcpO1xuY29uc3QgTUFYX0JVRkZFUl9TSVpFID0gMTAwMDA7XG5jb25zdCBMT0dDQVRfUFJPQ19TVEFSVFVQX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFNVUFBPUlRFRF9GT1JNQVRTID0gWydicmllZicsICdwcm9jZXNzJywgJ3RhZycsICd0aHJlYWQnLCAncmF3JywgJ3RpbWUnLCAndGhyZWFkdGltZScsICdsb25nJ107XG5jb25zdCBTVVBQT1JURURfUFJJT1JJVElFUyA9IFsndicsICdkJywgJ2knLCAndycsICdlJywgJ2YnLCAncyddO1xuY29uc3QgREVGQVVMVF9QUklPUklUWSA9ICd2JztcbmNvbnN0IERFRkFVTFRfVEFHID0gJyonO1xuY29uc3QgREVGQVVMVF9GT1JNQVQgPSAndGhyZWFkdGltZSc7XG5cbmZ1bmN0aW9uIHJlcXVpcmVGb3JtYXQgKGZvcm1hdCkge1xuICBpZiAoIVNVUFBPUlRFRF9GT1JNQVRTLmluY2x1ZGVzKGZvcm1hdCkpIHtcbiAgICBsb2cuaW5mbyhgVGhlIGZvcm1hdCB2YWx1ZSAnJHtmb3JtYXR9JyBpcyB1bmtub3duLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTogJHtTVVBQT1JURURfRk9STUFUU31gKTtcbiAgICBsb2cuaW5mbyhgRGVmYXVsdGluZyB0byAnJHtERUZBVUxUX0ZPUk1BVH0nYCk7XG4gICAgcmV0dXJuIERFRkFVTFRfRk9STUFUO1xuICB9XG4gIHJldHVybiBmb3JtYXQ7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVTcGVjIChzcGVjKSB7XG4gIGNvbnN0IFt0YWcsIHByaW9yaXR5XSA9IHNwZWMuc3BsaXQoJzonKTtcbiAgbGV0IHJlc3VsdFRhZyA9IHRhZztcbiAgaWYgKCFyZXN1bHRUYWcpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHRhZyB2YWx1ZSBpbiBzcGVjICcke3NwZWN9JyBjYW5ub3QgYmUgZW1wdHlgKTtcbiAgICBsb2cuaW5mbyhgRGVmYXVsdGluZyB0byAnJHtERUZBVUxUX1RBR30nYCk7XG4gICAgcmVzdWx0VGFnID0gREVGQVVMVF9UQUc7XG4gIH1cbiAgaWYgKCFwcmlvcml0eSkge1xuICAgIGxvZy5pbmZvKGBUaGUgcHJpb3JpdHkgdmFsdWUgaW4gc3BlYyAnJHtzcGVjfScgaXMgZW1wdHkuIERlZmF1bHRpbmcgdG8gVmVyYm9zZSAoJHtERUZBVUxUX1BSSU9SSVRZfSlgKTtcbiAgICByZXR1cm4gYCR7cmVzdWx0VGFnfToke0RFRkFVTFRfUFJJT1JJVFl9YDtcbiAgfVxuICBpZiAoIVNVUFBPUlRFRF9QUklPUklUSUVTLnNvbWUoKHApID0+IF8udG9Mb3dlcihwcmlvcml0eSkgPT09IF8udG9Mb3dlcihwKSkpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHByaW9yaXR5IHZhbHVlIGluIHNwZWMgJyR7c3BlY30nIGlzIHVua25vd24uIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAke1NVUFBPUlRFRF9QUklPUklUSUVTfWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvIFZlcmJvc2UgKCR7REVGQVVMVF9QUklPUklUWX0pYCk7XG4gICAgcmV0dXJuIGAke3Jlc3VsdFRhZ306JHtERUZBVUxUX1BSSU9SSVRZfWA7XG4gIH1cbiAgcmV0dXJuIHNwZWM7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZpbHRlclNwZWNzIChmaWx0ZXJTcGVjcykge1xuICBpZiAoIV8uaXNBcnJheShmaWx0ZXJTcGVjcykpIHtcbiAgICBmaWx0ZXJTcGVjcyA9IFtmaWx0ZXJTcGVjc107XG4gIH1cbiAgcmV0dXJuIGZpbHRlclNwZWNzXG4gICAgLmZpbHRlcigoc3BlYykgPT4gc3BlYyAmJiBfLmlzU3RyaW5nKHNwZWMpICYmICFzcGVjLnN0YXJ0c1dpdGgoJy0nKSlcbiAgICAubWFwKChzcGVjKSA9PiBzcGVjLmluY2x1ZGVzKCc6JykgPyByZXF1aXJlU3BlYyhzcGVjKSA6IHNwZWMpO1xufVxuXG5cbmNsYXNzIExvZ2NhdCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRiID0gb3B0cy5hZGI7XG4gICAgdGhpcy5jbGVhckxvZ3MgPSBvcHRzLmNsZWFyRGV2aWNlTG9nc09uU3RhcnQgfHwgZmFsc2U7XG4gICAgdGhpcy5kZWJ1ZyA9IG9wdHMuZGVidWc7XG4gICAgdGhpcy5kZWJ1Z1RyYWNlID0gb3B0cy5kZWJ1Z1RyYWNlO1xuICAgIHRoaXMubWF4QnVmZmVyU2l6ZSA9IG9wdHMubWF4QnVmZmVyU2l6ZSB8fCBNQVhfQlVGRkVSX1NJWkU7XG4gICAgdGhpcy5sb2dzID0gW107XG4gICAgdGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0ID0gMDtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q2FwdHVyZSAob3B0cyA9IHt9KSB7XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgICAgY29uc3QgcmVzb2x2ZSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBfcmVzb2x2ZSguLi5hcmdzKTtcbiAgICAgIH07XG4gICAgICBjb25zdCByZWplY3QgPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgX3JlamVjdCguLi5hcmdzKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmNsZWFyTG9ncykge1xuICAgICAgICBhd2FpdCB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZm9ybWF0ID0gREVGQVVMVF9GT1JNQVQsXG4gICAgICAgIGZpbHRlclNwZWNzID0gW10sXG4gICAgICB9ID0gb3B0cztcbiAgICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICAgLi4udGhpcy5hZGIuZGVmYXVsdEFyZ3MsXG4gICAgICAgICdsb2djYXQnLFxuICAgICAgICAnLXYnLCByZXF1aXJlRm9ybWF0KGZvcm1hdCksXG4gICAgICAgIC4uLmZvcm1hdEZpbHRlclNwZWNzKGZpbHRlclNwZWNzKSxcbiAgICAgIF07XG4gICAgICBsb2cuZGVidWcoYFN0YXJ0aW5nIGxvZ3MgY2FwdHVyZSB3aXRoIGNvbW1hbmQ6ICR7dXRpbC5xdW90ZShbdGhpcy5hZGIucGF0aCwgLi4uY21kXSl9YCk7XG4gICAgICB0aGlzLnByb2MgPSBuZXcgU3ViUHJvY2Vzcyh0aGlzLmFkYi5wYXRoLCBjbWQpO1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoYExvZ2NhdCB0ZXJtaW5hdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICAgIHRoaXMucHJvYyA9IG51bGw7XG4gICAgICAgIGlmICghc3RhcnRlZCkge1xuICAgICAgICAgIGxvZy53YXJuKCdMb2djYXQgbm90IHN0YXJ0ZWQuIENvbnRpbnVpbmcnKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdsaW5lcy1zdGRlcnInLCAobGluZXMpID0+IHtcbiAgICAgICAgZm9yIChsZXQgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgIGlmICgvZXhlY3ZwXFwoXFwpLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0xvZ2NhdCBwcm9jZXNzIGZhaWxlZCB0byBzdGFydCcpO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTG9nY2F0IHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0LiBzdGRlcnI6ICR7bGluZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub3V0cHV0SGFuZGxlcihfLnRyaW0obGluZSksICdTVERFUlI6ICcpO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdsaW5lcy1zdGRvdXQnLCAobGluZXMpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy5vdXRwdXRIYW5kbGVyKF8udHJpbShsaW5lKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0YXJ0KDApO1xuICAgICAgLy8gcmVzb2x2ZSBhZnRlciBhIHRpbWVvdXQsIGV2ZW4gaWYgbm8gb3V0cHV0IHdhcyByZWNvcmRlZFxuICAgICAgc2V0VGltZW91dChyZXNvbHZlLCBMT0dDQVRfUFJPQ19TVEFSVFVQX1RJTUVPVVQpO1xuICAgIH0pO1xuICB9XG5cbiAgb3V0cHV0SGFuZGxlciAob3V0cHV0LCBwcmVmaXggPSAnJykge1xuICAgIGlmICghb3V0cHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9ncy5sZW5ndGggPj0gdGhpcy5tYXhCdWZmZXJTaXplKSB7XG4gICAgICB0aGlzLmxvZ3Muc2hpZnQoKTtcbiAgICAgIGlmICh0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPiAwKSB7XG4gICAgICAgIC0tdGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0O1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvdXRwdXRPYmogPSB7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICBsZXZlbDogJ0FMTCcsXG4gICAgICBtZXNzYWdlOiBvdXRwdXQsXG4gICAgfTtcbiAgICB0aGlzLmxvZ3MucHVzaChvdXRwdXRPYmopO1xuICAgIHRoaXMuZW1pdCgnb3V0cHV0Jywgb3V0cHV0T2JqKTtcbiAgICBjb25zdCBpc1RyYWNlID0gL1dcXC9UcmFjZS8udGVzdChvdXRwdXQpO1xuICAgIGlmICh0aGlzLmRlYnVnICYmICghaXNUcmFjZSB8fCB0aGlzLmRlYnVnVHJhY2UpKSB7XG4gICAgICBsb2cuZGVidWcocHJlZml4ICsgb3V0cHV0KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdG9wQ2FwdHVyZSAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyBsb2djYXQgY2FwdHVyZScpO1xuICAgIGlmICghdGhpcy5wcm9jIHx8ICF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICBsb2cuZGVidWcoJ0xvZ2NhdCBhbHJlYWR5IHN0b3BwZWQnKTtcbiAgICAgIHRoaXMucHJvYyA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvYy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2V4aXQnKTtcbiAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgpO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBnZXRMb2dzICgpIHtcbiAgICBpZiAodGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0IDwgdGhpcy5sb2dzLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5sb2dzLnNsaWNlKHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCk7XG4gICAgICB0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPSB0aGlzLmxvZ3MubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0QWxsTG9ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9ncztcbiAgfVxuXG4gIGFzeW5jIGNsZWFyICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFyaW5nIGxvZ2NhdCBsb2dzIGZyb20gZGV2aWNlJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBbLi4udGhpcy5hZGIuZGVmYXVsdEFyZ3MsICdsb2djYXQnLCAnLWMnXTtcbiAgICAgIGF3YWl0IGV4ZWModGhpcy5hZGIucGF0aCwgYXJncyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgRmFpbGVkIHRvIGNsZWFyIGxvZ2NhdCBsb2dzOiAke2Vyci5zdGRlcnIgfHwgZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvZ2NhdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFEQSxNQUFNO0VBQUVBO0FBQUYsSUFBbUJDLGVBQXpCOztBQUdBLE1BQU1DLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsS0FBcEM7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLEtBQXJCLEVBQTRCLFFBQTVCLEVBQXNDLEtBQXRDLEVBQTZDLE1BQTdDLEVBQXFELFlBQXJELEVBQW1FLE1BQW5FLENBQTFCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcs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
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _support = require("@appium/support");
11
-
12
- const log = _support.logger.getLogger('ADB');
13
-
14
- var _default = log;
15
- exports.default = _default;require('source-map-support').install();
16
-
17
-
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQURCJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsS0FBakIsQ0FBWjs7ZUFFZUYsRyJ9
@@ -1,157 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- require("source-map-support/register");
11
-
12
- var _logger = _interopRequireDefault(require("../logger.js"));
13
-
14
- var _path = _interopRequireDefault(require("path"));
15
-
16
- var _support = require("@appium/support");
17
-
18
- var _lruCache = _interopRequireDefault(require("lru-cache"));
19
-
20
- var _helpers = require("../helpers.js");
21
-
22
- var _asyncLock = _interopRequireDefault(require("async-lock"));
23
-
24
- var _bluebird = _interopRequireDefault(require("bluebird"));
25
-
26
- var _crypto = _interopRequireDefault(require("crypto"));
27
-
28
- const AAB_CACHE = new _lruCache.default({
29
- max: 10,
30
- dispose: (hash, extractedFilesRoot) => _support.fs.rimraf(extractedFilesRoot)
31
- });
32
- const AAB_CACHE_GUARD = new _asyncLock.default();
33
- const UNIVERSAL_APK = 'universal.apk';
34
- const aabUtilsMethods = {};
35
- process.on('exit', () => {
36
- if (!AAB_CACHE.size) {
37
- return;
38
- }
39
-
40
- const paths = [...AAB_CACHE.values()];
41
-
42
- _logger.default.debug(`Performing cleanup of ${paths.length} cached .aab ` + _support.util.pluralize('package', paths.length));
43
-
44
- for (const appPath of paths) {
45
- try {
46
- _support.fs.rimrafSync(appPath);
47
- } catch (e) {
48
- _logger.default.warn(e.message);
49
- }
50
- }
51
- });
52
-
53
- aabUtilsMethods.extractUniversalApk = async function extractUniversalApk(aabPath, opts = {}) {
54
- if (!(await _support.fs.exists(aabPath))) {
55
- throw new Error(`The file at '${aabPath}' either does not exist or is not accessible`);
56
- }
57
-
58
- const aabName = _path.default.basename(aabPath);
59
-
60
- const apkName = aabName.substring(0, aabName.length - _path.default.extname(aabName).length) + '.apk';
61
- const tmpRoot = await _support.tempDir.openDir();
62
-
63
- const tmpApksPath = _path.default.join(tmpRoot, `${aabName}.apks`);
64
-
65
- try {
66
- return await AAB_CACHE_GUARD.acquire(aabPath, async () => {
67
- const aabHash = await _support.fs.hash(aabPath);
68
- const {
69
- keystore,
70
- keystorePassword,
71
- keyAlias,
72
- keyPassword
73
- } = opts;
74
- let cacheHash = aabHash;
75
-
76
- if (keystore) {
77
- if (!(await _support.fs.exists(keystore))) {
78
- throw new Error(`The keystore file at '${keystore}' either does not exist ` + `or is not accessible`);
79
- }
80
-
81
- if (!keystorePassword || !keyAlias || !keyPassword) {
82
- throw new Error('It is mandatory to also provide keystore password, key alias, ' + 'and key password if the keystore path is set');
83
- }
84
-
85
- const keystoreHash = await _support.fs.hash(keystore);
86
-
87
- const keyAliasHash = _crypto.default.createHash('sha1');
88
-
89
- keyAliasHash.update(keyAlias);
90
- cacheHash = [cacheHash, keystoreHash, keyAliasHash.digest('hex')].join(':');
91
- }
92
-
93
- _logger.default.debug(`Calculated the cache key for '${aabPath}': ${cacheHash}`);
94
-
95
- if (AAB_CACHE.has(cacheHash)) {
96
- const resultPath = _path.default.resolve(AAB_CACHE.get(cacheHash), apkName);
97
-
98
- if (await _support.fs.exists(resultPath)) {
99
- return resultPath;
100
- }
101
-
102
- AAB_CACHE.del(cacheHash);
103
- }
104
-
105
- await this.initAapt2();
106
- const args = ['build-apks', '--aapt2', this.binaries.aapt2, '--bundle', aabPath, '--output', tmpApksPath, ...(keystore ? ['--ks', keystore, '--ks-pass', `pass:${keystorePassword}`, '--ks-key-alias', keyAlias, '--key-pass', `pass:${keyPassword}`] : []), '--mode=universal'];
107
-
108
- _logger.default.debug(`Preparing universal .apks bundle from '${aabPath}'`);
109
-
110
- await this.execBundletool(args, `Cannot build a universal .apks bundle from '${aabPath}'`);
111
-
112
- _logger.default.debug(`Unpacking universal application bundle at '${tmpApksPath}' to '${tmpRoot}'`);
113
-
114
- await (0, _helpers.unzipFile)(tmpApksPath, tmpRoot);
115
- let universalApkPath;
116
- const fileDeletionPromises = [];
117
- const allFileNames = await _support.fs.readdir(tmpRoot);
118
-
119
- for (const fileName of allFileNames) {
120
- const fullPath = _path.default.join(tmpRoot, fileName);
121
-
122
- if (fileName === UNIVERSAL_APK) {
123
- universalApkPath = fullPath;
124
- } else {
125
- fileDeletionPromises.push(_support.fs.rimraf(fullPath));
126
- }
127
- }
128
-
129
- try {
130
- await _bluebird.default.all(fileDeletionPromises);
131
- } catch (ign) {}
132
-
133
- if (!universalApkPath) {
134
- _logger.default.debug(`The following items were extracted from the .aab bundle: ${allFileNames}`);
135
-
136
- throw new Error(`${UNIVERSAL_APK} cannot be found in '${aabPath}' bundle. ` + `Does the archive contain a valid application bundle?`);
137
- }
138
-
139
- const resultPath = _path.default.join(tmpRoot, apkName);
140
-
141
- _logger.default.debug(`Found ${UNIVERSAL_APK} at '${universalApkPath}'. Caching it to '${resultPath}'`);
142
-
143
- await _support.fs.mv(universalApkPath, resultPath);
144
- AAB_CACHE.set(cacheHash, tmpRoot);
145
- return resultPath;
146
- });
147
- } catch (e) {
148
- await _support.fs.rimraf(tmpRoot);
149
- throw e;
150
- }
151
- };
152
-
153
- var _default = aabUtilsMethods;
154
- exports.default = _default;require('source-map-support').install();
155
-
156
-
157
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FhYi11dGlscy5qcyIsIm5hbWVzIjpbIkFBQl9DQUNIRSIsIkxSVSIsIm1heCIsImRpc3Bvc2UiLCJoYXNoIiwiZXh0cmFjdGVkRmlsZXNSb290IiwiZnMiLCJyaW1yYWYiLCJBQUJfQ0FDSEVfR1VBUkQiLCJBc3luY0xvY2siLCJVTklWRVJTQUxfQVBLIiwiYWFiVXRpbHNNZXRob2RzIiwicHJvY2VzcyIsIm9uIiwic2l6ZSIsInBhdGhzIiwidmFsdWVzIiwibG9nIiwiZGVidWciLCJsZW5ndGgiLCJ1dGlsIiwicGx1cmFsaXplIiwiYXBwUGF0aCIsInJpbXJhZlN5bmMiLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJleHRyYWN0VW5pdmVyc2FsQXBrIiwiYWFiUGF0aCIsIm9wdHMiLCJleGlzdHMiLCJFcnJvciIsImFhYk5hbWUiLCJwYXRoIiwiYmFzZW5hbWUiLCJhcGtOYW1lIiwic3Vic3RyaW5nIiwiZXh0bmFtZSIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsInRtcEFwa3NQYXRoIiwiam9pbiIsImFjcXVpcmUiLCJhYWJIYXNoIiwia2V5c3RvcmUiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsImNhY2hlSGFzaCIsImtleXN0b3JlSGFzaCIsImtleUFsaWFzSGFzaCIsImNyeXB0byIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJoYXMiLCJyZXN1bHRQYXRoIiwicmVzb2x2ZSIsImdldCIsImRlbCIsImluaXRBYXB0MiIsImFyZ3MiLCJiaW5hcmllcyIsImFhcHQyIiwiZXhlY0J1bmRsZXRvb2wiLCJ1bnppcEZpbGUiLCJ1bml2ZXJzYWxBcGtQYXRoIiwiZmlsZURlbGV0aW9uUHJvbWlzZXMiLCJhbGxGaWxlTmFtZXMiLCJyZWFkZGlyIiwiZmlsZU5hbWUiLCJmdWxsUGF0aCIsInB1c2giLCJCIiwiYWxsIiwiaWduIiwibXYiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvdG9vbHMvYWFiLXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyLmpzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgdW56aXBGaWxlIH0gZnJvbSAnLi4vaGVscGVycy5qcyc7XG5pbXBvcnQgQXN5bmNMb2NrIGZyb20gJ2FzeW5jLWxvY2snO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5jb25zdCBBQUJfQ0FDSEUgPSBuZXcgTFJVKHtcbiAgbWF4OiAxMCxcbiAgZGlzcG9zZTogKGhhc2gsIGV4dHJhY3RlZEZpbGVzUm9vdCkgPT4gZnMucmltcmFmKGV4dHJhY3RlZEZpbGVzUm9vdCksXG59KTtcbmNvbnN0IEFBQl9DQUNIRV9HVUFSRCA9IG5ldyBBc3luY0xvY2soKTtcbmNvbnN0IFVOSVZFUlNBTF9BUEsgPSAndW5pdmVyc2FsLmFwayc7XG5cbmNvbnN0IGFhYlV0aWxzTWV0aG9kcyA9IHt9O1xuXG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBpZiAoIUFBQl9DQUNIRS5zaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aHMgPSBbLi4uQUFCX0NBQ0hFLnZhbHVlcygpXTtcbiAgbG9nLmRlYnVnKGBQZXJmb3JtaW5nIGNsZWFudXAgb2YgJHtwYXRocy5sZW5ndGh9IGNhY2hlZCAuYWFiIGAgK1xuICAgIHV0aWwucGx1cmFsaXplKCdwYWNrYWdlJywgcGF0aHMubGVuZ3RoKSk7XG4gIGZvciAoY29uc3QgYXBwUGF0aCBvZiBwYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMoYXBwUGF0aCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLndhcm4oZS5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFwa0NyZWF0aW9uT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGtleXN0b3JlIFNwZWNpZmllcyB0aGUgcGF0aCB0byB0aGUgZGVwbG95bWVudCBrZXlzdG9yZSB1c2VkXG4gKiB0byBzaWduIHRoZSBBUEtzLiBUaGlzIGZsYWcgaXMgb3B0aW9uYWwuIElmIHlvdSBkb24ndCBpbmNsdWRlIGl0LFxuICogYnVuZGxldG9vbCBhdHRlbXB0cyB0byBzaWduIHlvdXIgQVBLcyB3aXRoIGEgZGVidWcgc2lnbmluZyBrZXkuXG4gKiBJZiB0aGUgLmFwayBoYXMgYmVlbiBhbHJlYWR5IHNpZ25lZCBhbmQgY2FjaGVkIHRoZW4gaXQgaXMgbm90IGdvaW5nIHRvIGJlIHJlc2lnbmVkXG4gKiB1bmxlc3MgYSBkaWZmZXJlbnQga2V5c3RvcmUgb3Iga2V5IGFsaWFzIGlzIHVzZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5c3RvcmVQYXNzd29yZCBTcGVjaWZpZXMgeW91ciBrZXlzdG9yZeKAmXMgcGFzc3dvcmQuXG4gKiBJdCBpcyBtYW5kYXRvcnkgdG8gcHJvdmlkZSB0aGlzIHZhbHVlIGlmIGBrZXlzdG9yZWAgb25lIGlzIGFzc2lnbmVkXG4gKiBvdGhlcndpc2UgaXQgaXMgZ29pbmcgdG8gYmUgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXlBbGlhcyBTcGVjaWZpZXMgdGhlIGFsaWFzIG9mIHRoZSBzaWduaW5nIGtleSB5b3Ugd2FudCB0byB1c2UuXG4gKiBJdCBpcyBtYW5kYXRvcnkgdG8gcHJvdmlkZSB0aGlzIHZhbHVlIGlmIGBrZXlzdG9yZWAgb25lIGlzIGFzc2lnbmVkXG4gKiBvdGhlcndpc2UgaXQgaXMgZ29pbmcgdG8gYmUgaWdub3JlZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXlQYXNzd29yZCBTcGVjaWZpZXMgdGhlIHBhc3N3b3JkIGZvciB0aGUgc2lnbmluZyBrZXkuXG4gKiBJdCBpcyBtYW5kYXRvcnkgdG8gcHJvdmlkZSB0aGlzIHZhbHVlIGlmIGBrZXlzdG9yZWAgb25lIGlzIGFzc2lnbmVkXG4gKiBvdGhlcndpc2UgaXQgaXMgZ29pbmcgdG8gYmUgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEJ1aWxkcyBhIHVuaXZlcnNhbCAuYXBrIGZyb20gdGhlIGdpdmVuIC5hYWIgcGFja2FnZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vY29tbWFuZC1saW5lL2J1bmRsZXRvb2wjZ2VuZXJhdGVfYXBrc1xuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWFiUGF0aCBGdWxsIHBhdGggdG8gdGhlIHNvdXJjZSAuYWFiIHBhY2thZ2VcbiAqIEBwYXJhbSB7QXBrQ3JlYXRpb25PcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyBUaGUgcGF0aCB0byB0aGUgcmVzdWx0aW5nIHVuaXZlcnNhbCAuYXBrLiBUaGUgLmFwayBpcyBzdG9yZWQgaW4gdGhlIGludGVybmFsIGNhY2hlXG4gKiBieSBkZWZhdWx0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgdW5pdmVyc2FsIC5hcGtcbiAqL1xuYWFiVXRpbHNNZXRob2RzLmV4dHJhY3RVbml2ZXJzYWxBcGsgPSBhc3luYyBmdW5jdGlvbiBleHRyYWN0VW5pdmVyc2FsQXBrIChhYWJQYXRoLCBvcHRzID0ge30pIHtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoYWFiUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2FhYlBhdGh9JyBlaXRoZXIgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuXG4gIGNvbnN0IGFhYk5hbWUgPSBwYXRoLmJhc2VuYW1lKGFhYlBhdGgpO1xuICBjb25zdCBhcGtOYW1lID0gYWFiTmFtZS5zdWJzdHJpbmcoMCwgYWFiTmFtZS5sZW5ndGggLSBwYXRoLmV4dG5hbWUoYWFiTmFtZSkubGVuZ3RoKSArICcuYXBrJztcbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICBjb25zdCB0bXBBcGtzUGF0aCA9IHBhdGguam9pbih0bXBSb290LCBgJHthYWJOYW1lfS5hcGtzYCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IEFBQl9DQUNIRV9HVUFSRC5hY3F1aXJlKGFhYlBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFhYkhhc2ggPSBhd2FpdCBmcy5oYXNoKGFhYlBhdGgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBrZXlzdG9yZSxcbiAgICAgICAga2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAga2V5QWxpYXMsXG4gICAgICAgIGtleVBhc3N3b3JkLFxuICAgICAgfSA9IG9wdHM7XG4gICAgICBsZXQgY2FjaGVIYXNoID0gYWFiSGFzaDtcbiAgICAgIGlmIChrZXlzdG9yZSkge1xuICAgICAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhrZXlzdG9yZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBrZXlzdG9yZSBmaWxlIGF0ICcke2tleXN0b3JlfScgZWl0aGVyIGRvZXMgbm90IGV4aXN0IGAgK1xuICAgICAgICAgICAgYG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrZXlzdG9yZVBhc3N3b3JkIHx8ICFrZXlBbGlhcyB8fCAha2V5UGFzc3dvcmQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0l0IGlzIG1hbmRhdG9yeSB0byBhbHNvIHByb3ZpZGUga2V5c3RvcmUgcGFzc3dvcmQsIGtleSBhbGlhcywgJyArXG4gICAgICAgICAgICAnYW5kIGtleSBwYXNzd29yZCBpZiB0aGUga2V5c3RvcmUgcGF0aCBpcyBzZXQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlzdG9yZUhhc2ggPSBhd2FpdCBmcy5oYXNoKGtleXN0b3JlKTtcbiAgICAgICAgY29uc3Qga2V5QWxpYXNIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTEnKTtcbiAgICAgICAga2V5QWxpYXNIYXNoLnVwZGF0ZShrZXlBbGlhcyk7XG4gICAgICAgIGNhY2hlSGFzaCA9IFtjYWNoZUhhc2gsIGtleXN0b3JlSGFzaCwga2V5QWxpYXNIYXNoLmRpZ2VzdCgnaGV4JyldLmpvaW4oJzonKTtcbiAgICAgIH1cbiAgICAgIGxvZy5kZWJ1ZyhgQ2FsY3VsYXRlZCB0aGUgY2FjaGUga2V5IGZvciAnJHthYWJQYXRofSc6ICR7Y2FjaGVIYXNofWApO1xuICAgICAgaWYgKEFBQl9DQUNIRS5oYXMoY2FjaGVIYXNoKSkge1xuICAgICAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKEFBQl9DQUNIRS5nZXQoY2FjaGVIYXNoKSwgYXBrTmFtZSk7XG4gICAgICAgIGlmIChhd2FpdCBmcy5leGlzdHMocmVzdWx0UGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0UGF0aDtcbiAgICAgICAgfVxuICAgICAgICBBQUJfQ0FDSEUuZGVsKGNhY2hlSGFzaCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuaW5pdEFhcHQyKCk7XG4gICAgICBjb25zdCBhcmdzID0gW1xuICAgICAgICAnYnVpbGQtYXBrcycsXG4gICAgICAgICctLWFhcHQyJywgdGhpcy5iaW5hcmllcy5hYXB0MixcbiAgICAgICAgJy0tYnVuZGxlJywgYWFiUGF0aCxcbiAgICAgICAgJy0tb3V0cHV0JywgdG1wQXBrc1BhdGgsXG4gICAgICAgIC4uLihrZXlzdG9yZSA/IFtcbiAgICAgICAgICAnLS1rcycsIGtleXN0b3JlLFxuICAgICAgICAgICctLWtzLXBhc3MnLCBgcGFzczoke2tleXN0b3JlUGFzc3dvcmR9YCxcbiAgICAgICAgICAnLS1rcy1rZXktYWxpYXMnLCBrZXlBbGlhcyxcbiAgICAgICAgICAnLS1rZXktcGFzcycsIGBwYXNzOiR7a2V5UGFzc3dvcmR9YCxcbiAgICAgICAgXSA6IFtdKSxcbiAgICAgICAgJy0tbW9kZT11bml2ZXJzYWwnXG4gICAgICBdO1xuICAgICAgbG9nLmRlYnVnKGBQcmVwYXJpbmcgdW5pdmVyc2FsIC5hcGtzIGJ1bmRsZSBmcm9tICcke2FhYlBhdGh9J2ApO1xuICAgICAgYXdhaXQgdGhpcy5leGVjQnVuZGxldG9vbChhcmdzLCBgQ2Fubm90IGJ1aWxkIGEgdW5pdmVyc2FsIC5hcGtzIGJ1bmRsZSBmcm9tICcke2FhYlBhdGh9J2ApO1xuXG4gICAgICBsb2cuZGVidWcoYFVucGFja2luZyB1bml2ZXJzYWwgYXBwbGljYXRpb24gYnVuZGxlIGF0ICcke3RtcEFwa3NQYXRofScgdG8gJyR7dG1wUm9vdH0nYCk7XG4gICAgICBhd2FpdCB1bnppcEZpbGUodG1wQXBrc1BhdGgsIHRtcFJvb3QpO1xuICAgICAgbGV0IHVuaXZlcnNhbEFwa1BhdGg7XG4gICAgICBjb25zdCBmaWxlRGVsZXRpb25Qcm9taXNlcyA9IFtdO1xuICAgICAgY29uc3QgYWxsRmlsZU5hbWVzID0gYXdhaXQgZnMucmVhZGRpcih0bXBSb290KTtcbiAgICAgIGZvciAoY29uc3QgZmlsZU5hbWUgb2YgYWxsRmlsZU5hbWVzKSB7XG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKHRtcFJvb3QsIGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGZpbGVOYW1lID09PSBVTklWRVJTQUxfQVBLKSB7XG4gICAgICAgICAgdW5pdmVyc2FsQXBrUGF0aCA9IGZ1bGxQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbGVEZWxldGlvblByb21pc2VzLnB1c2goZnMucmltcmFmKGZ1bGxQYXRoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IEIuYWxsKGZpbGVEZWxldGlvblByb21pc2VzKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICAgIGlmICghdW5pdmVyc2FsQXBrUGF0aCkge1xuICAgICAgICBsb2cuZGVidWcoYFRoZSBmb2xsb3dpbmcgaXRlbXMgd2VyZSBleHRyYWN0ZWQgZnJvbSB0aGUgLmFhYiBidW5kbGU6ICR7YWxsRmlsZU5hbWVzfWApO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7VU5JVkVSU0FMX0FQS30gY2Fubm90IGJlIGZvdW5kIGluICcke2FhYlBhdGh9JyBidW5kbGUuIGAgK1xuICAgICAgICAgIGBEb2VzIHRoZSBhcmNoaXZlIGNvbnRhaW4gYSB2YWxpZCBhcHBsaWNhdGlvbiBidW5kbGU/YCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5qb2luKHRtcFJvb3QsIGFwa05hbWUpO1xuICAgICAgbG9nLmRlYnVnKGBGb3VuZCAke1VOSVZFUlNBTF9BUEt9IGF0ICcke3VuaXZlcnNhbEFwa1BhdGh9Jy4gQ2FjaGluZyBpdCB0byAnJHtyZXN1bHRQYXRofSdgKTtcbiAgICAgIGF3YWl0IGZzLm12KHVuaXZlcnNhbEFwa1BhdGgsIHJlc3VsdFBhdGgpO1xuICAgICAgQUFCX0NBQ0hFLnNldChjYWNoZUhhc2gsIHRtcFJvb3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdFBhdGg7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgYWFiVXRpbHNNZXRob2RzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFNBQVMsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0VBQ3hCQyxHQUFHLEVBQUUsRUFEbUI7RUFFeEJDLE9BQU8sRUFBRSxDQUFD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