parse-server 6.0.0-alpha.2 → 6.0.0-alpha.21
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/README.md +45 -17
- package/lib/AccountLockout.js +11 -26
- package/lib/Adapters/AdapterLoader.js +8 -14
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -8
- package/lib/Adapters/Auth/AuthAdapter.js +7 -16
- package/lib/Adapters/Auth/OAuth1Client.js +32 -57
- package/lib/Adapters/Auth/apple.js +6 -22
- package/lib/Adapters/Auth/facebook.js +7 -37
- package/lib/Adapters/Auth/gcenter.js +8 -37
- package/lib/Adapters/Auth/github.js +7 -10
- package/lib/Adapters/Auth/google.js +11 -34
- package/lib/Adapters/Auth/gpgames.js +5 -8
- package/lib/Adapters/Auth/httpsRequest.js +1 -7
- package/lib/Adapters/Auth/index.js +20 -65
- package/lib/Adapters/Auth/instagram.js +5 -9
- package/lib/Adapters/Auth/janraincapture.js +8 -12
- package/lib/Adapters/Auth/janrainengage.js +7 -11
- package/lib/Adapters/Auth/keycloak.js +5 -19
- package/lib/Adapters/Auth/ldap.js +1 -15
- package/lib/Adapters/Auth/line.js +7 -10
- package/lib/Adapters/Auth/linkedin.js +7 -12
- package/lib/Adapters/Auth/meetup.js +7 -10
- package/lib/Adapters/Auth/microsoft.js +7 -10
- package/lib/Adapters/Auth/oauth2.js +6 -18
- package/lib/Adapters/Auth/phantauth.js +8 -10
- package/lib/Adapters/Auth/qq.js +7 -13
- package/lib/Adapters/Auth/spotify.js +7 -14
- package/lib/Adapters/Auth/twitter.js +5 -15
- package/lib/Adapters/Auth/vkontakte.js +9 -15
- package/lib/Adapters/Auth/wechat.js +7 -10
- package/lib/Adapters/Auth/weibo.js +7 -11
- package/lib/Adapters/Cache/CacheAdapter.js +4 -12
- package/lib/Adapters/Cache/InMemoryCache.js +5 -19
- package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -11
- package/lib/Adapters/Cache/LRUCache.js +1 -11
- package/lib/Adapters/Cache/NullCacheAdapter.js +1 -8
- package/lib/Adapters/Cache/RedisCacheAdapter.js +46 -87
- package/lib/Adapters/Cache/SchemaCache.js +1 -6
- package/lib/Adapters/Email/MailAdapter.js +2 -7
- package/lib/Adapters/Files/FilesAdapter.js +7 -21
- package/lib/Adapters/Files/GridFSBucketAdapter.js +6 -44
- package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
- package/lib/Adapters/Logger/LoggerAdapter.js +2 -11
- package/lib/Adapters/Logger/WinstonLogger.js +3 -30
- package/lib/Adapters/Logger/WinstonLoggerAdapter.js +5 -16
- package/lib/Adapters/MessageQueue/EventEmitterMQ.js +3 -20
- package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -16
- package/lib/Adapters/PubSub/PubSubAdapter.js +2 -9
- package/lib/Adapters/PubSub/RedisPubSub.js +13 -10
- package/lib/Adapters/Push/PushAdapter.js +2 -8
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +12 -37
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +26 -79
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +78 -209
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +82 -371
- package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -13
- package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -20
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +119 -446
- package/lib/Adapters/Storage/Postgres/sql/index.js +4 -7
- package/lib/Adapters/Storage/StorageAdapter.js +1 -1
- package/lib/Adapters/WebSocketServer/WSAdapter.js +3 -12
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +7 -12
- package/lib/Auth.js +54 -121
- package/lib/ClientSDK.js +3 -11
- package/lib/Config.js +69 -113
- package/lib/Controllers/AdaptableController.js +6 -18
- package/lib/Controllers/AnalyticsController.js +1 -9
- package/lib/Controllers/CacheController.js +3 -23
- package/lib/Controllers/DatabaseController.js +147 -345
- package/lib/Controllers/FilesController.js +5 -34
- package/lib/Controllers/HooksController.js +1 -51
- package/lib/Controllers/LiveQueryController.js +4 -23
- package/lib/Controllers/LoggerController.js +15 -54
- package/lib/Controllers/ParseGraphQLController.js +49 -104
- package/lib/Controllers/PushController.js +20 -59
- package/lib/Controllers/SchemaController.js +154 -344
- package/lib/Controllers/UserController.js +11 -72
- package/lib/Controllers/index.js +19 -68
- package/lib/Controllers/types.js +1 -1
- package/lib/Deprecator/Deprecations.js +1 -8
- package/lib/Deprecator/Deprecator.js +9 -18
- package/lib/GraphQL/ParseGraphQLSchema.js +16 -100
- package/lib/GraphQL/ParseGraphQLServer.js +2 -29
- package/lib/GraphQL/helpers/objectsMutations.js +2 -12
- package/lib/GraphQL/helpers/objectsQueries.js +18 -76
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +1 -9
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +1 -8
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +9 -115
- package/lib/GraphQL/loaders/defaultRelaySchema.js +6 -18
- package/lib/GraphQL/loaders/filesMutations.js +2 -19
- package/lib/GraphQL/loaders/functionsMutations.js +6 -17
- package/lib/GraphQL/loaders/parseClassMutations.js +6 -44
- package/lib/GraphQL/loaders/parseClassQueries.js +1 -26
- package/lib/GraphQL/loaders/parseClassTypes.js +10 -64
- package/lib/GraphQL/loaders/schemaDirectives.js +1 -17
- package/lib/GraphQL/loaders/schemaMutations.js +1 -20
- package/lib/GraphQL/loaders/schemaQueries.js +1 -14
- package/lib/GraphQL/loaders/schemaTypes.js +2 -6
- package/lib/GraphQL/loaders/usersMutations.js +6 -28
- package/lib/GraphQL/loaders/usersQueries.js +4 -26
- package/lib/GraphQL/parseGraphQLUtils.js +6 -19
- package/lib/GraphQL/transformers/className.js +1 -4
- package/lib/GraphQL/transformers/constraintType.js +1 -20
- package/lib/GraphQL/transformers/inputType.js +1 -20
- package/lib/GraphQL/transformers/mutation.js +6 -51
- package/lib/GraphQL/transformers/outputType.js +1 -20
- package/lib/GraphQL/transformers/query.js +6 -42
- package/lib/GraphQL/transformers/schemaFields.js +7 -34
- package/lib/KeyPromiseQueue.js +1 -12
- package/lib/LiveQuery/Client.js +1 -25
- package/lib/LiveQuery/Id.js +1 -7
- package/lib/LiveQuery/ParseCloudCodePublisher.js +13 -19
- package/lib/LiveQuery/ParseLiveQueryServer.js +92 -306
- package/lib/LiveQuery/ParsePubSub.js +1 -12
- package/lib/LiveQuery/ParseWebSocketServer.js +4 -26
- package/lib/LiveQuery/QueryTools.js +14 -116
- package/lib/LiveQuery/RequestSchema.js +1 -1
- package/lib/LiveQuery/SessionTokenCache.js +1 -17
- package/lib/LiveQuery/Subscription.js +4 -18
- package/lib/LiveQuery/equalObjects.js +2 -14
- package/lib/Options/Definitions.js +79 -10
- package/lib/Options/docs.js +23 -3
- package/lib/Options/index.js +4 -12
- package/lib/Options/parsers.js +1 -18
- package/lib/Page.js +1 -9
- package/lib/ParseMessageQueue.js +1 -10
- package/lib/ParseServer.js +144 -182
- package/lib/ParseServerRESTController.js +6 -33
- package/lib/PromiseRouter.js +16 -50
- package/lib/Push/PushQueue.js +3 -15
- package/lib/Push/PushWorker.js +7 -32
- package/lib/Push/utils.js +9 -38
- package/lib/RestQuery.js +105 -242
- package/lib/RestWrite.js +212 -377
- package/lib/Routers/AggregateRouter.js +14 -51
- package/lib/Routers/AnalyticsRouter.js +2 -8
- package/lib/Routers/AudiencesRouter.js +1 -15
- package/lib/Routers/ClassesRouter.js +3 -53
- package/lib/Routers/CloudCodeRouter.js +1 -19
- package/lib/Routers/FeaturesRouter.js +1 -10
- package/lib/Routers/FilesRouter.js +29 -76
- package/lib/Routers/FunctionsRouter.js +5 -28
- package/lib/Routers/GlobalConfigRouter.js +4 -18
- package/lib/Routers/GraphQLRouter.js +1 -14
- package/lib/Routers/HooksRouter.js +1 -29
- package/lib/Routers/IAPValidationRouter.js +6 -29
- package/lib/Routers/InstallationsRouter.js +2 -12
- package/lib/Routers/LogsRouter.js +4 -16
- package/lib/Routers/PagesRouter.js +69 -129
- package/lib/Routers/PublicAPIRouter.js +3 -62
- package/lib/Routers/PurgeRouter.js +1 -15
- package/lib/Routers/PushRouter.js +2 -18
- package/lib/Routers/RolesRouter.js +1 -7
- package/lib/Routers/SchemasRouter.js +4 -34
- package/lib/Routers/SecurityRouter.js +1 -12
- package/lib/Routers/SessionsRouter.js +3 -19
- package/lib/Routers/UsersRouter.js +58 -155
- package/lib/SchemaMigrations/DefinedSchemas.js +56 -115
- package/lib/SchemaMigrations/Migrations.js +2 -8
- package/lib/Security/Check.js +8 -16
- package/lib/Security/CheckGroup.js +4 -11
- package/lib/Security/CheckGroups/CheckGroupDatabase.js +8 -18
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +5 -15
- package/lib/Security/CheckGroups/CheckGroups.js +1 -4
- package/lib/Security/CheckRunner.js +22 -41
- package/lib/StatusHandler.js +12 -69
- package/lib/TestUtils.js +1 -6
- package/lib/Utils.js +27 -66
- package/lib/batch.js +17 -28
- package/lib/cache.js +1 -3
- package/lib/cli/definitions/parse-live-query-server.js +1 -3
- package/lib/cli/definitions/parse-server.js +1 -3
- package/lib/cli/parse-live-query-server.js +1 -6
- package/lib/cli/parse-server.js +11 -21
- package/lib/cli/utils/commander.js +13 -51
- package/lib/cli/utils/runner.js +1 -14
- package/lib/cloud-code/Parse.Cloud.js +71 -92
- package/lib/cryptoUtils.js +11 -19
- package/lib/defaults.js +2 -14
- package/lib/deprecated.js +1 -2
- package/lib/index.js +16 -34
- package/lib/logger.js +6 -13
- package/lib/middlewares.js +147 -151
- package/lib/password.js +6 -10
- package/lib/request.js +173 -2
- package/lib/requiredParameter.js +1 -3
- package/lib/rest.js +19 -41
- package/lib/triggers.js +54 -252
- package/lib/vendor/mongodbUrl.js +125 -305
- package/package.json +22 -19
- package/lib/cloud-code/HTTPResponse.js +0 -73
- package/lib/cloud-code/httpRequest.js +0 -192
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var https = require('https'),
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
crypto = require('crypto');
|
|
6
5
|
var Parse = require('parse/node').Parse;
|
|
7
|
-
|
|
8
6
|
var OAuth = function (options) {
|
|
9
7
|
if (!options) {
|
|
10
8
|
throw new Parse.Error(Parse.Error.INTERNAL_SERVER_ERROR, 'No options passed to OAuth');
|
|
11
9
|
}
|
|
12
|
-
|
|
13
10
|
this.consumer_key = options.consumer_key;
|
|
14
11
|
this.consumer_secret = options.consumer_secret;
|
|
15
12
|
this.auth_token = options.auth_token;
|
|
@@ -17,10 +14,9 @@ var OAuth = function (options) {
|
|
|
17
14
|
this.host = options.host;
|
|
18
15
|
this.oauth_params = options.oauth_params || {};
|
|
19
16
|
};
|
|
20
|
-
|
|
21
17
|
OAuth.prototype.send = function (method, path, params, body) {
|
|
22
|
-
var request = this.buildRequest(method, path, params, body);
|
|
23
|
-
|
|
18
|
+
var request = this.buildRequest(method, path, params, body);
|
|
19
|
+
// Encode the body properly, the current Parse Implementation don't do it properly
|
|
24
20
|
return new Promise(function (resolve, reject) {
|
|
25
21
|
var httpRequest = https.request(request, function (res) {
|
|
26
22
|
var data = '';
|
|
@@ -34,24 +30,19 @@ OAuth.prototype.send = function (method, path, params, body) {
|
|
|
34
30
|
}).on('error', function () {
|
|
35
31
|
reject('Failed to make an OAuth request');
|
|
36
32
|
});
|
|
37
|
-
|
|
38
33
|
if (request.body) {
|
|
39
34
|
httpRequest.write(request.body);
|
|
40
35
|
}
|
|
41
|
-
|
|
42
36
|
httpRequest.end();
|
|
43
37
|
});
|
|
44
38
|
};
|
|
45
|
-
|
|
46
39
|
OAuth.prototype.buildRequest = function (method, path, params, body) {
|
|
47
40
|
if (path.indexOf('/') != 0) {
|
|
48
41
|
path = '/' + path;
|
|
49
42
|
}
|
|
50
|
-
|
|
51
43
|
if (params && Object.keys(params).length > 0) {
|
|
52
44
|
path += '?' + OAuth.buildParameterString(params);
|
|
53
45
|
}
|
|
54
|
-
|
|
55
46
|
var request = {
|
|
56
47
|
host: this.host,
|
|
57
48
|
path: path,
|
|
@@ -59,32 +50,25 @@ OAuth.prototype.buildRequest = function (method, path, params, body) {
|
|
|
59
50
|
};
|
|
60
51
|
var oauth_params = this.oauth_params || {};
|
|
61
52
|
oauth_params.oauth_consumer_key = this.consumer_key;
|
|
62
|
-
|
|
63
53
|
if (this.auth_token) {
|
|
64
54
|
oauth_params['oauth_token'] = this.auth_token;
|
|
65
55
|
}
|
|
66
|
-
|
|
67
56
|
request = OAuth.signRequest(request, oauth_params, this.consumer_secret, this.auth_token_secret);
|
|
68
|
-
|
|
69
57
|
if (body && Object.keys(body).length > 0) {
|
|
70
58
|
request.body = OAuth.buildParameterString(body);
|
|
71
59
|
}
|
|
72
|
-
|
|
73
60
|
return request;
|
|
74
61
|
};
|
|
75
|
-
|
|
76
62
|
OAuth.prototype.get = function (path, params) {
|
|
77
63
|
return this.send('GET', path, params);
|
|
78
64
|
};
|
|
79
|
-
|
|
80
65
|
OAuth.prototype.post = function (path, params, body) {
|
|
81
66
|
return this.send('POST', path, params, body);
|
|
82
67
|
};
|
|
68
|
+
|
|
83
69
|
/*
|
|
84
70
|
Proper string %escape encoding
|
|
85
71
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
72
|
OAuth.encode = function (str) {
|
|
89
73
|
// discuss at: http://phpjs.org/functions/rawurlencode/
|
|
90
74
|
// original by: Brett Zamir (http://brett-zamir.me)
|
|
@@ -106,122 +90,113 @@ OAuth.encode = function (str) {
|
|
|
106
90
|
// returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
|
|
107
91
|
// example 3: rawurlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
|
|
108
92
|
// returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
|
|
109
|
-
str = (str + '').toString(); // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
|
|
110
|
-
// PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
|
|
111
93
|
|
|
94
|
+
str = (str + '').toString();
|
|
95
|
+
|
|
96
|
+
// Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
|
|
97
|
+
// PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
|
|
112
98
|
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A');
|
|
113
99
|
};
|
|
114
|
-
|
|
115
100
|
OAuth.signatureMethod = 'HMAC-SHA1';
|
|
116
101
|
OAuth.version = '1.0';
|
|
102
|
+
|
|
117
103
|
/*
|
|
118
104
|
Generate a nonce
|
|
119
105
|
*/
|
|
120
|
-
|
|
121
106
|
OAuth.nonce = function () {
|
|
122
107
|
var text = '';
|
|
123
108
|
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
124
|
-
|
|
125
109
|
for (var i = 0; i < 30; i++) text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
126
|
-
|
|
127
110
|
return text;
|
|
128
111
|
};
|
|
129
|
-
|
|
130
112
|
OAuth.buildParameterString = function (obj) {
|
|
131
113
|
// Sort keys and encode values
|
|
132
114
|
if (obj) {
|
|
133
|
-
var keys = Object.keys(obj).sort();
|
|
115
|
+
var keys = Object.keys(obj).sort();
|
|
134
116
|
|
|
117
|
+
// Map key=value, join them by &
|
|
135
118
|
return keys.map(function (key) {
|
|
136
119
|
return key + '=' + OAuth.encode(obj[key]);
|
|
137
120
|
}).join('&');
|
|
138
121
|
}
|
|
139
|
-
|
|
140
122
|
return '';
|
|
141
123
|
};
|
|
124
|
+
|
|
142
125
|
/*
|
|
143
126
|
Build the signature string from the object
|
|
144
127
|
*/
|
|
145
128
|
|
|
146
|
-
|
|
147
129
|
OAuth.buildSignatureString = function (method, url, parameters) {
|
|
148
130
|
return [method.toUpperCase(), OAuth.encode(url), OAuth.encode(parameters)].join('&');
|
|
149
131
|
};
|
|
132
|
+
|
|
150
133
|
/*
|
|
151
134
|
Retuns encoded HMAC-SHA1 from key and text
|
|
152
135
|
*/
|
|
153
|
-
|
|
154
|
-
|
|
155
136
|
OAuth.signature = function (text, key) {
|
|
156
137
|
crypto = require('crypto');
|
|
157
138
|
return OAuth.encode(crypto.createHmac('sha1', key).update(text).digest('base64'));
|
|
158
139
|
};
|
|
159
|
-
|
|
160
140
|
OAuth.signRequest = function (request, oauth_parameters, consumer_secret, auth_token_secret) {
|
|
161
|
-
oauth_parameters = oauth_parameters || {};
|
|
141
|
+
oauth_parameters = oauth_parameters || {};
|
|
162
142
|
|
|
143
|
+
// Set default values
|
|
163
144
|
if (!oauth_parameters.oauth_nonce) {
|
|
164
145
|
oauth_parameters.oauth_nonce = OAuth.nonce();
|
|
165
146
|
}
|
|
166
|
-
|
|
167
147
|
if (!oauth_parameters.oauth_timestamp) {
|
|
168
148
|
oauth_parameters.oauth_timestamp = Math.floor(new Date().getTime() / 1000);
|
|
169
149
|
}
|
|
170
|
-
|
|
171
150
|
if (!oauth_parameters.oauth_signature_method) {
|
|
172
151
|
oauth_parameters.oauth_signature_method = OAuth.signatureMethod;
|
|
173
152
|
}
|
|
174
|
-
|
|
175
153
|
if (!oauth_parameters.oauth_version) {
|
|
176
154
|
oauth_parameters.oauth_version = OAuth.version;
|
|
177
155
|
}
|
|
178
|
-
|
|
179
156
|
if (!auth_token_secret) {
|
|
180
157
|
auth_token_secret = '';
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
158
|
+
}
|
|
159
|
+
// Force GET method if unset
|
|
184
160
|
if (!request.method) {
|
|
185
161
|
request.method = 'GET';
|
|
186
|
-
}
|
|
187
|
-
|
|
162
|
+
}
|
|
188
163
|
|
|
164
|
+
// Collect all the parameters in one signatureParameters object
|
|
189
165
|
var signatureParams = {};
|
|
190
166
|
var parametersToMerge = [request.params, request.body, oauth_parameters];
|
|
191
|
-
|
|
192
167
|
for (var i in parametersToMerge) {
|
|
193
168
|
var parameters = parametersToMerge[i];
|
|
194
|
-
|
|
195
169
|
for (var k in parameters) {
|
|
196
170
|
signatureParams[k] = parameters[k];
|
|
197
171
|
}
|
|
198
|
-
}
|
|
199
|
-
|
|
172
|
+
}
|
|
200
173
|
|
|
201
|
-
|
|
174
|
+
// Create a string based on the parameters
|
|
175
|
+
var parameterString = OAuth.buildParameterString(signatureParams);
|
|
202
176
|
|
|
177
|
+
// Build the signature string
|
|
203
178
|
var url = 'https://' + request.host + '' + request.path;
|
|
204
|
-
var signatureString = OAuth.buildSignatureString(request.method, url, parameterString);
|
|
205
|
-
|
|
179
|
+
var signatureString = OAuth.buildSignatureString(request.method, url, parameterString);
|
|
180
|
+
// Hash the signature string
|
|
206
181
|
var signatureKey = [OAuth.encode(consumer_secret), OAuth.encode(auth_token_secret)].join('&');
|
|
207
|
-
var signature = OAuth.signature(signatureString, signatureKey);
|
|
182
|
+
var signature = OAuth.signature(signatureString, signatureKey);
|
|
208
183
|
|
|
184
|
+
// Set the signature in the params
|
|
209
185
|
oauth_parameters.oauth_signature = signature;
|
|
210
|
-
|
|
211
186
|
if (!request.headers) {
|
|
212
187
|
request.headers = {};
|
|
213
|
-
}
|
|
214
|
-
|
|
188
|
+
}
|
|
215
189
|
|
|
190
|
+
// Set the authorization header
|
|
216
191
|
var authHeader = Object.keys(oauth_parameters).sort().map(function (key) {
|
|
217
192
|
var value = oauth_parameters[key];
|
|
218
193
|
return key + '="' + value + '"';
|
|
219
194
|
}).join(', ');
|
|
220
|
-
request.headers.Authorization = 'OAuth ' + authHeader;
|
|
195
|
+
request.headers.Authorization = 'OAuth ' + authHeader;
|
|
221
196
|
|
|
197
|
+
// Set the content type header
|
|
222
198
|
request.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
223
199
|
return request;
|
|
224
200
|
};
|
|
225
|
-
|
|
226
201
|
module.exports = OAuth;
|
|
227
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL09BdXRoMUNsaWVudC5qcyJdLCJuYW1lcyI6WyJodHRwcyIsInJlcXVpcmUiLCJjcnlwdG8iLCJQYXJzZSIsIk9BdXRoIiwib3B0aW9ucyIsIkVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiY29uc3VtZXJfa2V5IiwiY29uc3VtZXJfc2VjcmV0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiaG9zdCIsIm9hdXRoX3BhcmFtcyIsInByb3RvdHlwZSIsInNlbmQiLCJtZXRob2QiLCJwYXRoIiwicGFyYW1zIiwiYm9keSIsInJlcXVlc3QiLCJidWlsZFJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImh0dHBSZXF1ZXN0IiwicmVzIiwiZGF0YSIsIm9uIiwiY2h1bmsiLCJKU09OIiwicGFyc2UiLCJ3cml0ZSIsImVuZCIsImluZGV4T2YiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYnVpbGRQYXJhbWV0ZXJTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsIm9hdXRoX2NvbnN1bWVyX2tleSIsInNpZ25SZXF1ZXN0IiwiZ2V0IiwicG9zdCIsImVuY29kZSIsInN0ciIsInRvU3RyaW5nIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInNpZ25hdHVyZU1ldGhvZCIsInZlcnNpb24iLCJub25jZSIsInRleHQiLCJwb3NzaWJsZSIsImkiLCJjaGFyQXQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJvYmoiLCJzb3J0IiwibWFwIiwia2V5Iiwiam9pbiIsImJ1aWxkU2lnbmF0dXJlU3RyaW5nIiwidXJsIiwicGFyYW1ldGVycyIsInNpZ25hdHVyZSIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJkaWdlc3QiLCJvYXV0aF9wYXJhbWV0ZXJzIiwib2F1dGhfbm9uY2UiLCJvYXV0aF90aW1lc3RhbXAiLCJEYXRlIiwiZ2V0VGltZSIsIm9hdXRoX3NpZ25hdHVyZV9tZXRob2QiLCJvYXV0aF92ZXJzaW9uIiwic2lnbmF0dXJlUGFyYW1zIiwicGFyYW1ldGVyc1RvTWVyZ2UiLCJrIiwicGFyYW1ldGVyU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwic2lnbmF0dXJlS2V5Iiwib2F1dGhfc2lnbmF0dXJlIiwiaGVhZGVycyIsImF1dGhIZWFkZXIiLCJ2YWx1ZSIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBbkI7QUFBQSxJQUNFQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBRGxCOztBQUVBLElBQUlFLEtBQUssR0FBR0YsT0FBTyxDQUFDLFlBQUQsQ0FBUCxDQUFzQkUsS0FBbEM7O0FBRUEsSUFBSUMsS0FBSyxHQUFHLFVBQVVDLE9BQVYsRUFBbUI7QUFDN0IsTUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWixVQUFNLElBQUlGLEtBQUssQ0FBQ0csS0FBVixDQUFnQkgsS0FBSyxDQUFDRyxLQUFOLENBQVlDLHFCQUE1QixFQUFtRCw0QkFBbkQsQ0FBTjtBQUNEOztBQUNELE9BQUtDLFlBQUwsR0FBb0JILE9BQU8sQ0FBQ0csWUFBNUI7QUFDQSxPQUFLQyxlQUFMLEdBQXVCSixPQUFPLENBQUNJLGVBQS9CO0FBQ0EsT0FBS0MsVUFBTCxHQUFrQkwsT0FBTyxDQUFDSyxVQUExQjtBQUNBLE9BQUtDLGlCQUFMLEdBQXlCTixPQUFPLENBQUNNLGlCQUFqQztBQUNBLE9BQUtDLElBQUwsR0FBWVAsT0FBTyxDQUFDTyxJQUFwQjtBQUNBLE9BQUtDLFlBQUwsR0FBb0JSLE9BQU8sQ0FBQ1EsWUFBUixJQUF3QixFQUE1QztBQUNELENBVkQ7O0FBWUFULEtBQUssQ0FBQ1UsU0FBTixDQUFnQkMsSUFBaEIsR0FBdUIsVUFBVUMsTUFBVixFQUFrQkMsSUFBbEIsRUFBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztBQUMzRCxNQUFJQyxPQUFPLEdBQUcsS0FBS0Ms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LGVBQWpCLEdBQW1DakIsU0FBbkM7O0FBQ0EsTUFBSSxDQUFDL0MsT0FBTyxDQUFDaUUsT0FBYixFQUFzQjtBQUNwQmpFLElBQUFBLE9BQU8sQ0FBQ2lFLE9BQVIsR0FBa0IsRUFBbEI7QUFDRCxHQW5EMEYsQ0FxRDNGOzs7QUFDQSxNQUFJQyxVQUFVLEdBQUduRCxNQUFNLENBQUNDLElBQVAsQ0FBWW1DLGdCQUFaLEVBQ2RYLElBRGMsR0FFZEMsR0FGYyxDQUVWLFVBQVVDLEdBQVYsRUFBZTtBQUNsQixRQUFJeUIsS0FBSyxHQUFHaEIsZ0JBQWdCLENBQUNULEdBQUQsQ0FBNUI7QUFDQSxXQUFPQSxHQUFHLEdBQUcsSUFBTixHQUFheUIsS0FBYixHQUFxQixHQUE1QjtBQUNELEdBTGMsRUFNZHhCLElBTmMsQ0FNVCxJQU5TLENBQWpCO0FBUUEzQyxFQUFBQSxPQUFPLENBQUNpRSxPQUFSLENBQWdCRyxhQUFoQixHQUFnQyxXQUFXRixVQUEzQyxDQTlEMkYsQ0FnRTNGOztBQUNBbEUsRUFBQUEsT0FBTyxDQUFDaUUsT0FBUixDQUFnQixjQUFoQixJQUFrQyxtQ0FBbEM7QUFDQSxTQUFPakUsT0FBUDtBQUNELENBbkVEOztBQXFFQXFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnRGLEtBQWpCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKSxcbiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbnZhciBPQXV0aCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsICdObyBvcHRpb25zIHBhc3NlZCB0byBPQXV0aCcpO1xuICB9XG4gIHRoaXMuY29uc3VtZXJfa2V5ID0gb3B0aW9ucy5jb25zdW1lcl9rZXk7XG4gIHRoaXMuY29uc3VtZXJfc2VjcmV0ID0gb3B0aW9ucy5jb25zdW1lcl9zZWNyZXQ7XG4gIHRoaXMuYXV0aF90b2tlbiA9IG9wdGlvbnMuYXV0aF90b2tlbjtcbiAgdGhpcy5hdXRoX3Rva2VuX3NlY3JldCA9IG9wdGlvbnMuYXV0aF90b2tlbl9zZWNyZXQ7XG4gIHRoaXMuaG9zdCA9IG9wdGlvbnMuaG9zdDtcbiAgdGhpcy5vYXV0aF9wYXJhbXMgPSBvcHRpb25zLm9hdXRoX3BhcmFtcyB8fCB7fTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKG1ldGhvZCwgcGF0aCwgcGFyYW1zLCBib2R5KSB7XG4gIHZhciByZXF1ZXN0ID0gdGhpcy5idWlsZFJlcXVlc3QobWV0aG9kLCBwYXRoLCBwYXJhbXMsIGJvZHkpO1xuICAvLyBFbmNvZGUgdGhlIGJvZHkgcHJvcGVybHksIHRoZSBjdXJyZW50IFBhcnNlIEltcGxlbWVudGF0aW9uIGRvbid0IGRvIGl0IHByb3Blcmx5XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIGh0dHBSZXF1ZXN0ID0gaHR0cHNcbiAgICAgIC5yZXF1ZXN0KHJlcXVlc3QsIGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAnJztcbiAgICAgICAgcmVzLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgICAgZGF0YSArPSBjaHVuaztcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcy5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlamVjdCgnRmFpbGVkIHRvIG1ha2UgYW4gT0F1dGggcmVxdWVzdCcpO1xuICAgICAgfSk7XG4gICAgaWYgKHJlcXVlc3QuYm9keSkge1xuICAgICAgaHR0cFJlcXVlc3Qud3JpdGUocmVxdWVzdC5ib2R5KTtcbiAgICB9XG4gICAgaHR0cFJlcXVlc3QuZW5kKCk7XG4gIH0pO1xufTtcblxuT0F1dGgucHJvdG90eXBlLmJ1aWxkUmVxdWVzdCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHBhcmFtcywgYm9keSkge1xuICBpZiAocGF0aC5pbmRleE9mKCcvJykgIT0gMCkge1xuICAgIHBhdGggPSAnLycgKyBwYXRoO1xuICB9XG4gIGlmIChwYXJhbXMgJiYgT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgcGF0aCArPSAnPycgKyBPQXV0aC5idWlsZFBhcmFtZXRlclN0cmluZyhwYXJhbXMpO1xuICB9XG5cbiAgdmFyIHJlcXVlc3QgPSB7XG4gICAgaG9zdDogdGhpcy5ob3N0LFxuICAgIHBhdGg6IHBhdGgsXG4gICAgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKSxcbiAgfTtcblxuICB2YXIgb2F1dGhfcGFyYW1zID0gdGhpcy5vYXV0aF9wYXJhbXMgfHwge307XG4gIG9hdXRoX3BhcmFtcy5vYXV0aF9jb25zdW1lcl9rZXkgPSB0aGlzLmNvbnN1bWVyX2tleTtcbiAgaWYgKHRoaXMuYXV0aF90b2tlbikge1xuICAgIG9hdXRoX3BhcmFtc1snb2F1dGhfdG9rZW4nXSA9IHRoaXMuYXV0aF90b2tlbjtcbiAgfVxuXG4gIHJlcXVlc3QgPSBPQXV0aC5zaWduUmVxdWVzdChyZXF1ZXN0LCBvYXV0aF9wYXJhbXMsIHRoaXMuY29uc3VtZXJfc2VjcmV0LCB0aGlzLmF1dGhfdG9rZW5fc2VjcmV0KTtcblxuICBpZiAoYm9keSAmJiBPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPiAwKSB7XG4gICAgcmVxdWVzdC5ib2R5ID0gT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcoYm9keSk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuXG5PQXV0aC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHBhdGgsIHBhcmFtcykge1xuICByZXR1cm4gdGhpcy5zZW5kKCdHRVQnLCBwYXRoLCBwYXJhbXMpO1xufTtcblxuT0F1dGgucHJvdG90eXBlLnBvc3QgPSBmdW5jdGlvbiAocGF0aCwgcGFyYW1zLCBib2R5KSB7XG4gIHJldHVybiB0aGlzLnNlbmQoJ1BPU1QnLCBwYXRoLCBwYXJhbXMsIGJvZHkpO1xufTtcblxuLypcblx0UHJvcGVyIHN0cmluZyAlZXNjYXBlIGVuY29kaW5nXG4qL1xuT0F1dGguZW5jb2RlID0gZnVuY3Rpb24gKHN0cikge1xuICAvLyAgICAgICBkaXNjdXNzIGF0OiBodHRwOi8vcGhwanMub3JnL2Z1bmN0aW9ucy9yYXd1cmxlbmNvZGUvXG4gIC8vICAgICAgb3JpZ2luYWwgYnk6IEJyZXR0IFphbWlyIChodHRwOi8vYnJldHQtemFtaXIubWUpXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IHRyYXZjXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IEJyZXR0IFphbWlyIChodHRwOi8vYnJldHQtemFtaXIubWUpXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IE1pY2hhZWwgR3JpZXJcbiAgLy8gICAgICAgICBpbnB1dCBieTogUmF0aGVvdXNcbiAgLy8gICAgICBidWdmaXhlZCBieTogS2V2aW4gdmFuIFpvbm5ldmVsZCAoaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQpXG4gIC8vICAgICAgYnVnZml4ZWQgYnk6IEJyZXR0IFphbWlyIChodHRwOi8vYnJldHQtemFtaXIubWUpXG4gIC8vICAgICAgYnVnZml4ZWQgYnk6IEpvcmlzXG4gIC8vIHJlaW1wbGVtZW50ZWQgYnk6IEJyZXR0IFphbWlyIChodHRwOi8vYnJldHQtemFtaXIubWUpXG4gIC8vIHJlaW1wbGVtZW50ZWQgYnk6IEJyZXR0IFphbWlyIChodHRwOi8vYnJldHQtemFtaXIubWUpXG4gIC8vICAgICAgICAgICAgIG5vdGU6IFRoaXMgcmVmbGVjdHMgUEhQIDUuMy82LjArIGJlaGF2aW9yXG4gIC8vICAgICAgICAgICAgIG5vdGU6IFBsZWFzZSBiZSBhd2FyZSB0aGF0IHRoaXMgZnVuY3Rpb24gZXhwZWN0cyB0byBlbmNvZGUgaW50byBVVEYtOCBlbmNvZGVkIHN0cmluZ3MsIGFzIGZvdW5kIG9uXG4gIC8vICAgICAgICAgICAgIG5vdGU6IHBhZ2VzIHNlcnZlZCBhcyBVVEYtOFxuICAvLyAgICAgICAgZXhhbXBsZSAxOiByYXd1cmxlbmNvZGUoJ0tldmluIHZhbiBab25uZXZlbGQhJyk7XG4gIC8vICAgICAgICByZXR1cm5zIDE6ICdLZXZpbiUyMHZhbiUyMFpvbm5ldmVsZCUyMSdcbiAgLy8gICAgICAgIGV4YW1wbGUgMjogcmF3dXJsZW5jb2RlKCdodHRwOi8va2V2aW4udmFuem9ubmV2ZWxkLm5ldC8nKTtcbiAgLy8gICAgICAgIHJldHVybnMgMjogJ2h0dHAlM0ElMkYlMkZrZXZpbi52YW56b25uZXZlbGQubmV0JTJGJ1xuICAvLyAgICAgICAgZXhhbXBsZSAzOiByYXd1cmxlbmNvZGUoJ2h0dHA6Ly93d3cuZ29vZ2xlLm5sL3NlYXJjaD9xPXBocC5qcyZpZT11dGYtOCZvZT11dGYtOCZhcT10JnJscz1jb20udWJ1bnR1OmVuLVVTOnVub2ZmaWNpYWwmY2xpZW50PWZpcmVmb3gtYScpO1xuICAvLyAgICAgICAgcmV0dXJucyAzOiAnaHR0cCUzQSUyRiUyRnd3dy5nb29nbGUubmwlMkZzZWFyY2glM0ZxJTNEcGhwLmpzJTI2aWUlM0R1dGYtOCUyNm9lJTNEdXRmLTglMjZhcSUzRHQlMjZybHMlM0Rjb20udWJ1bnR1JTNBZW4tVVMlM0F1bm9mZmljaWFsJTI2Y2xpZW50JTNEZmlyZWZveC1hJ1xuXG4gIHN0ciA9IChzdHIgKyAnJykudG9TdHJpbmcoKTtcblxuICAvLyBUaWxkZSBzaG91bGQgYmUgYWxsb3dlZCB1bmVzY2FwZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFBIUCAoYXMgcmVmbGVjdGVkIGJlbG93KSwgYnV0IGlmIHlvdSB3YW50IHRvIHJlZmxlY3QgY3VycmVudFxuICAvLyBQSFAgYmVoYXZpb3IsIHlvdSB3b3VsZCBuZWVkIHRvIGFkZCBcIi5yZXBsYWNlKC9+L2csICclN0UnKTtcIiB0byB0aGUgZm9sbG93aW5nLlxuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cilcbiAgICAucmVwbGFjZSgvIS9nLCAnJTIxJylcbiAgICAucmVwbGFjZSgvJy9nLCAnJTI3JylcbiAgICAucmVwbGFjZSgvXFwoL2csICclMjgnKVxuICAgIC5yZXBsYWNlKC9cXCkvZywgJyUyOScpXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnJTJBJyk7XG59O1xuXG5PQXV0aC5zaWduYXR1cmVNZXRob2QgPSAnSE1BQy1TSEExJztcbk9BdXRoLnZlcnNpb24gPSAnMS4wJztcblxuLypcblx0R2VuZXJhdGUgYSBub25jZVxuKi9cbk9BdXRoLm5vbmNlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGV4dCA9ICcnO1xuICB2YXIgcG9zc2libGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzA7IGkrKykgdGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cbiAgcmV0dXJuIHRleHQ7XG59O1xuXG5PQXV0aC5idWlsZFBhcmFtZXRlclN0cmluZyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgLy8gU29ydCBrZXlzIGFuZCBlbmNvZGUgdmFsdWVzXG4gIGlmIChvYmopIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaikuc29ydCgpO1xuXG4gICAgLy8gTWFwIGtleT12YWx1ZSwgam9pbiB0aGVtIGJ5ICZcbiAgICByZXR1cm4ga2V5c1xuICAgICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBrZXkgKyAnPScgKyBPQXV0aC5lbmNvZGUob2JqW2tleV0pO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcmJyk7XG4gIH1cblxuICByZXR1cm4gJyc7XG59O1xuXG4vKlxuXHRCdWlsZCB0aGUgc2lnbmF0dXJlIHN0cmluZyBmcm9tIHRoZSBvYmplY3RcbiovXG5cbk9BdXRoLmJ1aWxkU2lnbmF0dXJlU3RyaW5nID0gZnVuY3Rpb24gKG1ldGhvZCwgdXJsLCBwYXJhbWV0ZXJzKSB7XG4gIHJldHVybiBbbWV0aG9kLnRvVXBwZXJDYXNlKCksIE9BdXRoLmVuY29kZSh1cmwpLCBPQXV0aC5lbmNvZGUocGFyYW1ldGVycyldLmpvaW4oJyYnKTtcbn07XG5cbi8qXG5cdFJldHVucyBlbmNvZGVkIEhNQUMtU0hBMSBmcm9tIGtleSBhbmQgdGV4dFxuKi9cbk9BdXRoLnNpZ25hdHVyZSA9IGZ1bmN0aW9uICh0ZXh0LCBrZXkpIHtcbiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gIHJldHVybiBPQXV0aC5lbmNvZGUoY3J5cHRvLmNyZWF0ZUhtYWMoJ3NoYTEnLCBrZXkpLnVwZGF0ZSh0ZXh0KS5kaWdlc3QoJ2Jhc2U2NCcpKTtcbn07XG5cbk9BdXRoLnNpZ25SZXF1ZXN0ID0gZnVuY3Rpb24gKHJlcXVlc3QsIG9hdXRoX3BhcmFtZXRlcnMsIGNvbnN1bWVyX3NlY3JldCwgYXV0aF90b2tlbl9zZWNyZXQpIHtcbiAgb2F1dGhfcGFyYW1ldGVycyA9IG9hdXRoX3BhcmFtZXRlcnMgfHwge307XG5cbiAgLy8gU2V0IGRlZmF1bHQgdmFsdWVzXG4gIGlmICghb2F1dGhfcGFyYW1ldGVycy5vYXV0aF9ub25jZSkge1xuICAgIG9hdXRoX3BhcmFtZXRlcnMub2F1dGhfbm9uY2UgPSBPQXV0aC5ub25jZSgpO1xuICB9XG4gIGlmICghb2F1dGhfcGFyYW1ldGVycy5vYXV0aF90aW1lc3RhbXApIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3RpbWVzdGFtcCA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgfVxuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfc2lnbmF0dXJlX21ldGhvZCkge1xuICAgIG9hdXRoX3BhcmFtZXRlcnMub2F1dGhfc2lnbmF0dXJlX21ldGhvZCA9IE9BdXRoLnNpZ25hdHVyZU1ldGhvZDtcbiAgfVxuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfdmVyc2lvbikge1xuICAgIG9hdXRoX3BhcmFtZXRlcnMub2F1dGhfdmVyc2lvbiA9IE9BdXRoLnZlcnNpb247XG4gIH1cblxuICBpZiAoIWF1dGhfdG9rZW5fc2VjcmV0KSB7XG4gICAgYXV0aF90b2tlbl9zZWNyZXQgPSAnJztcbiAgfVxuICAvLyBGb3JjZSBHRVQgbWV0aG9kIGlmIHVuc2V0XG4gIGlmICghcmVxdWVzdC5tZXRob2QpIHtcbiAgICByZXF1ZXN0Lm1ldGhvZCA9ICdHRVQnO1xuICB9XG5cbiAgLy8gQ29sbGVjdCAgYWxsIHRoZSBwYXJhbWV0ZXJzIGluIG9uZSBzaWduYXR1cmVQYXJhbWV0ZXJzIG9iamVjdFxuICB2YXIgc2lnbmF0dXJlUGFyYW1zID0ge307XG4gIHZhciBwYXJhbWV0ZXJzVG9NZXJnZSA9IFtyZXF1ZXN0LnBhcmFtcywgcmVxdWVzdC5ib2R5LCBvYXV0aF9wYXJhbWV0ZXJzXTtcbiAgZm9yICh2YXIgaSBpbiBwYXJhbWV0ZXJzVG9NZXJnZSkge1xuICAgIHZhciBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc1RvTWVyZ2VbaV07XG4gICAgZm9yICh2YXIgayBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgICBzaWduYXR1cmVQYXJhbXNba10gPSBwYXJhbWV0ZXJzW2tdO1xuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSBhIHN0cmluZyBiYXNlZCBvbiB0aGUgcGFyYW1ldGVyc1xuICB2YXIgcGFyYW1ldGVyU3RyaW5nID0gT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcoc2lnbmF0dXJlUGFyYW1zKTtcblxuICAvLyBCdWlsZCB0aGUgc2lnbmF0dXJlIHN0cmluZ1xuICB2YXIgdXJsID0gJ2h0dHBzOi8vJyArIHJlcXVlc3QuaG9zdCArICcnICsgcmVxdWVzdC5wYXRoO1xuXG4gIHZhciBzaWduYXR1cmVTdHJpbmcgPSBPQXV0aC5idWlsZFNpZ25hdHVyZVN0cmluZyhyZXF1ZXN0Lm1ldGhvZCwgdXJsLCBwYXJhbWV0ZXJTdHJpbmcpO1xuICAvLyBIYXNoIHRoZSBzaWduYXR1cmUgc3RyaW5nXG4gIHZhciBzaWduYXR1cmVLZXkgPSBbT0F1dGguZW5jb2RlKGNvbnN1bWVyX3NlY3JldCksIE9BdXRoLmVuY29kZShhdXRoX3Rva2VuX3NlY3JldCldLmpvaW4oJyYnKTtcblxuICB2YXIgc2lnbmF0dXJlID0gT0F1dGguc2lnbmF0dXJlKHNpZ25hdHVyZVN0cmluZywgc2lnbmF0dXJlS2V5KTtcblxuICAvLyBTZXQgdGhlIHNpZ25hdHVyZSBpbiB0aGUgcGFyYW1zXG4gIG9hdXRoX3BhcmFtZXRlcnMub2F1dGhfc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICBpZiAoIXJlcXVlc3QuaGVhZGVycykge1xuICAgIHJlcXVlc3QuaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgLy8gU2V0IHRoZSBhdXRob3JpemF0aW9uIGhlYWRlclxuICB2YXIgYXV0aEhlYWRlciA9IE9iamVjdC5rZXlzKG9hdXRoX3BhcmFtZXRlcnMpXG4gICAgLnNvcnQoKVxuICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gb2F1dGhfcGFyYW1ldGVyc1trZXldO1xuICAgICAgcmV0dXJuIGtleSArICc9XCInICsgdmFsdWUgKyAnXCInO1xuICAgIH0pXG4gICAgLmpvaW4oJywgJyk7XG5cbiAgcmVxdWVzdC5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnT0F1dGggJyArIGF1dGhIZWFkZXI7XG5cbiAgLy8gU2V0IHRoZSBjb250ZW50IHR5cGUgaGVhZGVyXG4gIHJlcXVlc3QuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJztcbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9BdXRoO1xuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwcyIsInJlcXVpcmUiLCJjcnlwdG8iLCJQYXJzZSIsIk9BdXRoIiwib3B0aW9ucyIsIkVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiY29uc3VtZXJfa2V5IiwiY29uc3VtZXJfc2VjcmV0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiaG9zdCIsIm9hdXRoX3BhcmFtcyIsInByb3RvdHlwZSIsInNlbmQiLCJtZXRob2QiLCJwYXRoIiwicGFyYW1zIiwiYm9keSIsInJlcXVlc3QiLCJidWlsZFJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImh0dHBSZXF1ZXN0IiwicmVzIiwiZGF0YSIsIm9uIiwiY2h1bmsiLCJKU09OIiwicGFyc2UiLCJ3cml0ZSIsImVuZCIsImluZGV4T2YiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYnVpbGRQYXJhbWV0ZXJTdHJpbmciLCJ0b1VwcGVyQ2FzZSIsIm9hdXRoX2NvbnN1bWVyX2tleSIsInNpZ25SZXF1ZXN0IiwiZ2V0IiwicG9zdCIsImVuY29kZSIsInN0ciIsInRvU3RyaW5nIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInNpZ25hdHVyZU1ldGhvZCIsInZlcnNpb24iLCJub25jZSIsInRleHQiLCJwb3NzaWJsZSIsImkiLCJjaGFyQXQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJvYmoiLCJzb3J0IiwibWFwIiwia2V5Iiwiam9pbiIsImJ1aWxkU2lnbmF0dXJlU3RyaW5nIiwidXJsIiwicGFyYW1ldGVycyIsInNpZ25hdHVyZSIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJkaWdlc3QiLCJvYXV0aF9wYXJhbWV0ZXJzIiwib2F1dGhfbm9uY2UiLCJvYXV0aF90aW1lc3RhbXAiLCJEYXRlIiwiZ2V0VGltZSIsIm9hdXRoX3NpZ25hdHVyZV9tZXRob2QiLCJvYXV0aF92ZXJzaW9uIiwic2lnbmF0dXJlUGFyYW1zIiwicGFyYW1ldGVyc1RvTWVyZ2UiLCJrIiwicGFyYW1ldGVyU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwic2lnbmF0dXJlS2V5Iiwib2F1dGhfc2lnbmF0dXJlIiwiaGVhZGVycyIsImF1dGhIZWFkZXIiLCJ2YWx1ZSIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvT0F1dGgxQ2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBodHRwcyA9IHJlcXVpcmUoJ2h0dHBzJyksXG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgT0F1dGggPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnTm8gb3B0aW9ucyBwYXNzZWQgdG8gT0F1dGgnKTtcbiAgfVxuICB0aGlzLmNvbnN1bWVyX2tleSA9IG9wdGlvbnMuY29uc3VtZXJfa2V5O1xuICB0aGlzLmNvbnN1bWVyX3NlY3JldCA9IG9wdGlvbnMuY29uc3VtZXJfc2VjcmV0O1xuICB0aGlzLmF1dGhfdG9rZW4gPSBvcHRpb25zLmF1dGhfdG9rZW47XG4gIHRoaXMuYXV0aF90b2tlbl9zZWNyZXQgPSBvcHRpb25zLmF1dGhfdG9rZW5fc2VjcmV0O1xuICB0aGlzLmhvc3QgPSBvcHRpb25zLmhvc3Q7XG4gIHRoaXMub2F1dGhfcGFyYW1zID0gb3B0aW9ucy5vYXV0aF9wYXJhbXMgfHwge307XG59O1xuXG5PQXV0aC5wcm90b3R5cGUuc2VuZCA9IGZ1bmN0aW9uIChtZXRob2QsIHBhdGgsIHBhcmFtcywgYm9keSkge1xuICB2YXIgcmVxdWVzdCA9IHRoaXMuYnVpbGRSZXF1ZXN0KG1ldGhvZCwgcGF0aCwgcGFyYW1zLCBib2R5KTtcbiAgLy8gRW5jb2RlIHRoZSBib2R5IHByb3Blcmx5LCB0aGUgY3VycmVudCBQYXJzZSBJbXBsZW1lbnRhdGlvbiBkb24ndCBkbyBpdCBwcm9wZXJseVxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBodHRwUmVxdWVzdCA9IGh0dHBzXG4gICAgICAucmVxdWVzdChyZXF1ZXN0LCBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHZhciBkYXRhID0gJyc7XG4gICAgICAgIHJlcy5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuICAgICAgICByZXMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZWplY3QoJ0ZhaWxlZCB0byBtYWtlIGFuIE9BdXRoIHJlcXVlc3QnKTtcbiAgICAgIH0pO1xuICAgIGlmIChyZXF1ZXN0LmJvZHkpIHtcbiAgICAgIGh0dHBSZXF1ZXN0LndyaXRlKHJlcXVlc3QuYm9keSk7XG4gICAgfVxuICAgIGh0dHBSZXF1ZXN0LmVuZCgpO1xuICB9KTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5idWlsZFJlcXVlc3QgPSBmdW5jdGlvbiAobWV0aG9kLCBwYXRoLCBwYXJhbXMsIGJvZHkpIHtcbiAgaWYgKHBhdGguaW5kZXhPZignLycpICE9IDApIHtcbiAgICBwYXRoID0gJy8nICsgcGF0aDtcbiAgfVxuICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgIHBhdGggKz0gJz8nICsgT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcocGFyYW1zKTtcbiAgfVxuXG4gIHZhciByZXF1ZXN0ID0ge1xuICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIG1ldGhvZDogbWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gIH07XG5cbiAgdmFyIG9hdXRoX3BhcmFtcyA9IHRoaXMub2F1dGhfcGFyYW1zIHx8IHt9O1xuICBvYXV0aF9wYXJhbXMub2F1dGhfY29uc3VtZXJfa2V5ID0gdGhpcy5jb25zdW1lcl9rZXk7XG4gIGlmICh0aGlzLmF1dGhfdG9rZW4pIHtcbiAgICBvYXV0aF9wYXJhbXNbJ29hdXRoX3Rva2VuJ10gPSB0aGlzLmF1dGhfdG9rZW47XG4gIH1cblxuICByZXF1ZXN0ID0gT0F1dGguc2lnblJlcXVlc3QocmVxdWVzdCwgb2F1dGhfcGFyYW1zLCB0aGlzLmNvbnN1bWVyX3NlY3JldCwgdGhpcy5hdXRoX3Rva2VuX3NlY3JldCk7XG5cbiAgaWYgKGJvZHkgJiYgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID4gMCkge1xuICAgIHJlcXVlc3QuYm9keSA9IE9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKGJvZHkpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuT0F1dGgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXRoLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuc2VuZCgnR0VUJywgcGF0aCwgcGFyYW1zKTtcbn07XG5cbk9BdXRoLnByb3RvdHlwZS5wb3N0ID0gZnVuY3Rpb24gKHBhdGgsIHBhcmFtcywgYm9keSkge1xuICByZXR1cm4gdGhpcy5zZW5kKCdQT1NUJywgcGF0aCwgcGFyYW1zLCBib2R5KTtcbn07XG5cbi8qXG5cdFByb3BlciBzdHJpbmcgJWVzY2FwZSBlbmNvZGluZ1xuKi9cbk9BdXRoLmVuY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgLy8gICAgICAgZGlzY3VzcyBhdDogaHR0cDovL3BocGpzLm9yZy9mdW5jdGlvbnMvcmF3dXJsZW5jb2RlL1xuICAvLyAgICAgIG9yaWdpbmFsIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiB0cmF2Y1xuICAvLyAgICAgICAgIGlucHV0IGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgIGlucHV0IGJ5OiBNaWNoYWVsIEdyaWVyXG4gIC8vICAgICAgICAgaW5wdXQgYnk6IFJhdGhlb3VzXG4gIC8vICAgICAgYnVnZml4ZWQgYnk6IEtldmluIHZhbiBab25uZXZlbGQgKGh0dHA6Ly9rZXZpbi52YW56b25uZXZlbGQubmV0KVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgIGJ1Z2ZpeGVkIGJ5OiBKb3Jpc1xuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyByZWltcGxlbWVudGVkIGJ5OiBCcmV0dCBaYW1pciAoaHR0cDovL2JyZXR0LXphbWlyLm1lKVxuICAvLyAgICAgICAgICAgICBub3RlOiBUaGlzIHJlZmxlY3RzIFBIUCA1LjMvNi4wKyBiZWhhdmlvclxuICAvLyAgICAgICAgICAgICBub3RlOiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gZW5jb2RlIGludG8gVVRGLTggZW5jb2RlZCBzdHJpbmdzLCBhcyBmb3VuZCBvblxuICAvLyAgICAgICAgICAgICBub3RlOiBwYWdlcyBzZXJ2ZWQgYXMgVVRGLThcbiAgLy8gICAgICAgIGV4YW1wbGUgMTogcmF3dXJsZW5jb2RlKCdLZXZpbiB2YW4gWm9ubmV2ZWxkIScpO1xuICAvLyAgICAgICAgcmV0dXJucyAxOiAnS2V2aW4lMjB2YW4lMjBab25uZXZlbGQlMjEnXG4gIC8vICAgICAgICBleGFtcGxlIDI6IHJhd3VybGVuY29kZSgnaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQvJyk7XG4gIC8vICAgICAgICByZXR1cm5zIDI6ICdodHRwJTNBJTJGJTJGa2V2aW4udmFuem9ubmV2ZWxkLm5ldCUyRidcbiAgLy8gICAgICAgIGV4YW1wbGUgMzogcmF3dXJsZW5jb2RlKCdodHRwOi8vd3d3Lmdvb2dsZS5ubC9zZWFyY2g/cT1waHAuanMmaWU9dXRmLTgmb2U9dXRmLTgmYXE9dCZybHM9Y29tLnVidW50dTplbi1VUzp1bm9mZmljaWFsJmNsaWVudD1maXJlZm94LWEnKTtcbiAgLy8gICAgICAgIHJldHVybnMgMzogJ2h0dHAlM0ElMkYlMkZ3d3cuZ29vZ2xlLm5sJTJGc2VhcmNoJTNGcSUzRHBocC5qcyUyNmllJTNEdXRmLTglMjZvZSUzRHV0Zi04JTI2YXElM0R0JTI2cmxzJTNEY29tLnVidW50dSUzQWVuLVVTJTNBdW5vZmZpY2lhbCUyNmNsaWVudCUzRGZpcmVmb3gtYSdcblxuICBzdHIgPSAoc3RyICsgJycpLnRvU3RyaW5nKCk7XG5cbiAgLy8gVGlsZGUgc2hvdWxkIGJlIGFsbG93ZWQgdW5lc2NhcGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQSFAgKGFzIHJlZmxlY3RlZCBiZWxvdyksIGJ1dCBpZiB5b3Ugd2FudCB0byByZWZsZWN0IGN1cnJlbnRcbiAgLy8gUEhQIGJlaGF2aW9yLCB5b3Ugd291bGQgbmVlZCB0byBhZGQgXCIucmVwbGFjZSgvfi9nLCAnJTdFJyk7XCIgdG8gdGhlIGZvbGxvd2luZy5cbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoLyEvZywgJyUyMScpXG4gICAgLnJlcGxhY2UoLycvZywgJyUyNycpXG4gICAgLnJlcGxhY2UoL1xcKC9nLCAnJTI4JylcbiAgICAucmVwbGFjZSgvXFwpL2csICclMjknKVxuICAgIC5yZXBsYWNlKC9cXCovZywgJyUyQScpO1xufTtcblxuT0F1dGguc2lnbmF0dXJlTWV0aG9kID0gJ0hNQUMtU0hBMSc7XG5PQXV0aC52ZXJzaW9uID0gJzEuMCc7XG5cbi8qXG5cdEdlbmVyYXRlIGEgbm9uY2VcbiovXG5PQXV0aC5ub25jZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHQgPSAnJztcbiAgdmFyIHBvc3NpYmxlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHRleHQgKz0gcG9zc2libGUuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvc3NpYmxlLmxlbmd0aCkpO1xuXG4gIHJldHVybiB0ZXh0O1xufTtcblxuT0F1dGguYnVpbGRQYXJhbWV0ZXJTdHJpbmcgPSBmdW5jdGlvbiAob2JqKSB7XG4gIC8vIFNvcnQga2V5cyBhbmQgZW5jb2RlIHZhbHVlc1xuICBpZiAob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcblxuICAgIC8vIE1hcCBrZXk9dmFsdWUsIGpvaW4gdGhlbSBieSAmXG4gICAgcmV0dXJuIGtleXNcbiAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ICsgJz0nICsgT0F1dGguZW5jb2RlKG9ialtrZXldKTtcbiAgICAgIH0pXG4gICAgICAuam9pbignJicpO1xuICB9XG5cbiAgcmV0dXJuICcnO1xufTtcblxuLypcblx0QnVpbGQgdGhlIHNpZ25hdHVyZSBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0XG4qL1xuXG5PQXV0aC5idWlsZFNpZ25hdHVyZVN0cmluZyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCwgcGFyYW1ldGVycykge1xuICByZXR1cm4gW21ldGhvZC50b1VwcGVyQ2FzZSgpLCBPQXV0aC5lbmNvZGUodXJsKSwgT0F1dGguZW5jb2RlKHBhcmFtZXRlcnMpXS5qb2luKCcmJyk7XG59O1xuXG4vKlxuXHRSZXR1bnMgZW5jb2RlZCBITUFDLVNIQTEgZnJvbSBrZXkgYW5kIHRleHRcbiovXG5PQXV0aC5zaWduYXR1cmUgPSBmdW5jdGlvbiAodGV4dCwga2V5KSB7XG4gIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuICByZXR1cm4gT0F1dGguZW5jb2RlKGNyeXB0by5jcmVhdGVIbWFjKCdzaGExJywga2V5KS51cGRhdGUodGV4dCkuZGlnZXN0KCdiYXNlNjQnKSk7XG59O1xuXG5PQXV0aC5zaWduUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBvYXV0aF9wYXJhbWV0ZXJzLCBjb25zdW1lcl9zZWNyZXQsIGF1dGhfdG9rZW5fc2VjcmV0KSB7XG4gIG9hdXRoX3BhcmFtZXRlcnMgPSBvYXV0aF9wYXJhbWV0ZXJzIHx8IHt9O1xuXG4gIC8vIFNldCBkZWZhdWx0IHZhbHVlc1xuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfbm9uY2UpIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX25vbmNlID0gT0F1dGgubm9uY2UoKTtcbiAgfVxuICBpZiAoIW9hdXRoX3BhcmFtZXRlcnMub2F1dGhfdGltZXN0YW1wKSB7XG4gICAgb2F1dGhfcGFyYW1ldGVycy5vYXV0aF90aW1lc3RhbXAgPSBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCk7XG4gIH1cbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZV9tZXRob2QpIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZV9tZXRob2QgPSBPQXV0aC5zaWduYXR1cmVNZXRob2Q7XG4gIH1cbiAgaWYgKCFvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3ZlcnNpb24pIHtcbiAgICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3ZlcnNpb24gPSBPQXV0aC52ZXJzaW9uO1xuICB9XG5cbiAgaWYgKCFhdXRoX3Rva2VuX3NlY3JldCkge1xuICAgIGF1dGhfdG9rZW5fc2VjcmV0ID0gJyc7XG4gIH1cbiAgLy8gRm9yY2UgR0VUIG1ldGhvZCBpZiB1bnNldFxuICBpZiAoIXJlcXVlc3QubWV0aG9kKSB7XG4gICAgcmVxdWVzdC5tZXRob2QgPSAnR0VUJztcbiAgfVxuXG4gIC8vIENvbGxlY3QgIGFsbCB0aGUgcGFyYW1ldGVycyBpbiBvbmUgc2lnbmF0dXJlUGFyYW1ldGVycyBvYmplY3RcbiAgdmFyIHNpZ25hdHVyZVBhcmFtcyA9IHt9O1xuICB2YXIgcGFyYW1ldGVyc1RvTWVyZ2UgPSBbcmVxdWVzdC5wYXJhbXMsIHJlcXVlc3QuYm9keSwgb2F1dGhfcGFyYW1ldGVyc107XG4gIGZvciAodmFyIGkgaW4gcGFyYW1ldGVyc1RvTWVyZ2UpIHtcbiAgICB2YXIgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNUb01lcmdlW2ldO1xuICAgIGZvciAodmFyIGsgaW4gcGFyYW1ldGVycykge1xuICAgICAgc2lnbmF0dXJlUGFyYW1zW2tdID0gcGFyYW1ldGVyc1trXTtcbiAgICB9XG4gIH1cblxuICAvLyBDcmVhdGUgYSBzdHJpbmcgYmFzZWQgb24gdGhlIHBhcmFtZXRlcnNcbiAgdmFyIHBhcmFtZXRlclN0cmluZyA9IE9BdXRoLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKHNpZ25hdHVyZVBhcmFtcyk7XG5cbiAgLy8gQnVpbGQgdGhlIHNpZ25hdHVyZSBzdHJpbmdcbiAgdmFyIHVybCA9ICdodHRwczovLycgKyByZXF1ZXN0Lmhvc3QgKyAnJyArIHJlcXVlc3QucGF0aDtcblxuICB2YXIgc2lnbmF0dXJlU3RyaW5nID0gT0F1dGguYnVpbGRTaWduYXR1cmVTdHJpbmcocmVxdWVzdC5tZXRob2QsIHVybCwgcGFyYW1ldGVyU3RyaW5nKTtcbiAgLy8gSGFzaCB0aGUgc2lnbmF0dXJlIHN0cmluZ1xuICB2YXIgc2lnbmF0dXJlS2V5ID0gW09BdXRoLmVuY29kZShjb25zdW1lcl9zZWNyZXQpLCBPQXV0aC5lbmNvZGUoYXV0aF90b2tlbl9zZWNyZXQpXS5qb2luKCcmJyk7XG5cbiAgdmFyIHNpZ25hdHVyZSA9IE9BdXRoLnNpZ25hdHVyZShzaWduYXR1cmVTdHJpbmcsIHNpZ25hdHVyZUtleSk7XG5cbiAgLy8gU2V0IHRoZSBzaWduYXR1cmUgaW4gdGhlIHBhcmFtc1xuICBvYXV0aF9wYXJhbWV0ZXJzLm9hdXRoX3NpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMpIHtcbiAgICByZXF1ZXN0LmhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXJcbiAgdmFyIGF1dGhIZWFkZXIgPSBPYmplY3Qua2V5cyhvYXV0aF9wYXJhbWV0ZXJzKVxuICAgIC5zb3J0KClcbiAgICAubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9hdXRoX3BhcmFtZXRlcnNba2V5XTtcbiAgICAgIHJldHVybiBrZXkgKyAnPVwiJyArIHZhbHVlICsgJ1wiJztcbiAgICB9KVxuICAgIC5qb2luKCcsICcpO1xuXG4gIHJlcXVlc3QuaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ09BdXRoICcgKyBhdXRoSGVhZGVyO1xuXG4gIC8vIFNldCB0aGUgY29udGVudCB0eXBlIGhlYWRlclxuICByZXF1ZXN0LmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc7XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPQXV0aDtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxPQUFPLENBQUM7RUFDMUJDLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUM1QixJQUFJRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0UsS0FBSztBQUV2QyxJQUFJQyxLQUFLLEdBQUcsVUFBVUMsT0FBTyxFQUFFO0VBQzdCLElBQUksQ0FBQ0EsT0FBTyxFQUFFO0lBQ1osTUFBTSxJQUFJRixLQUFLLENBQUNHLEtBQUssQ0FBQ0gsS0FBSyxDQUFDRyxLQUFLLENBQUNDLHFCQUFxQixFQUFFLDRCQUE0QixDQUFDO0VBQ3hGO0VBQ0EsSUFBSSxDQUFDQyxZQUFZLEdBQUdILE9BQU8sQ0FBQ0csWUFBWTtFQUN4QyxJQUFJLENBQUNDLGVBQWUsR0FBR0osT0FBTyxDQUFDSSxlQUFlO0VBQzlDLElBQUksQ0FBQ0MsVUFBVSxHQUFHTCxPQUFPLENBQUNLLFVBQVU7RUFDcEMsSUFBSSxDQUFDQyxpQkFBaUIsR0FBR04sT0FBTyxDQUFDTSxpQkFBaUI7RUFDbEQsSUFBSSxDQUFDQyxJQUFJLEdBQUdQLE9BQU8sQ0FBQ08sSUFBSTtFQUN4QixJQUFJLENBQUNDLFlBQVksR0FBR1IsT0FBTyxDQUFDUSxZQUFZLElBQUksQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRFQsS0FBSyxDQUFDVSxTQUFTLENBQUNDLElBQUksR0FBRyxVQUFVQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUU7RUFDM0QsSUFBSUMsT0FBTyxHQUFHLElBQUksQ0FBQ0MsWUFBWSxDQUFDTCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxJQUFJLENBQUM7RUFDM0Q7RUFDQSxPQUFPLElBQUlHLE9BQU8sQ0FBQyxVQUFVQyxPQUFPLEVBQUVDLE1BQU0sRUFBRTtJQUM1QyxJQUFJQyxXQUFXLEdBQUd6QixLQUFLLENBQ3BCb0IsT0FBTyxDQUFDQSxPQUFPLEVBQUUsVUFBVU0sR0FBRyxFQUFFO01BQy9CLElBQUlDLElBQUksR0FBRyxFQUFFO01BQ2JELEdBQUcsQ0FBQ0UsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVQyxLQUFLLEVBQUU7UUFDOUJGLElBQUksSUFBSUUsS0FBSztNQUNmLENBQUMsQ0FBQztNQUNGSCxHQUFHLENBQUNFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsWUFBWTtRQUN4QkQsSUFBSSxHQUFHRyxJQUFJLENBQUNDLEtBQUssQ0FBQ0osSUFBSSxDQUFDO1FBQ3ZCSixPQUFPLENBQUNJLElBQUksQ0FBQztNQUNmLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNEQyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVk7TUFDdkJKLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFDSixJQUFJSixPQUFPLENBQUNELElBQUksRUFBRTtNQUNoQk0sV0FBVyxDQUFDTyxLQUFLLENBQUNaLE9BQU8sQ0FBQ0QsSUFBSSxDQUFDO0lBQ2pDO0lBQ0FNLFdBQVcsQ0FBQ1EsR0FBRyxFQUFFO0VBQ25CLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDdCLEtBQUssQ0FBQ1UsU0FBUyxDQUFDTyxZQUFZLEdBQUcsVUFBVUwsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFO0VBQ25FLElBQUlGLElBQUksQ0FBQ2lCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDMUJqQixJQUFJLEdBQUcsR0FBRyxHQUFHQSxJQUFJO0VBQ25CO0VBQ0EsSUFBSUMsTUFBTSxJQUFJaUIsTUFBTSxDQUFDQyxJQUFJLENBQUNsQixNQUFNLENBQUMsQ0FBQ21CLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDNUNwQixJQUFJLElBQUksR0FBRyxHQUFHYixLQUFLLENBQUNrQyxvQkFBb0IsQ0FBQ3BCLE1BQU0sQ0FBQztFQUNsRDtFQUVBLElBQUlFLE9BQU8sR0FBRztJQUNaUixJQUFJLEVBQUUsSUFBSSxDQUFDQSxJQUFJO0lBQ2ZLLElBQUksRUFBRUEsSUFBSTtJQUNWRCxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3VCLFdBQVc7RUFDNUIsQ0FBQztFQUVELElBQUkxQixZQUFZLEdBQUcsSUFBSSxDQUFDQSxZQUFZLElBQUksQ0FBQyxDQUFDO0VBQzFDQSxZQUFZLENBQUMyQixrQkFBa0IsR0FBRyxJQUFJLENBQUNoQyxZQUFZO0VBQ25ELElBQUksSUFBSSxDQUFDRSxVQUFVLEVBQUU7SUFDbkJHLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUNILFVBQVU7RUFDL0M7RUFFQVUsT0FBTyxHQUFHaEIsS0FBSyxDQUFDcUMsV0FBVyxDQUFDckIsT0FBTyxFQUFFUCxZQUFZLEVBQUUsSUFBSSxDQUFDSixlQUFlLEVBQUUsSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQztFQUVoRyxJQUFJUSxJQUFJLElBQUlnQixNQUFNLENBQUNDLElBQUksQ0FBQ2pCLElBQUksQ0FBQyxDQUFDa0IsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN4Q2pCLE9BQU8sQ0FBQ0QsSUFBSSxHQUFHZixLQUFLLENBQUNrQyxvQkFBb0IsQ0FBQ25CLElBQUksQ0FBQztFQUNqRDtFQUNBLE9BQU9DLE9BQU87QUFDaEIsQ0FBQztBQUVEaEIsS0FBSyxDQUFDVSxTQUFTLENBQUM0QixHQUFHLEdBQUcsVUFBVXpCLElBQUksRUFBRUMsTUFBTSxFQUFFO0VBQzVDLE9BQU8sSUFBSSxDQUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFRSxJQUFJLEVBQUVDLE1BQU0sQ0FBQztBQUN2QyxDQUFDO0FBRURkLEtBQUssQ0FBQ1UsU0FBUyxDQUFDNkIsSUFBSSxHQUFHLFVBQVUxQixJQUFJLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFO0VBQ25ELE9BQU8sSUFBSSxDQUFDSixJQUFJLENBQUMsTUFBTSxFQUFFRSxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxDQUFDO0FBQzlDLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0FmLEtBQUssQ0FBQ3dDLE1BQU0sR0FBRyxVQUFVQyxHQUFHLEVBQUU7RUFDNUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQUEsR0FBRyxHQUFHLENBQUNBLEdBQUcsR0FBRyxFQUFFLEVBQUVDLFFBQVEsRUFBRTs7RUFFM0I7RUFDQTtFQUNBLE9BQU9DLGtCQUFrQixDQUFDRixHQUFHLENBQUMsQ0FDM0JHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3BCQSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUNwQkEsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FDckJBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQ3JCQSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQixDQUFDO0FBRUQ1QyxLQUFLLENBQUM2QyxlQUFlLEdBQUcsV0FBVztBQUNuQzdDLEtBQUssQ0FBQzhDLE9BQU8sR0FBRyxLQUFLOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTlDLEtBQUssQ0FBQytDLEtBQUssR0FBRyxZQUFZO0VBQ3hCLElBQUlDLElBQUksR0FBRyxFQUFFO0VBQ2IsSUFBSUMsUUFBUSxHQUFHLGdFQUFnRTtFQUUvRSxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRyxFQUFFLEVBQUVBLENBQUMsRUFBRSxFQUFFRixJQUFJLElBQUlDLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxNQUFNLEVBQUUsR0FBR0wsUUFBUSxDQUFDaEIsTUFBTSxDQUFDLENBQUM7RUFFakcsT0FBT2UsSUFBSTtBQUNiLENBQUM7QUFFRGhELEtBQUssQ0FBQ2tDLG9CQUFvQixHQUFHLFVBQVVxQixHQUFHLEVBQUU7RUFDMUM7RUFDQSxJQUFJQSxHQUFHLEVBQUU7SUFDUCxJQUFJdkIsSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUksQ0FBQ3VCLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLEVBQUU7O0lBRWxDO0lBQ0EsT0FBT3hCLElBQUksQ0FDUnlCLEdBQUcsQ0FBQyxVQUFVQyxHQUFHLEVBQUU7TUFDbEIsT0FBT0EsR0FBRyxHQUFHLEdBQUcsR0FBRzFELEtBQUssQ0FBQ3dDLE1BQU0sQ0FBQ2UsR0FBRyxDQUFDRyxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FDREMsSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUNkO0VBRUEsT0FBTyxFQUFFO0FBQ1gsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUEzRCxLQUFLLENBQUM0RCxvQkFBb0IsR0FBRyxVQUFVaEQsTUFBTSxFQUFFaUQsR0FBRyxFQUFFQyxVQUFVLEVBQUU7RUFDOUQsT0FBTyxDQUFDbEQsTUFBTSxDQUFDdUIsV0FBVyxFQUFFLEVBQUVuQyxLQUFLLENBQUN3QyxNQUFNLENBQUNxQixHQUFHLENBQUMsRUFBRTdELEtBQUssQ0FBQ3dDLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQyxDQUFDLENBQUNILElBQUksQ0FBQyxHQUFHLENBQUM7QUFDdEYsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTNELEtBQUssQ0FBQytELFNBQVMsR0FBRyxVQUFVZixJQUFJLEVBQUVVLEdBQUcsRUFBRTtFQUNyQzVELE1BQU0sR0FBR0QsT0FBTyxDQUFDLFFBQVEsQ0FBQztFQUMxQixPQUFPRyxLQUFLLENBQUN3QyxNQUFNLENBQUMxQyxNQUFNLENBQUNrRSxVQUFVLENBQUMsTUFBTSxFQUFFTixHQUFHLENBQUMsQ0FBQ08sTUFBTSxDQUFDakIsSUFBSSxDQUFDLENBQUNrQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVEbEUsS0FBSyxDQUFDcUMsV0FBVyxHQUFHLFVBQVVyQixPQUFPLEVBQUVtRCxnQkFBZ0IsRUFBRTlELGVBQWUsRUFBRUUsaUJBQWlCLEVBQUU7RUFDM0Y0RCxnQkFBZ0IsR0FBR0EsZ0JBQWdCLElBQUksQ0FBQyxDQUFDOztFQUV6QztFQUNBLElBQUksQ0FBQ0EsZ0JBQWdCLENBQUNDLFdBQVcsRUFBRTtJQUNqQ0QsZ0JBQWdCLENBQUNDLFdBQVcsR0FBR3BFLEtBQUssQ0FBQytDLEtBQUssRUFBRTtFQUM5QztFQUNBLElBQUksQ0FBQ29CLGdCQUFnQixDQUFDRSxlQUFlLEVBQUU7SUFDckNGLGdCQUFnQixDQUFDRSxlQUFlLEdBQUdqQixJQUFJLENBQUNDLEtBQUssQ0FBQyxJQUFJaUIsSUFBSSxFQUFFLENBQUNDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztFQUM1RTtFQUNBLElBQUksQ0FBQ0osZ0JBQWdCLENBQUNLLHNCQUFzQixFQUFFO0lBQzVDTCxnQkFBZ0IsQ0FBQ0ssc0JBQXNCLEdBQUd4RSxLQUFLLENBQUM2QyxlQUFlO0VBQ2pFO0VBQ0EsSUFBSSxDQUFDc0IsZ0JBQWdCLENBQUNNLGFBQWEsRUFBRTtJQUNuQ04sZ0JBQWdCLENBQUNNLGFBQWEsR0FBR3pFLEtBQUssQ0FBQzhDLE9BQU87RUFDaEQ7RUFFQSxJQUFJLENBQUN2QyxpQkFBaUIsRUFBRTtJQUN0QkEsaUJBQWlCLEdBQUcsRUFBRTtFQUN4QjtFQUNBO0VBQ0EsSUFBSSxDQUFDUyxPQUFPLENBQUNKLE1BQU0sRUFBRTtJQUNuQkksT0FBTyxDQUFDSixNQUFNLEdBQUcsS0FBSztFQUN4Qjs7RUFFQTtFQUNBLElBQUk4RCxlQUFlLEdBQUcsQ0FBQyxDQUFDO0VBQ3hCLElBQUlDLGlCQUFpQixHQUFHLENBQUMzRCxPQUFPLENBQUNGLE1BQU0sRUFBRUUsT0FBTyxDQUFDRCxJQUFJLEVBQUVvRCxnQkFBZ0IsQ0FBQztFQUN4RSxLQUFLLElBQUlqQixDQUFDLElBQUl5QixpQkFBaUIsRUFBRTtJQUMvQixJQUFJYixVQUFVLEdBQUdhLGlCQUFpQixDQUFDekIsQ0FBQyxDQUFDO0lBQ3JDLEtBQUssSUFBSTBCLENBQUMsSUFBSWQsVUFBVSxFQUFFO01BQ3hCWSxlQUFlLENBQUNFLENBQUMsQ0FBQyxHQUFHZCxVQUFVLENBQUNjLENBQUMsQ0FBQztJQUNwQztFQUNGOztFQUVBO0VBQ0EsSUFBSUMsZUFBZSxHQUFHN0UsS0FBSyxDQUFDa0Msb0JBQW9CLENBQUN3QyxlQUFlLENBQUM7O0VBRWpFO0VBQ0EsSUFBSWIsR0FBRyxHQUFHLFVBQVUsR0FBRzdDLE9BQU8sQ0FBQ1IsSUFBSSxHQUFHLEVBQUUsR0FBR1EsT0FBTyxDQUFDSCxJQUFJO0VBRXZELElBQUlpRSxlQUFlLEdBQUc5RSxLQUFLLENBQUM0RCxvQkFBb0IsQ0FBQzVDLE9BQU8sQ0FBQ0osTUFBTSxFQUFFaUQsR0FBRyxFQUFFZ0IsZUFBZSxDQUFDO0VBQ3RGO0VBQ0EsSUFBSUUsWUFBWSxHQUFHLENBQUMvRSxLQUFLLENBQUN3QyxNQUFNLENBQUNuQyxlQUFlLENBQUMsRUFBRUwsS0FBSyxDQUFDd0MsTUFBTSxDQUFDakMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDb0QsSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUU3RixJQUFJSSxTQUFTLEdBQUcvRCxLQUFLLENBQUMrRCxTQUFTLENBQUNlLGVBQWUsRUFBRUMsWUFBWSxDQUFDOztFQUU5RDtFQUNBWixnQkFBZ0IsQ0FBQ2EsZUFBZSxHQUFHakIsU0FBUztFQUM1QyxJQUFJLENBQUMvQyxPQUFPLENBQUNpRSxPQUFPLEVBQUU7SUFDcEJqRSxPQUFPLENBQUNpRSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQ3RCOztFQUVBO0VBQ0EsSUFBSUMsVUFBVSxHQUFHbkQsTUFBTSxDQUFDQyxJQUFJLENBQUNtQyxnQkFBZ0IsQ0FBQyxDQUMzQ1gsSUFBSSxFQUFFLENBQ05DLEdBQUcsQ0FBQyxVQUFVQyxHQUFHLEVBQUU7SUFDbEIsSUFBSXlCLEtBQUssR0FBR2hCLGdCQUFnQixDQUFDVCxHQUFHLENBQUM7SUFDakMsT0FBT0EsR0FBRyxHQUFHLElBQUksR0FBR3lCLEtBQUssR0FBRyxHQUFHO0VBQ2pDLENBQUMsQ0FBQyxDQUNEeEIsSUFBSSxDQUFDLElBQUksQ0FBQztFQUViM0MsT0FBTyxDQUFDaUUsT0FBTyxDQUFDRyxhQUFhLEdBQUcsUUFBUSxHQUFHRixVQUFVOztFQUVyRDtFQUNBbEUsT0FBTyxDQUFDaUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1DQUFtQztFQUNyRSxPQUFPakUsT0FBTztBQUNoQixDQUFDO0FBRURxRSxNQUFNLENBQUNDLE9BQU8sR0FBR3RGLEtBQUsifQ==
|
|
@@ -2,16 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
// Apple SignIn Auth
|
|
4
4
|
// https://developer.apple.com/documentation/signinwithapplerestapi
|
|
5
|
-
const Parse = require('parse/node').Parse;
|
|
6
5
|
|
|
6
|
+
const Parse = require('parse/node').Parse;
|
|
7
7
|
const jwksClient = require('jwks-rsa');
|
|
8
|
-
|
|
9
8
|
const util = require('util');
|
|
10
|
-
|
|
11
9
|
const jwt = require('jsonwebtoken');
|
|
12
|
-
|
|
13
10
|
const TOKEN_ISSUER = 'https://appleid.apple.com';
|
|
14
|
-
|
|
15
11
|
const getAppleKeyByKeyId = async (keyId, cacheMaxEntries, cacheMaxAge) => {
|
|
16
12
|
const client = jwksClient({
|
|
17
13
|
jwksUri: `${TOKEN_ISSUER}/auth/keys`,
|
|
@@ -21,28 +17,22 @@ const getAppleKeyByKeyId = async (keyId, cacheMaxEntries, cacheMaxAge) => {
|
|
|
21
17
|
});
|
|
22
18
|
const asyncGetSigningKeyFunction = util.promisify(client.getSigningKey);
|
|
23
19
|
let key;
|
|
24
|
-
|
|
25
20
|
try {
|
|
26
21
|
key = await asyncGetSigningKeyFunction(keyId);
|
|
27
22
|
} catch (error) {
|
|
28
23
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `Unable to find matching key for Key ID: ${keyId}`);
|
|
29
24
|
}
|
|
30
|
-
|
|
31
25
|
return key;
|
|
32
26
|
};
|
|
33
|
-
|
|
34
27
|
const getHeaderFromToken = token => {
|
|
35
28
|
const decodedToken = jwt.decode(token, {
|
|
36
29
|
complete: true
|
|
37
30
|
});
|
|
38
|
-
|
|
39
31
|
if (!decodedToken) {
|
|
40
32
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `provided token does not decode as JWT`);
|
|
41
33
|
}
|
|
42
|
-
|
|
43
34
|
return decodedToken.header;
|
|
44
35
|
};
|
|
45
|
-
|
|
46
36
|
const verifyIdToken = async ({
|
|
47
37
|
token,
|
|
48
38
|
id
|
|
@@ -54,7 +44,6 @@ const verifyIdToken = async ({
|
|
|
54
44
|
if (!token) {
|
|
55
45
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `id token is invalid for this user.`);
|
|
56
46
|
}
|
|
57
|
-
|
|
58
47
|
const {
|
|
59
48
|
kid: keyId,
|
|
60
49
|
alg: algorithm
|
|
@@ -65,7 +54,6 @@ const verifyIdToken = async ({
|
|
|
65
54
|
cacheMaxEntries = cacheMaxEntries || 5;
|
|
66
55
|
const appleKey = await getAppleKeyByKeyId(keyId, cacheMaxEntries, cacheMaxAge);
|
|
67
56
|
const signingKey = appleKey.publicKey || appleKey.rsaPublicKey;
|
|
68
|
-
|
|
69
57
|
try {
|
|
70
58
|
jwtClaims = jwt.verify(token, signingKey, {
|
|
71
59
|
algorithms: algorithm,
|
|
@@ -76,30 +64,26 @@ const verifyIdToken = async ({
|
|
|
76
64
|
const message = exception.message;
|
|
77
65
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `${message}`);
|
|
78
66
|
}
|
|
79
|
-
|
|
80
67
|
if (jwtClaims.iss !== TOKEN_ISSUER) {
|
|
81
68
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `id token not issued by correct OpenID provider - expected: ${TOKEN_ISSUER} | from: ${jwtClaims.iss}`);
|
|
82
69
|
}
|
|
83
|
-
|
|
84
70
|
if (jwtClaims.sub !== id) {
|
|
85
71
|
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `auth data is invalid for this user.`);
|
|
86
72
|
}
|
|
87
|
-
|
|
88
73
|
return jwtClaims;
|
|
89
|
-
};
|
|
90
|
-
|
|
74
|
+
};
|
|
91
75
|
|
|
76
|
+
// Returns a promise that fulfills if this id token is valid
|
|
92
77
|
function validateAuthData(authData, options = {}) {
|
|
93
78
|
return verifyIdToken(authData, options);
|
|
94
|
-
}
|
|
95
|
-
|
|
79
|
+
}
|
|
96
80
|
|
|
81
|
+
// Returns a promise that fulfills if this app id is valid.
|
|
97
82
|
function validateAppId() {
|
|
98
83
|
return Promise.resolve();
|
|
99
84
|
}
|
|
100
|
-
|
|
101
85
|
module.exports = {
|
|
102
86
|
validateAppId,
|
|
103
87
|
validateAuthData
|
|
104
88
|
};
|
|
105
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50IiwidXRpbCIsImp3dCIsIlRPS0VOX0lTU1VFUiIsImdldEFwcGxlS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJhc3luY0dldFNpZ25pbmdLZXlGdW5jdGlvbiIsInByb21pc2lmeSIsImdldFNpZ25pbmdLZXkiLCJrZXkiLCJlcnJvciIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsImdldEhlYWRlckZyb21Ub2tlbiIsInRva2VuIiwiZGVjb2RlZFRva2VuIiwiZGVjb2RlIiwiY29tcGxldGUiLCJoZWFkZXIiLCJ2ZXJpZnlJZFRva2VuIiwiaWQiLCJjbGllbnRJZCIsImtpZCIsImFsZyIsImFsZ29yaXRobSIsIk9ORV9IT1VSX0lOX01TIiwiand0Q2xhaW1zIiwiYXBwbGVLZXkiLCJzaWduaW5nS2V5IiwicHVibGljS2V5IiwicnNhUHVibGljS2V5IiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsImF1ZGllbmNlIiwiZXhjZXB0aW9uIiwibWVzc2FnZSIsImlzcyIsInN1YiIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvYXBwbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQXBwbGUgU2lnbkluIEF1dGhcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3NpZ25pbndpdGhhcHBsZXJlc3RhcGlcblxuY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5jb25zdCBqd2tzQ2xpZW50ID0gcmVxdWlyZSgnandrcy1yc2EnKTtcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCBqd3QgPSByZXF1aXJlKCdqc29ud2VidG9rZW4nKTtcblxuY29uc3QgVE9LRU5fSVNTVUVSID0gJ2h0dHBzOi8vYXBwbGVpZC5hcHBsZS5jb20nO1xuXG5jb25zdCBnZXRBcHBsZUtleUJ5S2V5SWQgPSBhc3luYyAoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpID0+IHtcbiAgY29uc3QgY2xpZW50ID0gandrc0NsaWVudCh7XG4gICAgandrc1VyaTogYCR7VE9LRU5fSVNTVUVSfS9hdXRoL2tleXNgLFxuICAgIGNhY2hlOiB0cnVlLFxuICAgIGNhY2hlTWF4RW50cmllcyxcbiAgICBjYWNoZU1heEFnZSxcbiAgfSk7XG5cbiAgY29uc3QgYXN5bmNHZXRTaWduaW5nS2V5RnVuY3Rpb24gPSB1dGlsLnByb21pc2lmeShjbGllbnQuZ2V0U2lnbmluZ0tleSk7XG5cbiAgbGV0IGtleTtcbiAgdHJ5IHtcbiAgICBrZXkgPSBhd2FpdCBhc3luY0dldFNpZ25pbmdLZXlGdW5jdGlvbihrZXlJZCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBVbmFibGUgdG8gZmluZCBtYXRjaGluZyBrZXkgZm9yIEtleSBJRDogJHtrZXlJZH1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuY29uc3QgZ2V0SGVhZGVyRnJvbVRva2VuID0gdG9rZW4gPT4ge1xuICBjb25zdCBkZWNvZGVkVG9rZW4gPSBqd3QuZGVjb2RlKHRva2VuLCB7IGNvbXBsZXRlOiB0cnVlIH0pO1xuICBpZiAoIWRlY29kZWRUb2tlbikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgcHJvdmlkZWQgdG9rZW4gZG9lcyBub3QgZGVjb2RlIGFzIEpXVGApO1xuICB9XG5cbiAgcmV0dXJuIGRlY29kZWRUb2tlbi5oZWFkZXI7XG59O1xuXG5jb25zdCB2ZXJpZnlJZFRva2VuID0gYXN5bmMgKHsgdG9rZW4sIGlkIH0sIHsgY2xpZW50SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UgfSkgPT4ge1xuICBpZiAoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBpZCB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cblxuICBjb25zdCB7IGtpZDoga2V5SWQsIGFsZzogYWxnb3JpdGhtIH0gPSBnZXRIZWFkZXJGcm9tVG9rZW4odG9rZW4pO1xuICBjb25zdCBPTkVfSE9VUl9JTl9NUyA9IDM2MDAwMDA7XG4gIGxldCBqd3RDbGFpbXM7XG5cbiAgY2FjaGVNYXhBZ2UgPSBjYWNoZU1heEFnZSB8fCBPTkVfSE9VUl9JTl9NUztcbiAgY2FjaGVNYXhFbnRyaWVzID0gY2FjaGVNYXhFbnRyaWVzIHx8IDU7XG5cbiAgY29uc3QgYXBwbGVLZXkgPSBhd2FpdCBnZXRBcHBsZUtleUJ5S2V5SWQoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpO1xuICBjb25zdCBzaWduaW5nS2V5ID0gYXBwbGVLZXkucHVibGljS2V5IHx8IGFwcGxlS2V5LnJzYVB1YmxpY0tleTtcblxuICB0cnkge1xuICAgIGp3dENsYWltcyA9IGp3dC52ZXJpZnkodG9rZW4sIHNpZ25pbmdLZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IGFsZ29yaXRobSxcbiAgICAgIC8vIHRoZSBhdWRpZW5jZSBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IGEgc3RyaW5nLCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIGxpc3Qgb2Ygc3RyaW5ncyBhbmQvb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAgICAgIGF1ZGllbmNlOiBjbGllbnRJZCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGV4Y2VwdGlvbi5tZXNzYWdlO1xuXG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke21lc3NhZ2V9YCk7XG4gIH1cblxuICBpZiAoand0Q2xhaW1zLmlzcyAhPT0gVE9LRU5fSVNTVUVSKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBpZCB0b2tlbiBub3QgaXNzdWVkIGJ5IGNvcnJlY3QgT3BlbklEIHByb3ZpZGVyIC0gZXhwZWN0ZWQ6ICR7VE9LRU5fSVNTVUVSfSB8IGZyb206ICR7and0Q2xhaW1zLmlzc31gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuc3ViICE9PSBpZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgYXV0aCBkYXRhIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci5gKTtcbiAgfVxuICByZXR1cm4gand0Q2xhaW1zO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGlkIHRva2VuIGlzIHZhbGlkXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHZlcmlmeUlkVG9rZW4oYXV0aERhdGEsIG9wdGlvbnMpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTs7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8s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
|