@cloudbase/js-sdk 2.25.3 → 2.25.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,19 @@
1
1
  "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
2
17
  var __assign = (this && this.__assign) || function () {
3
18
  __assign = Object.assign || function(t) {
4
19
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -10,13 +25,366 @@ var __assign = (this && this.__assign) || function () {
10
25
  };
11
26
  return __assign.apply(this, arguments);
12
27
  };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
13
64
  Object.defineProperty(exports, "__esModule", { value: true });
14
65
  exports.registerDatabase = void 0;
15
66
  var database_1 = require("@cloudbase/database");
67
+ var bson_1 = require("bson");
16
68
  var COMPONENT_NAME = 'database';
69
+ var gateWayFunc = {
70
+ getUrlPrefix: function (data) {
71
+ return "/database/instances/".concat((data === null || data === void 0 ? void 0 : data.instance) || '(default)', "/databases/").concat((data === null || data === void 0 ? void 0 : data.database) || '(default)');
72
+ },
73
+ 'database.queryDocument': function (data) {
74
+ return __awaiter(this, void 0, void 0, function () {
75
+ var res;
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0: return [4, this.gateWay({
79
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents?projection=").concat(data.projection ? JSON.stringify(data.projection) : '', "&offset=").concat(data.offset || 0, "&limit=").concat(data.limit || 100, "&order=").concat(data.order ? JSON.stringify(data.order) : '', "&query=").concat(data.query ? bson_1.EJSON.stringify(data.query, { relaxed: false }) : '', "&transactionId=").concat(data.transactionId || ''),
80
+ method: 'GET',
81
+ })];
82
+ case 1:
83
+ res = _a.sent();
84
+ delete res.header;
85
+ return [2, res];
86
+ }
87
+ });
88
+ });
89
+ },
90
+ 'database.addDocument': function (data) {
91
+ var _a, _b;
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ var res;
94
+ return __generator(this, function (_c) {
95
+ switch (_c.label) {
96
+ case 0: return [4, this.gateWay({
97
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents"),
98
+ method: 'POST',
99
+ data: __assign({ data: Array.isArray(data.data) ? data.data : [data.data] }, (data.transactionId ? { transactionId: data.transactionId } : {})),
100
+ })];
101
+ case 1:
102
+ res = _c.sent();
103
+ if (!Array.isArray(data.data)) {
104
+ return [2, __assign(__assign({}, res), { data: __assign({ _id: (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.insertedIds) === null || _b === void 0 ? void 0 : _b[0] }, res.data) })];
105
+ }
106
+ delete res.header;
107
+ return [2, res];
108
+ }
109
+ });
110
+ });
111
+ },
112
+ 'database.updateDocument': function (data) {
113
+ return __awaiter(this, void 0, void 0, function () {
114
+ var res;
115
+ return __generator(this, function (_a) {
116
+ switch (_a.label) {
117
+ case 0: return [4, this.gateWay({
118
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents"),
119
+ method: 'PATCH',
120
+ data: __assign({ query: data.query, data: data.data, multi: !!data.multi, upsert: !!data.upsert, replaceMode: !!data.replaceMode }, (data.transactionId ? { transactionId: data.transactionId } : {})),
121
+ })];
122
+ case 1:
123
+ res = _a.sent();
124
+ delete res.header;
125
+ return [2, res];
126
+ }
127
+ });
128
+ });
129
+ },
130
+ 'database.deleteDocument': function (data) {
131
+ return __awaiter(this, void 0, void 0, function () {
132
+ var res;
133
+ return __generator(this, function (_a) {
134
+ switch (_a.label) {
135
+ case 0: return [4, this.gateWay({
136
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents/remove"),
137
+ method: 'POST',
138
+ data: __assign({ query: data.query, multi: !!data.multi }, (data.transactionId ? { transactionId: data.transactionId } : {})),
139
+ })];
140
+ case 1:
141
+ res = _a.sent();
142
+ delete res.header;
143
+ return [2, res];
144
+ }
145
+ });
146
+ });
147
+ },
148
+ 'database.countDocument': function (data) {
149
+ return __awaiter(this, void 0, void 0, function () {
150
+ var res;
151
+ return __generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0: return [4, this.gateWay({
154
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents?count=true&query=").concat(data.query ? bson_1.EJSON.stringify(data.query, { relaxed: false }) : ''),
155
+ method: 'GET',
156
+ })];
157
+ case 1:
158
+ res = _a.sent();
159
+ delete res.header;
160
+ return [2, res];
161
+ }
162
+ });
163
+ });
164
+ },
165
+ 'database.addCollection': function (data) {
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ var res;
168
+ return __generator(this, function (_a) {
169
+ switch (_a.label) {
170
+ case 0: return [4, this.gateWay({
171
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections"),
172
+ method: 'POST',
173
+ data: { collectionName: data.collectionName },
174
+ })];
175
+ case 1:
176
+ res = _a.sent();
177
+ delete res.header;
178
+ return [2, res];
179
+ }
180
+ });
181
+ });
182
+ },
183
+ 'database.aggregate': function (data) {
184
+ var _a, _b;
185
+ return __awaiter(this, void 0, void 0, function () {
186
+ var pipeline, res;
187
+ return __generator(this, function (_c) {
188
+ switch (_c.label) {
189
+ case 0:
190
+ pipeline = data.stages.map(function (stage) {
191
+ var _a;
192
+ try {
193
+ return _a = {},
194
+ _a[stage.stageKey] = JSON.parse(bson_1.EJSON.stringify(JSON.parse(stage.stageValue), { relaxed: false })),
195
+ _a;
196
+ }
197
+ catch (error) {
198
+ return stage;
199
+ }
200
+ });
201
+ return [4, this.gateWay({
202
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/collections/").concat(data.collectionName, "/documents/aggregations"),
203
+ method: 'POST',
204
+ data: {
205
+ pipeline: pipeline,
206
+ },
207
+ })];
208
+ case 1:
209
+ res = _c.sent();
210
+ if (Array.isArray((_a = res.data) === null || _a === void 0 ? void 0 : _a.list)) {
211
+ res.data.list = JSON.stringify((_b = res.data.list) === null || _b === void 0 ? void 0 : _b.map(function (item) { return JSON.stringify(item); }));
212
+ }
213
+ delete res.header;
214
+ return [2, res];
215
+ }
216
+ });
217
+ });
218
+ },
219
+ 'database.startTransaction': function (data) {
220
+ return __awaiter(this, void 0, void 0, function () {
221
+ var res;
222
+ return __generator(this, function (_a) {
223
+ switch (_a.label) {
224
+ case 0: return [4, this.gateWay({
225
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/transactions"),
226
+ method: 'POST',
227
+ })];
228
+ case 1:
229
+ res = _a.sent();
230
+ if (typeof res.data === 'object') {
231
+ res = __assign(__assign({}, res), res.data);
232
+ }
233
+ delete res.header;
234
+ return [2, res];
235
+ }
236
+ });
237
+ });
238
+ },
239
+ 'database.commitTransaction': function (data) {
240
+ return __awaiter(this, void 0, void 0, function () {
241
+ var res;
242
+ return __generator(this, function (_a) {
243
+ switch (_a.label) {
244
+ case 0: return [4, this.gateWay({
245
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/transactions/").concat(data.transactionId, "/commit"),
246
+ method: 'POST',
247
+ })];
248
+ case 1:
249
+ res = _a.sent();
250
+ delete res.header;
251
+ return [2, res];
252
+ }
253
+ });
254
+ });
255
+ },
256
+ 'database.abortTransaction': function (data) {
257
+ return __awaiter(this, void 0, void 0, function () {
258
+ var res;
259
+ return __generator(this, function (_a) {
260
+ switch (_a.label) {
261
+ case 0: return [4, this.gateWay({
262
+ url: "".concat(gateWayFunc.getUrlPrefix(data), "/transactions/").concat(data.transactionId, "/rollback"),
263
+ method: 'POST',
264
+ })];
265
+ case 1:
266
+ res = _a.sent();
267
+ delete res.header;
268
+ return [2, res];
269
+ }
270
+ });
271
+ });
272
+ },
273
+ 'database.getInTransaction': function (data) {
274
+ var _a;
275
+ return __awaiter(this, void 0, void 0, function () {
276
+ var res;
277
+ return __generator(this, function (_b) {
278
+ switch (_b.label) {
279
+ case 0: return [4, gateWayFunc['database.queryDocument'].bind(this)(data)];
280
+ case 1:
281
+ res = _b.sent();
282
+ if (typeof res.data === 'object') {
283
+ if ((_a = res.data) === null || _a === void 0 ? void 0 : _a.code) {
284
+ res = __assign(__assign({}, res), res.data);
285
+ }
286
+ else {
287
+ res.data = JSON.stringify(res.data);
288
+ }
289
+ }
290
+ return [2, res];
291
+ }
292
+ });
293
+ });
294
+ },
295
+ 'database.updateDocInTransaction': function (data) {
296
+ return __awaiter(this, void 0, void 0, function () {
297
+ var res;
298
+ return __generator(this, function (_a) {
299
+ switch (_a.label) {
300
+ case 0:
301
+ try {
302
+ data.data = bson_1.EJSON.parse(data.data);
303
+ }
304
+ catch (error) {
305
+ }
306
+ return [4, gateWayFunc['database.updateDocument'].bind(this)(data)];
307
+ case 1:
308
+ res = _a.sent();
309
+ if (typeof res.data === 'object') {
310
+ res = __assign(__assign({}, res), res.data);
311
+ }
312
+ return [2, res];
313
+ }
314
+ });
315
+ });
316
+ },
317
+ 'database.deleteDocInTransaction': function (data) {
318
+ return __awaiter(this, void 0, void 0, function () {
319
+ var res;
320
+ return __generator(this, function (_a) {
321
+ switch (_a.label) {
322
+ case 0: return [4, gateWayFunc['database.deleteDocument'].bind(this)(data)];
323
+ case 1:
324
+ res = _a.sent();
325
+ if (typeof res.data === 'object') {
326
+ res = __assign(__assign({}, res), res.data);
327
+ }
328
+ return [2, res];
329
+ }
330
+ });
331
+ });
332
+ },
333
+ 'database.insertDocInTransaction': function (data) {
334
+ var _a, _b;
335
+ return __awaiter(this, void 0, void 0, function () {
336
+ var res, result;
337
+ return __generator(this, function (_c) {
338
+ switch (_c.label) {
339
+ case 0:
340
+ try {
341
+ data.data = bson_1.EJSON.parse(data.data);
342
+ }
343
+ catch (error) {
344
+ }
345
+ return [4, gateWayFunc['database.addDocument'].bind(this)(data)];
346
+ case 1:
347
+ res = _c.sent();
348
+ if (typeof res.data === 'object') {
349
+ result = __assign(__assign(__assign({}, res), { inserted: +!!((_a = res.data) === null || _a === void 0 ? void 0 : _a._id), ok: +!!((_b = res.data) === null || _b === void 0 ? void 0 : _b._id) }), res.data);
350
+ }
351
+ return [2, result];
352
+ }
353
+ });
354
+ });
355
+ },
356
+ };
17
357
  function database(dbConfig) {
18
358
  var _a = this.platform, adapter = _a.adapter, runtime = _a.runtime;
19
- database_1.Db.reqClass = this.request.constructor;
359
+ var Req = (function (_super) {
360
+ __extends(Req, _super);
361
+ function Req(config) {
362
+ return _super.call(this, config) || this;
363
+ }
364
+ Req.prototype.send = function (action, data) {
365
+ return __awaiter(this, void 0, void 0, function () {
366
+ var res;
367
+ return __generator(this, function (_a) {
368
+ switch (_a.label) {
369
+ case 0:
370
+ res = null;
371
+ if (!(this.config.endPointMode === 'GATEWAY' && gateWayFunc[action])) return [3, 2];
372
+ return [4, gateWayFunc[action].call(this, data)];
373
+ case 1:
374
+ res = _a.sent();
375
+ return [3, 4];
376
+ case 2: return [4, _super.prototype.send.call(this, action, data)];
377
+ case 3:
378
+ res = _a.sent();
379
+ _a.label = 4;
380
+ case 4: return [2, res];
381
+ }
382
+ });
383
+ });
384
+ };
385
+ return Req;
386
+ }(this.request.constructor));
387
+ database_1.Db.reqClass = Req;
20
388
  database_1.Db.getAccessToken = this.authInstance ? this.authInstance.getAccessToken.bind(this.authInstance) : function () { return ''; };
21
389
  database_1.Db.runtime = runtime;
22
390
  if (this.wsClientClass) {
@@ -48,10 +416,11 @@ function registerDatabase(app) {
48
416
  }
49
417
  exports.registerDatabase = registerDatabase;
50
418
  try {
419
+ ;
51
420
  window.registerDatabase = registerDatabase;
52
421
  }
53
422
  catch (e) { }
54
423
 
55
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdDO0FBT3hDLElBQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQTtBQUVqQyxTQUFTLFFBQVEsQ0FBQyxRQUFpQjtJQUMzQixJQUFBLEtBQXVCLElBQUksQ0FBQyxRQUFRLEVBQWxDLE9BQU8sYUFBQSxFQUFFLE9BQU8sYUFBa0IsQ0FBQTtJQUUxQyxhQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBRXRDLGFBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUE7SUFDM0csYUFBRSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3RCLGFBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM1QixhQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7S0FDdEM7SUFFRCxJQUFJLENBQUMsYUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNWLGFBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFBO0tBQ2I7SUFFRCxPQUFPLElBQUksYUFBRSxnQ0FBTSxJQUFJLENBQUMsTUFBTSxLQUFFLFFBQVEsRUFBRSxJQUFJLEtBQUssUUFBUSxFQUFHLENBQUE7QUFDaEUsQ0FBQztBQUVELElBQU0sU0FBUyxHQUF3QjtJQUNyQyxJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUU7UUFDTixRQUFRLFVBQUE7S0FDVDtDQUNGLENBQUE7QUFDRCxJQUFJO0lBQ0YsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0NBQ3ZDO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztBQUVmLFNBQWdCLGdCQUFnQixDQUFDLEdBQW9DO0lBQ25FLElBQUk7UUFDRixHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUE7S0FDakM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBTkQsNENBTUM7QUFFRCxJQUFJO0lBQ0QsTUFBYyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFBO0NBQ3BEO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERiIH0gZnJvbSAnQGNsb3VkYmFzZS9kYXRhYmFzZSdcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IGNsb3VkYmFzZU5TIGZyb20gJy4uLy4uL2luZGV4J1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdkYXRhYmFzZSdcblxuZnVuY3Rpb24gZGF0YWJhc2UoZGJDb25maWc/OiBvYmplY3QpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB0aGlzLnBsYXRmb3JtXG5cbiAgRGIucmVxQ2xhc3MgPSB0aGlzLnJlcXVlc3QuY29uc3RydWN0b3JcbiAgLy8g5pyq55m75b2V5oOF5Ya15LiL5Lyg5YWl56m65Ye95pWwXG4gIERiLmdldEFjY2Vzc1Rva2VuID0gdGhpcy5hdXRoSW5zdGFuY2UgPyB0aGlzLmF1dGhJbnN0YW5jZS5nZXRBY2Nlc3NUb2tlbi5iaW5kKHRoaXMuYXV0aEluc3RhbmNlKSA6ICgpID0+ICcnXG4gIERiLnJ1bnRpbWUgPSBydW50aW1lXG4gIGlmICh0aGlzLndzQ2xpZW50Q2xhc3MpIHtcbiAgICBEYi53c0NsYXNzID0gYWRhcHRlci53c0NsYXNzXG4gICAgRGIud3NDbGllbnRDbGFzcyA9IHRoaXMud3NDbGllbnRDbGFzc1xuICB9XG5cbiAgaWYgKCFEYi53cykge1xuICAgIERiLndzID0gbnVsbFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYih7IC4uLnRoaXMuY29uZmlnLCBfZnJvbUFwcDogdGhpcywgLi4uZGJDb25maWcgfSlcbn1cblxuY29uc3QgY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50ID0ge1xuICBuYW1lOiBDT01QT05FTlRfTkFNRSxcbiAgZW50aXR5OiB7XG4gICAgZGF0YWJhc2UsXG4gIH0sXG59XG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxufSBjYXRjaCAoZSkgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRhdGFiYXNlKGFwcDogSUNsb3VkYmFzZSB8IHR5cGVvZiBjbG91ZGJhc2VOUykge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG50cnkge1xuICAod2luZG93IGFzIGFueSkucmVnaXN0ZXJEYXRhYmFzZSA9IHJlZ2lzdGVyRGF0YWJhc2Vcbn0gY2F0Y2ggKGUpIHt9Il19
424
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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dkM7QUFBQyxPQUFPLENBQUMsRUFBRSxHQUFFO0FBRWQsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBb0M7SUFDbkUsSUFBSTtRQUNGLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtLQUNqQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtBQUNILENBQUM7QUFORCw0Q0FNQztBQUVELElBQUk7SUFDRixDQUFDO0lBQUMsTUFBYyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFBO0NBQ3JEO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERiIH0gZnJvbSAnQGNsb3VkYmFzZS9kYXRhYmFzZSdcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IGNsb3VkYmFzZU5TIGZyb20gJy4uLy4uL2luZGV4J1xuaW1wb3J0IHsgRUpTT04gfSBmcm9tICdic29uJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuZGVjbGFyZSB0eXBlIFF1ZXJ5VHlwZSA9ICdXSEVSRScgfCAnRE9DJ1xuXG5pbnRlcmZhY2UgSUJhc2VEYiB7XG4gIGluc3RhbmNlPzogc3RyaW5nIC8vIOWunuS+i+WQjSDpu5jorqTkuLogKGRlZmF1bHQpXG4gIGRhdGFiYXNlPzogc3RyaW5nIC8vIOaVsOaNruW6k+WQjSAg6buY6K6k5Li6IChkZWZhdWx0KVxufVxuXG5pbnRlcmZhY2UgSUJhc2VSZXEgZXh0ZW5kcyBJQmFzZURiIHtcbiAgY29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuICB0cmFuc2FjdGlvbklkPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBJRG9jdW1lbnRzUXVlcnlSZXEgZXh0ZW5kcyBJQmFzZVJlcSB7XG4gIHF1ZXJ5PzogT2JqZWN0XG4gIC8vIEBkZXByZWNhdGVkXG4gIHF1ZXJ5VHlwZT86IFF1ZXJ5VHlwZVxuICBvcmRlcj86IHN0cmluZ1tdXG4gIG9mZnNldD86IG51bWJlclxuICBsaW1pdD86IG51bWJlclxuICBwcm9qZWN0aW9uPzogT2JqZWN0XG59XG5cbmludGVyZmFjZSBJRG9jdW1lbnRzQWRkUmVxIGV4dGVuZHMgSUJhc2VSZXEge1xuICBkYXRhOiBPYmplY3QgfCBPYmplY3RbXVxufVxuXG5pbnRlcmZhY2UgSURvY3VtZW50c1VwZGF0ZVJlcSBleHRlbmRzIElCYXNlUmVxIHtcbiAgcXVlcnk6IE9iamVjdFxuICBkYXRhOiBPYmplY3RcbiAgbXVsdGk/OiBib29sZWFuIC8vIOaYr+WQpuaJuemHj+abtOaWsO+8iOm7mOiupCBmYWxzZe+8iVxuICBtZXJnZT86IGJvb2xlYW4gLy8g5oqK5omA5pyJ5pu05paw5pWw5o2u6L2s5Li65bim5pON5L2c56ym55qEXG4gIHVwc2VydD86IGJvb2xlYW4gLy8g5LiN5a2Y5Zyo5pe25piv5ZCm5Yib5bu677yI6buY6K6kIGZhbHNl77yJXG4gIC8vIFRPRE9cbiAgcmVwbGFjZU1vZGU/OiBib29sZWFuIC8vIOaYr+WQpuabv+aNouaVtOS4quaWh+aho++8iOm7mOiupCBmYWxzZe+8jOS4uiB0cnVlIOaXtuabv+aNouaVtOS4quaWh+aho+iAjOmdnuWQiOW5tuabtOaWsO+8iVxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuaW50ZXJmYWNlIElEb2N1bWVudHNSZW1vdmVSZXEgZXh0ZW5kcyBJQmFzZVJlcSB7XG4gIHF1ZXJ5OiBPYmplY3RcbiAgbXVsdGk/OiBib29sZWFuIC8vIOaYr+WQpuaJuemHj+WIoOmZpO+8iOm7mOiupCBmYWxzZe+8iVxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuaW50ZXJmYWNlIElEb2N1bWVudHNDb3VudFJlcSBleHRlbmRzIElCYXNlUmVxIHtcbiAgcXVlcnk6IE9iamVjdFxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuLyoqXG4gKiDmlbDmja7lupPphY3nva7mjqXlj6NcbiAqL1xuaW50ZXJmYWNlIElEYkNvbmZpZyB7XG4gIC8qKiDlrp7kvosgSUTvvIjlj6/pgInvvIkgKi9cbiAgaW5zdGFuY2U/OiBzdHJpbmdcbiAgLyoqIOaVsOaNruW6k+WQjeensO+8iOWPr+mAie+8iSAqL1xuICBkYXRhYmFzZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgSUNvbW1vblJlczxUPiB7XG4gIGRhdGE/OiBUICYgeyBjb2RlPzogc3RyaW5nIH1cbiAgc3RhdHVzQ29kZTogbnVtYmVyXG4gIHJlcXVlc3RJZDogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgbWVzc2FnZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgSUFkZFJlcyB7XG4gIF9pZDogc3RyaW5nXG4gIGluc2VydGVkSWRzOiBzdHJpbmdbXVxufVxuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdkYXRhYmFzZSdcblxuY29uc3QgZ2F0ZVdheUZ1bmMgPSB7XG4gIGdldFVybFByZWZpeDogZnVuY3Rpb24gKGRhdGE6IElCYXNlRGIpIHtcbiAgICByZXR1cm4gYC9kYXRhYmFzZS9pbnN0YW5jZXMvJHtkYXRhPy5pbnN0YW5jZSB8fCAnKGRlZmF1bHQpJ30vZGF0YWJhc2VzLyR7ZGF0YT8uZGF0YWJhc2UgfHwgJyhkZWZhdWx0KSd9YFxuICB9LFxuICAnZGF0YWJhc2UucXVlcnlEb2N1bWVudCc6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICBkYXRhOiBJRG9jdW1lbnRzUXVlcnlSZXEsXG4gICk6IFByb21pc2U8SUNvbW1vblJlczx7IG9mZnNldDogbnVtYmVyOyBsaW1pdDogbnVtYmVyOyBsaXN0OiBhbnlbXSB9Pj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vY29sbGVjdGlvbnMvJHtkYXRhLmNvbGxlY3Rpb25OYW1lfS9kb2N1bWVudHM/cHJvamVjdGlvbj0ke1xuICAgICAgICBkYXRhLnByb2plY3Rpb24gPyBKU09OLnN0cmluZ2lmeShkYXRhLnByb2plY3Rpb24pIDogJydcbiAgICAgIH0mb2Zmc2V0PSR7ZGF0YS5vZmZzZXQgfHwgMH0mbGltaXQ9JHtkYXRhLmxpbWl0IHx8IDEwMH0mb3JkZXI9JHtcbiAgICAgICAgZGF0YS5vcmRlciA/IEpTT04uc3RyaW5naWZ5KGRhdGEub3JkZXIpIDogJydcbiAgICAgIH0mcXVlcnk9JHtkYXRhLnF1ZXJ5ID8gRUpTT04uc3RyaW5naWZ5KGRhdGEucXVlcnksIHsgcmVsYXhlZDogZmFsc2UgfSkgOiAnJ30mdHJhbnNhY3Rpb25JZD0ke1xuICAgICAgICBkYXRhLnRyYW5zYWN0aW9uSWQgfHwgJydcbiAgICAgIH1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuXG4gICAgZGVsZXRlIHJlcy5oZWFkZXJcblxuICAgIHJldHVybiByZXNcbiAgfSxcbiAgJ2RhdGFiYXNlLmFkZERvY3VtZW50JzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IElEb2N1bWVudHNBZGRSZXEpOiBQcm9taXNlPElDb21tb25SZXM8SUFkZFJlcz4+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zLyR7ZGF0YS5jb2xsZWN0aW9uTmFtZX0vZG9jdW1lbnRzYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGEuZGF0YSkgPyBkYXRhLmRhdGEgOiBbZGF0YS5kYXRhXSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5kYXRhKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgX2lkOiByZXMuZGF0YT8uaW5zZXJ0ZWRJZHM/LlswXSxcbiAgICAgICAgICAuLi5yZXMuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UudXBkYXRlRG9jdW1lbnQnOiBhc3luYyBmdW5jdGlvbiAoXG4gICAgZGF0YTogSURvY3VtZW50c1VwZGF0ZVJlcSxcbiAgKTogUHJvbWlzZTxJQ29tbW9uUmVzPHsgbWF0Y2hlZDogbnVtYmVyOyB1cGRhdGVkOiBudW1iZXI7IHVwc2VydF9pZDogc3RyaW5nIH0+PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nYXRlV2F5KHtcbiAgICAgIHVybDogYCR7Z2F0ZVdheUZ1bmMuZ2V0VXJsUHJlZml4KGRhdGEpfS9jb2xsZWN0aW9ucy8ke2RhdGEuY29sbGVjdGlvbk5hbWV9L2RvY3VtZW50c2AsXG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHF1ZXJ5OiBkYXRhLnF1ZXJ5LFxuICAgICAgICBkYXRhOiBkYXRhLmRhdGEsXG4gICAgICAgIG11bHRpOiAhIWRhdGEubXVsdGksXG4gICAgICAgIHVwc2VydDogISFkYXRhLnVwc2VydCxcbiAgICAgICAgcmVwbGFjZU1vZGU6ICEhZGF0YS5yZXBsYWNlTW9kZSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuZGVsZXRlRG9jdW1lbnQnOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogSURvY3VtZW50c1JlbW92ZVJlcSk6IFByb21pc2U8SUNvbW1vblJlczx7IGRlbGV0ZWQ6IG51bWJlciB9Pj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vY29sbGVjdGlvbnMvJHtkYXRhLmNvbGxlY3Rpb25OYW1lfS9kb2N1bWVudHMvcmVtb3ZlYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YToge1xuICAgICAgICBxdWVyeTogZGF0YS5xdWVyeSxcbiAgICAgICAgbXVsdGk6ICEhZGF0YS5tdWx0aSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuY291bnREb2N1bWVudCc6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJRG9jdW1lbnRzQ291bnRSZXEpOiBQcm9taXNlPElDb21tb25SZXM8eyB0b3RhbDogbnVtYmVyIH0+PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nYXRlV2F5KHtcbiAgICAgIHVybDogYCR7Z2F0ZVdheUZ1bmMuZ2V0VXJsUHJlZml4KGRhdGEpfS9jb2xsZWN0aW9ucy8ke2RhdGEuY29sbGVjdGlvbk5hbWV9L2RvY3VtZW50cz9jb3VudD10cnVlJnF1ZXJ5PSR7XG4gICAgICAgIGRhdGEucXVlcnkgPyBFSlNPTi5zdHJpbmdpZnkoZGF0YS5xdWVyeSwgeyByZWxheGVkOiBmYWxzZSB9KSA6ICcnXG4gICAgICB9YCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSlcblxuICAgIGRlbGV0ZSByZXMuaGVhZGVyXG5cbiAgICByZXR1cm4gcmVzXG4gIH0sXG4gICdkYXRhYmFzZS5hZGRDb2xsZWN0aW9uJzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IHsgY29sbGVjdGlvbk5hbWU6IHN0cmluZyB9ICYgSUJhc2VEYik6IFByb21pc2U8SUNvbW1vblJlczwnJz4+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YTogeyBjb2xsZWN0aW9uTmFtZTogZGF0YS5jb2xsZWN0aW9uTmFtZSB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuYWdncmVnYXRlJzogYXN5bmMgZnVuY3Rpb24gKFxuICAgIGRhdGE6IHsgY29sbGVjdGlvbk5hbWU6IHN0cmluZzsgc3RhZ2VzOiB7IHN0YWdlS2V5OiBzdHJpbmc7IHN0YWdlVmFsdWU6IGFueSB9W10gfSAmIElCYXNlRGIsXG4gICk6IFByb21pc2U8SUNvbW1vblJlczx7IGxpc3Q6IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHBpcGVsaW5lID0gZGF0YS5zdGFnZXMubWFwKChzdGFnZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbc3RhZ2Uuc3RhZ2VLZXldOiBKU09OLnBhcnNlKEVKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHN0YWdlLnN0YWdlVmFsdWUgYXMgYW55KSwgeyByZWxheGVkOiBmYWxzZSB9KSksXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBzdGFnZVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zLyR7ZGF0YS5jb2xsZWN0aW9uTmFtZX0vZG9jdW1lbnRzL2FnZ3JlZ2F0aW9uc2AsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcGlwZWxpbmUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMuZGF0YT8ubGlzdCkpIHtcbiAgICAgIHJlcy5kYXRhLmxpc3QgPSBKU09OLnN0cmluZ2lmeShyZXMuZGF0YS5saXN0Py5tYXAoKGl0ZW0pID0+IEpTT04uc3RyaW5naWZ5KGl0ZW0pKSlcbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2Uuc3RhcnRUcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJQmFzZURiKSB7XG4gICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vdHJhbnNhY3Rpb25zYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pXG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzID0geyAuLi5yZXMsIC4uLnJlcy5kYXRhIH1cbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuY29tbWl0VHJhbnNhY3Rpb24nOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogeyB0cmFuc2FjdGlvbklkOiBzdHJpbmcgfSAmIElCYXNlRGIpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L3RyYW5zYWN0aW9ucy8ke2RhdGEudHJhbnNhY3Rpb25JZH0vY29tbWl0YCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuYWJvcnRUcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiB7IHRyYW5zYWN0aW9uSWQ6IHN0cmluZyB9ICYgSUJhc2VEYikge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vdHJhbnNhY3Rpb25zLyR7ZGF0YS50cmFuc2FjdGlvbklkfS9yb2xsYmFja2AsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9KVxuXG4gICAgZGVsZXRlIHJlcy5oZWFkZXJcblxuICAgIHJldHVybiByZXNcbiAgfSxcbiAgJ2RhdGFiYXNlLmdldEluVHJhbnNhY3Rpb24nOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogSURvY3VtZW50c1F1ZXJ5UmVxKSB7XG4gICAgbGV0IHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jWydkYXRhYmFzZS5xdWVyeURvY3VtZW50J10uYmluZCh0aGlzKShkYXRhKVxuXG4gICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChyZXMuZGF0YT8uY29kZSkge1xuICAgICAgICByZXMgPSB7IC4uLnJlcywgLi4ucmVzLmRhdGEgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLmRhdGEgPSBKU09OLnN0cmluZ2lmeShyZXMuZGF0YSkgYXMgYW55XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UudXBkYXRlRG9jSW5UcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJRG9jdW1lbnRzVXBkYXRlUmVxKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEuZGF0YSA9IEVKU09OLnBhcnNlKGRhdGEuZGF0YSBhcyBhbnkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vXG4gICAgfVxuICAgIGxldCByZXMgPSBhd2FpdCBnYXRlV2F5RnVuY1snZGF0YWJhc2UudXBkYXRlRG9jdW1lbnQnXS5iaW5kKHRoaXMpKGRhdGEpXG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzID0geyAuLi5yZXMsIC4uLnJlcy5kYXRhIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzXG4gIH0sXG4gICdkYXRhYmFzZS5kZWxldGVEb2NJblRyYW5zYWN0aW9uJzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IElEb2N1bWVudHNSZW1vdmVSZXEpIHtcbiAgICBsZXQgcmVzID0gYXdhaXQgZ2F0ZVdheUZ1bmNbJ2RhdGFiYXNlLmRlbGV0ZURvY3VtZW50J10uYmluZCh0aGlzKShkYXRhKVxuXG4gICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJlcyA9IHsgLi4ucmVzLCAuLi5yZXMuZGF0YSB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuaW5zZXJ0RG9jSW5UcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICBkYXRhOiBJRG9jdW1lbnRzQWRkUmVxLFxuICApOiBQcm9taXNlPElDb21tb25SZXM8SUFkZFJlcyAmIHsgaW5zZXJ0ZWQ6IG51bWJlciB9Pj4ge1xuICAgIHRyeSB7XG4gICAgICBkYXRhLmRhdGEgPSBFSlNPTi5wYXJzZShkYXRhLmRhdGEgYXMgYW55KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jWydkYXRhYmFzZS5hZGREb2N1bWVudCddLmJpbmQodGhpcykoZGF0YSlcbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzdWx0ID0geyAuLi5yZXMsIGluc2VydGVkOiArISFyZXMuZGF0YT8uX2lkLCBvazogKyEhcmVzLmRhdGE/Ll9pZCwgLi4ucmVzLmRhdGEgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbn1cblxuZnVuY3Rpb24gZGF0YWJhc2UoZGJDb25maWc/OiBJRGJDb25maWcpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB0aGlzLnBsYXRmb3JtXG5cbiAgY2xhc3MgUmVxIGV4dGVuZHMgdGhpcy5yZXF1ZXN0LmNvbnN0cnVjdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAgIHN1cGVyKGNvbmZpZylcbiAgICB9XG5cbiAgICBhc3luYyBzZW5kKGFjdGlvbjogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICAgIGxldCByZXMgPSBudWxsXG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5lbmRQb2ludE1vZGUgPT09ICdHQVRFV0FZJyAmJiBnYXRlV2F5RnVuY1thY3Rpb25dKSB7XG4gICAgICAgIHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jW2FjdGlvbl0uY2FsbCh0aGlzLCBkYXRhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzID0gYXdhaXQgc3VwZXIuc2VuZChhY3Rpb24sIGRhdGEpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNcbiAgICB9XG4gIH1cblxuICBEYi5yZXFDbGFzcyA9IFJlcVxuICAvLyDmnKrnmbvlvZXmg4XlhrXkuIvkvKDlhaXnqbrlh73mlbBcbiAgRGIuZ2V0QWNjZXNzVG9rZW4gPSB0aGlzLmF1dGhJbnN0YW5jZSA/IHRoaXMuYXV0aEluc3RhbmNlLmdldEFjY2Vzc1Rva2VuLmJpbmQodGhpcy5hdXRoSW5zdGFuY2UpIDogKCkgPT4gJydcbiAgRGIucnVudGltZSA9IHJ1bnRpbWVcbiAgaWYgKHRoaXMud3NDbGllbnRDbGFzcykge1xuICAgIERiLndzQ2xhc3MgPSBhZGFwdGVyLndzQ2xhc3NcbiAgICBEYi53c0NsaWVudENsYXNzID0gdGhpcy53c0NsaWVudENsYXNzXG4gIH1cblxuICBpZiAoIURiLndzKSB7XG4gICAgRGIud3MgPSBudWxsXG4gIH1cblxuICByZXR1cm4gbmV3IERiKHsgLi4udGhpcy5jb25maWcsIF9mcm9tQXBwOiB0aGlzLCAuLi5kYkNvbmZpZyB9KVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBlbnRpdHk6IHtcbiAgICBkYXRhYmFzZSxcbiAgfSxcbn1cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEYXRhYmFzZShhcHA6IElDbG91ZGJhc2UgfCB0eXBlb2YgY2xvdWRiYXNlTlMpIHtcbiAgdHJ5IHtcbiAgICBhcHAucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpXG4gIH1cbn1cblxudHJ5IHtcbiAgOyh3aW5kb3cgYXMgYW55KS5yZWdpc3RlckRhdGFiYXNlID0gcmVnaXN0ZXJEYXRhYmFzZVxufSBjYXRjaCAoZSkge31cbiJdfQ==
56
425
 
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdDO0FBT3hDLElBQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQTtBQUVqQyxTQUFTLFFBQVEsQ0FBQyxRQUFpQjtJQUMzQixJQUFBLEtBQXVCLElBQUksQ0FBQyxRQUFRLEVBQWxDLE9BQU8sYUFBQSxFQUFFLE9BQU8sYUFBa0IsQ0FBQTtJQUUxQyxhQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFBO0lBRXRDLGFBQUUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBTSxPQUFBLEVBQUUsRUFBRixDQUFFLENBQUE7SUFDM0csYUFBRSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDcEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3RCLGFBQUUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM1QixhQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7S0FDdEM7SUFFRCxJQUFJLENBQUMsYUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNWLGFBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFBO0tBQ2I7SUFFRCxPQUFPLElBQUksYUFBRSxnQ0FBTSxJQUFJLENBQUMsTUFBTSxLQUFFLFFBQVEsRUFBRSxJQUFJLEtBQUssUUFBUSxFQUFHLENBQUE7QUFDaEUsQ0FBQztBQUVELElBQU0sU0FBUyxHQUF3QjtJQUNyQyxJQUFJLEVBQUUsY0FBYztJQUNwQixNQUFNLEVBQUU7UUFDTixRQUFRLFVBQUE7S0FDVDtDQUNGLENBQUE7QUFDRCxJQUFJO0lBQ0YsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0NBQ3ZDO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztBQUVmLFNBQWdCLGdCQUFnQixDQUFDLEdBQW9DO0lBQ25FLElBQUk7UUFDRixHQUFHLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUE7S0FDakM7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7QUFDSCxDQUFDO0FBTkQsNENBTUM7QUFFRCxJQUFJO0lBQ0QsTUFBYyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFBO0NBQ3BEO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERiIH0gZnJvbSAnQGNsb3VkYmFzZS9kYXRhYmFzZSdcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IGNsb3VkYmFzZU5TIGZyb20gJy4uLy4uL2luZGV4J1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdkYXRhYmFzZSdcblxuZnVuY3Rpb24gZGF0YWJhc2UoZGJDb25maWc/OiBvYmplY3QpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB0aGlzLnBsYXRmb3JtXG5cbiAgRGIucmVxQ2xhc3MgPSB0aGlzLnJlcXVlc3QuY29uc3RydWN0b3JcbiAgLy8g5pyq55m75b2V5oOF5Ya15LiL5Lyg5YWl56m65Ye95pWwXG4gIERiLmdldEFjY2Vzc1Rva2VuID0gdGhpcy5hdXRoSW5zdGFuY2UgPyB0aGlzLmF1dGhJbnN0YW5jZS5nZXRBY2Nlc3NUb2tlbi5iaW5kKHRoaXMuYXV0aEluc3RhbmNlKSA6ICgpID0+ICcnXG4gIERiLnJ1bnRpbWUgPSBydW50aW1lXG4gIGlmICh0aGlzLndzQ2xpZW50Q2xhc3MpIHtcbiAgICBEYi53c0NsYXNzID0gYWRhcHRlci53c0NsYXNzXG4gICAgRGIud3NDbGllbnRDbGFzcyA9IHRoaXMud3NDbGllbnRDbGFzc1xuICB9XG5cbiAgaWYgKCFEYi53cykge1xuICAgIERiLndzID0gbnVsbFxuICB9XG5cbiAgcmV0dXJuIG5ldyBEYih7IC4uLnRoaXMuY29uZmlnLCBfZnJvbUFwcDogdGhpcywgLi4uZGJDb25maWcgfSlcbn1cblxuY29uc3QgY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50ID0ge1xuICBuYW1lOiBDT01QT05FTlRfTkFNRSxcbiAgZW50aXR5OiB7XG4gICAgZGF0YWJhc2UsXG4gIH0sXG59XG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxufSBjYXRjaCAoZSkgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRhdGFiYXNlKGFwcDogSUNsb3VkYmFzZSB8IHR5cGVvZiBjbG91ZGJhc2VOUykge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG50cnkge1xuICAod2luZG93IGFzIGFueSkucmVnaXN0ZXJEYXRhYmFzZSA9IHJlZ2lzdGVyRGF0YWJhc2Vcbn0gY2F0Y2ggKGUpIHt9Il19
426
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdDO0FBSXhDLDZCQUE0QjtBQTZFNUIsSUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFBO0FBRWpDLElBQU0sV0FBVyxHQUFHO0lBQ2xCLFlBQVksRUFBRSxVQUFVLElBQWE7UUFDbkMsT0FBTyw4QkFBdUIsQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxLQUFJLFdBQVcsd0JBQWMsQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxLQUFJLFdBQVcsQ0FBRSxDQUFBO0lBQzFHLENBQUM7SUFDRCx3QkFBd0IsRUFBRSxVQUN4QixJQUF3Qjs7Ozs7NEJBRVosV0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDOzRCQUM3QixHQUFHLEVBQUUsVUFBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBZ0IsSUFBSSxDQUFDLGNBQWMsbUNBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUM3QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsb0JBQVUsSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLG9CQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsNEJBQ3pFLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUN4Qjs0QkFDRixNQUFNLEVBQUUsS0FBSzt5QkFDZCxDQUFDLEVBQUE7O3dCQVRJLEdBQUcsR0FBRyxTQVNWO3dCQUVGLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQTt3QkFFakIsV0FBTyxHQUFHLEVBQUE7Ozs7S0FDWDtJQUNELHNCQUFzQixFQUFFLFVBQWdCLElBQXNCOzs7Ozs7NEJBQ2hELFdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDN0IsR0FBRyxFQUFFLFVBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMEJBQWdCLElBQUksQ0FBQyxjQUFjLGVBQVk7NEJBQ3JGLE1BQU0sRUFBRSxNQUFNOzRCQUNkLElBQUksYUFDRixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUNyRCxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ3JFO3lCQUNGLENBQUMsRUFBQTs7d0JBUEksR0FBRyxHQUFHLFNBT1Y7d0JBRUYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUM3QixpQ0FDSyxHQUFHLEtBQ04sSUFBSSxhQUNGLEdBQUcsRUFBRSxNQUFBLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUUsV0FBVywwQ0FBRyxDQUFDLENBQUMsSUFDNUIsR0FBRyxDQUFDLElBQUksTUFFZDt5QkFDRjt3QkFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUE7d0JBRWpCLFdBQU8sR0FBRyxFQUFBOzs7O0tBQ1g7SUFDRCx5QkFBeUIsRUFBRSxVQUN6QixJQUF5Qjs7Ozs7NEJBRWIsV0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDOzRCQUM3QixHQUFHLEVBQUUsVUFBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywwQkFBZ0IsSUFBSSxDQUFDLGNBQWMsZUFBWTs0QkFDckYsTUFBTSxFQUFFLE9BQU87NEJBQ2YsSUFBSSxhQUNGLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFDZixLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQ25CLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDckIsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUM1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ3JFO3lCQUNGLENBQUMsRUFBQTs7d0JBWEksR0FBRyxHQUFHLFNBV1Y7d0JBRUYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFBO3dCQUVqQixXQUFPLEdBQUcsRUFBQTs7OztLQUNYO0lBQ0QseUJBQXlCLEVBQUUsVUFBZ0IsSUFBeUI7Ozs7OzRCQUN0RCxXQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBQzdCLEdBQUcsRUFBRSxVQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUFnQixJQUFJLENBQUMsY0FBYyxzQkFBbUI7NEJBQzVGLE1BQU0sRUFBRSxNQUFNOzRCQUNkLElBQUksYUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFDakIsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUNoQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ3JFO3lCQUNGLENBQUMsRUFBQTs7d0JBUkksR0FBRyxHQUFHLFNBUVY7d0JBRUYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFBO3dCQUVqQixXQUFPLEdBQUcsRUFBQTs7OztLQUNYO0lBQ0Qsd0JBQXdCLEVBQUUsVUFBZ0IsSUFBd0I7Ozs7OzRCQUNwRCxXQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7NEJBQzdCLEdBQUcsRUFBRSxVQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUFnQixJQUFJLENBQUMsY0FBYyx5Q0FDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakU7NEJBQ0YsTUFBTSxFQUFFLEtBQUs7eUJBQ2QsQ0FBQyxFQUFBOzt3QkFMSSxHQUFHLEdBQUcsU0FLVjt3QkFFRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUE7d0JBRWpCLFdBQU8sR0FBRyxFQUFBOzs7O0tBQ1g7SUFDRCx3QkFBd0IsRUFBRSxVQUFnQixJQUEwQzs7Ozs7NEJBQ3RFLFdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDN0IsR0FBRyxFQUFFLFVBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWM7NEJBQ3BELE1BQU0sRUFBRSxNQUFNOzRCQUNkLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO3lCQUM5QyxDQUFDLEVBQUE7O3dCQUpJLEdBQUcsR0FBRyxTQUlWO3dCQUVGLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQTt3QkFFakIsV0FBTyxHQUFHLEVBQUE7Ozs7S0FDWDtJQUNELG9CQUFvQixFQUFFLFVBQ3BCLElBQTJGOzs7Ozs7O3dCQUVyRixRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxLQUFLOzs0QkFDckMsSUFBSTtnQ0FDRjtvQ0FDRSxHQUFDLEtBQUssQ0FBQyxRQUFRLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQWlCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO3VDQUN2Rzs2QkFDRjs0QkFBQyxPQUFPLEtBQUssRUFBRTtnQ0FDZCxPQUFPLEtBQUssQ0FBQTs2QkFDYjt3QkFDSCxDQUFDLENBQUMsQ0FBQTt3QkFFVSxXQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7Z0NBQzdCLEdBQUcsRUFBRSxVQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLDBCQUFnQixJQUFJLENBQUMsY0FBYyw0QkFBeUI7Z0NBQ2xHLE1BQU0sRUFBRSxNQUFNO2dDQUNkLElBQUksRUFBRTtvQ0FDSixRQUFRLFVBQUE7aUNBQ1Q7NkJBQ0YsQ0FBQyxFQUFBOzt3QkFOSSxHQUFHLEdBQUcsU0FNVjt3QkFFRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBQSxHQUFHLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUMsRUFBRTs0QkFDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFBLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSwwQ0FBRSxHQUFHLENBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFwQixDQUFvQixDQUFDLENBQUMsQ0FBQTt5QkFDbkY7d0JBRUQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFBO3dCQUVqQixXQUFPLEdBQUcsRUFBQTs7OztLQUNYO0lBQ0QsMkJBQTJCLEVBQUUsVUFBZ0IsSUFBYTs7Ozs7NEJBQzlDLFdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDM0IsR0FBRyxFQUFFLFVBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWU7NEJBQ3JELE1BQU0sRUFBRSxNQUFNO3lCQUNmLENBQUMsRUFBQTs7d0JBSEUsR0FBRyxHQUFHLFNBR1I7d0JBRUYsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFOzRCQUNoQyxHQUFHLHlCQUFRLEdBQUcsR0FBSyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUE7eUJBQzlCO3dCQUVELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQTt3QkFFakIsV0FBTyxHQUFHLEVBQUE7Ozs7S0FDWDtJQUNELDRCQUE0QixFQUFFLFVBQWdCLElBQXlDOzs7Ozs0QkFDekUsV0FBTSxJQUFJLENBQUMsT0FBTyxDQUFDOzRCQUM3QixHQUFHLEVBQUUsVUFBRyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywyQkFBaUIsSUFBSSxDQUFDLGFBQWEsWUFBUzs0QkFDbEYsTUFBTSxFQUFFLE1BQU07eUJBQ2YsQ0FBQyxFQUFBOzt3QkFISSxHQUFHLEdBQUcsU0FHVjt3QkFFRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUE7d0JBRWpCLFdBQU8sR0FBRyxFQUFBOzs7O0tBQ1g7SUFDRCwyQkFBMkIsRUFBRSxVQUFnQixJQUF5Qzs7Ozs7NEJBQ3hFLFdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDN0IsR0FBRyxFQUFFLFVBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMkJBQWlCLElBQUksQ0FBQyxhQUFhLGNBQVc7NEJBQ3BGLE1BQU0sRUFBRSxNQUFNO3lCQUNmLENBQUMsRUFBQTs7d0JBSEksR0FBRyxHQUFHLFNBR1Y7d0JBRUYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFBO3dCQUVqQixXQUFPLEdBQUcsRUFBQTs7OztLQUNYO0lBQ0QsMkJBQTJCLEVBQUUsVUFBZ0IsSUFBd0I7Ozs7Ozs0QkFDekQsV0FBTSxXQUFXLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUFsRSxHQUFHLEdBQUcsU0FBNEQ7d0JBRXRFLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTs0QkFDaEMsSUFBSSxNQUFBLEdBQUcsQ0FBQyxJQUFJLDBDQUFFLElBQUksRUFBRTtnQ0FDbEIsR0FBRyx5QkFBUSxHQUFHLEdBQUssR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFBOzZCQUM5QjtpQ0FBTTtnQ0FDTCxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBUSxDQUFBOzZCQUMzQzt5QkFDRjt3QkFFRCxXQUFPLEdBQUcsRUFBQTs7OztLQUNYO0lBQ0QsaUNBQWlDLEVBQUUsVUFBZ0IsSUFBeUI7Ozs7Ozt3QkFDMUUsSUFBSTs0QkFDRixJQUFJLENBQUMsSUFBSSxHQUFHLFlBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQVcsQ0FBQyxDQUFBO3lCQUMxQzt3QkFBQyxPQUFPLEtBQUssRUFBRTt5QkFFZjt3QkFDUyxXQUFNLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQW5FLEdBQUcsR0FBRyxTQUE2RDt3QkFFdkUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFOzRCQUNoQyxHQUFHLHlCQUFRLEdBQUcsR0FBSyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUE7eUJBQzlCO3dCQUVELFdBQU8sR0FBRyxFQUFBOzs7O0tBQ1g7SUFDRCxpQ0FBaUMsRUFBRSxVQUFnQixJQUF5Qjs7Ozs7NEJBQ2hFLFdBQU0sV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBbkUsR0FBRyxHQUFHLFNBQTZEO3dCQUV2RSxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7NEJBQ2hDLEdBQUcseUJBQVEsR0FBRyxHQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUUsQ0FBQTt5QkFDOUI7d0JBRUQsV0FBTyxHQUFHLEVBQUE7Ozs7S0FDWDtJQUNELGlDQUFpQyxFQUFFLFVBQ2pDLElBQXNCOzs7Ozs7O3dCQUV0QixJQUFJOzRCQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBVyxDQUFDLENBQUE7eUJBQzFDO3dCQUFDLE9BQU8sS0FBSyxFQUFFO3lCQUVmO3dCQUVXLFdBQU0sV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBaEUsR0FBRyxHQUFHLFNBQTBEO3dCQUd0RSxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7NEJBQ2hDLE1BQU0sa0NBQVEsR0FBRyxLQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUUsR0FBRyxDQUFBLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsTUFBQSxHQUFHLENBQUMsSUFBSSwwQ0FBRSxHQUFHLENBQUEsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUE7eUJBQ25GO3dCQUVELFdBQU8sTUFBTSxFQUFBOzs7O0tBQ2Q7Q0FDRixDQUFBO0FBRUQsU0FBUyxRQUFRLENBQUMsUUFBb0I7SUFDOUIsSUFBQSxLQUF1QixJQUFJLENBQUMsUUFBUSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxPQUFPLGFBQWtCLENBQUE7SUFFMUM7UUFBa0IsdUJBQXdCO1FBQ3hDLGFBQVksTUFBTTttQkFDaEIsa0JBQU0sTUFBTSxDQUFDO1FBQ2YsQ0FBQztRQUVLLGtCQUFJLEdBQVYsVUFBVyxNQUFjLEVBQUUsSUFBUzs7Ozs7OzRCQUM5QixHQUFHLEdBQUcsSUFBSSxDQUFBO2lDQUVWLENBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxFQUE3RCxjQUE2RDs0QkFDekQsV0FBTSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBQTs7NEJBQWhELEdBQUcsR0FBRyxTQUEwQyxDQUFBOztnQ0FFMUMsV0FBTSxpQkFBTSxJQUFJLFlBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFBOzs0QkFBcEMsR0FBRyxHQUFHLFNBQThCLENBQUE7O2dDQUd0QyxXQUFPLEdBQUcsRUFBQTs7OztTQUNYO1FBQ0gsVUFBQztJQUFELENBaEJBLEFBZ0JDLENBaEJpQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FnQnpDO0lBRUQsYUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUE7SUFFakIsYUFBRSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFNLE9BQUEsRUFBRSxFQUFGLENBQUUsQ0FBQTtJQUMzRyxhQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDdEIsYUFBRSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQzVCLGFBQUUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtLQUN0QztJQUVELElBQUksQ0FBQyxhQUFFLENBQUMsRUFBRSxFQUFFO1FBQ1YsYUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUE7S0FDYjtJQUVELE9BQU8sSUFBSSxhQUFFLGdDQUFNLElBQUksQ0FBQyxNQUFNLEtBQUUsUUFBUSxFQUFFLElBQUksS0FBSyxRQUFRLEVBQUcsQ0FBQTtBQUNoRSxDQUFDO0FBRUQsSUFBTSxTQUFTLEdBQXdCO0lBQ3JDLElBQUksRUFBRSxjQUFjO0lBQ3BCLE1BQU0sRUFBRTtRQUNOLFFBQVEsVUFBQTtLQUNUO0NBQ0YsQ0FBQTtBQUNELElBQUk7SUFDRixTQUFTLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUE7Q0FDdkM7QUFBQyxPQUFPLENBQUMsRUFBRSxHQUFFO0FBRWQsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBb0M7SUFDbkUsSUFBSTtRQUNGLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtLQUNqQztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtBQUNILENBQUM7QUFORCw0Q0FNQztBQUVELElBQUk7SUFDRixDQUFDO0lBQUMsTUFBYyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFBO0NBQ3JEO0FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERiIH0gZnJvbSAnQGNsb3VkYmFzZS9kYXRhYmFzZSdcbmltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IGNsb3VkYmFzZU5TIGZyb20gJy4uLy4uL2luZGV4J1xuaW1wb3J0IHsgRUpTT04gfSBmcm9tICdic29uJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuZGVjbGFyZSB0eXBlIFF1ZXJ5VHlwZSA9ICdXSEVSRScgfCAnRE9DJ1xuXG5pbnRlcmZhY2UgSUJhc2VEYiB7XG4gIGluc3RhbmNlPzogc3RyaW5nIC8vIOWunuS+i+WQjSDpu5jorqTkuLogKGRlZmF1bHQpXG4gIGRhdGFiYXNlPzogc3RyaW5nIC8vIOaVsOaNruW6k+WQjSAg6buY6K6k5Li6IChkZWZhdWx0KVxufVxuXG5pbnRlcmZhY2UgSUJhc2VSZXEgZXh0ZW5kcyBJQmFzZURiIHtcbiAgY29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuICB0cmFuc2FjdGlvbklkPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBJRG9jdW1lbnRzUXVlcnlSZXEgZXh0ZW5kcyBJQmFzZVJlcSB7XG4gIHF1ZXJ5PzogT2JqZWN0XG4gIC8vIEBkZXByZWNhdGVkXG4gIHF1ZXJ5VHlwZT86IFF1ZXJ5VHlwZVxuICBvcmRlcj86IHN0cmluZ1tdXG4gIG9mZnNldD86IG51bWJlclxuICBsaW1pdD86IG51bWJlclxuICBwcm9qZWN0aW9uPzogT2JqZWN0XG59XG5cbmludGVyZmFjZSBJRG9jdW1lbnRzQWRkUmVxIGV4dGVuZHMgSUJhc2VSZXEge1xuICBkYXRhOiBPYmplY3QgfCBPYmplY3RbXVxufVxuXG5pbnRlcmZhY2UgSURvY3VtZW50c1VwZGF0ZVJlcSBleHRlbmRzIElCYXNlUmVxIHtcbiAgcXVlcnk6IE9iamVjdFxuICBkYXRhOiBPYmplY3RcbiAgbXVsdGk/OiBib29sZWFuIC8vIOaYr+WQpuaJuemHj+abtOaWsO+8iOm7mOiupCBmYWxzZe+8iVxuICBtZXJnZT86IGJvb2xlYW4gLy8g5oqK5omA5pyJ5pu05paw5pWw5o2u6L2s5Li65bim5pON5L2c56ym55qEXG4gIHVwc2VydD86IGJvb2xlYW4gLy8g5LiN5a2Y5Zyo5pe25piv5ZCm5Yib5bu677yI6buY6K6kIGZhbHNl77yJXG4gIC8vIFRPRE9cbiAgcmVwbGFjZU1vZGU/OiBib29sZWFuIC8vIOaYr+WQpuabv+aNouaVtOS4quaWh+aho++8iOm7mOiupCBmYWxzZe+8jOS4uiB0cnVlIOaXtuabv+aNouaVtOS4quaWh+aho+iAjOmdnuWQiOW5tuabtOaWsO+8iVxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuaW50ZXJmYWNlIElEb2N1bWVudHNSZW1vdmVSZXEgZXh0ZW5kcyBJQmFzZVJlcSB7XG4gIHF1ZXJ5OiBPYmplY3RcbiAgbXVsdGk/OiBib29sZWFuIC8vIOaYr+WQpuaJuemHj+WIoOmZpO+8iOm7mOiupCBmYWxzZe+8iVxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuaW50ZXJmYWNlIElEb2N1bWVudHNDb3VudFJlcSBleHRlbmRzIElCYXNlUmVxIHtcbiAgcXVlcnk6IE9iamVjdFxuICAvLyBAZGVwcmVjYXRlZFxuICBxdWVyeVR5cGU/OiBRdWVyeVR5cGVcbn1cblxuLyoqXG4gKiDmlbDmja7lupPphY3nva7mjqXlj6NcbiAqL1xuaW50ZXJmYWNlIElEYkNvbmZpZyB7XG4gIC8qKiDlrp7kvosgSUTvvIjlj6/pgInvvIkgKi9cbiAgaW5zdGFuY2U/OiBzdHJpbmdcbiAgLyoqIOaVsOaNruW6k+WQjeensO+8iOWPr+mAie+8iSAqL1xuICBkYXRhYmFzZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgSUNvbW1vblJlczxUPiB7XG4gIGRhdGE/OiBUICYgeyBjb2RlPzogc3RyaW5nIH1cbiAgc3RhdHVzQ29kZTogbnVtYmVyXG4gIHJlcXVlc3RJZDogc3RyaW5nXG4gIGNvZGU/OiBzdHJpbmdcbiAgbWVzc2FnZT86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgSUFkZFJlcyB7XG4gIF9pZDogc3RyaW5nXG4gIGluc2VydGVkSWRzOiBzdHJpbmdbXVxufVxuXG5jb25zdCBDT01QT05FTlRfTkFNRSA9ICdkYXRhYmFzZSdcblxuY29uc3QgZ2F0ZVdheUZ1bmMgPSB7XG4gIGdldFVybFByZWZpeDogZnVuY3Rpb24gKGRhdGE6IElCYXNlRGIpIHtcbiAgICByZXR1cm4gYC9kYXRhYmFzZS9pbnN0YW5jZXMvJHtkYXRhPy5pbnN0YW5jZSB8fCAnKGRlZmF1bHQpJ30vZGF0YWJhc2VzLyR7ZGF0YT8uZGF0YWJhc2UgfHwgJyhkZWZhdWx0KSd9YFxuICB9LFxuICAnZGF0YWJhc2UucXVlcnlEb2N1bWVudCc6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICBkYXRhOiBJRG9jdW1lbnRzUXVlcnlSZXEsXG4gICk6IFByb21pc2U8SUNvbW1vblJlczx7IG9mZnNldDogbnVtYmVyOyBsaW1pdDogbnVtYmVyOyBsaXN0OiBhbnlbXSB9Pj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vY29sbGVjdGlvbnMvJHtkYXRhLmNvbGxlY3Rpb25OYW1lfS9kb2N1bWVudHM/cHJvamVjdGlvbj0ke1xuICAgICAgICBkYXRhLnByb2plY3Rpb24gPyBKU09OLnN0cmluZ2lmeShkYXRhLnByb2plY3Rpb24pIDogJydcbiAgICAgIH0mb2Zmc2V0PSR7ZGF0YS5vZmZzZXQgfHwgMH0mbGltaXQ9JHtkYXRhLmxpbWl0IHx8IDEwMH0mb3JkZXI9JHtcbiAgICAgICAgZGF0YS5vcmRlciA/IEpTT04uc3RyaW5naWZ5KGRhdGEub3JkZXIpIDogJydcbiAgICAgIH0mcXVlcnk9JHtkYXRhLnF1ZXJ5ID8gRUpTT04uc3RyaW5naWZ5KGRhdGEucXVlcnksIHsgcmVsYXhlZDogZmFsc2UgfSkgOiAnJ30mdHJhbnNhY3Rpb25JZD0ke1xuICAgICAgICBkYXRhLnRyYW5zYWN0aW9uSWQgfHwgJydcbiAgICAgIH1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuXG4gICAgZGVsZXRlIHJlcy5oZWFkZXJcblxuICAgIHJldHVybiByZXNcbiAgfSxcbiAgJ2RhdGFiYXNlLmFkZERvY3VtZW50JzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IElEb2N1bWVudHNBZGRSZXEpOiBQcm9taXNlPElDb21tb25SZXM8SUFkZFJlcz4+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zLyR7ZGF0YS5jb2xsZWN0aW9uTmFtZX0vZG9jdW1lbnRzYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGEuZGF0YSkgPyBkYXRhLmRhdGEgOiBbZGF0YS5kYXRhXSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5kYXRhKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgX2lkOiByZXMuZGF0YT8uaW5zZXJ0ZWRJZHM/LlswXSxcbiAgICAgICAgICAuLi5yZXMuZGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UudXBkYXRlRG9jdW1lbnQnOiBhc3luYyBmdW5jdGlvbiAoXG4gICAgZGF0YTogSURvY3VtZW50c1VwZGF0ZVJlcSxcbiAgKTogUHJvbWlzZTxJQ29tbW9uUmVzPHsgbWF0Y2hlZDogbnVtYmVyOyB1cGRhdGVkOiBudW1iZXI7IHVwc2VydF9pZDogc3RyaW5nIH0+PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nYXRlV2F5KHtcbiAgICAgIHVybDogYCR7Z2F0ZVdheUZ1bmMuZ2V0VXJsUHJlZml4KGRhdGEpfS9jb2xsZWN0aW9ucy8ke2RhdGEuY29sbGVjdGlvbk5hbWV9L2RvY3VtZW50c2AsXG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHF1ZXJ5OiBkYXRhLnF1ZXJ5LFxuICAgICAgICBkYXRhOiBkYXRhLmRhdGEsXG4gICAgICAgIG11bHRpOiAhIWRhdGEubXVsdGksXG4gICAgICAgIHVwc2VydDogISFkYXRhLnVwc2VydCxcbiAgICAgICAgcmVwbGFjZU1vZGU6ICEhZGF0YS5yZXBsYWNlTW9kZSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuZGVsZXRlRG9jdW1lbnQnOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogSURvY3VtZW50c1JlbW92ZVJlcSk6IFByb21pc2U8SUNvbW1vblJlczx7IGRlbGV0ZWQ6IG51bWJlciB9Pj4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vY29sbGVjdGlvbnMvJHtkYXRhLmNvbGxlY3Rpb25OYW1lfS9kb2N1bWVudHMvcmVtb3ZlYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YToge1xuICAgICAgICBxdWVyeTogZGF0YS5xdWVyeSxcbiAgICAgICAgbXVsdGk6ICEhZGF0YS5tdWx0aSxcbiAgICAgICAgLi4uKGRhdGEudHJhbnNhY3Rpb25JZCA/IHsgdHJhbnNhY3Rpb25JZDogZGF0YS50cmFuc2FjdGlvbklkIH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuY291bnREb2N1bWVudCc6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJRG9jdW1lbnRzQ291bnRSZXEpOiBQcm9taXNlPElDb21tb25SZXM8eyB0b3RhbDogbnVtYmVyIH0+PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5nYXRlV2F5KHtcbiAgICAgIHVybDogYCR7Z2F0ZVdheUZ1bmMuZ2V0VXJsUHJlZml4KGRhdGEpfS9jb2xsZWN0aW9ucy8ke2RhdGEuY29sbGVjdGlvbk5hbWV9L2RvY3VtZW50cz9jb3VudD10cnVlJnF1ZXJ5PSR7XG4gICAgICAgIGRhdGEucXVlcnkgPyBFSlNPTi5zdHJpbmdpZnkoZGF0YS5xdWVyeSwgeyByZWxheGVkOiBmYWxzZSB9KSA6ICcnXG4gICAgICB9YCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSlcblxuICAgIGRlbGV0ZSByZXMuaGVhZGVyXG5cbiAgICByZXR1cm4gcmVzXG4gIH0sXG4gICdkYXRhYmFzZS5hZGRDb2xsZWN0aW9uJzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IHsgY29sbGVjdGlvbk5hbWU6IHN0cmluZyB9ICYgSUJhc2VEYik6IFByb21pc2U8SUNvbW1vblJlczwnJz4+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgZGF0YTogeyBjb2xsZWN0aW9uTmFtZTogZGF0YS5jb2xsZWN0aW9uTmFtZSB9LFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuYWdncmVnYXRlJzogYXN5bmMgZnVuY3Rpb24gKFxuICAgIGRhdGE6IHsgY29sbGVjdGlvbk5hbWU6IHN0cmluZzsgc3RhZ2VzOiB7IHN0YWdlS2V5OiBzdHJpbmc7IHN0YWdlVmFsdWU6IGFueSB9W10gfSAmIElCYXNlRGIsXG4gICk6IFByb21pc2U8SUNvbW1vblJlczx7IGxpc3Q6IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHBpcGVsaW5lID0gZGF0YS5zdGFnZXMubWFwKChzdGFnZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbc3RhZ2Uuc3RhZ2VLZXldOiBKU09OLnBhcnNlKEVKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKHN0YWdlLnN0YWdlVmFsdWUgYXMgYW55KSwgeyByZWxheGVkOiBmYWxzZSB9KSksXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBzdGFnZVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L2NvbGxlY3Rpb25zLyR7ZGF0YS5jb2xsZWN0aW9uTmFtZX0vZG9jdW1lbnRzL2FnZ3JlZ2F0aW9uc2AsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgcGlwZWxpbmUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMuZGF0YT8ubGlzdCkpIHtcbiAgICAgIHJlcy5kYXRhLmxpc3QgPSBKU09OLnN0cmluZ2lmeShyZXMuZGF0YS5saXN0Py5tYXAoKGl0ZW0pID0+IEpTT04uc3RyaW5naWZ5KGl0ZW0pKSlcbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2Uuc3RhcnRUcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJQmFzZURiKSB7XG4gICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vdHJhbnNhY3Rpb25zYCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pXG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzID0geyAuLi5yZXMsIC4uLnJlcy5kYXRhIH1cbiAgICB9XG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuY29tbWl0VHJhbnNhY3Rpb24nOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogeyB0cmFuc2FjdGlvbklkOiBzdHJpbmcgfSAmIElCYXNlRGIpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdhdGVXYXkoe1xuICAgICAgdXJsOiBgJHtnYXRlV2F5RnVuYy5nZXRVcmxQcmVmaXgoZGF0YSl9L3RyYW5zYWN0aW9ucy8ke2RhdGEudHJhbnNhY3Rpb25JZH0vY29tbWl0YCxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pXG5cbiAgICBkZWxldGUgcmVzLmhlYWRlclxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuYWJvcnRUcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiB7IHRyYW5zYWN0aW9uSWQ6IHN0cmluZyB9ICYgSUJhc2VEYikge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2F0ZVdheSh7XG4gICAgICB1cmw6IGAke2dhdGVXYXlGdW5jLmdldFVybFByZWZpeChkYXRhKX0vdHJhbnNhY3Rpb25zLyR7ZGF0YS50cmFuc2FjdGlvbklkfS9yb2xsYmFja2AsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9KVxuXG4gICAgZGVsZXRlIHJlcy5oZWFkZXJcblxuICAgIHJldHVybiByZXNcbiAgfSxcbiAgJ2RhdGFiYXNlLmdldEluVHJhbnNhY3Rpb24nOiBhc3luYyBmdW5jdGlvbiAoZGF0YTogSURvY3VtZW50c1F1ZXJ5UmVxKSB7XG4gICAgbGV0IHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jWydkYXRhYmFzZS5xdWVyeURvY3VtZW50J10uYmluZCh0aGlzKShkYXRhKVxuXG4gICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChyZXMuZGF0YT8uY29kZSkge1xuICAgICAgICByZXMgPSB7IC4uLnJlcywgLi4ucmVzLmRhdGEgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLmRhdGEgPSBKU09OLnN0cmluZ2lmeShyZXMuZGF0YSkgYXMgYW55XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UudXBkYXRlRG9jSW5UcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChkYXRhOiBJRG9jdW1lbnRzVXBkYXRlUmVxKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEuZGF0YSA9IEVKU09OLnBhcnNlKGRhdGEuZGF0YSBhcyBhbnkpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vXG4gICAgfVxuICAgIGxldCByZXMgPSBhd2FpdCBnYXRlV2F5RnVuY1snZGF0YWJhc2UudXBkYXRlRG9jdW1lbnQnXS5iaW5kKHRoaXMpKGRhdGEpXG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzID0geyAuLi5yZXMsIC4uLnJlcy5kYXRhIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzXG4gIH0sXG4gICdkYXRhYmFzZS5kZWxldGVEb2NJblRyYW5zYWN0aW9uJzogYXN5bmMgZnVuY3Rpb24gKGRhdGE6IElEb2N1bWVudHNSZW1vdmVSZXEpIHtcbiAgICBsZXQgcmVzID0gYXdhaXQgZ2F0ZVdheUZ1bmNbJ2RhdGFiYXNlLmRlbGV0ZURvY3VtZW50J10uYmluZCh0aGlzKShkYXRhKVxuXG4gICAgaWYgKHR5cGVvZiByZXMuZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJlcyA9IHsgLi4ucmVzLCAuLi5yZXMuZGF0YSB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc1xuICB9LFxuICAnZGF0YWJhc2UuaW5zZXJ0RG9jSW5UcmFuc2FjdGlvbic6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICBkYXRhOiBJRG9jdW1lbnRzQWRkUmVxLFxuICApOiBQcm9taXNlPElDb21tb25SZXM8SUFkZFJlcyAmIHsgaW5zZXJ0ZWQ6IG51bWJlciB9Pj4ge1xuICAgIHRyeSB7XG4gICAgICBkYXRhLmRhdGEgPSBFSlNPTi5wYXJzZShkYXRhLmRhdGEgYXMgYW55KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jWydkYXRhYmFzZS5hZGREb2N1bWVudCddLmJpbmQodGhpcykoZGF0YSlcbiAgICBsZXQgcmVzdWx0XG5cbiAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVzdWx0ID0geyAuLi5yZXMsIGluc2VydGVkOiArISFyZXMuZGF0YT8uX2lkLCBvazogKyEhcmVzLmRhdGE/Ll9pZCwgLi4ucmVzLmRhdGEgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSxcbn1cblxuZnVuY3Rpb24gZGF0YWJhc2UoZGJDb25maWc/OiBJRGJDb25maWcpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBydW50aW1lIH0gPSB0aGlzLnBsYXRmb3JtXG5cbiAgY2xhc3MgUmVxIGV4dGVuZHMgdGhpcy5yZXF1ZXN0LmNvbnN0cnVjdG9yIHtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAgIHN1cGVyKGNvbmZpZylcbiAgICB9XG5cbiAgICBhc3luYyBzZW5kKGFjdGlvbjogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICAgIGxldCByZXMgPSBudWxsXG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5lbmRQb2ludE1vZGUgPT09ICdHQVRFV0FZJyAmJiBnYXRlV2F5RnVuY1thY3Rpb25dKSB7XG4gICAgICAgIHJlcyA9IGF3YWl0IGdhdGVXYXlGdW5jW2FjdGlvbl0uY2FsbCh0aGlzLCBkYXRhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzID0gYXdhaXQgc3VwZXIuc2VuZChhY3Rpb24sIGRhdGEpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNcbiAgICB9XG4gIH1cblxuICBEYi5yZXFDbGFzcyA9IFJlcVxuICAvLyDmnKrnmbvlvZXmg4XlhrXkuIvkvKDlhaXnqbrlh73mlbBcbiAgRGIuZ2V0QWNjZXNzVG9rZW4gPSB0aGlzLmF1dGhJbnN0YW5jZSA/IHRoaXMuYXV0aEluc3RhbmNlLmdldEFjY2Vzc1Rva2VuLmJpbmQodGhpcy5hdXRoSW5zdGFuY2UpIDogKCkgPT4gJydcbiAgRGIucnVudGltZSA9IHJ1bnRpbWVcbiAgaWYgKHRoaXMud3NDbGllbnRDbGFzcykge1xuICAgIERiLndzQ2xhc3MgPSBhZGFwdGVyLndzQ2xhc3NcbiAgICBEYi53c0NsaWVudENsYXNzID0gdGhpcy53c0NsaWVudENsYXNzXG4gIH1cblxuICBpZiAoIURiLndzKSB7XG4gICAgRGIud3MgPSBudWxsXG4gIH1cblxuICByZXR1cm4gbmV3IERiKHsgLi4udGhpcy5jb25maWcsIF9mcm9tQXBwOiB0aGlzLCAuLi5kYkNvbmZpZyB9KVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBlbnRpdHk6IHtcbiAgICBkYXRhYmFzZSxcbiAgfSxcbn1cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEYXRhYmFzZShhcHA6IElDbG91ZGJhc2UgfCB0eXBlb2YgY2xvdWRiYXNlTlMpIHtcbiAgdHJ5IHtcbiAgICBhcHAucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpXG4gIH1cbn1cblxudHJ5IHtcbiAgOyh3aW5kb3cgYXMgYW55KS5yZWdpc3RlckRhdGFiYXNlID0gcmVnaXN0ZXJEYXRhYmFzZVxufSBjYXRjaCAoZSkge31cbiJdfQ==
package/dist/index.cjs.js CHANGED
@@ -14,7 +14,7 @@ var cloudrun_1 = require("@cloudbase/cloudrun");
14
14
  var mysql_1 = require("@cloudbase/mysql");
15
15
  var apis_1 = require("@cloudbase/apis");
16
16
  var database_1 = require("./../database");
17
- var version = "2.25.3";
17
+ var version = "2.25.5-alpha.0";
18
18
  app_1.default.registerVersion(version);
19
19
  try {
20
20
  (0, auth_1.registerAuth)(app_1.default);
package/dist/index.esm.js CHANGED
@@ -10,7 +10,7 @@ import { registerCloudrun } from '@cloudbase/cloudrun';
10
10
  import { registerMySQL } from '@cloudbase/mysql';
11
11
  import { registerApis } from '@cloudbase/apis';
12
12
  import { registerDatabase } from './../database';
13
- var version = "2.25.3";
13
+ var version = "2.25.5-alpha.0";
14
14
  cloudbase.registerVersion(version);
15
15
  try {
16
16
  registerAuth(cloudbase);
package/index.d.ts CHANGED
@@ -537,7 +537,7 @@ declare namespace cloudbase.app {
537
537
  *
538
538
  * @return 数据库实例
539
539
  */
540
- database(dbConfig?: object): cloudbase.database.App
540
+ database(dbConfig?: { instance?: string; database?: string; }): cloudbase.database.App
541
541
  /**
542
542
  * 调用扩展能力插件功能
543
543
  *
@@ -1105,7 +1105,7 @@ declare namespace cloudbase.auth {
1105
1105
  *
1106
1106
  * @return Promise
1107
1107
  */
1108
- signOut(params?: authModels.SignoutRequest): Promise<void | authModels.SignoutReponse>
1108
+ signOut(params?: authModels.SignoutRequest): Promise<void | authModels.SignoutResponse>
1109
1109
  /**
1110
1110
  * 使用自定义登录 ticket 登录
1111
1111
  *
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("cloudbase_apis",[],t):"object"==typeof exports?exports.cloudbase_apis=t():e.cloudbase_apis=t()}("undefined"!=typeof window?window:this,(()=>(()=>{"use strict";var e={465:function(e,t,n){var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(248),t)},248:(e,t,n)=>{n.r(t),n.d(t,{generateApis:()=>l,registerApis:()=>p});var o=n(794),r=function(){return r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},r.apply(this,arguments)},i=function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function c(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}u((o=o.apply(e,t||[])).next())}))},a=function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,o&&(r=2&c[0]?o.return:c[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,c[1])).done)return r;switch(o=0,r&&(c=[2&c[0],r.value]),c[0]){case 0:case 1:r=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,o=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((r=(r=a.trys).length>0&&r[r.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!r||c[1]>r[0]&&c[1]<r[3])){a.label=c[1];break}if(6===c[0]&&a.label<r[1]){a.label=r[1],r=c;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(c);break}r[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],o=0}finally{n=r=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}};function c(e,t){var n,c,u,s;return i(this,void 0,void 0,(function(){var i,l,f,d,p,h,v,O,y,b,_,g,E,P,w,R,T,A,m,S,I;return a(this,(function(a){switch(a.label){case 0:if(l=(i=e||{}).name,f=i.body,d=i.path,p=void 0===d?"":d,h=i.method,v=void 0===h?"POST":h,O=i.headers,y=void 0===O?{}:O,b=(e||{}).token,!l)throw new Error(JSON.stringify({code:o.ERRORS.INVALID_PARAMS,msg:"[apis] invalid api name"}));return _="",E=(g=this).gatewayOrigin,P=g.getAccessToken,w=g.env,E?_="".concat(E,"/v1"):this.getEndPointWithKey?(R=this.getEndPointWithKey("GATEWAY"),T=R.BASE_URL,A=R.PROTOCOL,_="".concat(A).concat(T)):_="https://".concat(w,".api.tcloudbasegateway.com/v1"),m="".concat(_,"/apis/").concat(l),S=p.startsWith("/")?p:"/".concat(p),P?[4,P()]:[3,2];case 1:I=a.sent().accessToken,y.Authorization="Bearer ".concat(I),a.label=2;case 2:return[4,this.request.fetch(r(r(r({url:"".concat(m).concat(S),method:v||"POST",headers:r({"Content-Type":"application/json; charset=utf-8"},y)},["GET","HEAD"].includes(null===(n=null==v?void 0:v.toUpperCase)||void 0===n?void 0:n.call(v))?{}:{body:f}),{token:(null===(c=null==b?void 0:b.trim)||void 0===c?void 0:c.call(b))||(null===(s=null===(u=y.Authorization)||void 0===u?void 0:u.replace)||void 0===s?void 0:s.call(u,/^Bearer /,""))||null}),t))];case 3:return[4,a.sent().data];case 4:return[2,a.sent()]}}))}))}var u=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH","REQUEST"];function s(e){var t=this;return new Proxy({},{get:function(n,o){if("string"!=typeof o)throw new Error("[apis] method must be string");var s=o.toLocaleUpperCase();if(!u.includes(s))throw new Error("[apis] invalid method: ".concat(o));return function(n,o){return i(t,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,c.call(this,r({name:e,method:("REQUEST"===s?n.method:s)||"POST"},n),o)];case 1:return[2,t.sent()]}}))}))}}})}function l(e){var t=this;return Object.keys(e||{}).forEach((function(n){void 0!==e[n]&&(t[n]=e[n])})),new Proxy({},{get:function(e,n){if("string"==typeof n)return s.call(t,n)}})}var f="apis",d={name:f,IIFE:!0,entity:function(){Object.defineProperty(this.prototype,f,{get:function(){return l.call(this)},configurable:!0,enumerable:!0})}};function p(e){try{e.registerComponent(d)}catch(e){console.warn(e)}}try{cloudbase.registerComponent(d)}catch(e){}try{window.registerApis=p}catch(e){}},946:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMMUNITY_SITE_URL=t.IS_DEBUG_MODE=t.getProtocol=t.setProtocol=t.getSdkName=t.setSdkName=void 0;var n="@cloudbase/js-sdk";t.setSdkName=function(e){n=e},t.getSdkName=function(){return n};var o="https:";t.setProtocol=function(e){o=e},t.getProtocol=function(){return o},t.IS_DEBUG_MODE=!1,t.COMMUNITY_SITE_URL="https://support.qq.com/products/148793"},205:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ERRORS=void 0,t.ERRORS={INVALID_PARAMS:"INVALID_PARAMS",INVALID_SYNTAX:"INVALID_SYNTAX",INVALID_OPERATION:"INVALID_OPERATION",OPERATION_FAIL:"OPERATION_FAIL",NETWORK_ERROR:"NETWORK_ERROR",UNKOWN_ERROR:"UNKOWN_ERROR"}},794:function(e,t,n){var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.OATUH_LOGINTYPE=void 0,r(n(946),t),r(n(205),t),t.OATUH_LOGINTYPE="constants"}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,n),i.exports}return n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(465)})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("cloudbase_apis",[],t):"object"==typeof exports?exports.cloudbase_apis=t():e.cloudbase_apis=t()}("undefined"!=typeof window?window:this,(()=>(()=>{"use strict";var e={465:function(e,t,n){var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(248),t)},248:(e,t,n)=>{n.r(t),n.d(t,{generateApis:()=>l,registerApis:()=>p});var o=n(794),r=function(){return r=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},r.apply(this,arguments)},i=function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function c(e){try{u(o.next(e))}catch(e){i(e)}}function a(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(c,a)}u((o=o.apply(e,t||[])).next())}))},c=function(e,t){var n,o,r,i,c={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(u){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(c=0)),c;)try{if(n=1,o&&(r=2&a[0]?o.return:a[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,a[1])).done)return r;switch(o=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,o=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!((r=(r=c.trys).length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){c.label=a[1];break}if(6===a[0]&&c.label<r[1]){c.label=r[1],r=a;break}if(r&&c.label<r[2]){c.label=r[2],c.ops.push(a);break}r[2]&&c.ops.pop(),c.trys.pop();continue}a=t.call(e,c)}catch(e){a=[6,e],o=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}};function a(e,t){var n,a,u,s;return i(this,void 0,void 0,(function(){var i,l,f,d,p,h,v,O,y,b,_,g,E,P,w,R,T,m,A,S,I,N,j;return c(this,(function(c){switch(c.label){case 0:if(l=(i=e||{}).name,f=i.body,d=i.path,p=void 0===d?"":d,h=i.method,v=void 0===h?"POST":h,O=i.headers,y=void 0===O?{}:O,b=(e||{}).token,!l)throw new Error(JSON.stringify({code:o.ERRORS.INVALID_PARAMS,msg:"[apis] invalid api name"}));return _="",E=(g=this).gatewayOrigin,P=g.getAccessToken,w=g.env,E?_="".concat(E,"/v1"):this.getEndPointWithKey?(R=this.getEndPointWithKey("GATEWAY"),T=R.BASE_URL,m=R.PROTOCOL,_="".concat(m).concat(T)):_="https://".concat(w,".api.tcloudbasegateway.com/v1"),A="".concat(_,"/apis/").concat(l),S=p.startsWith("/")?p:"/".concat(p),P?[4,P()]:[3,2];case 1:I=c.sent().accessToken,y.Authorization="Bearer ".concat(I),c.label=2;case 2:if(N=["GET","HEAD"].includes(null===(n=null==v?void 0:v.toUpperCase)||void 0===n?void 0:n.call(v)))try{j={};try{j=JSON.parse(f)}catch(e){j=f||{}}S="".concat(S).concat(S.includes("?")?"&":"?").concat(Object.keys(j).map((function(e){return"".concat(e,"=").concat(j[e])})).join("&"))}catch(e){}return[4,this.request.fetch(r(r(r({url:"".concat(A).concat(S),method:v||"POST",headers:r({"Content-Type":"application/json; charset=utf-8"},y)},N?{}:{body:f}),{token:(null===(a=null==b?void 0:b.trim)||void 0===a?void 0:a.call(b))||(null===(s=null===(u=y.Authorization)||void 0===u?void 0:u.replace)||void 0===s?void 0:s.call(u,/^Bearer /,""))||null}),t))];case 3:return[4,c.sent().data];case 4:return[2,c.sent()]}}))}))}var u=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH","REQUEST"];function s(e){var t=this;return new Proxy({},{get:function(n,o){if("string"!=typeof o)throw new Error("[apis] method must be string");var s=o.toLocaleUpperCase();if(!u.includes(s))throw new Error("[apis] invalid method: ".concat(o));return function(n,o){return i(t,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,a.call(this,r({name:e,method:("REQUEST"===s?n.method:s)||"POST"},n),o)];case 1:return[2,t.sent()]}}))}))}}})}function l(e){var t=this;return Object.keys(e||{}).forEach((function(n){void 0!==e[n]&&(t[n]=e[n])})),new Proxy({},{get:function(e,n){if("string"==typeof n)return s.call(t,n)}})}var f="apis",d={name:f,IIFE:!0,entity:function(){Object.defineProperty(this.prototype,f,{get:function(){return l.call(this)},configurable:!0,enumerable:!0})}};function p(e){try{e.registerComponent(d)}catch(e){console.warn(e)}}try{cloudbase.registerComponent(d)}catch(e){}try{window.registerApis=p}catch(e){}},946:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.COMMUNITY_SITE_URL=t.IS_DEBUG_MODE=t.getProtocol=t.setProtocol=t.getSdkName=t.setSdkName=void 0;var n="@cloudbase/js-sdk";t.setSdkName=function(e){n=e},t.getSdkName=function(){return n};var o="https:";t.setProtocol=function(e){o=e},t.getProtocol=function(){return o},t.IS_DEBUG_MODE=!1,t.COMMUNITY_SITE_URL="https://support.qq.com/products/148793"},205:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ERRORS=void 0,t.ERRORS={INVALID_PARAMS:"INVALID_PARAMS",INVALID_SYNTAX:"INVALID_SYNTAX",INVALID_OPERATION:"INVALID_OPERATION",OPERATION_FAIL:"OPERATION_FAIL",NETWORK_ERROR:"NETWORK_ERROR",UNKOWN_ERROR:"UNKOWN_ERROR"}},794:function(e,t,n){var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.OATUH_LOGINTYPE=void 0,r(n(946),t),r(n(205),t),t.OATUH_LOGINTYPE="constants"}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,n),i.exports}return n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(465)})()));