parse-server 6.3.0-alpha.5 → 6.3.0-alpha.7
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/lib/Adapters/Auth/mfa.js
CHANGED
|
@@ -51,10 +51,11 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
51
51
|
}
|
|
52
52
|
throw 'Invalid MFA data';
|
|
53
53
|
}
|
|
54
|
-
async validateLogin(
|
|
54
|
+
async validateLogin(loginData, _, req) {
|
|
55
55
|
const saveResponse = {
|
|
56
56
|
doNotSave: true
|
|
57
57
|
};
|
|
58
|
+
const token = loginData.token;
|
|
58
59
|
const auth = req.original.get('authData') || {};
|
|
59
60
|
const {
|
|
60
61
|
secret,
|
|
@@ -64,7 +65,7 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
64
65
|
expiry
|
|
65
66
|
} = auth.mfa || {};
|
|
66
67
|
if (this.sms && mobile) {
|
|
67
|
-
if (
|
|
68
|
+
if (token === 'request') {
|
|
68
69
|
const {
|
|
69
70
|
token: sendToken,
|
|
70
71
|
expiry
|
|
@@ -114,7 +115,7 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
114
115
|
}
|
|
115
116
|
return saveResponse;
|
|
116
117
|
}
|
|
117
|
-
validateUpdate(authData, _, req) {
|
|
118
|
+
async validateUpdate(authData, _, req) {
|
|
118
119
|
if (req.master) {
|
|
119
120
|
return;
|
|
120
121
|
}
|
|
@@ -126,7 +127,9 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
126
127
|
return this.confirmSMSOTP(authData, ((_req$original$get = req.original.get('authData')) === null || _req$original$get === void 0 ? void 0 : _req$original$get.mfa) || {});
|
|
127
128
|
}
|
|
128
129
|
if (this.totp) {
|
|
129
|
-
this.validateLogin(
|
|
130
|
+
await this.validateLogin({
|
|
131
|
+
token: authData.old
|
|
132
|
+
}, null, req);
|
|
130
133
|
return this.validateSetUp(authData);
|
|
131
134
|
}
|
|
132
135
|
throw 'Invalid MFA data';
|
|
@@ -137,16 +140,16 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
137
140
|
}
|
|
138
141
|
if (this.totp && authData.secret) {
|
|
139
142
|
return {
|
|
140
|
-
|
|
143
|
+
status: 'enabled'
|
|
141
144
|
};
|
|
142
145
|
}
|
|
143
146
|
if (this.sms && authData.mobile) {
|
|
144
147
|
return {
|
|
145
|
-
|
|
148
|
+
status: 'enabled'
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
return {
|
|
149
|
-
|
|
152
|
+
status: 'disabled'
|
|
150
153
|
};
|
|
151
154
|
}
|
|
152
155
|
policy(req, auth) {
|
|
@@ -232,7 +235,7 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
232
235
|
const recovery = [(0, _cryptoUtils.randomString)(30), (0, _cryptoUtils.randomString)(30)];
|
|
233
236
|
return {
|
|
234
237
|
response: {
|
|
235
|
-
recovery
|
|
238
|
+
recovery: recovery.join(', ')
|
|
236
239
|
},
|
|
237
240
|
save: {
|
|
238
241
|
secret,
|
|
@@ -243,4 +246,4 @@ class MFAAdapter extends _AuthAdapter.default {
|
|
|
243
246
|
}
|
|
244
247
|
var _default = new MFAAdapter();
|
|
245
248
|
exports.default = _default;
|
|
246
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNRkFBZGFwdGVyIiwiQXV0aEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJvcHRzIiwidmFsaWRPcHRpb25zIiwib3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNtcyIsImluY2x1ZGVzIiwidG90cCIsImRpZ2l0cyIsInBlcmlvZCIsInNlbmRTTVMiLCJzbXNDYWxsYmFjayIsImFsZ29yaXRobSIsInZhbGlkYXRlU2V0VXAiLCJtZmFEYXRhIiwibW9iaWxlIiwic2V0dXBNb2JpbGVPVFAiLCJzZXR1cFRPVFAiLCJ2YWxpZGF0ZUxvZ2luIiwidG9rZW4iLCJfIiwicmVxIiwic2F2ZVJlc3BvbnNlIiwiZG9Ob3RTYXZlIiwiYXV0aCIsIm9yaWdpbmFsIiwiZ2V0Iiwic2VjcmV0IiwicmVjb3ZlcnkiLCJzYXZlZCIsImV4cGlyeSIsIm1mYSIsInNlbmRUb2tlbiIsIm9iamVjdCIsInNldCIsInNhdmUiLCJ1c2VNYXN0ZXJLZXkiLCJEYXRlIiwiVE9UUCIsIlNlY3JldCIsImZyb21CYXNlMzIiLCJ2YWxpZCIsInZhbGlkYXRlIiwidmFsaWRhdGVVcGRhdGUiLCJhdXRoRGF0YSIsIm1hc3RlciIsImNvbmZpcm1TTVNPVFAiLCJvbGQiLCJhZnRlckZpbmQiLCJlbmFibGVkIiwicG9saWN5IiwicGVuZGluZyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJ0ZXN0IiwicmFuZG9tU3RyaW5nIiwicmVwbGFjZSIsInN1YnN0cmluZyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0VGltZSIsImlucHV0RGF0YSIsInBlbmRpbmdEYXRhIiwicmVzcG9uc2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9tZmEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVE9UUCwgU2VjcmV0IH0gZnJvbSAnb3RwYXV0aCc7XG5pbXBvcnQgeyByYW5kb21TdHJpbmcgfSBmcm9tICcuLi8uLi9jcnlwdG9VdGlscyc7XG5pbXBvcnQgQXV0aEFkYXB0ZXIgZnJvbSAnLi9BdXRoQWRhcHRlcic7XG5jbGFzcyBNRkFBZGFwdGVyIGV4dGVuZHMgQXV0aEFkYXB0ZXIge1xuICB2YWxpZGF0ZU9wdGlvbnMob3B0cykge1xuICAgIGNvbnN0IHZhbGlkT3B0aW9ucyA9IG9wdHMub3B0aW9ucztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsaWRPcHRpb25zKSkge1xuICAgICAgdGhyb3cgJ21mYS5vcHRpb25zIG11c3QgYmUgYW4gYXJyYXknO1xuICAgIH1cbiAgICB0aGlzLnNtcyA9IHZhbGlkT3B0aW9ucy5pbmNsdWRlcygnU01TJyk7XG4gICAgdGhpcy50b3RwID0gdmFsaWRPcHRpb25zLmluY2x1ZGVzKCdUT1RQJyk7XG4gICAgaWYgKCF0aGlzLnNtcyAmJiAhdGhpcy50b3RwKSB7XG4gICAgICB0aHJvdyAnbWZhLm9wdGlvbnMgbXVzdCBpbmNsdWRlIFNNUyBvciBUT1RQJztcbiAgICB9XG4gICAgY29uc3QgZGlnaXRzID0gb3B0cy5kaWdpdHMgfHwgNjtcbiAgICBjb25zdCBwZXJpb2QgPSBvcHRzLnBlcmlvZCB8fCAzMDtcbiAgICBpZiAodHlwZW9mIGRpZ2l0cyAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEuZGlnaXRzIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBlcmlvZCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEucGVyaW9kIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAoZGlnaXRzIDwgNCB8fCBkaWdpdHMgPiAxMCkge1xuICAgICAgdGhyb3cgJ21mYS5kaWdpdHMgbXVzdCBiZSBiZXR3ZWVuIDQgYW5kIDEwJztcbiAgICB9XG4gICAgaWYgKHBlcmlvZCA8IDEwKSB7XG4gICAgICB0aHJvdyAnbWZhLnBlcmlvZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxMCc7XG4gICAgfVxuICAgIGNvbnN0IHNlbmRTTVMgPSBvcHRzLnNlbmRTTVM7XG4gICAgaWYgKHRoaXMuc21zICYmIHR5cGVvZiBzZW5kU01TICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyAnbWZhLnNlbmRTTVMgY2FsbGJhY2sgbXVzdCBiZSBkZWZpbmVkIHdoZW4gdXNpbmcgU01TIE9UUHMnO1xuICAgIH1cbiAgICB0aGlzLnNtc0NhbGxiYWNrID0gc2VuZFNNUztcbiAgICB0aGlzLmRpZ2l0cyA9IGRpZ2l0cztcbiAgICB0aGlzLnBlcmlvZCA9IHBlcmlvZDtcbiAgICB0aGlzLmFsZ29yaXRobSA9IG9wdHMuYWxnb3JpdGhtIHx8ICdTSEExJztcbiAgfVxuICB2YWxpZGF0ZVNldFVwKG1mYURhdGEpIHtcbiAgICBpZiAobWZhRGF0YS5tb2JpbGUgJiYgdGhpcy5zbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldHVwTW9iaWxlT1RQKG1mYURhdGEubW9iaWxlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0dXBUT1RQKG1mYURhdGEpO1xuICAgIH1cbiAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gIH1cbiAgYXN5bmMgdmFsaWRhdGVMb2dpbih0b2tlbiwgXywgcmVxKSB7XG4gICAgY29uc3Qgc2F2ZVJlc3BvbnNlID0ge1xuICAgICAgZG9Ob3RTYXZlOiB0cnVlLFxuICAgIH07XG4gICAgY29uc3QgYXV0aCA9IHJlcS5vcmlnaW5hbC5nZXQoJ2F1dGhEYXRhJykgfHwge307XG4gICAgY29uc3QgeyBzZWNyZXQsIHJlY292ZXJ5LCBtb2JpbGUsIHRva2VuOiBzYXZlZCwgZXhwaXJ5IH0gPSBhdXRoLm1mYSB8fCB7fTtcbiAgICBpZiAodGhpcy5zbXMgJiYgbW9iaWxlKSB7XG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgY29uc3QgeyB0b2tlbjogc2VuZFRva2VuLCBleHBpcnkgfSA9IGF3YWl0IHRoaXMuc2VuZFNNUyhtb2JpbGUpO1xuICAgICAgICBhdXRoLm1mYS50b2tlbiA9IHNlbmRUb2tlbjtcbiAgICAgICAgYXV0aC5tZmEuZXhwaXJ5ID0gZXhwaXJ5O1xuICAgICAgICByZXEub2JqZWN0LnNldCgnYXV0aERhdGEnLCBhdXRoKTtcbiAgICAgICAgYXdhaXQgcmVxLm9iamVjdC5zYXZlKG51bGwsIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICAgICAgICB0aHJvdyAnUGxlYXNlIGVudGVyIHRoZSB0b2tlbic7XG4gICAgICB9XG4gICAgICBpZiAoIXNhdmVkIHx8IHRva2VuICE9PSBzYXZlZCkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMSc7XG4gICAgICB9XG4gICAgICBpZiAobmV3IERhdGUoKSA+IGV4cGlyeSkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMic7XG4gICAgICB9XG4gICAgICBkZWxldGUgYXV0aC5tZmEudG9rZW47XG4gICAgICBkZWxldGUgYXV0aC5tZmEuZXhwaXJ5O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2F2ZTogYXV0aC5tZmEsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgICAgfVxuICAgICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvdmVyeVswXSA9PT0gdG9rZW4gfHwgcmVjb3ZlcnlbMV0gPT09IHRva2VuKSB7XG4gICAgICAgIHJldHVybiBzYXZlUmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0b3RwID0gbmV3IFRPVFAoe1xuICAgICAgICBhbGdvcml0aG06IHRoaXMuYWxnb3JpdGhtLFxuICAgICAgICBkaWdpdHM6IHRoaXMuZGlnaXRzLFxuICAgICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kLFxuICAgICAgICBzZWNyZXQ6IFNlY3JldC5mcm9tQmFzZTMyKHNlY3JldCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZhbGlkID0gdG90cC52YWxpZGF0ZSh7XG4gICAgICAgIHRva2VuLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsaWQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgfVxuICB2YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgXywgcmVxKSB7XG4gICAgaWYgKHJlcS5tYXN0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGF1dGhEYXRhLm1vYmlsZSAmJiB0aGlzLnNtcykge1xuICAgICAgaWYgKCFhdXRoRGF0YS50b2tlbikge1xuICAgICAgICB0aHJvdyAnTUZBIGlzIGFscmVhZHkgc2V0IHVwIG9uIHRoaXMgYWNjb3VudCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jb25maXJtU01TT1RQKGF1dGhEYXRhLCByZXEub3JpZ2luYWwuZ2V0KCdhdXRoRGF0YScpPy5tZmEgfHwge30pO1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlTG9naW4oYXV0aERhdGEub2xkLCBudWxsLCByZXEpO1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTZXRVcChhdXRoRGF0YSk7XG4gICAgfVxuICAgIHRocm93ICdJbnZhbGlkIE1GQSBkYXRhJztcbiAgfVxuICBhZnRlckZpbmQocmVxLCBhdXRoRGF0YSkge1xuICAgIGlmIChyZXEubWFzdGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnRvdHAgJiYgYXV0aERhdGEuc2VjcmV0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc21zICYmIGF1dGhEYXRhLm1vYmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgcG9saWN5KHJlcSwgYXV0aCkge1xuICAgIGlmICh0aGlzLnNtcyAmJiBhdXRoPy5wZW5kaW5nICYmIE9iamVjdC5rZXlzKGF1dGgpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuICdkZWZhdWx0JztcbiAgICB9XG4gICAgcmV0dXJuICdhZGRpdGlvbmFsJztcbiAgfVxuXG4gIGFzeW5jIHNldHVwTW9iaWxlT1RQKG1vYmlsZSkge1xuICAgIGNvbnN0IHsgdG9rZW4sIGV4cGlyeSB9ID0gYXdhaXQgdGhpcy5zZW5kU01TKG1vYmlsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNhdmU6IHtcbiAgICAgICAgcGVuZGluZzoge1xuICAgICAgICAgIFttb2JpbGVdOiB7XG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIGV4cGlyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VuZFNNUyhtb2JpbGUpIHtcbiAgICBpZiAoIS9eWytdKlsoXXswLDF9WzAtOV17MSwzfVspXXswLDF9Wy1cXHNcXC4vMC05XSokL2cudGVzdChtb2JpbGUpKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBtb2JpbGUgbnVtYmVyLic7XG4gICAgfVxuICAgIGxldCB0b2tlbiA9ICcnO1xuICAgIHdoaWxlICh0b2tlbi5sZW5ndGggPCB0aGlzLmRpZ2l0cykge1xuICAgICAgdG9rZW4gKz0gcmFuZG9tU3RyaW5nKDEwKS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIH1cbiAgICB0b2tlbiA9IHRva2VuLnN1YnN0cmluZygwLCB0aGlzLmRpZ2l0cyk7XG4gICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuc21zQ2FsbGJhY2sodG9rZW4sIG1vYmlsZSkpO1xuICAgIGNvbnN0IGV4cGlyeSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGhpcy5wZXJpb2QgKiAxMDAwKTtcbiAgICByZXR1cm4geyB0b2tlbiwgZXhwaXJ5IH07XG4gIH1cblxuICBhc3luYyBjb25maXJtU01TT1RQKGlucHV0RGF0YSwgYXV0aERhdGEpIHtcbiAgICBjb25zdCB7IG1vYmlsZSwgdG9rZW4gfSA9IGlucHV0RGF0YTtcbiAgICBpZiAoIWF1dGhEYXRhLnBlbmRpbmc/Llttb2JpbGVdKSB7XG4gICAgICB0aHJvdyAnVGhpcyBudW1iZXIgaXMgbm90IHBlbmRpbmcnO1xuICAgIH1cbiAgICBjb25zdCBwZW5kaW5nRGF0YSA9IGF1dGhEYXRhLnBlbmRpbmdbbW9iaWxlXTtcbiAgICBpZiAodG9rZW4gIT09IHBlbmRpbmdEYXRhLnRva2VuKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBpZiAobmV3IERhdGUoKSA+IHBlbmRpbmdEYXRhLmV4cGlyeSkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICB9XG4gICAgZGVsZXRlIGF1dGhEYXRhLnBlbmRpbmdbbW9iaWxlXTtcbiAgICBhdXRoRGF0YS5tb2JpbGUgPSBtb2JpbGU7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNhdmU6IGF1dGhEYXRhLFxuICAgIH07XG4gIH1cblxuICBzZXR1cFRPVFAobWZhRGF0YSkge1xuICAgIGNvbnN0IHsgc2VjcmV0LCB0b2tlbiB9ID0gbWZhRGF0YTtcbiAgICBpZiAoIXNlY3JldCB8fCAhdG9rZW4gfHwgc2VjcmV0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gICAgfVxuICAgIGNvbnN0IHRvdHAgPSBuZXcgVE9UUCh7XG4gICAgICBhbGdvcml0aG06IHRoaXMuYWxnb3JpdGhtLFxuICAgICAgZGlnaXRzOiB0aGlzLmRpZ2l0cyxcbiAgICAgIHBlcmlvZDogdGhpcy5wZXJpb2QsXG4gICAgICBzZWNyZXQ6IFNlY3JldC5mcm9tQmFzZTMyKHNlY3JldCksXG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWQgPSB0b3RwLnZhbGlkYXRlKHtcbiAgICAgIHRva2VuLFxuICAgIH0pO1xuICAgIGlmICh2YWxpZCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICB9XG4gICAgY29uc3QgcmVjb3ZlcnkgPSBbcmFuZG9tU3RyaW5nKDMwKSwgcmFuZG9tU3RyaW5nKDMwKV07XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3BvbnNlOiB7IHJlY292ZXJ5IH0sXG4gICAgICBzYXZlOiB7IHNlY3JldCwgcmVjb3ZlcnkgfSxcbiAgICB9O1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBuZXcgTUZBQWRhcHRlcigpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBd0M7QUFDeEMsTUFBTUEsVUFBVSxTQUFTQyxvQkFBVyxDQUFDO0VBQ25DQyxlQUFlLENBQUNDLElBQUksRUFBRTtJQUNwQixNQUFNQyxZQUFZLEdBQUdELElBQUksQ0FBQ0UsT0FBTztJQUNqQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxZQUFZLENBQUMsRUFBRTtNQUNoQyxNQUFNLDhCQUE4QjtJQUN0QztJQUNBLElBQUksQ0FBQ0ksR0FBRyxHQUFHSixZQUFZLENBQUNLLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDdkMsSUFBSSxDQUFDQyxJQUFJLEdBQUdOLFlBQVksQ0FBQ0ssUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDRCxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUNFLElBQUksRUFBRTtNQUMzQixNQUFNLHNDQUFzQztJQUM5QztJQUNBLE1BQU1DLE1BQU0sR0FBR1IsSUFBSSxDQUFDUSxNQUFNLElBQUksQ0FBQztJQUMvQixNQUFNQyxNQUFNLEdBQUdULElBQUksQ0FBQ1MsTUFBTSxJQUFJLEVBQUU7SUFDaEMs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
|
|
249
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNRkFBZGFwdGVyIiwiQXV0aEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJvcHRzIiwidmFsaWRPcHRpb25zIiwib3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNtcyIsImluY2x1ZGVzIiwidG90cCIsImRpZ2l0cyIsInBlcmlvZCIsInNlbmRTTVMiLCJzbXNDYWxsYmFjayIsImFsZ29yaXRobSIsInZhbGlkYXRlU2V0VXAiLCJtZmFEYXRhIiwibW9iaWxlIiwic2V0dXBNb2JpbGVPVFAiLCJzZXR1cFRPVFAiLCJ2YWxpZGF0ZUxvZ2luIiwibG9naW5EYXRhIiwiXyIsInJlcSIsInNhdmVSZXNwb25zZSIsImRvTm90U2F2ZSIsInRva2VuIiwiYXV0aCIsIm9yaWdpbmFsIiwiZ2V0Iiwic2VjcmV0IiwicmVjb3ZlcnkiLCJzYXZlZCIsImV4cGlyeSIsIm1mYSIsInNlbmRUb2tlbiIsIm9iamVjdCIsInNldCIsInNhdmUiLCJ1c2VNYXN0ZXJLZXkiLCJEYXRlIiwiVE9UUCIsIlNlY3JldCIsImZyb21CYXNlMzIiLCJ2YWxpZCIsInZhbGlkYXRlIiwidmFsaWRhdGVVcGRhdGUiLCJhdXRoRGF0YSIsIm1hc3RlciIsImNvbmZpcm1TTVNPVFAiLCJvbGQiLCJhZnRlckZpbmQiLCJzdGF0dXMiLCJwb2xpY3kiLCJwZW5kaW5nIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInRlc3QiLCJyYW5kb21TdHJpbmciLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRUaW1lIiwiaW5wdXREYXRhIiwicGVuZGluZ0RhdGEiLCJyZXNwb25zZSIsImpvaW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9tZmEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVE9UUCwgU2VjcmV0IH0gZnJvbSAnb3RwYXV0aCc7XG5pbXBvcnQgeyByYW5kb21TdHJpbmcgfSBmcm9tICcuLi8uLi9jcnlwdG9VdGlscyc7XG5pbXBvcnQgQXV0aEFkYXB0ZXIgZnJvbSAnLi9BdXRoQWRhcHRlcic7XG5jbGFzcyBNRkFBZGFwdGVyIGV4dGVuZHMgQXV0aEFkYXB0ZXIge1xuICB2YWxpZGF0ZU9wdGlvbnMob3B0cykge1xuICAgIGNvbnN0IHZhbGlkT3B0aW9ucyA9IG9wdHMub3B0aW9ucztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsaWRPcHRpb25zKSkge1xuICAgICAgdGhyb3cgJ21mYS5vcHRpb25zIG11c3QgYmUgYW4gYXJyYXknO1xuICAgIH1cbiAgICB0aGlzLnNtcyA9IHZhbGlkT3B0aW9ucy5pbmNsdWRlcygnU01TJyk7XG4gICAgdGhpcy50b3RwID0gdmFsaWRPcHRpb25zLmluY2x1ZGVzKCdUT1RQJyk7XG4gICAgaWYgKCF0aGlzLnNtcyAmJiAhdGhpcy50b3RwKSB7XG4gICAgICB0aHJvdyAnbWZhLm9wdGlvbnMgbXVzdCBpbmNsdWRlIFNNUyBvciBUT1RQJztcbiAgICB9XG4gICAgY29uc3QgZGlnaXRzID0gb3B0cy5kaWdpdHMgfHwgNjtcbiAgICBjb25zdCBwZXJpb2QgPSBvcHRzLnBlcmlvZCB8fCAzMDtcbiAgICBpZiAodHlwZW9mIGRpZ2l0cyAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEuZGlnaXRzIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBlcmlvZCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEucGVyaW9kIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAoZGlnaXRzIDwgNCB8fCBkaWdpdHMgPiAxMCkge1xuICAgICAgdGhyb3cgJ21mYS5kaWdpdHMgbXVzdCBiZSBiZXR3ZWVuIDQgYW5kIDEwJztcbiAgICB9XG4gICAgaWYgKHBlcmlvZCA8IDEwKSB7XG4gICAgICB0aHJvdyAnbWZhLnBlcmlvZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxMCc7XG4gICAgfVxuICAgIGNvbnN0IHNlbmRTTVMgPSBvcHRzLnNlbmRTTVM7XG4gICAgaWYgKHRoaXMuc21zICYmIHR5cGVvZiBzZW5kU01TICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyAnbWZhLnNlbmRTTVMgY2FsbGJhY2sgbXVzdCBiZSBkZWZpbmVkIHdoZW4gdXNpbmcgU01TIE9UUHMnO1xuICAgIH1cbiAgICB0aGlzLnNtc0NhbGxiYWNrID0gc2VuZFNNUztcbiAgICB0aGlzLmRpZ2l0cyA9IGRpZ2l0cztcbiAgICB0aGlzLnBlcmlvZCA9IHBlcmlvZDtcbiAgICB0aGlzLmFsZ29yaXRobSA9IG9wdHMuYWxnb3JpdGhtIHx8ICdTSEExJztcbiAgfVxuICB2YWxpZGF0ZVNldFVwKG1mYURhdGEpIHtcbiAgICBpZiAobWZhRGF0YS5tb2JpbGUgJiYgdGhpcy5zbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldHVwTW9iaWxlT1RQKG1mYURhdGEubW9iaWxlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0dXBUT1RQKG1mYURhdGEpO1xuICAgIH1cbiAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gIH1cbiAgYXN5bmMgdmFsaWRhdGVMb2dpbihsb2dpbkRhdGEsIF8sIHJlcSkge1xuICAgIGNvbnN0IHNhdmVSZXNwb25zZSA9IHtcbiAgICAgIGRvTm90U2F2ZTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IHRva2VuID0gbG9naW5EYXRhLnRva2VuO1xuICAgIGNvbnN0IGF1dGggPSByZXEub3JpZ2luYWwuZ2V0KCdhdXRoRGF0YScpIHx8IHt9O1xuICAgIGNvbnN0IHsgc2VjcmV0LCByZWNvdmVyeSwgbW9iaWxlLCB0b2tlbjogc2F2ZWQsIGV4cGlyeSB9ID0gYXV0aC5tZmEgfHwge307XG4gICAgaWYgKHRoaXMuc21zICYmIG1vYmlsZSkge1xuICAgICAgaWYgKHRva2VuID09PSAncmVxdWVzdCcpIHtcbiAgICAgICAgY29uc3QgeyB0b2tlbjogc2VuZFRva2VuLCBleHBpcnkgfSA9IGF3YWl0IHRoaXMuc2VuZFNNUyhtb2JpbGUpO1xuICAgICAgICBhdXRoLm1mYS50b2tlbiA9IHNlbmRUb2tlbjtcbiAgICAgICAgYXV0aC5tZmEuZXhwaXJ5ID0gZXhwaXJ5O1xuICAgICAgICByZXEub2JqZWN0LnNldCgnYXV0aERhdGEnLCBhdXRoKTtcbiAgICAgICAgYXdhaXQgcmVxLm9iamVjdC5zYXZlKG51bGwsIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICAgICAgICB0aHJvdyAnUGxlYXNlIGVudGVyIHRoZSB0b2tlbic7XG4gICAgICB9XG4gICAgICBpZiAoIXNhdmVkIHx8IHRva2VuICE9PSBzYXZlZCkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMSc7XG4gICAgICB9XG4gICAgICBpZiAobmV3IERhdGUoKSA+IGV4cGlyeSkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMic7XG4gICAgICB9XG4gICAgICBkZWxldGUgYXV0aC5tZmEudG9rZW47XG4gICAgICBkZWxldGUgYXV0aC5tZmEuZXhwaXJ5O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2F2ZTogYXV0aC5tZmEsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgICAgfVxuICAgICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvdmVyeVswXSA9PT0gdG9rZW4gfHwgcmVjb3ZlcnlbMV0gPT09IHRva2VuKSB7XG4gICAgICAgIHJldHVybiBzYXZlUmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0b3RwID0gbmV3IFRPVFAoe1xuICAgICAgICBhbGdvcml0aG06IHRoaXMuYWxnb3JpdGhtLFxuICAgICAgICBkaWdpdHM6IHRoaXMuZGlnaXRzLFxuICAgICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kLFxuICAgICAgICBzZWNyZXQ6IFNlY3JldC5mcm9tQmFzZTMyKHNlY3JldCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZhbGlkID0gdG90cC52YWxpZGF0ZSh7XG4gICAgICAgIHRva2VuLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsaWQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgfVxuICBhc3luYyB2YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgXywgcmVxKSB7XG4gICAgaWYgKHJlcS5tYXN0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGF1dGhEYXRhLm1vYmlsZSAmJiB0aGlzLnNtcykge1xuICAgICAgaWYgKCFhdXRoRGF0YS50b2tlbikge1xuICAgICAgICB0aHJvdyAnTUZBIGlzIGFscmVhZHkgc2V0IHVwIG9uIHRoaXMgYWNjb3VudCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jb25maXJtU01TT1RQKGF1dGhEYXRhLCByZXEub3JpZ2luYWwuZ2V0KCdhdXRoRGF0YScpPy5tZmEgfHwge30pO1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlTG9naW4oeyB0b2tlbjogYXV0aERhdGEub2xkIH0sIG51bGwsIHJlcSk7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVNldFVwKGF1dGhEYXRhKTtcbiAgICB9XG4gICAgdGhyb3cgJ0ludmFsaWQgTUZBIGRhdGEnO1xuICB9XG4gIGFmdGVyRmluZChyZXEsIGF1dGhEYXRhKSB7XG4gICAgaWYgKHJlcS5tYXN0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCAmJiBhdXRoRGF0YS5zZWNyZXQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2VuYWJsZWQnLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc21zICYmIGF1dGhEYXRhLm1vYmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnZW5hYmxlZCcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiAnZGlzYWJsZWQnLFxuICAgIH07XG4gIH1cblxuICBwb2xpY3kocmVxLCBhdXRoKSB7XG4gICAgaWYgKHRoaXMuc21zICYmIGF1dGg/LnBlbmRpbmcgJiYgT2JqZWN0LmtleXMoYXV0aCkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICAgIH1cbiAgICByZXR1cm4gJ2FkZGl0aW9uYWwnO1xuICB9XG5cbiAgYXN5bmMgc2V0dXBNb2JpbGVPVFAobW9iaWxlKSB7XG4gICAgY29uc3QgeyB0b2tlbiwgZXhwaXJ5IH0gPSBhd2FpdCB0aGlzLnNlbmRTTVMobW9iaWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2F2ZToge1xuICAgICAgICBwZW5kaW5nOiB7XG4gICAgICAgICAgW21vYmlsZV06IHtcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgZXhwaXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhc3luYyBzZW5kU01TKG1vYmlsZSkge1xuICAgIGlmICghL15bK10qWyhdezAsMX1bMC05XXsxLDN9WyldezAsMX1bLVxcc1xcLi8wLTldKiQvZy50ZXN0KG1vYmlsZSkpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIG1vYmlsZSBudW1iZXIuJztcbiAgICB9XG4gICAgbGV0IHRva2VuID0gJyc7XG4gICAgd2hpbGUgKHRva2VuLmxlbmd0aCA8IHRoaXMuZGlnaXRzKSB7XG4gICAgICB0b2tlbiArPSByYW5kb21TdHJpbmcoMTApLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgfVxuICAgIHRva2VuID0gdG9rZW4uc3Vic3RyaW5nKDAsIHRoaXMuZGlnaXRzKTtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy5zbXNDYWxsYmFjayh0b2tlbiwgbW9iaWxlKSk7XG4gICAgY29uc3QgZXhwaXJ5ID0gbmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aGlzLnBlcmlvZCAqIDEwMDApO1xuICAgIHJldHVybiB7IHRva2VuLCBleHBpcnkgfTtcbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1TTVNPVFAoaW5wdXREYXRhLCBhdXRoRGF0YSkge1xuICAgIGNvbnN0IHsgbW9iaWxlLCB0b2tlbiB9ID0gaW5wdXREYXRhO1xuICAgIGlmICghYXV0aERhdGEucGVuZGluZz8uW21vYmlsZV0pIHtcbiAgICAgIHRocm93ICdUaGlzIG51bWJlciBpcyBub3QgcGVuZGluZyc7XG4gICAgfVxuICAgIGNvbnN0IHBlbmRpbmdEYXRhID0gYXV0aERhdGEucGVuZGluZ1ttb2JpbGVdO1xuICAgIGlmICh0b2tlbiAhPT0gcGVuZGluZ0RhdGEudG9rZW4pIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgfVxuICAgIGlmIChuZXcgRGF0ZSgpID4gcGVuZGluZ0RhdGEuZXhwaXJ5KSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBkZWxldGUgYXV0aERhdGEucGVuZGluZ1ttb2JpbGVdO1xuICAgIGF1dGhEYXRhLm1vYmlsZSA9IG1vYmlsZTtcbiAgICByZXR1cm4ge1xuICAgICAgc2F2ZTogYXV0aERhdGEsXG4gICAgfTtcbiAgfVxuXG4gIHNldHVwVE9UUChtZmFEYXRhKSB7XG4gICAgY29uc3QgeyBzZWNyZXQsIHRva2VuIH0gPSBtZmFEYXRhO1xuICAgIGlmICghc2VjcmV0IHx8ICF0b2tlbiB8fCBzZWNyZXQubGVuZ3RoIDwgMjApIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSBkYXRhJztcbiAgICB9XG4gICAgY29uc3QgdG90cCA9IG5ldyBUT1RQKHtcbiAgICAgIGFsZ29yaXRobTogdGhpcy5hbGdvcml0aG0sXG4gICAgICBkaWdpdHM6IHRoaXMuZGlnaXRzLFxuICAgICAgcGVyaW9kOiB0aGlzLnBlcmlvZCxcbiAgICAgIHNlY3JldDogU2VjcmV0LmZyb21CYXNlMzIoc2VjcmV0KSxcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZCA9IHRvdHAudmFsaWRhdGUoe1xuICAgICAgdG9rZW4sXG4gICAgfSk7XG4gICAgaWYgKHZhbGlkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBjb25zdCByZWNvdmVyeSA9IFtyYW5kb21TdHJpbmcoMzApLCByYW5kb21TdHJpbmcoMzApXTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzcG9uc2U6IHsgcmVjb3Zlcnk6IHJlY292ZXJ5LmpvaW4oJywgJykgfSxcbiAgICAgIHNhdmU6IHsgc2VjcmV0LCByZWNvdmVyeSB9LFxuICAgIH07XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG5ldyBNRkFBZGFwdGVyKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUF3QztBQUN4QyxNQUFNQSxVQUFVLFNBQVNDLG9CQUFXLENBQUM7RUFDbkNDLGVBQWUsQ0FBQ0MsSUFBSSxFQUFFO0lBQ3BCLE1BQU1DLFlBQVksR0FBR0QsSUFBSSxDQUFDRSxPQUFPO0lBQ2pDLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNILFlBQVksQ0FBQyxFQUFFO01BQ2hDLE1BQU0sOEJBQThCO0lBQ3RDO0lBQ0EsSUFBSSxDQUFDSSxHQUFHLEdBQUdKLFlBQVksQ0FBQ0ssUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN2QyxJQUFJLENBQUNDLElBQUksR0FBR04sWUFBWSxDQUFDSyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUNELEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQ0UsSUFBSSxFQUFFO01BQzNCLE1BQU0sc0NBQXNDO0lBQzlDO0lBQ0EsTUFBTUMsTUFBTSxHQUFHUixJQUFJLENBQUNRLE1BQU0sSUFBSSxDQUFDO0lBQy9CLE1BQU1DLE1BQU0sR0FBR1QsSUFBSSxDQUFDUyxNQUFNLElBQUksRUFBRTtJQUNoQyxJQUFJLE9BQU9ELE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDOUIsTUFBTSw2QkFBNkI7SUFDckM7SUFDQSxJQUFJLE9BQU9DLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDOUIsTUFBTSw2QkFBNkI7SUFDckM7SUFDQSxJQUFJRCxNQUFNLEdBQUcsQ0FBQyxJQUFJQSxNQUFNLEdBQUcsRUFBRSxFQUFFO01BQzdCLE1BQU0scUNBQXFDO0lBQzdDO0lBQ0EsSUFBSUMsTUFBTSxHQUFHLEVBQUUsRUFBRTtNQUNmLE1BQU0sb0NBQW9DO0lBQzVDO0lBQ0EsTUFBTUMsT0FBTyxHQUFHVixJQUFJLENBQUNVLE9BQU87SUFDNUIsSUFBSSxJQUFJLENBQUNMLEdBQUcsSUFBSSxPQUFPSyxPQUFPLEtBQUssVUFBVSxFQUFFO01BQzdDLE1BQU0sMERBQTBEO0lBQ2xFO0lBQ0EsSUFBSSxDQUFDQyxXQUFXLEdBQUdELE9BQU87SUFDMUIsSUFBSSxDQUFDRixNQUFNLEdBQUdBLE1BQU07SUFDcEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBLE1BQU07SUFDcEIsSUFBSSxDQUFDRyxTQUFTLEdBQUdaLElBQUksQ0FBQ1ksU0FBUyxJQUFJLE1BQU07RUFDM0M7RUFDQUMsYUFBYSxDQUFDQyxPQUFPLEVBQUU7SUFDckIsSUFBSUEsT0FBTyxDQUFDQyxNQUFNLElBQUksSUFBSSxDQUFDVixHQUFHLEVBQUU7TUFDOUIsT0FBTyxJQUFJLENBQUNXLGNBQWMsQ0FBQ0YsT0FBTyxDQUFDQyxNQUFNLENBQUM7SUFDNUM7SUFDQSxJQUFJLElBQUksQ0FBQ1IsSUFBSSxFQUFFO01BQ2IsT0FBTyxJQUFJLENBQUNVLFNBQVMsQ0FBQ0gsT0FBTyxDQUFDO0lBQ2hDO0lBQ0EsTUFBTSxrQkFBa0I7RUFDMUI7RUFDQSxNQUFNSSxhQUFhLENBQUNDLFNBQVMsRUFBRUMsQ0FBQyxFQUFFQyxHQUFHLEVBQUU7SUFDckMsTUFBTUMsWUFBWSxHQUFHO01BQ25CQyxTQUFTLEVBQUU7SUFDYixDQUFDO0lBQ0QsTUFBTUMsS0FBSyxHQUFHTCxTQUFTLENBQUNLLEtBQUs7SUFDN0IsTUFBTUMsSUFBSSxHQUFHSixHQUFHLENBQUNLLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxNQUFNO01BQUVDLE1BQU07TUFBRUMsUUFBUTtNQUFFZCxNQUFNO01BQUVTLEtBQUssRUFBRU0sS0FBSztNQUFFQztJQUFPLENBQUMsR0FBR04sSUFBSSxDQUFDTyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pFLElBQUksSUFBSSxDQUFDM0IsR0FBRyxJQUFJVSxNQUFNLEVBQUU7TUFDdEIsSUFBSVMsS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixNQUFNO1VBQUVBLEtBQUssRUFBRVMsU0FBUztVQUFFRjtRQUFPLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ3JCLE9BQU8sQ0FBQ0ssTUFBTSxDQUFDO1FBQy9EVSxJQUFJLENBQUNPLEdBQUcsQ0FBQ1IsS0FBSyxHQUFHUyxTQUFTO1FBQzFCUixJQUFJLENBQUNPLEdBQUcsQ0FBQ0QsTUFBTSxHQUFHQSxNQUFNO1FBQ3hCVixHQUFHLENBQUNhLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLFVBQVUsRUFBRVYsSUFBSSxDQUFDO1FBQ2hDLE1BQU1KLEdBQUcsQ0FBQ2EsTUFBTSxDQUFDRSxJQUFJLENBQUMsSUFBSSxFQUFFO1VBQUVDLFlBQVksRUFBRTtRQUFLLENBQUMsQ0FBQztRQUNuRCxNQUFNLHdCQUF3QjtNQUNoQztNQUNBLElBQUksQ0FBQ1AsS0FBSyxJQUFJTixLQUFLLEtBQUtNLEtBQUssRUFBRTtRQUM3QixNQUFNLHFCQUFxQjtNQUM3QjtNQUNBLElBQUksSUFBSVEsSUFBSSxFQUFFLEdBQUdQLE1BQU0sRUFBRTtRQUN2QixNQUFNLHFCQUFxQjtNQUM3QjtNQUNBLE9BQU9OLElBQUksQ0FBQ08sR0FBRyxDQUFDUixLQUFLO01BQ3JCLE9BQU9DLElBQUksQ0FBQ08sR0FBRyxDQUFDRCxNQUFNO01BQ3RCLE9BQU87UUFDTEssSUFBSSxFQUFFWCxJQUFJLENBQUNPO01BQ2IsQ0FBQztJQUNIO0lBQ0EsSUFBSSxJQUFJLENBQUN6QixJQUFJLEVBQUU7TUFDYixJQUFJLE9BQU9pQixLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE1BQU0sbUJBQW1CO01BQzNCO01BQ0EsSUFBSSxDQUFDSSxNQUFNLEVBQUU7UUFDWCxPQUFPTixZQUFZO01BQ3JCO01BQ0EsSUFBSU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLTCxLQUFLLElBQUlLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBS0wsS0FBSyxFQUFFO1FBQ2xELE9BQU9GLFlBQVk7TUFDckI7TUFDQSxNQUFNZixJQUFJLEdBQUcsSUFBSWdDLGFBQUksQ0FBQztRQUNwQjNCLFNBQVMsRUFBRSxJQUFJLENBQUNBLFNBQVM7UUFDekJKLE1BQU0sRUFBRSxJQUFJLENBQUNBLE1BQU07UUFDbkJDLE1BQU0sRUFBRSxJQUFJLENBQUNBLE1BQU07UUFDbkJtQixNQUFNLEVBQUVZLGVBQU0sQ0FBQ0MsVUFBVSxDQUFDYixNQUFNO01BQ2xDLENBQUMsQ0FBQztNQUNGLE1BQU1jLEtBQUssR0FBR25DLElBQUksQ0FBQ29DLFFBQVEsQ0FBQztRQUMxQm5CO01BQ0YsQ0FBQyxDQUFDO01BQ0YsSUFBSWtCLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDbEIsTUFBTSxtQkFBbUI7TUFDM0I7SUFDRjtJQUNBLE9BQU9wQixZQUFZO0VBQ3JCO0VBQ0EsTUFBTXNCLGNBQWMsQ0FBQ0MsUUFBUSxFQUFFekIsQ0FBQyxFQUFFQyxHQUFHLEVBQUU7SUFDckMsSUFBSUEsR0FBRyxDQUFDeUIsTUFBTSxFQUFFO01BQ2Q7SUFDRjtJQUNBLElBQUlELFFBQVEsQ0FBQzlCLE1BQU0sSUFBSSxJQUFJLENBQUNWLEdBQUcsRUFBRTtNQUFBO01BQy9CLElBQUksQ0FBQ3dDLFFBQVEsQ0FBQ3JCLEtBQUssRUFBRTtRQUNuQixNQUFNLHVDQUF1QztNQUMvQztNQUNBLE9BQU8sSUFBSSxDQUFDdUIsYUFBYSxDQUFDRixRQUFRLEVBQUUsc0JBQUF4QixHQUFHLENBQUNLLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzREFBNUIsa0JBQThCSyxHQUFHLEtBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUU7SUFDQSxJQUFJLElBQUksQ0FBQ3pCLElBQUksRUFBRTtNQUNiLE1BQU0sSUFBSSxDQUFDVyxhQUFhLENBQUM7UUFBRU0sS0FBSyxFQUFFcUIsUUFBUSxDQUFDRztNQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUzQixHQUFHLENBQUM7TUFDNUQsT0FBTyxJQUFJLENBQUNSLGFBQWEsQ0FBQ2dDLFFBQVEsQ0FBQztJQUNyQztJQUNBLE1BQU0sa0JBQWtCO0VBQzFCO0VBQ0FJLFNBQVMsQ0FBQzVCLEdBQUcsRUFBRXdCLFFBQVEsRUFBRTtJQUN2QixJQUFJeEIsR0FBRyxDQUFDeUIsTUFBTSxFQUFFO01BQ2Q7SUFDRjtJQUNBLElBQUksSUFBSSxDQUFDdkMsSUFBSSxJQUFJc0MsUUFBUSxDQUFDakIsTUFBTSxFQUFFO01BQ2hDLE9BQU87UUFDTHNCLE1BQU0sRUFBRTtNQUNWLENBQUM7SUFDSDtJQUNBLElBQUksSUFBSSxDQUFDN0MsR0FBRyxJQUFJd0MsUUFBUSxDQUFDOUIsTUFBTSxFQUFFO01BQy9CLE9BQU87UUFDTG1DLE1BQU0sRUFBRTtNQUNWLENBQUM7SUFDSDtJQUNBLE9BQU87TUFDTEEsTUFBTSxFQUFFO0lBQ1YsQ0FBQztFQUNIO0VBRUFDLE1BQU0sQ0FBQzlCLEdBQUcsRUFBRUksSUFBSSxFQUFFO0lBQ2hCLElBQUksSUFBSSxDQUFDcEIsR0FBRyxJQUFJb0IsSUFBSSxhQUFKQSxJQUFJLGVBQUpBLElBQUksQ0FBRTJCLE9BQU8sSUFBSUMsTUFBTSxDQUFDQyxJQUFJLENBQUM3QixJQUFJLENBQUMsQ0FBQzhCLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDL0QsT0FBTyxTQUFTO0lBQ2xCO0lBQ0EsT0FBTyxZQUFZO0VBQ3JCO0VBRUEsTUFBTXZDLGNBQWMsQ0FBQ0QsTUFBTSxFQUFFO0lBQzNCLE1BQU07TUFBRVMsS0FBSztNQUFFTztJQUFPLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQ3JCLE9BQU8sQ0FBQ0ssTUFBTSxDQUFDO0lBQ3BELE9BQU87TUFDTHFCLElBQUksRUFBRTtRQUNKZ0IsT0FBTyxFQUFFO1VBQ1AsQ0FBQ3JDLE1BQU0sR0FBRztZQUNSUyxLQUFLO1lBQ0xPO1VBQ0Y7UUFDRjtNQUNGO0lBQ0YsQ0FBQztFQUNIO0VBRUEsTUFBTXJCLE9BQU8sQ0FBQ0ssTUFBTSxFQUFFO0lBQ3BCLElBQUksQ0FBQywrQ0FBK0MsQ0FBQ3lDLElBQUksQ0FBQ3pDLE1BQU0sQ0FBQyxFQUFFO01BQ2pFLE1BQU0sd0JBQXdCO0lBQ2hDO0lBQ0EsSUFBSVMsS0FBSyxHQUFHLEVBQUU7SUFDZCxPQUFPQSxLQUFLLENBQUMrQixNQUFNLEdBQUcsSUFBSSxDQUFDL0MsTUFBTSxFQUFFO01BQ2pDZ0IsS0FBSyxJQUFJLElBQUFpQyx5QkFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUM5QztJQUNBbEMsS0FBSyxHQUFHQSxLQUFLLENBQUNtQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ25ELE1BQU0sQ0FBQztJQUN2QyxNQUFNb0QsT0FBTyxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDbEQsV0FBVyxDQUFDYSxLQUFLLEVBQUVULE1BQU0sQ0FBQyxDQUFDO0lBQ3RELE1BQU1nQixNQUFNLEdBQUcsSUFBSU8sSUFBSSxDQUFDLElBQUlBLElBQUksRUFBRSxDQUFDd0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDckQsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNsRSxPQUFPO01BQUVlLEtBQUs7TUFBRU87SUFBTyxDQUFDO0VBQzFCO0VBRUEsTUFBTWdCLGFBQWEsQ0FBQ2dCLFNBQVMsRUFBRWxCLFFBQVEsRUFBRTtJQUFBO0lBQ3ZDLE1BQU07TUFBRTlCLE1BQU07TUFBRVM7SUFBTSxDQUFDLEdBQUd1QyxTQUFTO0lBQ25DLElBQUksdUJBQUNsQixRQUFRLENBQUNPLE9BQU8sOENBQWhCLGtCQUFtQnJDLE1BQU0sQ0FBQyxHQUFFO01BQy9CLE1BQU0sNEJBQTRCO0lBQ3BDO0lBQ0EsTUFBTWlELFdBQVcsR0FBR25CLFFBQVEsQ0FBQ08sT0FBTyxDQUFDckMsTUFBTSxDQUFDO0lBQzVDLElBQUlTLEtBQUssS0FBS3dDLFdBQVcsQ0FBQ3hDLEtBQUssRUFBRTtNQUMvQixNQUFNLG1CQUFtQjtJQUMzQjtJQUNBLElBQUksSUFBSWMsSUFBSSxFQUFFLEdBQUcwQixXQUFXLENBQUNqQyxNQUFNLEVBQUU7TUFDbkMsTUFBTSxtQkFBbUI7SUFDM0I7SUFDQSxPQUFPYyxRQUFRLENBQUNPLE9BQU8sQ0FBQ3JDLE1BQU0sQ0FBQztJQUMvQjhCLFFBQVEsQ0FBQzlCLE1BQU0sR0FBR0EsTUFBTTtJQUN4QixPQUFPO01BQ0xxQixJQUFJLEVBQUVTO0lBQ1IsQ0FBQztFQUNIO0VBRUE1QixTQUFTLENBQUNILE9BQU8sRUFBRTtJQUNqQixNQUFNO01BQUVjLE1BQU07TUFBRUo7SUFBTSxDQUFDLEdBQUdWLE9BQU87SUFDakMsSUFBSSxDQUFDYyxNQUFNLElBQUksQ0FBQ0osS0FBSyxJQUFJSSxNQUFNLENBQUMyQixNQUFNLEdBQUcsRUFBRSxFQUFFO01BQzNDLE1BQU0sa0JBQWtCO0lBQzFCO0lBQ0EsTUFBTWhELElBQUksR0FBRyxJQUFJZ0MsYUFBSSxDQUFDO01BQ3BCM0IsU0FBUyxFQUFFLElBQUksQ0FBQ0EsU0FBUztNQUN6QkosTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtNQUNuQkMsTUFBTSxFQUFFLElBQUksQ0FBQ0EsTUFBTTtNQUNuQm1CLE1BQU0sRUFBRVksZUFBTSxDQUFDQyxVQUFVLENBQUNiLE1BQU07SUFDbEMsQ0FBQyxDQUFDO0lBQ0YsTUFBTWMsS0FBSyxHQUFHbkMsSUFBSSxDQUFDb0MsUUFBUSxDQUFDO01BQzFCbkI7SUFDRixDQUFDLENBQUM7SUFDRixJQUFJa0IsS0FBSyxLQUFLLElBQUksRUFBRTtNQUNsQixNQUFNLG1CQUFtQjtJQUMzQjtJQUNBLE1BQU1iLFFBQVEsR0FBRyxDQUFDLElBQUE0Qix5QkFBWSxFQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUFBLHlCQUFZLEVBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTztNQUNMUSxRQUFRLEVBQUU7UUFBRXBDLFFBQVEsRUFBRUEsUUFBUSxDQUFDcUMsSUFBSSxDQUFDLElBQUk7TUFBRSxDQUFDO01BQzNDOUIsSUFBSSxFQUFFO1FBQUVSLE1BQU07UUFBRUM7TUFBUztJQUMzQixDQUFDO0VBQ0g7QUFDRjtBQUFDLGVBQ2MsSUFBSWhDLFVBQVUsRUFBRTtBQUFBIn0=
|
|
@@ -131,7 +131,7 @@ class FilesRouter {
|
|
|
131
131
|
if (ext === '*') {
|
|
132
132
|
return true;
|
|
133
133
|
}
|
|
134
|
-
const regex = new RegExp(
|
|
134
|
+
const regex = new RegExp(ext);
|
|
135
135
|
if (regex.test(extension)) {
|
|
136
136
|
return true;
|
|
137
137
|
}
|
|
@@ -288,4 +288,4 @@ function isFileStreamable(req, filesController) {
|
|
|
288
288
|
const end = Number(range[1]);
|
|
289
289
|
return (!isNaN(start) || !isNaN(end)) && typeof filesController.adapter.handleFileStream === 'function';
|
|
290
290
|
}
|
|
291
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmlnZ2VycyIsInJlcXVpcmUiLCJodHRwIiwiVXRpbHMiLCJkb3dubG9hZEZpbGVGcm9tVVJJIiwidXJpIiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImdldCIsInJlc3BvbnNlIiwic2V0RGVmYXVsdEVuY29kaW5nIiwiYm9keSIsImhlYWRlcnMiLCJvbiIsImRhdGEiLCJlIiwibWVzc2FnZSIsImFkZEZpbGVEYXRhSWZOZWVkZWQiLCJmaWxlIiwiX3NvdXJjZSIsImZvcm1hdCIsImJhc2U2NCIsIl9wcmV2aW91c1NhdmUiLCJfZGF0YSIsIl9yZXF1ZXN0VGFzayIsIkZpbGVzUm91dGVyIiwiZXhwcmVzc1JvdXRlciIsIm1heFVwbG9hZFNpemUiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0SGFuZGxlciIsIm1ldGFkYXRhSGFuZGxlciIsInBvc3QiLCJyZXEiLCJuZXh0IiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIiwiQm9keVBhcnNlciIsInJhdyIsInR5cGUiLCJsaW1pdCIsIk1pZGRsZXdhcmVzIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiaGFuZGxlUGFyc2VTZXNzaW9uIiwiY3JlYXRlSGFuZGxlciIsImRlbGV0ZSIsImVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJkZWxldGVIYW5kbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicGFyYW1zIiwiYXBwSWQiLCJzdGF0dXMiLCJlcnIiLCJPUEVSQVRJT05fRk9SQklEREVOIiwianNvbiIsImNvZGUiLCJlcnJvciIsImZpbGVzQ29udHJvbGxlciIsImZpbGVuYW1lIiwiY29udGVudFR5cGUiLCJtaW1lIiwiZ2V0VHlwZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJzZXQiLCJlbmQiLCJnZXRGaWxlRGF0YSIsInRoZW4iLCJsZW5ndGgiLCJ1c2VyIiwiYXV0aCIsImlzTWFzdGVyIiwiaXNMaW5rZWQiLCJBbm9ueW1vdXNVdGlscyIsImZpbGVVcGxvYWQiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiRklMRV9TQVZFX0VSUk9SIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZmlsZUV4dGVuc2lvbnMiLCJpc1ZhbGlkRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwic29tZSIsImV4dCIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsImluY2x1ZGVzIiwic3BsaXQiLCJqb2luIiwidG9TdHJpbmciLCJGaWxlIiwibWV0YWRhdGEiLCJ0YWdzIiwiZmlsZURhdGEiLCJjaGVja1Byb2hpYml0ZWRLZXl3b3JkcyIsIklOVkFMSURfS0VZX05BTUUiLCJzZXRUYWdzIiwic2V0TWV0YWRhdGEiLCJmaWxlU2l6ZSIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJmaWxlT2JqZWN0IiwidHJpZ2dlclJlc3VsdCIsIm1heWJlUnVuRmlsZVRyaWdnZXIiLCJUeXBlcyIsImJlZm9yZVNhdmUiLCJzYXZlUmVzdWx0IiwidXJsIiwibmFtZSIsIl9uYW1lIiwiYnVmZmVyRGF0YSIsImZyb20iLCJmaWxlT3B0aW9ucyIsIl9tZXRhZGF0YSIsImZpbGVUYWdzIiwiT2JqZWN0Iiwia2V5cyIsIl90YWdzIiwiYXNzaWduIiwiY3JlYXRlRmlsZVJlc3VsdCIsImNyZWF0ZUZpbGUiLCJfdXJsIiwicmVzb2x2ZSIsImFmdGVyU2F2ZSIsImxvZ2dlciIsInJlc29sdmVFcnJvciIsImFkYXB0ZXIiLCJnZXRGaWxlTG9jYXRpb24iLCJiZWZvcmVEZWxldGUiLCJkZWxldGVGaWxlIiwiYWZ0ZXJEZWxldGUiLCJGSUxFX0RFTEVURV9FUlJPUiIsImdldE1ldGFkYXRhIiwicmFuZ2UiLCJzdGFydCIsIk51bWJlciIsImlzTmFOIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRmlsZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgQm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5pbXBvcnQgKiBhcyBNaWRkbGV3YXJlcyBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgQ29uZmlnIGZyb20gJy4uL0NvbmZpZyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBVdGlscyA9IHJlcXVpcmUoJy4uL1V0aWxzJyk7XG5cbmNvbnN0IGRvd25sb2FkRmlsZUZyb21VUkkgPSB1cmkgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgaHR0cFxuICAgICAgLmdldCh1cmksIHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmVzcG9uc2Uuc2V0RGVmYXVsdEVuY29kaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgbGV0IGJvZHkgPSBgZGF0YToke3Jlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddfTtiYXNlNjQsYDtcbiAgICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCBkYXRhID0+IChib2R5ICs9IGRhdGEpKTtcbiAgICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsICgpID0+IHJlcyhib2R5KSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIGUgPT4ge1xuICAgICAgICByZWooYEVycm9yIGRvd25sb2FkaW5nIGZpbGUgZnJvbSAke3VyaX06ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3QgYWRkRmlsZURhdGFJZk5lZWRlZCA9IGFzeW5jIGZpbGUgPT4ge1xuICBpZiAoZmlsZS5fc291cmNlLmZvcm1hdCA9PT0gJ3VyaScpIHtcbiAgICBjb25zdCBiYXNlNjQgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVVJJKGZpbGUuX3NvdXJjZS51cmkpO1xuICAgIGZpbGUuX3ByZXZpb3VzU2F2ZSA9IGZpbGU7XG4gICAgZmlsZS5fZGF0YSA9IGJhc2U2NDtcbiAgICBmaWxlLl9yZXF1ZXN0VGFzayA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIGZpbGU7XG59O1xuXG5leHBvcnQgY2xhc3MgRmlsZXNSb3V0ZXIge1xuICBleHByZXNzUm91dGVyKHsgbWF4VXBsb2FkU2l6ZSA9ICcyME1iJyB9ID0ge30pIHtcbiAgICB2YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcbiAgICByb3V0ZXIuZ2V0KCcvZmlsZXMvOmFwcElkLzpmaWxlbmFtZScsIHRoaXMuZ2V0SGFuZGxlcik7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC9tZXRhZGF0YS86ZmlsZW5hbWUnLCB0aGlzLm1ldGFkYXRhSGFuZGxlcik7XG5cbiAgICByb3V0ZXIucG9zdCgnL2ZpbGVzJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgJ0ZpbGVuYW1lIG5vdCBwcm92aWRlZC4nKSk7XG4gICAgfSk7XG5cbiAgICByb3V0ZXIucG9zdChcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIEJvZHlQYXJzZXIucmF3KHtcbiAgICAgICAgdHlwZTogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBsaW1pdDogbWF4VXBsb2FkU2l6ZSxcbiAgICAgIH0pLCAvLyBBbGxvdyB1cGxvYWRzIHdpdGhvdXQgQ29udGVudC1UeXBlLCBvciB3aXRoIGFueSBDb250ZW50LVR5cGUuXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICB0aGlzLmNyZWF0ZUhhbmRsZXJcbiAgICApO1xuXG4gICAgcm91dGVyLmRlbGV0ZShcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlU2Vzc2lvbixcbiAgICAgIE1pZGRsZXdhcmVzLmVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmRlbGV0ZUhhbmRsZXJcbiAgICApO1xuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cblxuICBnZXRIYW5kbGVyKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChyZXEucGFyYW1zLmFwcElkKTtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmVzLnN0YXR1cyg0MDMpO1xuICAgICAgY29uc3QgZXJyID0gbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICdJbnZhbGlkIGFwcGxpY2F0aW9uIElELicpO1xuICAgICAgcmVzLmpzb24oeyBjb2RlOiBlcnIuY29kZSwgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBjb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcmVxLnBhcmFtcy5maWxlbmFtZTtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgaWYgKGlzRmlsZVN0cmVhbWFibGUocmVxLCBmaWxlc0NvbnRyb2xsZXIpKSB7XG4gICAgICBmaWxlc0NvbnRyb2xsZXIuaGFuZGxlRmlsZVN0cmVhbShjb25maWcsIGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldEZpbGVEYXRhKGNvbmZpZywgZmlsZW5hbWUpXG4gICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1MZW5ndGgnLCBkYXRhLmxlbmd0aCk7XG4gICAgICAgICAgcmVzLmVuZChkYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgY29uc3QgdXNlciA9IHJlcS5hdXRoLnVzZXI7XG4gICAgY29uc3QgaXNNYXN0ZXIgPSByZXEuYXV0aC5pc01hc3RlcjtcbiAgICBjb25zdCBpc0xpbmtlZCA9IHVzZXIgJiYgUGFyc2UuQW5vbnltb3VzVXRpbHMuaXNMaW5rZWQodXNlcik7XG4gICAgaWYgKCFpc01hc3RlciAmJiAhY29uZmlnLmZpbGVVcGxvYWQuZW5hYmxlRm9yQW5vbnltb3VzVXNlciAmJiBpc0xpbmtlZCkge1xuICAgICAgbmV4dChcbiAgICAgICAgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IGFub255bW91cyB1c2VyIGlzIGRpc2FibGVkLicpXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciAmJiAhaXNMaW5rZWQgJiYgdXNlcikge1xuICAgICAgbmV4dChcbiAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgICAnRmlsZSB1cGxvYWQgYnkgYXV0aGVudGljYXRlZCB1c2VyIGlzIGRpc2FibGVkLidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc01hc3RlciAmJiAhY29uZmlnLmZpbGVVcGxvYWQuZW5hYmxlRm9yUHVibGljICYmICF1c2VyKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdGaWxlIHVwbG9hZCBieSBwdWJsaWMgaXMgZGlzYWJsZWQuJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBjb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXEuZ2V0KCdDb250ZW50LXR5cGUnKTtcblxuICAgIGlmICghcmVxLmJvZHkgfHwgIXJlcS5ib2R5Lmxlbmd0aCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnSW52YWxpZCBmaWxlIHVwbG9hZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWxlc0NvbnRyb2xsZXIudmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9ucyA9IGNvbmZpZy5maWxlVXBsb2FkPy5maWxlRXh0ZW5zaW9ucztcbiAgICBpZiAoIWlzTWFzdGVyICYmIGZpbGVFeHRlbnNpb25zKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkRXh0ZW5zaW9uID0gZXh0ZW5zaW9uID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbGVFeHRlbnNpb25zLnNvbWUoZXh0ID0+IHtcbiAgICAgICAgICBpZiAoZXh0ID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoZmlsZUV4dGVuc2lvbnMpO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IGNvbnRlbnRUeXBlO1xuICAgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3BsaXQoJy4nKVsxXTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICBleHRlbnNpb24gPSBjb250ZW50VHlwZS5zcGxpdCgnLycpWzFdO1xuICAgICAgfVxuICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uLnNwbGl0KCcgJykuam9pbignJyk7XG5cbiAgICAgIGlmICghaXNWYWxpZEV4dGVuc2lvbihleHRlbnNpb24pKSB7XG4gICAgICAgIG5leHQoXG4gICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICAgYEZpbGUgdXBsb2FkIG9mIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0gaXMgZGlzYWJsZWQuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBTY2FuIHJlcXVlc3QgZGF0YSBmb3IgZGVuaWVkIGtleXdvcmRzXG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIG1ldGFkYXRhKTtcbiAgICAgIFV0aWxzLmNoZWNrUHJvaGliaXRlZEtleXdvcmRzKGNvbmZpZywgdGFncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIGlmIHRoZSBQYXJzZUZpbGUgcmV0dXJuZWQgaXMgdHlwZSB1cmksIGRvd25sb2FkIHRoZSBmaWxlIGJlZm9yZSBzYXZpbmcgaXRcbiAgICAgICAgYXdhaXQgYWRkRmlsZURhdGFJZk5lZWRlZChmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICAvLyB1cGRhdGUgZmlsZVNpemVcbiAgICAgICAgY29uc3QgYnVmZmVyRGF0YSA9IEJ1ZmZlci5mcm9tKGZpbGVPYmplY3QuZmlsZS5fZGF0YSwgJ2Jhc2U2NCcpO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGVTaXplID0gQnVmZmVyLmJ5dGVMZW5ndGgoYnVmZmVyRGF0YSk7XG4gICAgICAgIC8vIHByZXBhcmUgZmlsZSBvcHRpb25zXG4gICAgICAgIGNvbnN0IGZpbGVPcHRpb25zID0ge1xuICAgICAgICAgIG1ldGFkYXRhOiBmaWxlT2JqZWN0LmZpbGUuX21ldGFkYXRhLFxuICAgICAgICB9O1xuICAgICAgICAvLyBzb21lIHMzLWNvbXBhdGlibGUgcHJvdmlkZXJzIChEaWdpdGFsT2NlYW4sIExpbm9kZSkgZG8gbm90IGFjY2VwdCB0YWdzXG4gICAgICAgIC8vIHNvIHdlIGRvIG5vdCBpbmNsdWRlIHRoZSB0YWdzIG9wdGlvbiBpZiBpdCBpcyBlbXB0eS5cbiAgICAgICAgY29uc3QgZmlsZVRhZ3MgPVxuICAgICAgICAgIE9iamVjdC5rZXlzKGZpbGVPYmplY3QuZmlsZS5fdGFncykubGVuZ3RoID4gMCA/IHsgdGFnczogZmlsZU9iamVjdC5maWxlLl90YWdzIH0gOiB7fTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmaWxlT3B0aW9ucywgZmlsZVRhZ3MpO1xuICAgICAgICAvLyBzYXZlIGZpbGVcbiAgICAgICAgY29uc3QgY3JlYXRlRmlsZVJlc3VsdCA9IGF3YWl0IGZpbGVzQ29udHJvbGxlci5jcmVhdGVGaWxlKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUsXG4gICAgICAgICAgYnVmZmVyRGF0YSxcbiAgICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3NvdXJjZS50eXBlLFxuICAgICAgICAgIGZpbGVPcHRpb25zXG4gICAgICAgICk7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlIHdpdGggbmV3IGRhdGFcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9uYW1lID0gY3JlYXRlRmlsZVJlc3VsdC5uYW1lO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3VybCA9IGNyZWF0ZUZpbGVSZXN1bHQudXJsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3JlcXVlc3RUYXNrID0gbnVsbDtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9wcmV2aW91c1NhdmUgPSBQcm9taXNlLnJlc29sdmUoZmlsZU9iamVjdC5maWxlKTtcbiAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUZpbGVSZXN1bHQudXJsLFxuICAgICAgICAgIG5hbWU6IGNyZWF0ZUZpbGVSZXN1bHQubmFtZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIHJ1biBhZnRlclNhdmVGaWxlIHRyaWdnZXJcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIodHJpZ2dlcnMuVHlwZXMuYWZ0ZXJTYXZlLCBmaWxlT2JqZWN0LCBjb25maWcsIHJlcS5hdXRoKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAxKTtcbiAgICAgIHJlcy5zZXQoJ0xvY2F0aW9uJywgc2F2ZVJlc3VsdC51cmwpO1xuICAgICAgcmVzLmpzb24oc2F2ZVJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvciBjcmVhdGluZyBhIGZpbGU6ICcsIGUpO1xuICAgICAgY29uc3QgZXJyb3IgPSB0cmlnZ2Vycy5yZXNvbHZlRXJyb3IoZSwge1xuICAgICAgICBjb2RlOiBQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IGBDb3VsZCBub3Qgc3RvcmUgZmlsZTogJHtmaWxlT2JqZWN0LmZpbGUuX25hbWV9LmAsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUhhbmRsZXIocmVxLCByZXMsIG5leHQpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBmaWxlc0NvbnRyb2xsZXIgfSA9IHJlcS5jb25maWc7XG4gICAgICBjb25zdCB7IGZpbGVuYW1lIH0gPSByZXEucGFyYW1zO1xuICAgICAgLy8gcnVuIGJlZm9yZURlbGV0ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lKTtcbiAgICAgIGZpbGUuX3VybCA9IGZpbGVzQ29udHJvbGxlci5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihyZXEuY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZTogbnVsbCB9O1xuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYmVmb3JlRGVsZXRlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIC8vIGRlbGV0ZSBmaWxlXG4gICAgICBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZGVsZXRlRmlsZShyZXEuY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgICAvLyBydW4gYWZ0ZXJEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIC8vIFRPRE86IHJldHVybiB1c2VmdWwgSlNPTiBoZXJlP1xuICAgICAgcmVzLmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgZGVsZXRpbmcgYSBmaWxlOiAnLCBlKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKGUsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuRklMRV9ERUxFVEVfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZGVsZXRlIGZpbGUuJyxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWV0YWRhdGFIYW5kbGVyKHJlcSwgcmVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQocmVxLnBhcmFtcy5hcHBJZCk7XG4gICAgICBjb25zdCB7IGZpbGVzQ29udHJvbGxlciB9ID0gY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoZmlsZW5hbWUpO1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oe30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSB7XG4gIGNvbnN0IHJhbmdlID0gKHJlcS5nZXQoJ1JhbmdlJykgfHwgJy8tLycpLnNwbGl0KCctJyk7XG4gIGNvbnN0IHN0YXJ0ID0gTnVtYmVyKHJhbmdlWzBdKTtcbiAgY29uc3QgZW5kID0gTnVtYmVyKHJhbmdlWzFdKTtcbiAgcmV0dXJuIChcbiAgICAoIWlzTmFOKHN0YXJ0KSB8fCAhaXNOYU4oZW5kKSkgJiYgdHlwZW9mIGZpbGVzQ29udHJvbGxlci5hZGFwdGVyLmhhbmRsZUZpbGVTdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBK0I7QUFBQTtBQUFBO0FBQy9CLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN2QyxNQUFNQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDNUIsTUFBTUUsS0FBSyxHQUFHRixPQUFPLENBQUMsVUFBVSxDQUFDO0FBRWpDLE1BQU1HLG1CQUFtQixHQUFHQyxH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
|
|
291
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmlnZ2VycyIsInJlcXVpcmUiLCJodHRwIiwiVXRpbHMiLCJkb3dubG9hZEZpbGVGcm9tVVJJIiwidXJpIiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImdldCIsInJlc3BvbnNlIiwic2V0RGVmYXVsdEVuY29kaW5nIiwiYm9keSIsImhlYWRlcnMiLCJvbiIsImRhdGEiLCJlIiwibWVzc2FnZSIsImFkZEZpbGVEYXRhSWZOZWVkZWQiLCJmaWxlIiwiX3NvdXJjZSIsImZvcm1hdCIsImJhc2U2NCIsIl9wcmV2aW91c1NhdmUiLCJfZGF0YSIsIl9yZXF1ZXN0VGFzayIsIkZpbGVzUm91dGVyIiwiZXhwcmVzc1JvdXRlciIsIm1heFVwbG9hZFNpemUiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0SGFuZGxlciIsIm1ldGFkYXRhSGFuZGxlciIsInBvc3QiLCJyZXEiLCJuZXh0IiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIiwiQm9keVBhcnNlciIsInJhdyIsInR5cGUiLCJsaW1pdCIsIk1pZGRsZXdhcmVzIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiaGFuZGxlUGFyc2VTZXNzaW9uIiwiY3JlYXRlSGFuZGxlciIsImRlbGV0ZSIsImVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJkZWxldGVIYW5kbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicGFyYW1zIiwiYXBwSWQiLCJzdGF0dXMiLCJlcnIiLCJPUEVSQVRJT05fRk9SQklEREVOIiwianNvbiIsImNvZGUiLCJlcnJvciIsImZpbGVzQ29udHJvbGxlciIsImZpbGVuYW1lIiwiY29udGVudFR5cGUiLCJtaW1lIiwiZ2V0VHlwZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJzZXQiLCJlbmQiLCJnZXRGaWxlRGF0YSIsInRoZW4iLCJsZW5ndGgiLCJ1c2VyIiwiYXV0aCIsImlzTWFzdGVyIiwiaXNMaW5rZWQiLCJBbm9ueW1vdXNVdGlscyIsImZpbGVVcGxvYWQiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiRklMRV9TQVZFX0VSUk9SIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZmlsZUV4dGVuc2lvbnMiLCJpc1ZhbGlkRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwic29tZSIsImV4dCIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsImluY2x1ZGVzIiwic3BsaXQiLCJqb2luIiwidG9TdHJpbmciLCJGaWxlIiwibWV0YWRhdGEiLCJ0YWdzIiwiZmlsZURhdGEiLCJjaGVja1Byb2hpYml0ZWRLZXl3b3JkcyIsIklOVkFMSURfS0VZX05BTUUiLCJzZXRUYWdzIiwic2V0TWV0YWRhdGEiLCJmaWxlU2l6ZSIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJmaWxlT2JqZWN0IiwidHJpZ2dlclJlc3VsdCIsIm1heWJlUnVuRmlsZVRyaWdnZXIiLCJUeXBlcyIsImJlZm9yZVNhdmUiLCJzYXZlUmVzdWx0IiwidXJsIiwibmFtZSIsIl9uYW1lIiwiYnVmZmVyRGF0YSIsImZyb20iLCJmaWxlT3B0aW9ucyIsIl9tZXRhZGF0YSIsImZpbGVUYWdzIiwiT2JqZWN0Iiwia2V5cyIsIl90YWdzIiwiYXNzaWduIiwiY3JlYXRlRmlsZVJlc3VsdCIsImNyZWF0ZUZpbGUiLCJfdXJsIiwicmVzb2x2ZSIsImFmdGVyU2F2ZSIsImxvZ2dlciIsInJlc29sdmVFcnJvciIsImFkYXB0ZXIiLCJnZXRGaWxlTG9jYXRpb24iLCJiZWZvcmVEZWxldGUiLCJkZWxldGVGaWxlIiwiYWZ0ZXJEZWxldGUiLCJGSUxFX0RFTEVURV9FUlJPUiIsImdldE1ldGFkYXRhIiwicmFuZ2UiLCJzdGFydCIsIk51bWJlciIsImlzTmFOIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRmlsZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgQm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5pbXBvcnQgKiBhcyBNaWRkbGV3YXJlcyBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgQ29uZmlnIGZyb20gJy4uL0NvbmZpZyc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG5jb25zdCBVdGlscyA9IHJlcXVpcmUoJy4uL1V0aWxzJyk7XG5cbmNvbnN0IGRvd25sb2FkRmlsZUZyb21VUkkgPSB1cmkgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgaHR0cFxuICAgICAgLmdldCh1cmksIHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmVzcG9uc2Uuc2V0RGVmYXVsdEVuY29kaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgbGV0IGJvZHkgPSBgZGF0YToke3Jlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddfTtiYXNlNjQsYDtcbiAgICAgICAgcmVzcG9uc2Uub24oJ2RhdGEnLCBkYXRhID0+IChib2R5ICs9IGRhdGEpKTtcbiAgICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsICgpID0+IHJlcyhib2R5KSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIGUgPT4ge1xuICAgICAgICByZWooYEVycm9yIGRvd25sb2FkaW5nIGZpbGUgZnJvbSAke3VyaX06ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3QgYWRkRmlsZURhdGFJZk5lZWRlZCA9IGFzeW5jIGZpbGUgPT4ge1xuICBpZiAoZmlsZS5fc291cmNlLmZvcm1hdCA9PT0gJ3VyaScpIHtcbiAgICBjb25zdCBiYXNlNjQgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVVJJKGZpbGUuX3NvdXJjZS51cmkpO1xuICAgIGZpbGUuX3ByZXZpb3VzU2F2ZSA9IGZpbGU7XG4gICAgZmlsZS5fZGF0YSA9IGJhc2U2NDtcbiAgICBmaWxlLl9yZXF1ZXN0VGFzayA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIGZpbGU7XG59O1xuXG5leHBvcnQgY2xhc3MgRmlsZXNSb3V0ZXIge1xuICBleHByZXNzUm91dGVyKHsgbWF4VXBsb2FkU2l6ZSA9ICcyME1iJyB9ID0ge30pIHtcbiAgICB2YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcbiAgICByb3V0ZXIuZ2V0KCcvZmlsZXMvOmFwcElkLzpmaWxlbmFtZScsIHRoaXMuZ2V0SGFuZGxlcik7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC9tZXRhZGF0YS86ZmlsZW5hbWUnLCB0aGlzLm1ldGFkYXRhSGFuZGxlcik7XG5cbiAgICByb3V0ZXIucG9zdCgnL2ZpbGVzJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgJ0ZpbGVuYW1lIG5vdCBwcm92aWRlZC4nKSk7XG4gICAgfSk7XG5cbiAgICByb3V0ZXIucG9zdChcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIEJvZHlQYXJzZXIucmF3KHtcbiAgICAgICAgdHlwZTogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBsaW1pdDogbWF4VXBsb2FkU2l6ZSxcbiAgICAgIH0pLCAvLyBBbGxvdyB1cGxvYWRzIHdpdGhvdXQgQ29udGVudC1UeXBlLCBvciB3aXRoIGFueSBDb250ZW50LVR5cGUuXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICB0aGlzLmNyZWF0ZUhhbmRsZXJcbiAgICApO1xuXG4gICAgcm91dGVyLmRlbGV0ZShcbiAgICAgICcvZmlsZXMvOmZpbGVuYW1lJyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIE1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlU2Vzc2lvbixcbiAgICAgIE1pZGRsZXdhcmVzLmVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmRlbGV0ZUhhbmRsZXJcbiAgICApO1xuICAgIHJldHVybiByb3V0ZXI7XG4gIH1cblxuICBnZXRIYW5kbGVyKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChyZXEucGFyYW1zLmFwcElkKTtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmVzLnN0YXR1cyg0MDMpO1xuICAgICAgY29uc3QgZXJyID0gbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICdJbnZhbGlkIGFwcGxpY2F0aW9uIElELicpO1xuICAgICAgcmVzLmpzb24oeyBjb2RlOiBlcnIuY29kZSwgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBjb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcmVxLnBhcmFtcy5maWxlbmFtZTtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgaWYgKGlzRmlsZVN0cmVhbWFibGUocmVxLCBmaWxlc0NvbnRyb2xsZXIpKSB7XG4gICAgICBmaWxlc0NvbnRyb2xsZXIuaGFuZGxlRmlsZVN0cmVhbShjb25maWcsIGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldEZpbGVEYXRhKGNvbmZpZywgZmlsZW5hbWUpXG4gICAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgICAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1MZW5ndGgnLCBkYXRhLmxlbmd0aCk7XG4gICAgICAgICAgcmVzLmVuZChkYXRhKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgY29uc3QgdXNlciA9IHJlcS5hdXRoLnVzZXI7XG4gICAgY29uc3QgaXNNYXN0ZXIgPSByZXEuYXV0aC5pc01hc3RlcjtcbiAgICBjb25zdCBpc0xpbmtlZCA9IHVzZXIgJiYgUGFyc2UuQW5vbnltb3VzVXRpbHMuaXNMaW5rZWQodXNlcik7XG4gICAgaWYgKCFpc01hc3RlciAmJiAhY29uZmlnLmZpbGVVcGxvYWQuZW5hYmxlRm9yQW5vbnltb3VzVXNlciAmJiBpc0xpbmtlZCkge1xuICAgICAgbmV4dChcbiAgICAgICAgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IGFub255bW91cyB1c2VyIGlzIGRpc2FibGVkLicpXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciAmJiAhaXNMaW5rZWQgJiYgdXNlcikge1xuICAgICAgbmV4dChcbiAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgICAnRmlsZSB1cGxvYWQgYnkgYXV0aGVudGljYXRlZCB1c2VyIGlzIGRpc2FibGVkLidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc01hc3RlciAmJiAhY29uZmlnLmZpbGVVcGxvYWQuZW5hYmxlRm9yUHVibGljICYmICF1c2VyKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdGaWxlIHVwbG9hZCBieSBwdWJsaWMgaXMgZGlzYWJsZWQuJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBjb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXEuZ2V0KCdDb250ZW50LXR5cGUnKTtcblxuICAgIGlmICghcmVxLmJvZHkgfHwgIXJlcS5ib2R5Lmxlbmd0aCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnSW52YWxpZCBmaWxlIHVwbG9hZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3IgPSBmaWxlc0NvbnRyb2xsZXIudmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9ucyA9IGNvbmZpZy5maWxlVXBsb2FkPy5maWxlRXh0ZW5zaW9ucztcbiAgICBpZiAoIWlzTWFzdGVyICYmIGZpbGVFeHRlbnNpb25zKSB7XG4gICAgICBjb25zdCBpc1ZhbGlkRXh0ZW5zaW9uID0gZXh0ZW5zaW9uID0+IHtcbiAgICAgICAgcmV0dXJuIGZpbGVFeHRlbnNpb25zLnNvbWUoZXh0ID0+IHtcbiAgICAgICAgICBpZiAoZXh0ID09PSAnKicpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoZXh0KTtcbiAgICAgICAgICBpZiAocmVnZXgudGVzdChleHRlbnNpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGxldCBleHRlbnNpb24gPSBjb250ZW50VHlwZTtcbiAgICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dGVuc2lvbiA9IGZpbGVuYW1lLnNwbGl0KCcuJylbMV07XG4gICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gY29udGVudFR5cGUuc3BsaXQoJy8nKVsxXTtcbiAgICAgIH1cbiAgICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbi5zcGxpdCgnICcpLmpvaW4oJycpO1xuXG4gICAgICBpZiAoIWlzVmFsaWRFeHRlbnNpb24oZXh0ZW5zaW9uKSkge1xuICAgICAgICBuZXh0KFxuICAgICAgICAgIG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICAgIFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgICAgIGBGaWxlIHVwbG9hZCBvZiBleHRlbnNpb24gJHtleHRlbnNpb259IGlzIGRpc2FibGVkLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBiYXNlNjQgPSByZXEuYm9keS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lLCB7IGJhc2U2NCB9LCBjb250ZW50VHlwZSk7XG4gICAgY29uc3QgeyBtZXRhZGF0YSA9IHt9LCB0YWdzID0ge30gfSA9IHJlcS5maWxlRGF0YSB8fCB7fTtcbiAgICB0cnkge1xuICAgICAgLy8gU2NhbiByZXF1ZXN0IGRhdGEgZm9yIGRlbmllZCBrZXl3b3Jkc1xuICAgICAgVXRpbHMuY2hlY2tQcm9oaWJpdGVkS2V5d29yZHMoY29uZmlnLCBtZXRhZGF0YSk7XG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIHRhZ3MpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0tFWV9OQU1FLCBlcnJvcikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmaWxlLnNldFRhZ3ModGFncyk7XG4gICAgZmlsZS5zZXRNZXRhZGF0YShtZXRhZGF0YSk7XG4gICAgY29uc3QgZmlsZVNpemUgPSBCdWZmZXIuYnl0ZUxlbmd0aChyZXEuYm9keSk7XG4gICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemUgfTtcbiAgICB0cnkge1xuICAgICAgLy8gcnVuIGJlZm9yZVNhdmVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVTYXZlLFxuICAgICAgICBmaWxlT2JqZWN0LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgbGV0IHNhdmVSZXN1bHQ7XG4gICAgICAvLyBpZiBhIG5ldyBQYXJzZUZpbGUgaXMgcmV0dXJuZWQgY2hlY2sgaWYgaXQncyBhbiBhbHJlYWR5IHNhdmVkIGZpbGVcbiAgICAgIGlmICh0cmlnZ2VyUmVzdWx0IGluc3RhbmNlb2YgUGFyc2UuRmlsZSkge1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUgPSB0cmlnZ2VyUmVzdWx0O1xuICAgICAgICBpZiAodHJpZ2dlclJlc3VsdC51cmwoKSkge1xuICAgICAgICAgIC8vIHNldCBmaWxlU2l6ZSB0byBudWxsIGJlY2F1c2Ugd2Ugd29udCBrbm93IGhvdyBiaWcgaXQgaXMgaGVyZVxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBudWxsO1xuICAgICAgICAgIHNhdmVSZXN1bHQgPSB7XG4gICAgICAgICAgICB1cmw6IHRyaWdnZXJSZXN1bHQudXJsKCksXG4gICAgICAgICAgICBuYW1lOiB0cmlnZ2VyUmVzdWx0Ll9uYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBmaWxlIHJldHVybmVkIGJ5IHRoZSB0cmlnZ2VyIGhhcyBhbHJlYWR5IGJlZW4gc2F2ZWQgc2tpcCBzYXZpbmcgYW55dGhpbmdcbiAgICAgIGlmICghc2F2ZVJlc3VsdCkge1xuICAgICAgICAvLyBpZiB0aGUgUGFyc2VGaWxlIHJldHVybmVkIGlzIHR5cGUgdXJpLCBkb3dubG9hZCB0aGUgZmlsZSBiZWZvcmUgc2F2aW5nIGl0XG4gICAgICAgIGF3YWl0IGFkZEZpbGVEYXRhSWZOZWVkZWQoZmlsZU9iamVjdC5maWxlKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGVTaXplXG4gICAgICAgIGNvbnN0IGJ1ZmZlckRhdGEgPSBCdWZmZXIuZnJvbShmaWxlT2JqZWN0LmZpbGUuX2RhdGEsICdiYXNlNjQnKTtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGJ1ZmZlckRhdGEpO1xuICAgICAgICAvLyBwcmVwYXJlIGZpbGUgb3B0aW9uc1xuICAgICAgICBjb25zdCBmaWxlT3B0aW9ucyA9IHtcbiAgICAgICAgICBtZXRhZGF0YTogZmlsZU9iamVjdC5maWxlLl9tZXRhZGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gc29tZSBzMy1jb21wYXRpYmxlIHByb3ZpZGVycyAoRGlnaXRhbE9jZWFuLCBMaW5vZGUpIGRvIG5vdCBhY2NlcHQgdGFnc1xuICAgICAgICAvLyBzbyB3ZSBkbyBub3QgaW5jbHVkZSB0aGUgdGFncyBvcHRpb24gaWYgaXQgaXMgZW1wdHkuXG4gICAgICAgIGNvbnN0IGZpbGVUYWdzID1cbiAgICAgICAgICBPYmplY3Qua2V5cyhmaWxlT2JqZWN0LmZpbGUuX3RhZ3MpLmxlbmd0aCA+IDAgPyB7IHRhZ3M6IGZpbGVPYmplY3QuZmlsZS5fdGFncyB9IDoge307XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZmlsZU9wdGlvbnMsIGZpbGVUYWdzKTtcbiAgICAgICAgLy8gc2F2ZSBmaWxlXG4gICAgICAgIGNvbnN0IGNyZWF0ZUZpbGVSZXN1bHQgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuY3JlYXRlRmlsZShcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlLl9uYW1lLFxuICAgICAgICAgIGJ1ZmZlckRhdGEsXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlLl9zb3VyY2UudHlwZSxcbiAgICAgICAgICBmaWxlT3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICAvLyB1cGRhdGUgZmlsZSB3aXRoIG5ldyBkYXRhXG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSA9IGNyZWF0ZUZpbGVSZXN1bHQubmFtZTtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl91cmwgPSBjcmVhdGVGaWxlUmVzdWx0LnVybDtcbiAgICAgICAgZmlsZU9iamVjdC5maWxlLl9yZXF1ZXN0VGFzayA9IG51bGw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcHJldmlvdXNTYXZlID0gUHJvbWlzZS5yZXNvbHZlKGZpbGVPYmplY3QuZmlsZSk7XG4gICAgICAgIHNhdmVSZXN1bHQgPSB7XG4gICAgICAgICAgdXJsOiBjcmVhdGVGaWxlUmVzdWx0LnVybCxcbiAgICAgICAgICBuYW1lOiBjcmVhdGVGaWxlUmVzdWx0Lm5hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBydW4gYWZ0ZXJTYXZlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKHRyaWdnZXJzLlR5cGVzLmFmdGVyU2F2ZSwgZmlsZU9iamVjdCwgY29uZmlnLCByZXEuYXV0aCk7XG4gICAgICByZXMuc3RhdHVzKDIwMSk7XG4gICAgICByZXMuc2V0KCdMb2NhdGlvbicsIHNhdmVSZXN1bHQudXJsKTtcbiAgICAgIHJlcy5qc29uKHNhdmVSZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRXJyb3IgY3JlYXRpbmcgYSBmaWxlOiAnLCBlKTtcbiAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKGUsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiBgQ291bGQgbm90IHN0b3JlIGZpbGU6ICR7ZmlsZU9iamVjdC5maWxlLl9uYW1lfS5gLFxuICAgICAgfSk7XG4gICAgICBuZXh0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZWxldGVIYW5kbGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSByZXEuY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIC8vIHJ1biBiZWZvcmVEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSk7XG4gICAgICBmaWxlLl91cmwgPSBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24ocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemU6IG51bGwgfTtcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICAvLyBkZWxldGUgZmlsZVxuICAgICAgYXdhaXQgZmlsZXNDb250cm9sbGVyLmRlbGV0ZUZpbGUocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgLy8gcnVuIGFmdGVyRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlckRlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gdXNlZnVsIEpTT04gaGVyZT9cbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfREVMRVRFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlbGV0ZSBmaWxlLicsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1ldGFkYXRhSGFuZGxlcihyZXEsIHJlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgICAgY29uc3QgeyBmaWxlc0NvbnRyb2xsZXIgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKHt9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RyZWFtYWJsZShyZXEsIGZpbGVzQ29udHJvbGxlcikge1xuICBjb25zdCByYW5nZSA9IChyZXEuZ2V0KCdSYW5nZScpIHx8ICcvLS8nKS5zcGxpdCgnLScpO1xuICBjb25zdCBzdGFydCA9IE51bWJlcihyYW5nZVswXSk7XG4gIGNvbnN0IGVuZCA9IE51bWJlcihyYW5nZVsxXSk7XG4gIHJldHVybiAoXG4gICAgKCFpc05hTihzdGFydCkgfHwgIWlzTmFOKGVuZCkpICYmIHR5cGVvZiBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQStCO0FBQUE7QUFBQTtBQUMvQixNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdkMsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBTSxDQUFDO0FBQzVCLE1BQU1FLEtBQUssR0FBR0YsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUVqQyxNQUFNRyxtQkFBbUIsR0FBR0MsR0FBRyxJQUFJO0VB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
|
package/lib/cli/utils/runner.js
CHANGED
|
@@ -7,13 +7,15 @@ exports.default = _default;
|
|
|
7
7
|
var _commander = _interopRequireDefault(require("./commander"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
9
|
function logStartupOptions(options) {
|
|
10
|
+
if (!options.verbose) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
// Keys that may include sensitive information that will be redacted in logs
|
|
14
|
+
const keysToRedact = ['databaseURI', 'masterKey', 'maintenanceKey', 'push'];
|
|
10
15
|
for (const key in options) {
|
|
11
16
|
let value = options[key];
|
|
12
|
-
if (key
|
|
13
|
-
value = '
|
|
14
|
-
}
|
|
15
|
-
if (key == 'push' && options.verbose != true) {
|
|
16
|
-
value = '***REDACTED***';
|
|
17
|
+
if (keysToRedact.includes(key)) {
|
|
18
|
+
value = '<REDACTED>';
|
|
17
19
|
}
|
|
18
20
|
if (typeof value === 'object') {
|
|
19
21
|
try {
|
|
@@ -49,4 +51,4 @@ function _default({
|
|
|
49
51
|
logStartupOptions(options);
|
|
50
52
|
});
|
|
51
53
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dTdGFydHVwT3B0aW9ucyIsIm9wdGlvbnMiLCJ2ZXJib3NlIiwia2V5c1RvUmVkYWN0Iiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiY29uc29sZSIsImxvZyIsImRlZmluaXRpb25zIiwiaGVscCIsInVzYWdlIiwic3RhcnQiLCJwcm9ncmFtIiwibG9hZERlZmluaXRpb25zIiwib24iLCJwYXJzZSIsInByb2Nlc3MiLCJhcmd2IiwiZW52IiwiZ2V0T3B0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvdXRpbHMvcnVubmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9ncmFtIGZyb20gJy4vY29tbWFuZGVyJztcblxuZnVuY3Rpb24gbG9nU3RhcnR1cE9wdGlvbnMob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMudmVyYm9zZSkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBLZXlzIHRoYXQgbWF5IGluY2x1ZGUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHRoYXQgd2lsbCBiZSByZWRhY3RlZCBpbiBsb2dzXG4gIGNvbnN0IGtleXNUb1JlZGFjdCA9IFtcbiAgICAnZGF0YWJhc2VVUkknLFxuICAgICdtYXN0ZXJLZXknLFxuICAgICdtYWludGVuYW5jZUtleScsXG4gICAgJ3B1c2gnLFxuICBdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvcHRpb25zKSB7XG4gICAgbGV0IHZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgIGlmIChrZXlzVG9SZWRhY3QuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgdmFsdWUgPSAnPFJFREFDVEVEPic7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICAgIGNvbnNvbGUubG9nKGAke2tleX06ICR7dmFsdWV9YCk7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHsgZGVmaW5pdGlvbnMsIGhlbHAsIHVzYWdlLCBzdGFydCB9KSB7XG4gIHByb2dyYW0ubG9hZERlZmluaXRpb25zKGRlZmluaXRpb25zKTtcbiAgaWYgKHVzYWdlKSB7XG4gICAgcHJvZ3JhbS51c2FnZSh1c2FnZSk7XG4gIH1cbiAgaWYgKGhlbHApIHtcbiAgICBwcm9ncmFtLm9uKCctLWhlbHAnLCBoZWxwKTtcbiAgfVxuICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndiwgcHJvY2Vzcy5lbnYpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSBwcm9ncmFtLmdldE9wdGlvbnMoKTtcbiAgc3RhcnQocHJvZ3JhbSwgb3B0aW9ucywgZnVuY3Rpb24gKCkge1xuICAgIGxvZ1N0YXJ0dXBPcHRpb25zKG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFBa0M7QUFFbEMsU0FBU0EsaUJBQWlCLENBQUNDLE9BQU8sRUFBRTtFQUNsQyxJQUFJLENBQUNBLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO0lBQ3BCO0VBQ0Y7RUFDQTtFQUNBLE1BQU1DLFlBQVksR0FBRyxDQUNuQixhQUFhLEVBQ2IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixNQUFNLENBQ1A7RUFDRCxLQUFLLE1BQU1DLEdBQUcsSUFBSUgsT0FBTyxFQUFFO0lBQ3pCLElBQUlJLEtBQUssR0FBR0osT0FBTyxDQUFDRyxHQUFHLENBQUM7SUFDeEIsSUFBSUQsWUFBWSxDQUFDRyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxFQUFFO01BQzlCQyxLQUFLLEdBQUcsWUFBWTtJQUN0QjtJQUNBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixJQUFJO1FBQ0ZBLEtBQUssR0FBR0UsSUFBSSxDQUFDQyxTQUFTLENBQUNILEtBQUssQ0FBQztNQUMvQixDQUFDLENBQUMsT0FBT0ksQ0FBQyxFQUFFO1FBQ1YsSUFBSUosS0FBSyxJQUFJQSxLQUFLLENBQUNLLFdBQVcsSUFBSUwsS0FBSyxDQUFDSyxXQUFXLENBQUNDLElBQUksRUFBRTtVQUN4RE4sS0FBSyxHQUFHQSxLQUFLLENBQUNLLFdBQVcsQ0FBQ0MsSUFBSTtRQUNoQztNQUNGO0lBQ0Y7SUFDQTtJQUNBQyxPQUFPLENBQUNDLEdBQUcsQ0FBRSxHQUFFVCxHQUFJLEtBQUlDLEtBQU0sRUFBQyxDQUFDO0lBQy9CO0VBQ0Y7QUFDRjs7QUFFZSxrQkFBVTtFQUFFUyxXQUFXO0VBQUVDLElBQUk7RUFBRUMsS0FBSztFQUFFQztBQUFNLENBQUMsRUFBRTtFQUM1REMsa0JBQU8sQ0FBQ0MsZUFBZSxDQUFDTCxXQUFXLENBQUM7RUFDcEMsSUFBSUUsS0FBSyxFQUFFO0lBQ1RFLGtCQUFPLENBQUNGLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0VBQ3RCO0VBQ0EsSUFBSUQsSUFBSSxFQUFFO0lBQ1JHLGtCQUFPLENBQUNFLEVBQUUsQ0FBQyxRQUFRLEVBQUVMLElBQUksQ0FBQztFQUM1QjtFQUNBRyxrQkFBTyxDQUFDRyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0MsSUFBSSxFQUFFRCxPQUFPLENBQUNFLEdBQUcsQ0FBQztFQUV4QyxNQUFNdkIsT0FBTyxHQUFHaUIsa0JBQU8sQ0FBQ08sVUFBVSxFQUFFO0VBQ3BDUixLQUFLLENBQUNDLGtCQUFPLEVBQUVqQixPQUFPLEVBQUUsWUFBWTtJQUNsQ0QsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQztFQUM1QixDQUFDLENBQUM7QUFDSiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parse-server",
|
|
3
|
-
"version": "6.3.0-alpha.
|
|
3
|
+
"version": "6.3.0-alpha.7",
|
|
4
4
|
"description": "An express module providing a Parse-compatible API server",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@graphql-tools/utils": "8.12.0",
|
|
26
26
|
"@graphql-yoga/node": "2.6.0",
|
|
27
27
|
"@parse/fs-files-adapter": "1.2.2",
|
|
28
|
-
"@parse/push-adapter": "4.
|
|
28
|
+
"@parse/push-adapter": "4.2.0",
|
|
29
29
|
"bcryptjs": "2.4.3",
|
|
30
30
|
"body-parser": "1.20.2",
|
|
31
31
|
"commander": "10.0.1",
|