@secrecy/lib 1.0.0-dev.18 → 1.0.0-dev.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 +1 -0
- package/lib/BaseClient.d.ts +20 -15
- package/lib/BaseClient.js +726 -265
- package/lib/ZeusThunder.js +3 -6
- package/lib/client/admin/index.d.ts +3 -2
- package/lib/client/admin/index.js +44 -33
- package/lib/client/index.d.ts +24 -21
- package/lib/client/index.js +1280 -561
- package/lib/error.d.ts +30 -0
- package/lib/error.js +3 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -2
- package/lib/zeus/const.js +957 -733
- package/lib/zeus/index.d.ts +2018 -32522
- package/lib/zeus/index.js +34 -43
- package/package.json +1 -1
package/lib/BaseClient.js
CHANGED
|
@@ -6,11 +6,12 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
6
6
|
|
|
7
7
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
8
|
|
|
9
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
10
|
import { serialize } from "bson";
|
|
10
11
|
import { getLink } from "@secrecy/lib-utils";
|
|
11
12
|
import { usersCache } from "./cache.js";
|
|
12
13
|
import { getStorage } from "./client/storage.js";
|
|
13
|
-
import {
|
|
14
|
+
import { Selector } from "./zeus/index.js";
|
|
14
15
|
import { createThunder } from "./ZeusThunder.js";
|
|
15
16
|
|
|
16
17
|
function internalToPaymentInfos(p) {
|
|
@@ -45,23 +46,33 @@ export function isValidPlan(planCode) {
|
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
var getUserSelector = function getUserSelector(userId, withPublicKey) {
|
|
48
|
-
var
|
|
49
|
+
var _Selector = Selector("Query")({
|
|
49
50
|
user: [{
|
|
50
51
|
userId: userId
|
|
51
52
|
}, {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
"...on ErrorNotFound": {
|
|
54
|
+
__typename: true,
|
|
55
|
+
message: true,
|
|
56
|
+
field: true
|
|
57
|
+
},
|
|
58
|
+
"...on UserResponse": {
|
|
59
|
+
__typename: true,
|
|
60
|
+
user: {
|
|
61
|
+
id: true,
|
|
62
|
+
firstname: true,
|
|
63
|
+
lastname: true,
|
|
64
|
+
lang: true,
|
|
65
|
+
publicKey: withPublicKey ? true : undefined,
|
|
66
|
+
email: true,
|
|
67
|
+
phone: true,
|
|
68
|
+
role: true,
|
|
69
|
+
deletedAt: true,
|
|
70
|
+
lastLogin: true
|
|
71
|
+
}
|
|
72
|
+
}
|
|
62
73
|
}]
|
|
63
74
|
}),
|
|
64
|
-
user =
|
|
75
|
+
user = _Selector.user;
|
|
65
76
|
|
|
66
77
|
return user;
|
|
67
78
|
};
|
|
@@ -72,7 +83,7 @@ function getUser(_x) {
|
|
|
72
83
|
|
|
73
84
|
function _getUser() {
|
|
74
85
|
_getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27(params) {
|
|
75
|
-
var selector, _yield$params$client
|
|
86
|
+
var selector, _yield$params$client, userResponse;
|
|
76
87
|
|
|
77
88
|
return _regeneratorRuntime.wrap(function _callee27$(_context27) {
|
|
78
89
|
while (1) {
|
|
@@ -80,15 +91,15 @@ function _getUser() {
|
|
|
80
91
|
case 0:
|
|
81
92
|
selector = getUserSelector(params.userId, params.withPublicKey);
|
|
82
93
|
_context27.next = 3;
|
|
83
|
-
return params.client
|
|
94
|
+
return params.client("query")({
|
|
84
95
|
user: selector
|
|
85
96
|
});
|
|
86
97
|
|
|
87
98
|
case 3:
|
|
88
|
-
_yield$params$client
|
|
89
|
-
|
|
99
|
+
_yield$params$client = _context27.sent;
|
|
100
|
+
userResponse = _yield$params$client.user;
|
|
90
101
|
|
|
91
|
-
if (
|
|
102
|
+
if (userResponse) {
|
|
92
103
|
_context27.next = 7;
|
|
93
104
|
break;
|
|
94
105
|
}
|
|
@@ -96,12 +107,31 @@ function _getUser() {
|
|
|
96
107
|
return _context27.abrupt("return", null);
|
|
97
108
|
|
|
98
109
|
case 7:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
110
|
+
if (!(userResponse.__typename === "ErrorNotFound")) {
|
|
111
|
+
_context27.next = 9;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return _context27.abrupt("return", userResponse);
|
|
116
|
+
|
|
117
|
+
case 9:
|
|
118
|
+
if (userResponse.user) {
|
|
119
|
+
_context27.next = 11;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return _context27.abrupt("return", null);
|
|
124
|
+
|
|
125
|
+
case 11:
|
|
126
|
+
return _context27.abrupt("return", {
|
|
127
|
+
__typename: "SuccessResponse",
|
|
128
|
+
data: _objectSpread(_objectSpread({}, userResponse.user), {}, {
|
|
129
|
+
lastLogin: new Date(userResponse.user.lastLogin),
|
|
130
|
+
deletedAt: userResponse.user.deletedAt ? new Date(userResponse.user.deletedAt) : null
|
|
131
|
+
})
|
|
132
|
+
});
|
|
103
133
|
|
|
104
|
-
case
|
|
134
|
+
case 12:
|
|
105
135
|
case "end":
|
|
106
136
|
return _context27.stop();
|
|
107
137
|
}
|
|
@@ -121,33 +151,42 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
121
151
|
|
|
122
152
|
_proto.sessions = /*#__PURE__*/function () {
|
|
123
153
|
var _sessions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
124
|
-
var
|
|
154
|
+
var data, userResponse, _userResponse$user$se, _sessions2;
|
|
125
155
|
|
|
126
|
-
var data, sessions;
|
|
127
156
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
128
157
|
while (1) {
|
|
129
158
|
switch (_context.prev = _context.next) {
|
|
130
159
|
case 0:
|
|
131
160
|
_context.next = 2;
|
|
132
|
-
return this.client
|
|
161
|
+
return this.client("query")({
|
|
133
162
|
user: [{}, {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
163
|
+
"...on ErrorNotFound": {
|
|
164
|
+
__typename: true,
|
|
165
|
+
field: true,
|
|
166
|
+
message: true
|
|
167
|
+
},
|
|
168
|
+
"...on UserResponse": {
|
|
169
|
+
__typename: true,
|
|
170
|
+
user: {
|
|
171
|
+
sessions: {
|
|
172
|
+
id: true,
|
|
173
|
+
lastActivity: true,
|
|
174
|
+
userAgent: true,
|
|
175
|
+
ip: true,
|
|
176
|
+
city: true,
|
|
177
|
+
country: true,
|
|
178
|
+
appSessions: {
|
|
179
|
+
id: true,
|
|
180
|
+
lastActivity: true,
|
|
181
|
+
userAgent: true,
|
|
182
|
+
ip: true,
|
|
183
|
+
city: true,
|
|
184
|
+
country: true,
|
|
185
|
+
userApp: {
|
|
186
|
+
app: {
|
|
187
|
+
name: true
|
|
188
|
+
}
|
|
189
|
+
}
|
|
151
190
|
}
|
|
152
191
|
}
|
|
153
192
|
}
|
|
@@ -157,7 +196,31 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
157
196
|
|
|
158
197
|
case 2:
|
|
159
198
|
data = _context.sent;
|
|
160
|
-
|
|
199
|
+
|
|
200
|
+
if (data.user) {
|
|
201
|
+
_context.next = 5;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return _context.abrupt("return", null);
|
|
206
|
+
|
|
207
|
+
case 5:
|
|
208
|
+
userResponse = data.user;
|
|
209
|
+
|
|
210
|
+
if (!(userResponse.__typename === "UserResponse")) {
|
|
211
|
+
_context.next = 11;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (userResponse.user) {
|
|
216
|
+
_context.next = 9;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return _context.abrupt("return", null);
|
|
221
|
+
|
|
222
|
+
case 9:
|
|
223
|
+
_sessions2 = (_userResponse$user$se = userResponse.user.sessions.map(function (s) {
|
|
161
224
|
return {
|
|
162
225
|
id: s.id,
|
|
163
226
|
ip: s.ip,
|
|
@@ -179,10 +242,16 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
179
242
|
};
|
|
180
243
|
})
|
|
181
244
|
};
|
|
182
|
-
})) != null ?
|
|
183
|
-
return _context.abrupt("return",
|
|
245
|
+
})) != null ? _userResponse$user$se : [];
|
|
246
|
+
return _context.abrupt("return", {
|
|
247
|
+
__typename: "SuccessResponse",
|
|
248
|
+
data: _sessions2
|
|
249
|
+
});
|
|
184
250
|
|
|
185
|
-
case
|
|
251
|
+
case 11:
|
|
252
|
+
return _context.abrupt("return", userResponse);
|
|
253
|
+
|
|
254
|
+
case 12:
|
|
186
255
|
case "end":
|
|
187
256
|
return _context.stop();
|
|
188
257
|
}
|
|
@@ -218,7 +287,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
218
287
|
|
|
219
288
|
_context2.prev = 1;
|
|
220
289
|
_context2.next = 4;
|
|
221
|
-
return this.client
|
|
290
|
+
return this.client("mutation")({
|
|
222
291
|
logout: [{
|
|
223
292
|
sessionId: sessionId
|
|
224
293
|
}, true]
|
|
@@ -290,12 +359,28 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
290
359
|
user = _context4.sent;
|
|
291
360
|
|
|
292
361
|
if (user) {
|
|
293
|
-
|
|
362
|
+
_context4.next = 5;
|
|
363
|
+
break;
|
|
294
364
|
}
|
|
295
365
|
|
|
296
|
-
return _context4.abrupt("return",
|
|
366
|
+
return _context4.abrupt("return", null);
|
|
297
367
|
|
|
298
368
|
case 5:
|
|
369
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
370
|
+
_context4.next = 7;
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
return _context4.abrupt("return", user);
|
|
375
|
+
|
|
376
|
+
case 7:
|
|
377
|
+
if (user) {
|
|
378
|
+
usersCache.set(user.data.id, user.data);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return _context4.abrupt("return", user);
|
|
382
|
+
|
|
383
|
+
case 9:
|
|
299
384
|
case "end":
|
|
300
385
|
return _context4.stop();
|
|
301
386
|
}
|
|
@@ -328,12 +413,28 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
328
413
|
user = _context5.sent;
|
|
329
414
|
|
|
330
415
|
if (user) {
|
|
331
|
-
|
|
416
|
+
_context5.next = 5;
|
|
417
|
+
break;
|
|
332
418
|
}
|
|
333
419
|
|
|
334
|
-
return _context5.abrupt("return",
|
|
420
|
+
return _context5.abrupt("return", null);
|
|
335
421
|
|
|
336
422
|
case 5:
|
|
423
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
424
|
+
_context5.next = 7;
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return _context5.abrupt("return", user);
|
|
429
|
+
|
|
430
|
+
case 7:
|
|
431
|
+
if (user) {
|
|
432
|
+
usersCache.set(user.data.id, user.data);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
return _context5.abrupt("return", user);
|
|
436
|
+
|
|
437
|
+
case 9:
|
|
337
438
|
case "end":
|
|
338
439
|
return _context5.stop();
|
|
339
440
|
}
|
|
@@ -350,7 +451,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
350
451
|
|
|
351
452
|
_proto.updateProfile = /*#__PURE__*/function () {
|
|
352
453
|
var _updateProfile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(_ref) {
|
|
353
|
-
var firstname, lastname, lang, _yield$this$client
|
|
454
|
+
var firstname, lastname, lang, _yield$this$client, updateProfile;
|
|
354
455
|
|
|
355
456
|
return _regeneratorRuntime.wrap(function _callee6$(_context6) {
|
|
356
457
|
while (1) {
|
|
@@ -358,7 +459,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
358
459
|
case 0:
|
|
359
460
|
firstname = _ref.firstname, lastname = _ref.lastname, lang = _ref.lang;
|
|
360
461
|
_context6.next = 3;
|
|
361
|
-
return this.client
|
|
462
|
+
return this.client("mutation")({
|
|
362
463
|
updateProfile: [{
|
|
363
464
|
firstname: firstname,
|
|
364
465
|
lastname: lastname,
|
|
@@ -377,8 +478,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
377
478
|
});
|
|
378
479
|
|
|
379
480
|
case 3:
|
|
380
|
-
_yield$this$client
|
|
381
|
-
updateProfile = _yield$this$client
|
|
481
|
+
_yield$this$client = _context6.sent;
|
|
482
|
+
updateProfile = _yield$this$client.updateProfile;
|
|
382
483
|
|
|
383
484
|
if (updateProfile) {
|
|
384
485
|
_context6.next = 7;
|
|
@@ -417,35 +518,40 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
417
518
|
switch (_context7.prev = _context7.next) {
|
|
418
519
|
case 0:
|
|
419
520
|
_context7.next = 2;
|
|
420
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
521
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
421
522
|
plans: {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
523
|
+
"...on PlanResponse": {
|
|
524
|
+
__typename: true,
|
|
525
|
+
plan: {
|
|
526
|
+
kind: true,
|
|
527
|
+
codes: true,
|
|
528
|
+
limits: {
|
|
529
|
+
downloadBandwidth: true,
|
|
530
|
+
downloadCount: true,
|
|
531
|
+
hardFileCount: true,
|
|
532
|
+
hardFileSize: true,
|
|
533
|
+
perFileSize: true,
|
|
534
|
+
uploadBandwidth: true,
|
|
535
|
+
uploadCount: true,
|
|
536
|
+
receivedMails: {
|
|
537
|
+
count: true,
|
|
538
|
+
fileCount: true,
|
|
539
|
+
fileSize: true,
|
|
540
|
+
hardCount: true,
|
|
541
|
+
hardFileCount: true,
|
|
542
|
+
hardFileSize: true,
|
|
543
|
+
perFileSize: true
|
|
544
|
+
},
|
|
545
|
+
sentMails: {
|
|
546
|
+
count: true,
|
|
547
|
+
fileCount: true,
|
|
548
|
+
fileSize: true,
|
|
549
|
+
hardCount: true,
|
|
550
|
+
hardFileCount: true,
|
|
551
|
+
hardFileSize: true,
|
|
552
|
+
perFileSize: true
|
|
553
|
+
}
|
|
554
|
+
}
|
|
449
555
|
}
|
|
450
556
|
}
|
|
451
557
|
}
|
|
@@ -454,9 +560,21 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
454
560
|
case 2:
|
|
455
561
|
_yield$BaseClient$_ge = _context7.sent;
|
|
456
562
|
plans = _yield$BaseClient$_ge.plans;
|
|
457
|
-
return _context7.abrupt("return", plans);
|
|
458
563
|
|
|
459
|
-
|
|
564
|
+
if (plans) {
|
|
565
|
+
_context7.next = 6;
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
return _context7.abrupt("return", null);
|
|
570
|
+
|
|
571
|
+
case 6:
|
|
572
|
+
return _context7.abrupt("return", {
|
|
573
|
+
__typename: "SuccessResponse",
|
|
574
|
+
data: plans.plan
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
case 7:
|
|
460
578
|
case "end":
|
|
461
579
|
return _context7.stop();
|
|
462
580
|
}
|
|
@@ -473,14 +591,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
473
591
|
|
|
474
592
|
_proto.pay = /*#__PURE__*/function () {
|
|
475
593
|
var _pay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(planCode, input, autoRenew) {
|
|
476
|
-
var _yield$this$
|
|
594
|
+
var _yield$this$client2, pay;
|
|
477
595
|
|
|
478
596
|
return _regeneratorRuntime.wrap(function _callee8$(_context8) {
|
|
479
597
|
while (1) {
|
|
480
598
|
switch (_context8.prev = _context8.next) {
|
|
481
599
|
case 0:
|
|
482
600
|
_context8.next = 2;
|
|
483
|
-
return this.client
|
|
601
|
+
return this.client("mutation")({
|
|
484
602
|
pay: [{
|
|
485
603
|
input: input,
|
|
486
604
|
planCode: planCode,
|
|
@@ -489,8 +607,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
489
607
|
});
|
|
490
608
|
|
|
491
609
|
case 2:
|
|
492
|
-
_yield$this$
|
|
493
|
-
pay = _yield$this$
|
|
610
|
+
_yield$this$client2 = _context8.sent;
|
|
611
|
+
pay = _yield$this$client2.pay;
|
|
494
612
|
return _context8.abrupt("return", pay != null ? pay : false);
|
|
495
613
|
|
|
496
614
|
case 5:
|
|
@@ -510,20 +628,20 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
510
628
|
|
|
511
629
|
_proto.cancelPayment = /*#__PURE__*/function () {
|
|
512
630
|
var _cancelPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
|
|
513
|
-
var _yield$this$
|
|
631
|
+
var _yield$this$client3, cancelPayment;
|
|
514
632
|
|
|
515
633
|
return _regeneratorRuntime.wrap(function _callee9$(_context9) {
|
|
516
634
|
while (1) {
|
|
517
635
|
switch (_context9.prev = _context9.next) {
|
|
518
636
|
case 0:
|
|
519
637
|
_context9.next = 2;
|
|
520
|
-
return this.client
|
|
638
|
+
return this.client("mutation")({
|
|
521
639
|
cancelPayment: true
|
|
522
640
|
});
|
|
523
641
|
|
|
524
642
|
case 2:
|
|
525
|
-
_yield$this$
|
|
526
|
-
cancelPayment = _yield$this$
|
|
643
|
+
_yield$this$client3 = _context9.sent;
|
|
644
|
+
cancelPayment = _yield$this$client3.cancelPayment;
|
|
527
645
|
return _context9.abrupt("return", cancelPayment != null ? cancelPayment : false);
|
|
528
646
|
|
|
529
647
|
case 5:
|
|
@@ -543,49 +661,58 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
543
661
|
|
|
544
662
|
_proto.paymentInfos = /*#__PURE__*/function () {
|
|
545
663
|
var _paymentInfos = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
|
|
546
|
-
var _yield$this$
|
|
664
|
+
var _yield$this$client4, paymentInfos, result;
|
|
547
665
|
|
|
548
666
|
return _regeneratorRuntime.wrap(function _callee10$(_context10) {
|
|
549
667
|
while (1) {
|
|
550
668
|
switch (_context10.prev = _context10.next) {
|
|
551
669
|
case 0:
|
|
552
670
|
_context10.next = 2;
|
|
553
|
-
return this.client
|
|
671
|
+
return this.client("query")({
|
|
554
672
|
paymentInfos: {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
activatedAt: true,
|
|
559
|
-
currentPeriodEndsAt: true,
|
|
560
|
-
currentPeriodStartedAt: true,
|
|
561
|
-
canceledAt: true,
|
|
562
|
-
createdAt: true,
|
|
563
|
-
expiresAt: true,
|
|
564
|
-
pausedAt: true,
|
|
565
|
-
trialEndsAt: true,
|
|
566
|
-
trialStartedAt: true,
|
|
567
|
-
updatedAt: true,
|
|
568
|
-
state: true,
|
|
569
|
-
collectionMethod: true,
|
|
570
|
-
plan: true,
|
|
571
|
-
planCode: true,
|
|
572
|
-
total: true
|
|
673
|
+
"...on ErrorAccessDenied": {
|
|
674
|
+
__typename: true,
|
|
675
|
+
message: true
|
|
573
676
|
},
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
677
|
+
"...on PaymentInfosResponse": {
|
|
678
|
+
__typename: true,
|
|
679
|
+
paymentInfos: {
|
|
680
|
+
hostedUrl: true,
|
|
681
|
+
currentSubscription: {
|
|
682
|
+
autorenew: true,
|
|
683
|
+
activatedAt: true,
|
|
684
|
+
currentPeriodEndsAt: true,
|
|
685
|
+
currentPeriodStartedAt: true,
|
|
686
|
+
canceledAt: true,
|
|
687
|
+
createdAt: true,
|
|
688
|
+
expiresAt: true,
|
|
689
|
+
pausedAt: true,
|
|
690
|
+
trialEndsAt: true,
|
|
691
|
+
trialStartedAt: true,
|
|
692
|
+
updatedAt: true,
|
|
693
|
+
state: true,
|
|
694
|
+
collectionMethod: true,
|
|
695
|
+
plan: true,
|
|
696
|
+
planCode: true,
|
|
697
|
+
total: true
|
|
698
|
+
},
|
|
699
|
+
invoices: {
|
|
700
|
+
pdf: true,
|
|
701
|
+
date: true,
|
|
702
|
+
due: true,
|
|
703
|
+
status: true,
|
|
704
|
+
total: true,
|
|
705
|
+
name: true,
|
|
706
|
+
currency: true
|
|
707
|
+
}
|
|
708
|
+
}
|
|
582
709
|
}
|
|
583
710
|
}
|
|
584
711
|
});
|
|
585
712
|
|
|
586
713
|
case 2:
|
|
587
|
-
_yield$this$
|
|
588
|
-
paymentInfos = _yield$this$
|
|
714
|
+
_yield$this$client4 = _context10.sent;
|
|
715
|
+
paymentInfos = _yield$this$client4.paymentInfos;
|
|
589
716
|
|
|
590
717
|
if (paymentInfos) {
|
|
591
718
|
_context10.next = 6;
|
|
@@ -595,9 +722,29 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
595
722
|
return _context10.abrupt("return", null);
|
|
596
723
|
|
|
597
724
|
case 6:
|
|
598
|
-
|
|
725
|
+
if (!(paymentInfos.__typename === "ErrorAccessDenied")) {
|
|
726
|
+
_context10.next = 8;
|
|
727
|
+
break;
|
|
728
|
+
}
|
|
599
729
|
|
|
600
|
-
|
|
730
|
+
return _context10.abrupt("return", paymentInfos);
|
|
731
|
+
|
|
732
|
+
case 8:
|
|
733
|
+
if (paymentInfos.paymentInfos) {
|
|
734
|
+
_context10.next = 10;
|
|
735
|
+
break;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
return _context10.abrupt("return", null);
|
|
739
|
+
|
|
740
|
+
case 10:
|
|
741
|
+
result = internalToPaymentInfos(paymentInfos.paymentInfos);
|
|
742
|
+
return _context10.abrupt("return", {
|
|
743
|
+
__typename: "SuccessResponse",
|
|
744
|
+
data: result
|
|
745
|
+
});
|
|
746
|
+
|
|
747
|
+
case 12:
|
|
601
748
|
case "end":
|
|
602
749
|
return _context10.stop();
|
|
603
750
|
}
|
|
@@ -614,45 +761,64 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
614
761
|
|
|
615
762
|
_proto.limits = /*#__PURE__*/function () {
|
|
616
763
|
var _limits = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
|
|
617
|
-
var _yield$this$
|
|
764
|
+
var _yield$this$client5, limits, cloud, mail;
|
|
618
765
|
|
|
619
766
|
return _regeneratorRuntime.wrap(function _callee11$(_context11) {
|
|
620
767
|
while (1) {
|
|
621
768
|
switch (_context11.prev = _context11.next) {
|
|
622
769
|
case 0:
|
|
623
770
|
_context11.next = 2;
|
|
624
|
-
return this.client
|
|
771
|
+
return this.client("query")({
|
|
625
772
|
limits: {
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
count: true,
|
|
630
|
-
maxCount: true
|
|
773
|
+
"...on ErrorAccessDenied": {
|
|
774
|
+
__typename: true,
|
|
775
|
+
message: true
|
|
631
776
|
},
|
|
632
|
-
|
|
633
|
-
|
|
777
|
+
"...on ErrorLimit": {
|
|
778
|
+
__typename: true,
|
|
779
|
+
message: true
|
|
780
|
+
},
|
|
781
|
+
"...on ErrorNotExist": {
|
|
782
|
+
__typename: true,
|
|
783
|
+
message: true
|
|
784
|
+
},
|
|
785
|
+
"...on ErrorNotFound": {
|
|
786
|
+
__typename: true,
|
|
787
|
+
message: true
|
|
788
|
+
},
|
|
789
|
+
"...on QueryLimits": {
|
|
790
|
+
__typename: true,
|
|
791
|
+
cloud: {
|
|
792
|
+
size: true,
|
|
793
|
+
maxSize: true,
|
|
634
794
|
count: true,
|
|
635
|
-
maxCount: true
|
|
636
|
-
fileCount: true,
|
|
637
|
-
maxFileCount: true,
|
|
638
|
-
fileSize: true,
|
|
639
|
-
maxFileSize: true
|
|
795
|
+
maxCount: true
|
|
640
796
|
},
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
797
|
+
mail: {
|
|
798
|
+
received: {
|
|
799
|
+
count: true,
|
|
800
|
+
maxCount: true,
|
|
801
|
+
fileCount: true,
|
|
802
|
+
maxFileCount: true,
|
|
803
|
+
fileSize: true,
|
|
804
|
+
maxFileSize: true
|
|
805
|
+
},
|
|
806
|
+
sent: {
|
|
807
|
+
count: true,
|
|
808
|
+
maxCount: true,
|
|
809
|
+
fileCount: true,
|
|
810
|
+
maxFileCount: true,
|
|
811
|
+
fileSize: true,
|
|
812
|
+
maxFileSize: true
|
|
813
|
+
}
|
|
648
814
|
}
|
|
649
815
|
}
|
|
650
816
|
}
|
|
651
817
|
});
|
|
652
818
|
|
|
653
819
|
case 2:
|
|
654
|
-
_yield$this$
|
|
655
|
-
limits = _yield$this$
|
|
820
|
+
_yield$this$client5 = _context11.sent;
|
|
821
|
+
limits = _yield$this$client5.limits;
|
|
656
822
|
|
|
657
823
|
if (limits) {
|
|
658
824
|
_context11.next = 6;
|
|
@@ -662,35 +828,70 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
662
828
|
return _context11.abrupt("return", null);
|
|
663
829
|
|
|
664
830
|
case 6:
|
|
831
|
+
if (!(limits.__typename === "ErrorAccessDenied")) {
|
|
832
|
+
_context11.next = 8;
|
|
833
|
+
break;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
return _context11.abrupt("return", limits);
|
|
837
|
+
|
|
838
|
+
case 8:
|
|
839
|
+
if (!(limits.__typename === "ErrorNotExist")) {
|
|
840
|
+
_context11.next = 10;
|
|
841
|
+
break;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
return _context11.abrupt("return", limits);
|
|
845
|
+
|
|
846
|
+
case 10:
|
|
847
|
+
if (!(limits.__typename === "ErrorLimit")) {
|
|
848
|
+
_context11.next = 12;
|
|
849
|
+
break;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
return _context11.abrupt("return", limits);
|
|
853
|
+
|
|
854
|
+
case 12:
|
|
855
|
+
if (!(limits.__typename === "ErrorNotFound")) {
|
|
856
|
+
_context11.next = 14;
|
|
857
|
+
break;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
return _context11.abrupt("return", limits);
|
|
861
|
+
|
|
862
|
+
case 14:
|
|
665
863
|
cloud = limits.cloud, mail = limits.mail;
|
|
666
864
|
return _context11.abrupt("return", {
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
received: {
|
|
675
|
-
count: BigInt(mail.received.count),
|
|
676
|
-
maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
|
|
677
|
-
fileCount: BigInt(mail.received.fileCount),
|
|
678
|
-
maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
|
|
679
|
-
fileSize: BigInt(mail.received.fileSize),
|
|
680
|
-
maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
|
|
865
|
+
__typename: "SuccessResponse",
|
|
866
|
+
data: {
|
|
867
|
+
cloud: {
|
|
868
|
+
count: BigInt(cloud.count),
|
|
869
|
+
size: BigInt(cloud.size),
|
|
870
|
+
maxCount: cloud.maxCount ? BigInt(cloud.maxCount) : null,
|
|
871
|
+
maxSize: cloud.maxSize ? BigInt(cloud.maxSize) : null
|
|
681
872
|
},
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
873
|
+
mail: {
|
|
874
|
+
received: {
|
|
875
|
+
count: BigInt(mail.received.count),
|
|
876
|
+
maxCount: mail.received.maxCount ? BigInt(mail.received.maxCount) : null,
|
|
877
|
+
fileCount: BigInt(mail.received.fileCount),
|
|
878
|
+
maxFileCount: mail.received.maxFileCount ? BigInt(mail.received.maxFileCount) : null,
|
|
879
|
+
fileSize: BigInt(mail.received.fileSize),
|
|
880
|
+
maxFileSize: mail.received.maxFileSize ? BigInt(mail.received.maxFileSize) : null
|
|
881
|
+
},
|
|
882
|
+
sent: {
|
|
883
|
+
count: BigInt(mail.sent.count),
|
|
884
|
+
maxCount: mail.sent.maxCount ? BigInt(mail.sent.maxCount) : null,
|
|
885
|
+
fileCount: BigInt(mail.sent.fileCount),
|
|
886
|
+
maxFileCount: mail.sent.maxFileCount ? BigInt(mail.sent.maxFileCount) : null,
|
|
887
|
+
fileSize: BigInt(mail.sent.fileSize),
|
|
888
|
+
maxFileSize: mail.sent.maxFileSize ? BigInt(mail.sent.maxFileSize) : null
|
|
889
|
+
}
|
|
689
890
|
}
|
|
690
891
|
}
|
|
691
892
|
});
|
|
692
893
|
|
|
693
|
-
case
|
|
894
|
+
case 16:
|
|
694
895
|
case "end":
|
|
695
896
|
return _context11.stop();
|
|
696
897
|
}
|
|
@@ -707,37 +908,42 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
707
908
|
|
|
708
909
|
_proto.godFatherAndChildren = /*#__PURE__*/function () {
|
|
709
910
|
var _godFatherAndChildren = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
|
|
710
|
-
var
|
|
711
|
-
|
|
712
|
-
var _yield$this$client$qu3, user;
|
|
911
|
+
var _yield$this$client6, user;
|
|
713
912
|
|
|
714
913
|
return _regeneratorRuntime.wrap(function _callee12$(_context12) {
|
|
715
914
|
while (1) {
|
|
716
915
|
switch (_context12.prev = _context12.next) {
|
|
717
916
|
case 0:
|
|
718
917
|
_context12.next = 2;
|
|
719
|
-
return this.client
|
|
918
|
+
return this.client("query")({
|
|
720
919
|
user: [{}, {
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
lastname: true,
|
|
725
|
-
email: true,
|
|
726
|
-
phone: true
|
|
920
|
+
"...on ErrorNotFound": {
|
|
921
|
+
__typename: true,
|
|
922
|
+
message: true
|
|
727
923
|
},
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
924
|
+
"...on UserResponse": {
|
|
925
|
+
__typename: true,
|
|
926
|
+
godChildren: {
|
|
927
|
+
id: true,
|
|
928
|
+
firstname: true,
|
|
929
|
+
lastname: true,
|
|
930
|
+
email: true,
|
|
931
|
+
phone: true
|
|
932
|
+
},
|
|
933
|
+
godFather: {
|
|
934
|
+
id: true,
|
|
935
|
+
firstname: true,
|
|
936
|
+
lastname: true,
|
|
937
|
+
email: true,
|
|
938
|
+
phone: true
|
|
939
|
+
}
|
|
734
940
|
}
|
|
735
941
|
}]
|
|
736
942
|
});
|
|
737
943
|
|
|
738
944
|
case 2:
|
|
739
|
-
_yield$this$
|
|
740
|
-
user = _yield$this$
|
|
945
|
+
_yield$this$client6 = _context12.sent;
|
|
946
|
+
user = _yield$this$client6.user;
|
|
741
947
|
|
|
742
948
|
if (user) {
|
|
743
949
|
_context12.next = 6;
|
|
@@ -747,11 +953,23 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
747
953
|
return _context12.abrupt("return", null);
|
|
748
954
|
|
|
749
955
|
case 6:
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
956
|
+
if (!(user.__typename === "ErrorNotFound")) {
|
|
957
|
+
_context12.next = 8;
|
|
958
|
+
break;
|
|
959
|
+
}
|
|
753
960
|
|
|
754
|
-
|
|
961
|
+
return _context12.abrupt("return", user);
|
|
962
|
+
|
|
963
|
+
case 8:
|
|
964
|
+
return _context12.abrupt("return", {
|
|
965
|
+
__typename: "SuccessResponse",
|
|
966
|
+
data: {
|
|
967
|
+
godChildren: user.godChildren,
|
|
968
|
+
godFather: user.godFather
|
|
969
|
+
}
|
|
970
|
+
});
|
|
971
|
+
|
|
972
|
+
case 9:
|
|
755
973
|
case "end":
|
|
756
974
|
return _context12.stop();
|
|
757
975
|
}
|
|
@@ -776,7 +994,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
776
994
|
case 0:
|
|
777
995
|
appCode = _ref2.appCode, config = _ref2.config, env = _ref2.env, sessionId = _ref2.sessionId;
|
|
778
996
|
_context13.next = 3;
|
|
779
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
997
|
+
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
780
998
|
dbConfig: [{
|
|
781
999
|
appCode: appCode,
|
|
782
1000
|
config: JSON.stringify(config)
|
|
@@ -812,18 +1030,71 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
812
1030
|
switch (_context14.prev = _context14.next) {
|
|
813
1031
|
case 0:
|
|
814
1032
|
_context14.next = 2;
|
|
815
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
1033
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
816
1034
|
dbConfig: [{
|
|
817
1035
|
appCode: appCode
|
|
818
|
-
},
|
|
1036
|
+
}, {
|
|
1037
|
+
"...on ErrorAccessDenied": {
|
|
1038
|
+
__typename: true,
|
|
1039
|
+
message: true
|
|
1040
|
+
},
|
|
1041
|
+
"...on ErrorNotFound": {
|
|
1042
|
+
__typename: true,
|
|
1043
|
+
message: true
|
|
1044
|
+
},
|
|
1045
|
+
"...on ErrorNotExist": {
|
|
1046
|
+
__typename: true,
|
|
1047
|
+
message: true
|
|
1048
|
+
},
|
|
1049
|
+
"...on DbConfigResponse": {
|
|
1050
|
+
__typename: true,
|
|
1051
|
+
json: true
|
|
1052
|
+
}
|
|
1053
|
+
}]
|
|
819
1054
|
});
|
|
820
1055
|
|
|
821
1056
|
case 2:
|
|
822
1057
|
_yield$BaseClient$_ge3 = _context14.sent;
|
|
823
1058
|
dbConfig = _yield$BaseClient$_ge3.dbConfig;
|
|
1059
|
+
|
|
1060
|
+
if (dbConfig) {
|
|
1061
|
+
_context14.next = 6;
|
|
1062
|
+
break;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
return _context14.abrupt("return", null);
|
|
1066
|
+
|
|
1067
|
+
case 6:
|
|
1068
|
+
if (!(dbConfig.__typename === "ErrorAccessDenied")) {
|
|
1069
|
+
_context14.next = 8;
|
|
1070
|
+
break;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
824
1073
|
return _context14.abrupt("return", dbConfig);
|
|
825
1074
|
|
|
826
|
-
case
|
|
1075
|
+
case 8:
|
|
1076
|
+
if (!(dbConfig.__typename === "ErrorNotFound")) {
|
|
1077
|
+
_context14.next = 10;
|
|
1078
|
+
break;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
return _context14.abrupt("return", dbConfig);
|
|
1082
|
+
|
|
1083
|
+
case 10:
|
|
1084
|
+
if (!(dbConfig.__typename === "ErrorNotExist")) {
|
|
1085
|
+
_context14.next = 12;
|
|
1086
|
+
break;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
return _context14.abrupt("return", dbConfig);
|
|
1090
|
+
|
|
1091
|
+
case 12:
|
|
1092
|
+
return _context14.abrupt("return", {
|
|
1093
|
+
__typename: "SuccessResponse",
|
|
1094
|
+
data: dbConfig.json
|
|
1095
|
+
});
|
|
1096
|
+
|
|
1097
|
+
case 13:
|
|
827
1098
|
case "end":
|
|
828
1099
|
return _context14.stop();
|
|
829
1100
|
}
|
|
@@ -848,22 +1119,51 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
848
1119
|
case 0:
|
|
849
1120
|
lang = _ref3.lang, env = _ref3.env, sessionId = _ref3.sessionId;
|
|
850
1121
|
_context15.next = 3;
|
|
851
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
1122
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
852
1123
|
faq: [{
|
|
853
1124
|
lang: lang
|
|
854
1125
|
}, {
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
1126
|
+
"...on ErrorAccessDenied": {
|
|
1127
|
+
__typename: true,
|
|
1128
|
+
message: true
|
|
1129
|
+
},
|
|
1130
|
+
"...on FaqResponse": {
|
|
1131
|
+
__typename: true,
|
|
1132
|
+
faq: {
|
|
1133
|
+
answer: true,
|
|
1134
|
+
order: true,
|
|
1135
|
+
question: true
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
858
1138
|
}]
|
|
859
1139
|
});
|
|
860
1140
|
|
|
861
1141
|
case 3:
|
|
862
1142
|
_yield$BaseClient$_ge4 = _context15.sent;
|
|
863
1143
|
faq = _yield$BaseClient$_ge4.faq;
|
|
1144
|
+
|
|
1145
|
+
if (faq) {
|
|
1146
|
+
_context15.next = 7;
|
|
1147
|
+
break;
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
return _context15.abrupt("return", null);
|
|
1151
|
+
|
|
1152
|
+
case 7:
|
|
1153
|
+
if (!(faq.__typename === "ErrorAccessDenied")) {
|
|
1154
|
+
_context15.next = 9;
|
|
1155
|
+
break;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
864
1158
|
return _context15.abrupt("return", faq);
|
|
865
1159
|
|
|
866
|
-
case
|
|
1160
|
+
case 9:
|
|
1161
|
+
return _context15.abrupt("return", {
|
|
1162
|
+
__typename: "SuccessResponse",
|
|
1163
|
+
data: faq.faq
|
|
1164
|
+
});
|
|
1165
|
+
|
|
1166
|
+
case 10:
|
|
867
1167
|
case "end":
|
|
868
1168
|
return _context15.stop();
|
|
869
1169
|
}
|
|
@@ -888,33 +1188,62 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
888
1188
|
case 0:
|
|
889
1189
|
env = _ref4.env, lang = _ref4.lang, sessionId = _ref4.sessionId;
|
|
890
1190
|
_context16.next = 3;
|
|
891
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
1191
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
892
1192
|
blog: [{
|
|
893
1193
|
lang: lang
|
|
894
1194
|
}, {
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
1195
|
+
"...on ErrorLangNotExist": {
|
|
1196
|
+
__typename: true,
|
|
1197
|
+
message: true
|
|
1198
|
+
},
|
|
1199
|
+
"...on BlogResponse": {
|
|
1200
|
+
__typename: true,
|
|
1201
|
+
blogItems: {
|
|
1202
|
+
id: true,
|
|
1203
|
+
blogId: true,
|
|
1204
|
+
author: true,
|
|
1205
|
+
body: true,
|
|
1206
|
+
date: true,
|
|
1207
|
+
image: true,
|
|
1208
|
+
imageAlt: true,
|
|
1209
|
+
summary: true,
|
|
1210
|
+
title: true,
|
|
1211
|
+
order: true
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
905
1214
|
}]
|
|
906
1215
|
});
|
|
907
1216
|
|
|
908
1217
|
case 3:
|
|
909
1218
|
_yield$BaseClient$_ge5 = _context16.sent;
|
|
910
1219
|
blog = _yield$BaseClient$_ge5.blog;
|
|
911
|
-
return _context16.abrupt("return", blog.map(function (b) {
|
|
912
|
-
return _objectSpread(_objectSpread({}, b), {}, {
|
|
913
|
-
date: new Date(b.date)
|
|
914
|
-
});
|
|
915
|
-
}));
|
|
916
1220
|
|
|
917
|
-
|
|
1221
|
+
if (blog) {
|
|
1222
|
+
_context16.next = 7;
|
|
1223
|
+
break;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
return _context16.abrupt("return", null);
|
|
1227
|
+
|
|
1228
|
+
case 7:
|
|
1229
|
+
if (!(blog.__typename === "ErrorLangNotExist")) {
|
|
1230
|
+
_context16.next = 9;
|
|
1231
|
+
break;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
return _context16.abrupt("return", blog);
|
|
1235
|
+
|
|
1236
|
+
case 9:
|
|
1237
|
+
return _context16.abrupt("return", {
|
|
1238
|
+
__typename: "SuccessResponse",
|
|
1239
|
+
data: blog.blogItems.map(function (b) {
|
|
1240
|
+
return _objectSpread(_objectSpread({}, b), {}, {
|
|
1241
|
+
date: new Date(b.date)
|
|
1242
|
+
});
|
|
1243
|
+
})
|
|
1244
|
+
});
|
|
1245
|
+
|
|
1246
|
+
case 10:
|
|
918
1247
|
case "end":
|
|
919
1248
|
return _context16.stop();
|
|
920
1249
|
}
|
|
@@ -931,14 +1260,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
931
1260
|
|
|
932
1261
|
_proto.reportUser = /*#__PURE__*/function () {
|
|
933
1262
|
var _reportUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17(reportedUserId, customMessage) {
|
|
934
|
-
var _yield$this$
|
|
1263
|
+
var _yield$this$client7, sendReport;
|
|
935
1264
|
|
|
936
1265
|
return _regeneratorRuntime.wrap(function _callee17$(_context17) {
|
|
937
1266
|
while (1) {
|
|
938
1267
|
switch (_context17.prev = _context17.next) {
|
|
939
1268
|
case 0:
|
|
940
1269
|
_context17.next = 2;
|
|
941
|
-
return this.client
|
|
1270
|
+
return this.client("mutation")({
|
|
942
1271
|
sendReport: [{
|
|
943
1272
|
reportedUserId: reportedUserId,
|
|
944
1273
|
customMessage: customMessage
|
|
@@ -961,8 +1290,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
961
1290
|
});
|
|
962
1291
|
|
|
963
1292
|
case 2:
|
|
964
|
-
_yield$this$
|
|
965
|
-
sendReport = _yield$this$
|
|
1293
|
+
_yield$this$client7 = _context17.sent;
|
|
1294
|
+
sendReport = _yield$this$client7.sendReport;
|
|
966
1295
|
return _context17.abrupt("return", sendReport);
|
|
967
1296
|
|
|
968
1297
|
case 5:
|
|
@@ -990,7 +1319,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
990
1319
|
case 0:
|
|
991
1320
|
sessionId = _ref5.sessionId, userId = _ref5.userId, env = _ref5.env;
|
|
992
1321
|
_context18.next = 3;
|
|
993
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
1322
|
+
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
994
1323
|
deleteUser: [{
|
|
995
1324
|
userId: userId
|
|
996
1325
|
}, true]
|
|
@@ -1018,7 +1347,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1018
1347
|
|
|
1019
1348
|
_proto.dbGet = /*#__PURE__*/function () {
|
|
1020
1349
|
var _dbGet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19(_ref6) {
|
|
1021
|
-
var field, userId, _yield$this$
|
|
1350
|
+
var field, userId, _yield$this$client8, dbGet;
|
|
1022
1351
|
|
|
1023
1352
|
return _regeneratorRuntime.wrap(function _callee19$(_context19) {
|
|
1024
1353
|
while (1) {
|
|
@@ -1026,19 +1355,72 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1026
1355
|
case 0:
|
|
1027
1356
|
field = _ref6.field, userId = _ref6.userId;
|
|
1028
1357
|
_context19.next = 3;
|
|
1029
|
-
return this.client
|
|
1358
|
+
return this.client("query")({
|
|
1030
1359
|
dbGet: [{
|
|
1031
1360
|
field: field,
|
|
1032
1361
|
userId: userId
|
|
1033
|
-
},
|
|
1362
|
+
}, {
|
|
1363
|
+
"...on ErrorAccessDenied": {
|
|
1364
|
+
__typename: true,
|
|
1365
|
+
message: true
|
|
1366
|
+
},
|
|
1367
|
+
"...on ErrorNotExist": {
|
|
1368
|
+
__typename: true,
|
|
1369
|
+
message: true
|
|
1370
|
+
},
|
|
1371
|
+
"...on ErrorNotFound": {
|
|
1372
|
+
__typename: true,
|
|
1373
|
+
message: true
|
|
1374
|
+
},
|
|
1375
|
+
"...on DbGetResponse": {
|
|
1376
|
+
__typename: true,
|
|
1377
|
+
json: true
|
|
1378
|
+
}
|
|
1379
|
+
}]
|
|
1034
1380
|
});
|
|
1035
1381
|
|
|
1036
1382
|
case 3:
|
|
1037
|
-
_yield$this$
|
|
1038
|
-
dbGet = _yield$this$
|
|
1039
|
-
return _context19.abrupt("return", dbGet.res);
|
|
1383
|
+
_yield$this$client8 = _context19.sent;
|
|
1384
|
+
dbGet = _yield$this$client8.dbGet;
|
|
1040
1385
|
|
|
1041
|
-
|
|
1386
|
+
if (dbGet) {
|
|
1387
|
+
_context19.next = 7;
|
|
1388
|
+
break;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
return _context19.abrupt("return", null);
|
|
1392
|
+
|
|
1393
|
+
case 7:
|
|
1394
|
+
if (!(dbGet.__typename === "ErrorAccessDenied")) {
|
|
1395
|
+
_context19.next = 9;
|
|
1396
|
+
break;
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
return _context19.abrupt("return", dbGet);
|
|
1400
|
+
|
|
1401
|
+
case 9:
|
|
1402
|
+
if (!(dbGet.__typename === "ErrorNotExist")) {
|
|
1403
|
+
_context19.next = 11;
|
|
1404
|
+
break;
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
return _context19.abrupt("return", dbGet);
|
|
1408
|
+
|
|
1409
|
+
case 11:
|
|
1410
|
+
if (!(dbGet.__typename === "ErrorNotFound")) {
|
|
1411
|
+
_context19.next = 13;
|
|
1412
|
+
break;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
return _context19.abrupt("return", dbGet);
|
|
1416
|
+
|
|
1417
|
+
case 13:
|
|
1418
|
+
return _context19.abrupt("return", {
|
|
1419
|
+
__typename: "SuccessResponse",
|
|
1420
|
+
data: dbGet.json
|
|
1421
|
+
});
|
|
1422
|
+
|
|
1423
|
+
case 14:
|
|
1042
1424
|
case "end":
|
|
1043
1425
|
return _context19.stop();
|
|
1044
1426
|
}
|
|
@@ -1055,7 +1437,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1055
1437
|
|
|
1056
1438
|
_proto.dbSet = /*#__PURE__*/function () {
|
|
1057
1439
|
var _dbSet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20(_ref7) {
|
|
1058
|
-
var value, userId, _yield$this$
|
|
1440
|
+
var value, userId, _yield$this$client9, dbSet;
|
|
1059
1441
|
|
|
1060
1442
|
return _regeneratorRuntime.wrap(function _callee20$(_context20) {
|
|
1061
1443
|
while (1) {
|
|
@@ -1072,7 +1454,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1072
1454
|
|
|
1073
1455
|
case 3:
|
|
1074
1456
|
_context20.next = 5;
|
|
1075
|
-
return this.client
|
|
1457
|
+
return this.client("mutation")({
|
|
1076
1458
|
dbSet: [{
|
|
1077
1459
|
userId: userId,
|
|
1078
1460
|
value: serialize(value).toString("base64")
|
|
@@ -1080,8 +1462,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1080
1462
|
});
|
|
1081
1463
|
|
|
1082
1464
|
case 5:
|
|
1083
|
-
_yield$this$
|
|
1084
|
-
dbSet = _yield$this$
|
|
1465
|
+
_yield$this$client9 = _context20.sent;
|
|
1466
|
+
dbSet = _yield$this$client9.dbSet;
|
|
1085
1467
|
return _context20.abrupt("return", dbSet.res);
|
|
1086
1468
|
|
|
1087
1469
|
case 8:
|
|
@@ -1101,7 +1483,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1101
1483
|
|
|
1102
1484
|
_proto.dbSearch = /*#__PURE__*/function () {
|
|
1103
1485
|
var _dbSearch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(_ref8) {
|
|
1104
|
-
var search, field, _yield$this$
|
|
1486
|
+
var search, field, _yield$this$client10, dbSearch;
|
|
1105
1487
|
|
|
1106
1488
|
return _regeneratorRuntime.wrap(function _callee21$(_context21) {
|
|
1107
1489
|
while (1) {
|
|
@@ -1109,19 +1491,72 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1109
1491
|
case 0:
|
|
1110
1492
|
search = _ref8.search, field = _ref8.field;
|
|
1111
1493
|
_context21.next = 3;
|
|
1112
|
-
return this.client
|
|
1494
|
+
return this.client("query")({
|
|
1113
1495
|
dbSearch: [{
|
|
1114
1496
|
search: search,
|
|
1115
1497
|
field: field
|
|
1116
|
-
},
|
|
1498
|
+
}, {
|
|
1499
|
+
"...on ErrorAccessDenied": {
|
|
1500
|
+
__typename: true,
|
|
1501
|
+
message: true
|
|
1502
|
+
},
|
|
1503
|
+
"...on ErrorBasic": {
|
|
1504
|
+
__typename: true,
|
|
1505
|
+
message: true
|
|
1506
|
+
},
|
|
1507
|
+
"...on ErrorNotExist": {
|
|
1508
|
+
__typename: true,
|
|
1509
|
+
message: true
|
|
1510
|
+
},
|
|
1511
|
+
"...on DbSearchResponse": {
|
|
1512
|
+
__typename: true,
|
|
1513
|
+
json: true
|
|
1514
|
+
}
|
|
1515
|
+
}]
|
|
1117
1516
|
});
|
|
1118
1517
|
|
|
1119
1518
|
case 3:
|
|
1120
|
-
_yield$this$
|
|
1121
|
-
dbSearch = _yield$this$
|
|
1519
|
+
_yield$this$client10 = _context21.sent;
|
|
1520
|
+
dbSearch = _yield$this$client10.dbSearch;
|
|
1521
|
+
|
|
1522
|
+
if (dbSearch) {
|
|
1523
|
+
_context21.next = 7;
|
|
1524
|
+
break;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
return _context21.abrupt("return", null);
|
|
1528
|
+
|
|
1529
|
+
case 7:
|
|
1530
|
+
if (!(dbSearch.__typename === "ErrorAccessDenied")) {
|
|
1531
|
+
_context21.next = 9;
|
|
1532
|
+
break;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1122
1535
|
return _context21.abrupt("return", dbSearch);
|
|
1123
1536
|
|
|
1124
|
-
case
|
|
1537
|
+
case 9:
|
|
1538
|
+
if (!(dbSearch.__typename === "ErrorBasic")) {
|
|
1539
|
+
_context21.next = 11;
|
|
1540
|
+
break;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
return _context21.abrupt("return", dbSearch);
|
|
1544
|
+
|
|
1545
|
+
case 11:
|
|
1546
|
+
if (!(dbSearch.__typename === "ErrorNotExist")) {
|
|
1547
|
+
_context21.next = 13;
|
|
1548
|
+
break;
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
return _context21.abrupt("return", dbSearch);
|
|
1552
|
+
|
|
1553
|
+
case 13:
|
|
1554
|
+
return _context21.abrupt("return", {
|
|
1555
|
+
__typename: "SuccessResponse",
|
|
1556
|
+
data: dbSearch.json
|
|
1557
|
+
});
|
|
1558
|
+
|
|
1559
|
+
case 14:
|
|
1125
1560
|
case "end":
|
|
1126
1561
|
return _context21.stop();
|
|
1127
1562
|
}
|
|
@@ -1138,7 +1573,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1138
1573
|
|
|
1139
1574
|
_proto.deleteFolder = /*#__PURE__*/function () {
|
|
1140
1575
|
var _deleteFolder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(_ref9) {
|
|
1141
|
-
var id, _yield$this$
|
|
1576
|
+
var id, _yield$this$client11, deleteFolder;
|
|
1142
1577
|
|
|
1143
1578
|
return _regeneratorRuntime.wrap(function _callee22$(_context22) {
|
|
1144
1579
|
while (1) {
|
|
@@ -1146,15 +1581,15 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1146
1581
|
case 0:
|
|
1147
1582
|
id = _ref9.id;
|
|
1148
1583
|
_context22.next = 3;
|
|
1149
|
-
return this.client
|
|
1584
|
+
return this.client("mutation")({
|
|
1150
1585
|
deleteFolder: [{
|
|
1151
1586
|
id: id
|
|
1152
1587
|
}, true]
|
|
1153
1588
|
});
|
|
1154
1589
|
|
|
1155
1590
|
case 3:
|
|
1156
|
-
_yield$this$
|
|
1157
|
-
deleteFolder = _yield$this$
|
|
1591
|
+
_yield$this$client11 = _context22.sent;
|
|
1592
|
+
deleteFolder = _yield$this$client11.deleteFolder;
|
|
1158
1593
|
return _context22.abrupt("return", deleteFolder != null ? deleteFolder : false);
|
|
1159
1594
|
|
|
1160
1595
|
case 6:
|
|
@@ -1174,7 +1609,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1174
1609
|
|
|
1175
1610
|
_proto.moveFolders = /*#__PURE__*/function () {
|
|
1176
1611
|
var _moveFolders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(_ref10) {
|
|
1177
|
-
var foldersId, parentFolderId, _yield$this$
|
|
1612
|
+
var foldersId, parentFolderId, _yield$this$client12, moveFolders;
|
|
1178
1613
|
|
|
1179
1614
|
return _regeneratorRuntime.wrap(function _callee23$(_context23) {
|
|
1180
1615
|
while (1) {
|
|
@@ -1182,7 +1617,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1182
1617
|
case 0:
|
|
1183
1618
|
foldersId = _ref10.foldersId, parentFolderId = _ref10.parentFolderId;
|
|
1184
1619
|
_context23.next = 3;
|
|
1185
|
-
return this.client
|
|
1620
|
+
return this.client("mutation")({
|
|
1186
1621
|
moveFolders: [{
|
|
1187
1622
|
foldersId: foldersId,
|
|
1188
1623
|
parentFolderId: parentFolderId
|
|
@@ -1190,8 +1625,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1190
1625
|
});
|
|
1191
1626
|
|
|
1192
1627
|
case 3:
|
|
1193
|
-
_yield$this$
|
|
1194
|
-
moveFolders = _yield$this$
|
|
1628
|
+
_yield$this$client12 = _context23.sent;
|
|
1629
|
+
moveFolders = _yield$this$client12.moveFolders;
|
|
1195
1630
|
return _context23.abrupt("return", moveFolders != null ? moveFolders : false);
|
|
1196
1631
|
|
|
1197
1632
|
case 6:
|
|
@@ -1211,7 +1646,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1211
1646
|
|
|
1212
1647
|
_proto.moveFiles = /*#__PURE__*/function () {
|
|
1213
1648
|
var _moveFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(_ref11) {
|
|
1214
|
-
var filesId, parentFolderId, _yield$this$
|
|
1649
|
+
var filesId, parentFolderId, _yield$this$client13, moveFiles;
|
|
1215
1650
|
|
|
1216
1651
|
return _regeneratorRuntime.wrap(function _callee24$(_context24) {
|
|
1217
1652
|
while (1) {
|
|
@@ -1219,7 +1654,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1219
1654
|
case 0:
|
|
1220
1655
|
filesId = _ref11.filesId, parentFolderId = _ref11.parentFolderId;
|
|
1221
1656
|
_context24.next = 3;
|
|
1222
|
-
return this.client
|
|
1657
|
+
return this.client("mutation")({
|
|
1223
1658
|
moveFiles: [{
|
|
1224
1659
|
filesId: filesId,
|
|
1225
1660
|
parentFolderId: parentFolderId
|
|
@@ -1227,8 +1662,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1227
1662
|
});
|
|
1228
1663
|
|
|
1229
1664
|
case 3:
|
|
1230
|
-
_yield$this$
|
|
1231
|
-
moveFiles = _yield$this$
|
|
1665
|
+
_yield$this$client13 = _context24.sent;
|
|
1666
|
+
moveFiles = _yield$this$client13.moveFiles;
|
|
1232
1667
|
return _context24.abrupt("return", moveFiles != null ? moveFiles : false);
|
|
1233
1668
|
|
|
1234
1669
|
case 6:
|
|
@@ -1248,7 +1683,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1248
1683
|
|
|
1249
1684
|
_proto.folderSize = /*#__PURE__*/function () {
|
|
1250
1685
|
var _folderSize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25(_ref12) {
|
|
1251
|
-
var folderId, _yield$this$
|
|
1686
|
+
var folderId, _yield$this$client14, folderSize;
|
|
1252
1687
|
|
|
1253
1688
|
return _regeneratorRuntime.wrap(function _callee25$(_context25) {
|
|
1254
1689
|
while (1) {
|
|
@@ -1256,18 +1691,25 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1256
1691
|
case 0:
|
|
1257
1692
|
folderId = _ref12.folderId;
|
|
1258
1693
|
_context25.next = 3;
|
|
1259
|
-
return this.client
|
|
1694
|
+
return this.client("query")({
|
|
1260
1695
|
folderSize: [{
|
|
1261
1696
|
folderId: folderId
|
|
1262
1697
|
}, {
|
|
1263
|
-
|
|
1264
|
-
|
|
1698
|
+
"...on ErrorAccessDenied": {
|
|
1699
|
+
__typename: true,
|
|
1700
|
+
message: true
|
|
1701
|
+
},
|
|
1702
|
+
"...on FolderSizeResponse": {
|
|
1703
|
+
__typename: true,
|
|
1704
|
+
size: true,
|
|
1705
|
+
sizeBefore: true
|
|
1706
|
+
}
|
|
1265
1707
|
}]
|
|
1266
1708
|
});
|
|
1267
1709
|
|
|
1268
1710
|
case 3:
|
|
1269
|
-
_yield$this$
|
|
1270
|
-
folderSize = _yield$this$
|
|
1711
|
+
_yield$this$client14 = _context25.sent;
|
|
1712
|
+
folderSize = _yield$this$client14.folderSize;
|
|
1271
1713
|
|
|
1272
1714
|
if (folderSize) {
|
|
1273
1715
|
_context25.next = 7;
|
|
@@ -1277,12 +1719,23 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1277
1719
|
return _context25.abrupt("return", null);
|
|
1278
1720
|
|
|
1279
1721
|
case 7:
|
|
1722
|
+
if (!(folderSize.__typename === "ErrorAccessDenied")) {
|
|
1723
|
+
_context25.next = 9;
|
|
1724
|
+
break;
|
|
1725
|
+
}
|
|
1726
|
+
|
|
1727
|
+
return _context25.abrupt("return", folderSize);
|
|
1728
|
+
|
|
1729
|
+
case 9:
|
|
1280
1730
|
return _context25.abrupt("return", {
|
|
1281
|
-
|
|
1282
|
-
|
|
1731
|
+
__typename: "SuccessResponse",
|
|
1732
|
+
data: {
|
|
1733
|
+
size: BigInt(folderSize.size),
|
|
1734
|
+
sizeBefore: BigInt(folderSize.sizeBefore)
|
|
1735
|
+
}
|
|
1283
1736
|
});
|
|
1284
1737
|
|
|
1285
|
-
case
|
|
1738
|
+
case 10:
|
|
1286
1739
|
case "end":
|
|
1287
1740
|
return _context25.stop();
|
|
1288
1741
|
}
|
|
@@ -1321,12 +1774,20 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1321
1774
|
return _context26.abrupt("return", null);
|
|
1322
1775
|
|
|
1323
1776
|
case 6:
|
|
1777
|
+
if (!(me.__typename === "ErrorNotFound")) {
|
|
1778
|
+
_context26.next = 8;
|
|
1779
|
+
break;
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
return _context26.abrupt("return", null);
|
|
1783
|
+
|
|
1784
|
+
case 8:
|
|
1324
1785
|
return _context26.abrupt("return", getLink({
|
|
1325
1786
|
app: "auth",
|
|
1326
|
-
path: "/sign-up?gf=" + btoa(me.email) + "&au=" + btoa(backUrl)
|
|
1787
|
+
path: "/sign-up?gf=" + btoa(me.data.email) + "&au=" + btoa(backUrl)
|
|
1327
1788
|
}));
|
|
1328
1789
|
|
|
1329
|
-
case
|
|
1790
|
+
case 9:
|
|
1330
1791
|
case "end":
|
|
1331
1792
|
return _context26.stop();
|
|
1332
1793
|
}
|
|
@@ -1373,4 +1834,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
|
|
|
1373
1834
|
BaseClient._getBaseClient = function (env, session) {
|
|
1374
1835
|
return createThunder(BaseClient.getBaseUrl(env), session);
|
|
1375
1836
|
};
|
|
1376
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9ycyIsImNyZWF0ZVRodW5kZXIiLCJpbnRlcm5hbFRvUGF5bWVudEluZm9zIiwicCIsImN1cnJlbnRTdWJzY3JpcHRpb24iLCJzdGF0ZSIsImNvbGxlY3Rpb25NZXRob2QiLCJhY3RpdmF0ZWRBdCIsIkRhdGUiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJ0cmlhbEVuZHNBdCIsInRyaWFsU3RhcnRlZEF0IiwicGF1c2VkQXQiLCJjdXJyZW50UGVyaW9kRW5kc0F0IiwiY3VycmVudFBlcmlvZFN0YXJ0ZWRBdCIsImNhbmNlbGVkQXQiLCJleHBpcmVzQXQiLCJpbnZvaWNlcyIsIm1hcCIsImkiLCJkYXRlIiwiZHVlIiwic3RhdHVzIiwicGxhbnNDb2RlcyIsImlzVmFsaWRQbGFuIiwicGxhbkNvZGUiLCJpbmNsdWRlcyIsImdldFVzZXJTZWxlY3RvciIsInVzZXJJZCIsIndpdGhQdWJsaWNLZXkiLCJxdWVyeSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm11dGF0aW9uIiwibWUiLCJzZXQiLCJ1cGRhdGVQcm9maWxlIiwiRXJyb3IiLCJwbGFucyIsImtpbmQiLCJjb2RlcyIsImxpbWl0cyIsImRvd25sb2FkQmFuZHdpZHRoIiwiZG93bmxvYWRDb3VudCIsImhhcmRGaWxlQ291bnQiLCJoYXJkRmlsZVNpemUiLCJwZXJGaWxlU2l6ZSIsInVwbG9hZEJhbmR3aWR0aCIsInVwbG9hZENvdW50IiwicmVjZWl2ZWRNYWlscyIsImNvdW50IiwiZmlsZUNvdW50IiwiZmlsZVNpemUiLCJoYXJkQ291bnQiLCJzZW50TWFpbHMiLCJwYXkiLCJpbnB1dCIsImF1dG9SZW5ldyIsImNhbmNlbFBheW1lbnQiLCJwYXltZW50SW5mb3MiLCJob3N0ZWRVcmwiLCJhdXRvcmVuZXciLCJwbGFuIiwidG90YWwiLCJwZGYiLCJjdXJyZW5jeSIsImNsb3VkIiwic2l6ZSIsIm1heFNpemUiLCJtYXhDb3VudCIsIm1haWwiLCJyZWNlaXZlZCIsIm1heEZpbGVDb3VudCIsIm1heEZpbGVTaXplIiwic2VudCIsIkJpZ0ludCIsImdvZEZhdGhlckFuZENoaWxkcmVuIiwiZ29kQ2hpbGRyZW4iLCJnb2RGYXRoZXIiLCJ1cGRhdGVBcHBEQkNvbmZpZyIsImFwcENvZGUiLCJjb25maWciLCJkYkNvbmZpZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRBcHBEQkNvbmZpZyIsImdldEZBUSIsImZhcSIsImFuc3dlciIsIm9yZGVyIiwicXVlc3Rpb24iLCJnZXRCbG9nIiwiYmxvZyIsImJsb2dJZCIsImF1dGhvciIsImJvZHkiLCJpbWFnZSIsImltYWdlQWx0Iiwic3VtbWFyeSIsInRpdGxlIiwiYiIsInJlcG9ydFVzZXIiLCJyZXBvcnRlZFVzZXJJZCIsImN1c3RvbU1lc3NhZ2UiLCJzZW5kUmVwb3J0IiwicmVwb3J0ZWRVc2VyIiwiZGVsZXRlVXNlciIsImRiR2V0IiwiZmllbGQiLCJyZXMiLCJkYlNldCIsInZhbHVlIiwidG9TdHJpbmciLCJkYlNlYXJjaCIsInNlYXJjaCIsImRlbGV0ZUZvbGRlciIsIm1vdmVGb2xkZXJzIiwiZm9sZGVyc0lkIiwicGFyZW50Rm9sZGVySWQiLCJtb3ZlRmlsZXMiLCJmaWxlc0lkIiwiZm9sZGVyU2l6ZSIsImZvbGRlcklkIiwic2l6ZUJlZm9yZSIsImdldFNwb25zb3JzaGlwTGluayIsImJhY2tVcmwiLCJwYXRoIiwiYnRvYSIsImdldEJhc2VVcmwiLCJncmFwaGNkbiIsInByb2Nlc3MiLCJOT0RFX0VOViJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULFFBQTBCLE1BQTFCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixvQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFlBQTNCO0FBR0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUFRQSxTQUFTQyxTQUFULFFBQTBCLGlCQUExQjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsa0JBQTlCOztBQXlLQSxTQUFTQyxzQkFBVCxDQUFnQ0MsQ0FBaEMsRUFBdUU7QUFDckUseUNBQ0tBLENBREw7QUFFRUMsSUFBQUEsbUJBQW1CLGtDQUNkRCxDQUFDLENBQUNDLG1CQURZO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUVGLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JDLEtBRlo7QUFHakJDLE1BQUFBLGdCQUFnQixFQUFFSCxDQUFDLENBQUNDLG1CQUFGLENBQ2ZFLGdCQUpjO0FBS2pCQyxNQUFBQSxXQUFXLEVBQUVKLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JHLFdBQXRCLEdBQ1QsSUFBSUMsSUFBSixDQUFTTCxDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUEvQixDQURTLEdBRVQsSUFQYTtBQVFqQkUsTUFBQUEsU0FBUyxFQUFFTixDQUFDLENBQUNDLG1CQUFGLENBQXNCSyxTQUF0QixHQUNQLElBQUlELElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBL0IsQ0FETyxHQUVQLElBVmE7QUFXakJDLE1BQUFBLFNBQVMsRUFBRVAsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQk0sU0FBdEIsR0FDUCxJQUFJ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QSxNQURYc0gsUUFDVztBQURYQSxJQUFBQSxRQUNXLEdBREEsSUFDQTtBQUFBOztBQUNYLE1BQUlDLE9BQU8sQ0FBQ3ZILEdBQVIsQ0FBWXdILFFBQVosS0FBeUIsTUFBN0IsRUFBcUM7QUFDbkMsV0FBTywrQkFBUDtBQUNEOztBQUVELFVBQVF4SCxHQUFSO0FBQ0UsU0FBSyxNQUFMO0FBQ0UsYUFBT3NILFFBQVEsR0FDWCw4QkFEVyxHQUVYLGdDQUZKOztBQUdGLFNBQUssU0FBTDtBQUNFLGFBQU8sd0NBQVA7O0FBQ0YsU0FBSyxLQUFMO0FBQ0E7QUFDRSxhQUFPLG9DQUFQO0FBVEo7QUFXRCxDOztBQXBCVXhILFUsQ0FzQmFJLGMsR0FBaUIsVUFDdkNGLEdBRHVDLEVBRXZDRCxPQUZ1QztBQUFBLFNBSXZDaEQsYUFBYSxDQUFDK0MsVUFBVSxDQUFDdUgsVUFBWCxDQUFzQnJILEdBQXRCLENBQUQsRUFBNkJELE9BQTdCLENBSjBCO0FBQUEsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyBhcyBETFByb2dyZXNzIH0gZnJvbSBcImt5XCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBnZXRMaW5rIH0gZnJvbSBcIkBzZWNyZWN5L2xpYi11dGlsc1wiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9ycy5xdWVyeSh7XG4gICAgdXNlcjogW1xuICAgICAgeyB1c2VySWQgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgIHB1YmxpY0tleTogd2l0aFB1YmxpY0tleSA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuICByZXR1cm4gdXNlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERCQ29uZmlnRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCI7XG4gIGlzQXJyYXk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc051bGxhYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzS2V5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdD86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZyA9IHtcbiAgZmllbGRzOiBBcHBEQkNvbmZpZ0ZpZWxkW107XG59O1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbjogc3RyaW5nO1xuICBhbnN3ZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJsb2dJdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBibG9nSWQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgaW1hZ2VBbHQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckJhc2UgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFVzZXJSb2xlO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVsZXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbGFzdExvZ2luOiBEYXRlO1xuICBsYW5nOiBMYW5nO1xufTtcblxudHlwZSBXaXRoUHVibGljS2V5ID0geyB3aXRoUHVibGljS2V5PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBVc2VyPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4gPSBUIGV4dGVuZHMge1xuICB3aXRoUHVibGljS2V5OiB0cnVlO1xufVxuICA/IFVzZXJCYXNlICYgeyBwdWJsaWNLZXk6IHN0cmluZyB9XG4gIDogVXNlckJhc2U7XG5cbnR5cGUgQ2xhc3NHZXRVc2VyUGFyYW1zID0gV2l0aFB1YmxpY0tleSAmIHtcbiAgdXNlcklkPzogc3RyaW5nO1xufTtcbnR5cGUgR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcbn07XG5cbnR5cGUgU3RhdGljR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgZW52OiBTZWNyZWN5RW52O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlcjxVIGV4dGVuZHMgV2l0aFB1YmxpY0tleT4oXG4gIHBhcmFtczogR2V0VXNlclBhcmFtc1xuKTogUHJvbWlzZTxVc2VyPFU+IHwgbnVsbD4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFVzZXJTZWxlY3RvcihwYXJhbXMudXNlcklkLCBwYXJhbXMud2l0aFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudC5xdWVyeSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIHNlc3Npb25zOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICBhcHBTZXNzaW9uczoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgICBjb3VudHJ5OiB0cnVlLFxuICAgICAgICAgICAgICB1c2VyQXBwOiB7XG4gICAgICAgICAgICAgICAgYXBwOiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXNzaW9uczogVXNlclNlc3Npb25bXSA9XG4gICAgICBkYXRhLnVzZXI/LnNlc3Npb25zLm1hcChzID0+ICh7XG4gICAgICAgIGlkOiBzLmlkLFxuICAgICAgICBpcDogcy5pcCxcbiAgICAgICAgY2l0eTogcy5jaXR5LFxuICAgICAgICBjb3VudHJ5OiBzLmNvdW50cnksXG4gICAgICAgIGxhc3RBY3Rpdml0eTogcy5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShzLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHVzZXJBZ2VudDogcy51c2VyQWdlbnQsXG4gICAgICAgIGFwcFNlc3Npb25zOiBzLmFwcFNlc3Npb25zLm1hcChhID0+ICh7XG4gICAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgICAgaXA6IGEuaXAsXG4gICAgICAgICAgY2l0eTogYS5jaXR5LFxuICAgICAgICAgIGNvdW50cnk6IGEuY291bnRyeSxcbiAgICAgICAgICBsYXN0QWN0aXZpdHk6IGEubGFzdEFjdGl2aXR5ID8gbmV3IERhdGUoYS5sYXN0QWN0aXZpdHkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHVzZXJBZ2VudDogYS51c2VyQWdlbnQsXG4gICAgICAgICAgYXBwOiBhLnVzZXJBcHA/LmFwcC5uYW1lID8/IFwiXCJcbiAgICAgICAgfSkpXG4gICAgICB9KSkgPz8gW107XG5cbiAgICByZXR1cm4gc2Vzc2lvbnM7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zdCBsb2NhbCA9IGdldFN0b3JhZ2UoZmFsc2UpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGdldFN0b3JhZ2UodHJ1ZSk7XG4gICAgICBsb2NhbC5qd3QuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBLZXlzLmNsZWFyKCk7XG4gICAgICBsb2NhbC51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi5qd3QuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcFNlc3Npb24uY2xlYXIoKTtcbiAgICAgIHVzZXJzQ2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgICAgbG9nb3V0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbklkXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICBhc3luYyBtZTxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+KFxuICAgIHBhcmFtcz86IFRcbiAgKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIocGFyYW1zIHx8ICh7IHdpdGhQdWJsaWNLZXk6IHRydWUgfSBhcyBUKSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXNlcjxUIGV4dGVuZHMgU3RhdGljR2V0VXNlclBhcmFtcz4oXG4gICAgcGFyYW1zOiBULFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5fZ2V0QmFzZUNsaWVudChwYXJhbXMuZW52LCBzZXNzaW9uSWQpLFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVzZXI8VCBleHRlbmRzIENsYXNzR2V0VXNlclBhcmFtcz4ocGFyYW1zOiBUKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWQsXG4gICAgICB3aXRoUHVibGljS2V5OiBwYXJhbXMud2l0aFB1YmxpY0tleVxuICAgIH0pO1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHVzZXJzQ2FjaGUuc2V0KHVzZXIuaWQsIHVzZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJvZmlsZSh7XG4gICAgZmlyc3RuYW1lLFxuICAgIGxhc3RuYW1lLFxuICAgIGxhbmdcbiAgfToge1xuICAgIGZpcnN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYXN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYW5nOiBMYW5nIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8VXNlcj4ge1xuICAgIGNvbnN0IHsgdXBkYXRlUHJvZmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKS5xdWVyeSh7XG4gICAgICBwbGFuczoge1xuICAgICAgICBraW5kOiB0cnVlLFxuICAgICAgICBjb2RlczogdHJ1ZSxcbiAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgZG93bmxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgZG93bmxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgdXBsb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgcmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGxhbnM7XG4gIH1cblxuICBhc3luYyBwYXkoXG4gICAgcGxhbkNvZGU6IFNlY3JlY3lQbGFuc0NvZGVzLFxuICAgIGlucHV0OiBQYXlJbnB1dCxcbiAgICBhdXRvUmVuZXc/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHBheSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgcGF5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBwbGFuQ29kZSxcbiAgICAgICAgICBhdXRvUmVuZXdcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBheSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFBheW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBjYW5jZWxQYXltZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgcGF5bWVudEluZm9zOiB7XG4gICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgIGF1dG9yZW5ldzogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW50UGVyaW9kRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjcmVhdGVkQXQ6IHRydWUsXG4gICAgICAgICAgZXhwaXJlc0F0OiB0cnVlLFxuICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsU3RhcnRlZEF0OiB0cnVlLFxuICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xsZWN0aW9uTWV0aG9kOiB0cnVlLFxuICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgcGxhbkNvZGU6IHRydWUsXG5cbiAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBpbnZvaWNlczoge1xuICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGR1ZTogdHJ1ZSxcbiAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgdG90YWw6IHRydWUsXG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zKTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0cygpOiBQcm9taXNlPFF1ZXJ5TGltaXRzIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbGltaXRzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIG1heFNpemU6IHRydWUsXG4gICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgbWF4Q291bnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xvdWQ6IHtcbiAgICAgICAgY291bnQ6IEJpZ0ludChjbG91ZC5jb3VudCksXG4gICAgICAgIHNpemU6IEJpZ0ludChjbG91ZC5zaXplKSxcbiAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgIG1heFNpemU6IGNsb3VkLm1heFNpemUgPyBCaWdJbnQoY2xvdWQubWF4U2l6ZSkgOiBudWxsXG4gICAgICB9LFxuICAgICAgbWFpbDoge1xuICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4Q291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5yZWNlaXZlZC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgc2VudDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5zZW50LmNvdW50KSxcbiAgICAgICAgICBtYXhDb3VudDogbWFpbC5zZW50Lm1heENvdW50ID8gQmlnSW50KG1haWwuc2VudC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5zZW50Lm1heEZpbGVDb3VudFxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwuc2VudC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwuc2VudC5tYXhGaWxlU2l6ZVxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxHb2RGYXRoZXJBbmRDaGlsZHJlbiB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKS5tdXRhdGlvbih7XG4gICAgICBkYkNvbmZpZzogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwQ29kZSxcbiAgICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KGNvbmZpZylcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEFwcERCQ29uZmlnKFxuICAgIGFwcENvZGU6IHN0cmluZyxcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPEFwcERCQ29uZmlnPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkucXVlcnkoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8RmFxSXRlbVtdPiB7XG4gICAgY29uc3QgeyBmYXEgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGJsb2c6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGJsb2dJZDogdHJ1ZSxcbiAgICAgICAgICBhdXRob3I6IHRydWUsXG4gICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGltYWdlOiB0cnVlLFxuICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgIHN1bW1hcnk6IHRydWUsXG4gICAgICAgICAgdGl0bGU6IHRydWUsXG4gICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJsb2cubWFwKGIgPT4gKHsgLi4uYiwgZGF0ZTogbmV3IERhdGUoYi5kYXRlKSB9KSk7XG4gIH1cblxuICBhc3luYyByZXBvcnRVc2VyKFxuICAgIHJlcG9ydGVkVXNlcklkOiBzdHJpbmcsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZ1xuICApOiBQcm9taXNlPFNlbmRSZXBvcnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB7IHNlbmRSZXBvcnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNlbmRSZXBvcnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlcG9ydGVkVXNlcklkLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2U6IHRydWUsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXBvcnRlZFVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbmRSZXBvcnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGVsZXRlVXNlcih7XG4gICAgc2Vzc2lvbklkLFxuICAgIHVzZXJJZCxcbiAgICBlbnZcbiAgfToge1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVVzZXIgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApLm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiR2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2V0PFQgZXh0ZW5kcyBVc2VyRGF0YSwgVSBleHRlbmRzIERvY3VtZW50Pih7XG4gICAgdmFsdWUsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2YWx1ZTogVTtcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdCBpbmNsdWRpbmcgZmllbGRzIHlvdSB3YW50IHRvIHVwZGF0ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGJTZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRiU2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZSh2YWx1ZSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IG1vdmVGb2xkZXJzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBtb3ZlRm9sZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVyc0lkLFxuICAgICAgICAgIHBhcmVudEZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBtb3ZlRm9sZGVycyA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVGaWxlcyh7XG4gICAgZmlsZXNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZmlsZXNJZDogc3RyaW5nW107XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBtb3ZlRmlsZXMgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlclNpemU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIHNpemVCZWZvcmU6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmb2xkZXJTaXplKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogQmlnSW50KGZvbGRlclNpemUuc2l6ZSksXG4gICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRTcG9uc29yc2hpcExpbmsoe1xuICAgIGJhY2tVcmxcbiAgfToge1xuICAgIGJhY2tVcmw6IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IG1lID0gYXdhaXQgdGhpcy5tZSh7IHdpdGhQdWJsaWNLZXk6IGZhbHNlIH0pO1xuXG4gICAgaWYgKCFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldExpbmsoe1xuICAgICAgYXBwOiBcImF1dGhcIixcbiAgICAgIHBhdGg6IGAvc2lnbi11cD9nZj0ke2J0b2EobWUuZW1haWwpfSZhdT0ke2J0b2EoYmFja1VybCl9YFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
1837
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJfX3R5cGVuYW1lIiwibWVzc2FnZSIsImZpZWxkIiwiaWQiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsImxhbmciLCJwdWJsaWNLZXkiLCJ1bmRlZmluZWQiLCJlbWFpbCIsInBob25lIiwicm9sZSIsImRlbGV0ZWRBdCIsImxhc3RMb2dpbiIsImdldFVzZXIiLCJwYXJhbXMiLCJzZWxlY3RvciIsImNsaWVudCIsInVzZXJSZXNwb25zZSIsImRhdGEiLCJCYXNlQ2xpZW50Iiwic2Vzc2lvbiIsImVudiIsInNlc3Npb25JZCIsIl9nZXRCYXNlQ2xpZW50Iiwic2Vzc2lvbnMiLCJsYXN0QWN0aXZpdHkiLCJ1c2VyQWdlbnQiLCJpcCIsImNpdHkiLCJjb3VudHJ5IiwiYXBwU2Vzc2lvbnMiLCJ1c2VyQXBwIiwiYXBwIiwibmFtZSIsInMiLCJhIiwibG9nb3V0IiwibG9jYWwiLCJqd3QiLCJjbGVhciIsInVzZXJBcHBLZXlzIiwidXNlckFwcFNlc3Npb24iLCJtZSIsInNldCIsInVwZGF0ZVByb2ZpbGUiLCJFcnJvciIsInBsYW5zIiwicGxhbiIsImtpbmQiLCJjb2RlcyIsImxpbWl0cyIsImRvd25sb2FkQmFuZHdpZHRoIiwiZG93bmxvYWRDb3VudCIsImhhcmRGaWxlQ291bnQiLCJoYXJkRmlsZVNpemUiLCJwZXJGaWxlU2l6ZSIsInVwbG9hZEJhbmR3aWR0aCIsInVwbG9hZENvdW50IiwicmVjZWl2ZWRNYWlscyIsImNvdW50IiwiZmlsZUNvdW50IiwiZmlsZVNpemUiLCJoYXJkQ291bnQiLCJzZW50TWFpbHMiLCJwYXkiLCJpbnB1dCIsImF1dG9SZW5ldyIsImNhbmNlbFBheW1lbnQiLCJwYXltZW50SW5mb3MiLCJob3N0ZWRVcmwiLCJhdXRvcmVuZXciLCJ0b3RhbCIsInBkZiIsImN1cnJlbmN5IiwicmVzdWx0IiwiY2xvdWQiLCJzaXplIiwibWF4U2l6ZSIsIm1heENvdW50IiwibWFpbCIsInJlY2VpdmVkIiwibWF4RmlsZUNvdW50IiwibWF4RmlsZVNpemUiLCJzZW50IiwiQmlnSW50IiwiZ29kRmF0aGVyQW5kQ2hpbGRyZW4iLCJnb2RDaGlsZHJlbiIsImdvZEZhdGhlciIsInVwZGF0ZUFwcERCQ29uZmlnIiwiYXBwQ29kZSIsImNvbmZpZyIsImRiQ29uZmlnIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFwcERCQ29uZmlnIiwianNvbiIsImdldEZBUSIsImZhcSIsImFuc3dlciIsIm9yZGVyIiwicXVlc3Rpb24iLCJnZXRCbG9nIiwiYmxvZyIsImJsb2dJdGVtcyIsImJsb2dJZCIsImF1dGhvciIsImJvZHkiLCJpbWFnZSIsImltYWdlQWx0Iiwic3VtbWFyeSIsInRpdGxlIiwiYiIsInJlcG9ydFVzZXIiLCJyZXBvcnRlZFVzZXJJZCIsImN1c3RvbU1lc3NhZ2UiLCJzZW5kUmVwb3J0IiwicmVwb3J0ZWRVc2VyIiwiZGVsZXRlVXNlciIsImRiR2V0IiwiZGJTZXQiLCJ2YWx1ZSIsInRvU3RyaW5nIiwicmVzIiwiZGJTZWFyY2giLCJzZWFyY2giLCJkZWxldGVGb2xkZXIiLCJtb3ZlRm9sZGVycyIsImZvbGRlcnNJZCIsInBhcmVudEZvbGRlcklkIiwibW92ZUZpbGVzIiwiZmlsZXNJZCIsImZvbGRlclNpemUiLCJmb2xkZXJJZCIsInNpemVCZWZvcmUiLCJnZXRTcG9uc29yc2hpcExpbmsiLCJiYWNrVXJsIiwicGF0aCIsImJ0b2EiLCJnZXRCYXNlVXJsIiwiZ3JhcGhjZG4iLCJwcm9jZXNzIiwiTk9ERV9FTlYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFHQSxTQUFTQSxTQUFULFFBQTBCLE1BQTFCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixvQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFlBQTNCO0FBR0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUFRQSxTQUFTQyxRQUFULFFBQXlCLGlCQUF6QjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsa0JBQTlCOztBQXNMQSxTQUFTQyxzQkFBVCxDQUFnQ0MsQ0FBaEMsRUFBdUU7QUFDckUseUNBQ0tBLENBREw7QUFFRUMsSUFBQUEsbUJBQW1CLGtDQUNkRCxDQUFDLENBQUNDLG1CQURZO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUVGLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JDLEtBRlo7QUFHakJDLE1BQUFBLGdCQUFnQixFQUFFSCxDQUFDLENBQUNDLG1CQUFGLENBQ2ZFLGdCQUpjO0FBS2pCQyxNQUFBQSxXQUFXLEVBQUVKLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JHLFdBQXRCLEdBQ1QsSUFBSUMsSUFBSixDQUFTTCxDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUEvQixDQURTLEdBRVQsSUFQYTtBQVFqQkUsTUFBQUEsU0FBUyxFQUFFTixDQUFDLENBQUNDLG1CQUFGLENBQXNCSyxTQUF0QixHQUNQLElBQUlELElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBL0IsQ0FETyxHQUVQLElBVmE7QUFXakJDLE1BQUFB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cUM7QUFDbkMsV0FBTywrQkFBUDtBQUNEOztBQUVELFVBQVF4SCxHQUFSO0FBQ0UsU0FBSyxNQUFMO0FBQ0UsYUFBT3NILFFBQVEsR0FDWCw4QkFEVyxHQUVYLGdDQUZKOztBQUdGLFNBQUssU0FBTDtBQUNFLGFBQU8sd0NBQVA7O0FBQ0YsU0FBSyxLQUFMO0FBQ0E7QUFDRSxhQUFPLG9DQUFQO0FBVEo7QUFXRCxDOztBQXBCVXhILFUsQ0FzQmFJLGMsR0FBaUIsVUFDdkNGLEdBRHVDLEVBRXZDRCxPQUZ1QztBQUFBLFNBSXZDcEQsYUFBYSxDQUFDbUQsVUFBVSxDQUFDdUgsVUFBWCxDQUFzQnJILEdBQXRCLENBQUQsRUFBNkJELE9BQTdCLENBSjBCO0FBQUEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHR5cGUgeyBEb3dubG9hZFByb2dyZXNzIGFzIERMUHJvZ3Jlc3MgfSBmcm9tIFwia3lcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7IGdldExpbmsgfSBmcm9tIFwiQHNlY3JlY3kvbGliLXV0aWxzXCI7XG5pbXBvcnQgeyB1c2Vyc0NhY2hlIH0gZnJvbSBcIi4vY2FjaGUuanNcIjtcbmltcG9ydCB0eXBlIHsgVXNlclNlc3Npb24gfSBmcm9tIFwiLi9jbGllbnQvdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgU2VjcmVjeUVudiB9IGZyb20gXCIuL2NsaWVudC9oZWxwZXJzLmpzXCI7XG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIi4vY2xpZW50L3N0b3JhZ2UuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgTGFuZyxcbiAgUGF5SW5wdXRUeXBlLFxuICBQbGFuS2luZCxcbiAgVGh1bmRlcixcbiAgVXNlclJvbGVcbn0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgU2VsZWN0b3IgfSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVUaHVuZGVyIH0gZnJvbSBcIi4vWmV1c1RodW5kZXIuanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRXJyb3JBY2Nlc3NEZW5pZWQsXG4gIEVycm9yTGltaXQsXG4gIEVycm9yTm90Rm91bmQsXG4gIEVycm9yTm90RXhpc3QsXG4gIEVycm9yTGFuZ05vdEV4aXN0LFxuICBFcnJvckJhc2ljXG59IGZyb20gXCIuL2Vycm9yLmpzXCI7XG5cbmV4cG9ydCB0eXBlIFN1Y2Nlc3NSZXNwb25zZTxUPiA9IHtcbiAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIjtcbiAgZGF0YTogVDtcbn07XG5cbmV4cG9ydCB0eXBlIERvd25sb2FkUHJvZ3Jlc3MgPSBETFByb2dyZXNzO1xuXG5leHBvcnQgdHlwZSBQYXlJbnB1dCA9IHtcbiAgdHlwZTogUGF5SW5wdXRUeXBlO1xuICB0b2tlbjogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgc3RyZWV0OiBzdHJpbmc7XG4gIHBvc3RhbENvZGU6IHN0cmluZztcbiAgY2l0eTogc3RyaW5nO1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIG1vbnRoOiBzdHJpbmc7XG4gIHllYXI6IHN0cmluZztcbiAgY3Z2OiBzdHJpbmc7XG4gIG51bWJlcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbExpbWl0cyA9IHtcbiAgY291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVDb3VudD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRDb3VudD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaGFyZEZpbGVDb3VudD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaGFyZEZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwZXJGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIExpbWl0cyA9IHtcbiAgZG93bmxvYWRCYW5kd2lkdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRvd25sb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlY2VpdmVkTWFpbHM6IE1haWxMaW1pdHM7XG4gIHNlbnRNYWlsczogTWFpbExpbWl0cztcbiAgdXBsb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB1cGxvYWRDb3VudD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIEdvZFVzZXIgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpcnN0bmFtZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgR29kRmF0aGVyQW5kQ2hpbGRyZW4gPSB7XG4gIGdvZEZhdGhlcjogR29kVXNlciB8IG51bGw7XG4gIGdvZENoaWxkcmVuOiBHb2RVc2VyW107XG59O1xuXG5leHBvcnQgdHlwZSBQbGFuID0ge1xuICBjb2Rlczogc3RyaW5nW107XG4gIGtpbmQ6IFBsYW5LaW5kO1xuICBsaW1pdHM6IExpbWl0cztcbn07XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvblN0YXRlID1cbiAgfCBcImFjdGl2ZVwiXG4gIHwgXCJjYW5jZWxlZFwiXG4gIHwgXCJwYXVzZWRcIlxuICB8IFwiZXhwaXJlZFwiXG4gIHwgXCJmdXR1cmVcIlxuICB8IFwiaW5fdHJpYWxcIlxuICB8IFwibGl2ZVwiXG4gIHwgXCJwYXN0X2R1ZVwiO1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25Db2xsZWN0aW9uTWV0aG9kID0gXCJhdXRvbWF0aWNcIiB8IFwibWFudWFsXCI7XG5cbnR5cGUgSW50ZXJuYWxTdWJzY3JpcHRpb24gPSB7XG4gIGF1dG9yZW5ldzogYm9vbGVhbjtcbiAgYWN0aXZhdGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjdXJyZW50UGVyaW9kRW5kc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNhbmNlbGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXVzZWRBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsRW5kc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB1cGRhdGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjb2xsZWN0aW9uTWV0aG9kOiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBsYW4/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwbGFuQ29kZT86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRvdGFsPzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn07XG5cbnR5cGUgUmVjdXJseUludm9pY2VTdGF0dXMgPVxuICB8IFwicGVuZGluZ1wiXG4gIHwgXCJwYWlkXCJcbiAgfCBcImZhaWxlZFwiXG4gIHwgXCJwYXN0X2R1ZVwiXG4gIHwgXCJvcGVuXCJcbiAgfCBcImNsb3NlZFwiXG4gIHwgXCJ2b2lkZWRcIlxuICB8IFwicHJvY2Vzc2luZ1wiO1xuXG50eXBlIEludGVybmFsUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogc3RyaW5nO1xuICBkdWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHRvdGFsOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgY3VycmVuY3k6IHN0cmluZztcbn07XG5cbnR5cGUgSW50ZXJuYWxQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBJbnRlcm5hbFN1YnNjcmlwdGlvbjtcbiAgaW52b2ljZXM6IEludGVybmFsUmVjdXJseUludm9pY2VzW107XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb24gPSB7XG4gIGF1dG9yZW5ldzogYm9vbGVhbjtcbiAgYWN0aXZhdGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjdXJyZW50UGVyaW9kU3RhcnRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNhbmNlbGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGV4cGlyZXNBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXVzZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB1cGRhdGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZDtcbiAgc3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBSZWN1cmx5SW52b2ljZXMgPSB7XG4gIHBkZjogc3RyaW5nO1xuICBkYXRlOiBEYXRlO1xuICBkdWU6IERhdGU7XG4gIHN0YXR1czogUmVjdXJseUludm9pY2VTdGF0dXM7XG4gIHRvdGFsOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgY3VycmVuY3k6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBheW1lbnRJbmZvcyA9IHtcbiAgaG9zdGVkVXJsOiBzdHJpbmc7XG4gIGN1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgaW52b2ljZXM6IFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU2VuZFJlcG9ydCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgdXNlcjoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gICAgbGFzdG5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICB9O1xuICByZXBvcnRlZFVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgY3VzdG9tTWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmZ1bmN0aW9uIGludGVybmFsVG9QYXltZW50SW5mb3MocDogSW50ZXJuYWxQYXltZW50SW5mb3MpOiBQYXltZW50SW5mb3Mge1xuICByZXR1cm4ge1xuICAgIC4uLnAsXG4gICAgY3VycmVudFN1YnNjcmlwdGlvbjoge1xuICAgICAgLi4ucC5jdXJyZW50U3Vic2NyaXB0aW9uLFxuICAgICAgc3RhdGU6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5zdGF0ZSBhcyBTdWJzY3JpcHRpb25TdGF0ZSxcbiAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHAuY3VycmVudFN1YnNjcmlwdGlvblxuICAgICAgICAuY29sbGVjdGlvbk1ldGhvZCBhcyBTdWJzY3JpcHRpb25Db2xsZWN0aW9uTWV0aG9kLFxuICAgICAgYWN0aXZhdGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5hY3RpdmF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5hY3RpdmF0ZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgY3JlYXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uY3JlYXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgdXBkYXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udXBkYXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgdHJpYWxFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi50cmlhbEVuZHNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi50cmlhbEVuZHNBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgdHJpYWxTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi50cmlhbFN0YXJ0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi50cmlhbFN0YXJ0ZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgcGF1c2VkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5wYXVzZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5wYXVzZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgY3VycmVudFBlcmlvZEVuZHNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uY3VycmVudFBlcmlvZEVuZHNBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uY3VycmVudFBlcmlvZFN0YXJ0ZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgY2FuY2VsZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uY2FuY2VsZWRBdClcbiAgICAgICAgOiBudWxsLFxuICAgICAgZXhwaXJlc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uZXhwaXJlc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdClcbiAgICAgICAgOiBudWxsXG4gICAgfSxcbiAgICBpbnZvaWNlczogcC5pbnZvaWNlcy5tYXAoaSA9PiAoe1xuICAgICAgLi4uaSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGkuZGF0ZSksXG4gICAgICBkdWU6IG5ldyBEYXRlKGkuZHVlKSxcbiAgICAgIHN0YXR1czogaS5zdGF0dXMgYXMgUmVjdXJseUludm9pY2VTdGF0dXNcbiAgICB9KSlcbiAgfTtcbn1cblxuY29uc3QgcGxhbnNDb2RlcyA9IFtcbiAgXCJiYXNpY19tb250aFwiLFxuICBcImFkdmFuY2VkX21vbnRoXCIsXG4gIFwicHJvX21vbnRoXCIsXG4gIFwiYmFzaWNfeWVhclwiLFxuICBcImFkdmFuY2VkX3llYXJcIixcbiAgXCJwcm9feWVhclwiXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTZWNyZWN5UGxhbnNDb2RlcyA9IHR5cGVvZiBwbGFuc0NvZGVzW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUGxhbihwbGFuQ29kZTogc3RyaW5nKTogcGxhbkNvZGUgaXMgU2VjcmVjeVBsYW5zQ29kZXMge1xuICByZXR1cm4gcGxhbnNDb2Rlcy5pbmNsdWRlcyhwbGFuQ29kZSBhcyBTZWNyZWN5UGxhbnNDb2Rlcyk7XG59XG5cbmV4cG9ydCB0eXBlIFVzZXJEYXRhPFxuICBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuPiA9IHtcbiAgaXNTdXBlcnVzZXI6IGJvb2xlYW47XG4gIGlzU2VhcmNoYWJsZTogYm9vbGVhbjtcbn0gJiBUO1xuXG5leHBvcnQgdHlwZSBGb2xkZXJTaXplID0geyBzaXplOiBiaWdpbnQ7IHNpemVCZWZvcmU6IGJpZ2ludCB9O1xuXG5jb25zdCBnZXRVc2VyU2VsZWN0b3IgPSAoXG4gIHVzZXJJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgd2l0aFB1YmxpY0tleTogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gIGNvbnN0IHsgdXNlciB9ID0gU2VsZWN0b3IoXCJRdWVyeVwiKSh7XG4gICAgdXNlcjogW1xuICAgICAgeyB1c2VySWQgfSxcbiAgICAgIHtcbiAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWUsXG4gICAgICAgICAgZmllbGQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBVc2VyUmVzcG9uc2VcIjoge1xuICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgICAgICBwdWJsaWNLZXk6IHdpdGhQdWJsaWNLZXkgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgICBkZWxldGVkQXQ6IHRydWUsXG4gICAgICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuICByZXR1cm4gdXNlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERCQ29uZmlnRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCI7XG4gIGlzQXJyYXk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc051bGxhYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzS2V5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdD86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZyA9IHtcbiAgZmllbGRzOiBBcHBEQkNvbmZpZ0ZpZWxkW107XG59O1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbjogc3RyaW5nO1xuICBhbnN3ZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJsb2dJdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBibG9nSWQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgaW1hZ2VBbHQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckJhc2UgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFVzZXJSb2xlO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVsZXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbGFzdExvZ2luOiBEYXRlO1xuICBsYW5nOiBMYW5nO1xufTtcblxudHlwZSBXaXRoUHVibGljS2V5ID0geyB3aXRoUHVibGljS2V5PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBVc2VyPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4gPSBUIGV4dGVuZHMge1xuICB3aXRoUHVibGljS2V5OiB0cnVlO1xufVxuICA/IFVzZXJCYXNlICYgeyBwdWJsaWNLZXk6IHN0cmluZyB9XG4gIDogVXNlckJhc2U7XG5cbnR5cGUgQ2xhc3NHZXRVc2VyUGFyYW1zID0gV2l0aFB1YmxpY0tleSAmIHtcbiAgdXNlcklkPzogc3RyaW5nO1xufTtcbnR5cGUgR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcbn07XG5cbnR5cGUgU3RhdGljR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgZW52OiBTZWNyZWN5RW52O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlcjxVIGV4dGVuZHMgV2l0aFB1YmxpY0tleT4oXG4gIHBhcmFtczogR2V0VXNlclBhcmFtc1xuKTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VXNlcjxVPj4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFVzZXJTZWxlY3RvcihwYXJhbXMudXNlcklkLCBwYXJhbXMud2l0aFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgdXNlcjogdXNlclJlc3BvbnNlIH0gPSBhd2FpdCBwYXJhbXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgIHVzZXI6IHNlbGVjdG9yXG4gIH0pO1xuXG4gIGlmICghdXNlclJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodXNlclJlc3BvbnNlLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgcmV0dXJuIHVzZXJSZXNwb25zZTtcbiAgfVxuXG4gIGlmICghdXNlclJlc3BvbnNlLnVzZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICBkYXRhOiB7XG4gICAgICAuLi51c2VyUmVzcG9uc2UudXNlcixcbiAgICAgIGxhc3RMb2dpbjogbmV3IERhdGUodXNlclJlc3BvbnNlLnVzZXIubGFzdExvZ2luKSxcbiAgICAgIGRlbGV0ZWRBdDogdXNlclJlc3BvbnNlLnVzZXIuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXNlclJlc3BvbnNlLnVzZXIuZGVsZXRlZEF0KVxuICAgICAgICA6IG51bGxcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENsb3VkTGltaXRzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgc2l6ZTogYmlnaW50O1xuICBtYXhTaXplOiBiaWdpbnQgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgTWFpbExpbWl0c1ZhbHVlcyA9IHtcbiAgY291bnQ6IGJpZ2ludDtcbiAgbWF4Q291bnQ6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVTaXplOiBiaWdpbnQ7XG4gIG1heEZpbGVTaXplOiBiaWdpbnQgfCBudWxsO1xuICBmaWxlQ291bnQ6IGJpZ2ludDtcbiAgbWF4RmlsZUNvdW50OiBiaWdpbnQgfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlMaW1pdHMgPSB7XG4gIGNsb3VkOiBDbG91ZExpbWl0cztcbiAgbWFpbDoge1xuICAgIHNlbnQ6IE1haWxMaW1pdHNWYWx1ZXM7XG4gICAgcmVjZWl2ZWQ6IE1haWxMaW1pdHNWYWx1ZXM7XG4gIH07XG59O1xuXG5leHBvcnQgY2xhc3MgQmFzZUNsaWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZ2V0QmFzZVVybCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYgPSBcInByb2RcIixcbiAgICBncmFwaGNkbiA9IHRydWVcbiAgKTogc3RyaW5nID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiKSB7XG4gICAgICByZXR1cm4gXCJodHRwOi8vbG9jYWxob3N0OjQwMDAvZ3JhcGhxbFwiO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZW52KSB7XG4gICAgICBjYXNlIFwicHJvZFwiOlxuICAgICAgICByZXR1cm4gZ3JhcGhjZG5cbiAgICAgICAgICA/IFwiaHR0cHM6Ly9zZWNyZWN5LmdyYXBoY2RuLmFwcFwiXG4gICAgICAgICAgOiBcImh0dHBzOi8vYXBpLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcInN0YWdpbmdcIjpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuc3RhZ2luZy5zZWNyZWN5Lm1lL2dyYXBocWxcIjtcbiAgICAgIGNhc2UgXCJkZXZcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBcImh0dHBzOi8vYXBpLmRldi5zZWNyZWN5Lm1lL2dyYXBocWxcIjtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2dldEJhc2VDbGllbnQgPSAoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb24/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+ID0+XG4gICAgY3JlYXRlVGh1bmRlcihCYXNlQ2xpZW50LmdldEJhc2VVcmwoZW52KSwgc2Vzc2lvbik7XG5cbiAgcHJvdGVjdGVkIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG5cbiAgcHVibGljIHNlc3Npb25JZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNlc3Npb246IHN0cmluZywgZW52OiBTZWNyZWN5RW52KSB7XG4gICAgdGhpcy5zZXNzaW9uSWQgPSBzZXNzaW9uO1xuICAgIHRoaXMuY2xpZW50ID0gQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb24pO1xuICB9XG5cbiAgYXN5bmMgc2Vzc2lvbnMoKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VXNlclNlc3Npb25bXT4gfCBFcnJvck5vdEZvdW5kIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBmaWVsZDogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgIHNlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgICAgYXBwU2Vzc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICAgICAgYXBwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGEudXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHVzZXJSZXNwb25zZSA9IGRhdGEudXNlcjtcbiAgICBpZiAodXNlclJlc3BvbnNlLl9fdHlwZW5hbWUgPT09IFwiVXNlclJlc3BvbnNlXCIpIHtcbiAgICAgIGlmICghdXNlclJlc3BvbnNlLnVzZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBzZXNzaW9uczogVXNlclNlc3Npb25bXSA9XG4gICAgICAgIHVzZXJSZXNwb25zZS51c2VyLnNlc3Npb25zLm1hcChzID0+ICh7XG4gICAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgICAgaXA6IHMuaXAsXG4gICAgICAgICAgY2l0eTogcy5jaXR5LFxuICAgICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgICBsYXN0QWN0aXZpdHk6IHMubGFzdEFjdGl2aXR5ID8gbmV3IERhdGUocy5sYXN0QWN0aXZpdHkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHVzZXJBZ2VudDogcy51c2VyQWdlbnQsXG4gICAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICAgIGlkOiBhLmlkLFxuICAgICAgICAgICAgaXA6IGEuaXAsXG4gICAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgICBjb3VudHJ5OiBhLmNvdW50cnksXG4gICAgICAgICAgICBsYXN0QWN0aXZpdHk6IGEubGFzdEFjdGl2aXR5ID8gbmV3IERhdGUoYS5sYXN0QWN0aXZpdHkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICAgIGFwcDogYS51c2VyQXBwPy5hcHAubmFtZSA/PyBcIlwiXG4gICAgICAgICAgfSkpXG4gICAgICAgIH0pKSA/PyBbXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICAgIGRhdGE6IHNlc3Npb25zXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zdCBsb2NhbCA9IGdldFN0b3JhZ2UoZmFsc2UpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGdldFN0b3JhZ2UodHJ1ZSk7XG4gICAgICBsb2NhbC5qd3QuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBLZXlzLmNsZWFyKCk7XG4gICAgICBsb2NhbC51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi5qd3QuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcFNlc3Npb24uY2xlYXIoKTtcbiAgICAgIHVzZXJzQ2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgICBsb2dvdXQ6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRydWVcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1lPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4oXG4gICAgcGFyYW1zPzogVFxuICApOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxVc2VyPFQ+PiB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcihwYXJhbXMgfHwgKHsgd2l0aFB1YmxpY0tleTogdHJ1ZSB9IGFzIFQpKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB1c2VyPFQgZXh0ZW5kcyBTdGF0aWNHZXRVc2VyUGFyYW1zPihcbiAgICBwYXJhbXM6IFQsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxVc2VyPFQ+PiB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IGdldFVzZXI8VD4oe1xuICAgICAgY2xpZW50OiB0aGlzLl9nZXRCYXNlQ2xpZW50KHBhcmFtcy5lbnYsIHNlc3Npb25JZCksXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWQsXG4gICAgICB3aXRoUHVibGljS2V5OiBwYXJhbXMud2l0aFB1YmxpY0tleVxuICAgIH0pO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodXNlci5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHVzZXJzQ2FjaGUuc2V0KHVzZXIuZGF0YS5pZCwgdXNlci5kYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVzZXI8VCBleHRlbmRzIENsYXNzR2V0VXNlclBhcmFtcz4oXG4gICAgcGFyYW1zOiBUXG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFVzZXI8VD4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmRhdGEuaWQsIHVzZXIuZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1cGRhdGVQcm9maWxlKHtcbiAgICBmaXJzdG5hbWUsXG4gICAgbGFzdG5hbWUsXG4gICAgbGFuZ1xuICB9OiB7XG4gICAgZmlyc3RuYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgIGxhc3RuYW1lOiBzdHJpbmcgfCBudWxsO1xuICAgIGxhbmc6IExhbmcgfCBudWxsO1xuICB9KTogUHJvbWlzZTxVc2VyPiB7XG4gICAgY29uc3QgeyB1cGRhdGVQcm9maWxlIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHVwZGF0ZVByb2ZpbGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpcnN0bmFtZSxcbiAgICAgICAgICBsYXN0bmFtZSxcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgbGFuZzogdHJ1ZSxcbiAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgICByb2xlOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCF1cGRhdGVQcm9maWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXBkYXRlUHJvZmlsZSxcbiAgICAgIGxhc3RMb2dpbjogbmV3IERhdGUodXBkYXRlUHJvZmlsZS5sYXN0TG9naW4pLFxuICAgICAgZGVsZXRlZEF0OiB1cGRhdGVQcm9maWxlLmRlbGV0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0KVxuICAgICAgICA6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHBsYW5zKFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFBsYW5bXT4gfCBudWxsPiB7XG4gICAgY29uc3QgeyBwbGFucyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBwbGFuczoge1xuICAgICAgICBcIi4uLm9uIFBsYW5SZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBwbGFuOiB7XG4gICAgICAgICAgICBraW5kOiB0cnVlLFxuICAgICAgICAgICAgY29kZXM6IHRydWUsXG4gICAgICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICAgICAgZG93bmxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgIGRvd25sb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgIHVwbG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgdXBsb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlY2VpdmVkTWFpbHM6IHtcbiAgICAgICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNlbnRNYWlsczoge1xuICAgICAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwbGFucykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBwbGFucy5wbGFuXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHBheShcbiAgICBwbGFuQ29kZTogU2VjcmVjeVBsYW5zQ29kZXMsXG4gICAgaW5wdXQ6IFBheUlucHV0LFxuICAgIGF1dG9SZW5ldz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcGF5IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxQYXltZW50SW5mb3M+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgcGF5bWVudEluZm9zIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHBheW1lbnRJbmZvczoge1xuICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCIuLi5vbiBQYXltZW50SW5mb3NSZXNwb25zZVwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgICAgICB0cmlhbEVuZHNBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICAgICAgc3RhdGU6IHRydWUsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgICAgIHBsYW5Db2RlOiB0cnVlLFxuICAgICAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgICAgIHRvdGFsOiB0cnVlLFxuICAgICAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXltZW50SW5mb3MpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChwYXltZW50SW5mb3MuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gcGF5bWVudEluZm9zO1xuICAgIH1cblxuICAgIGlmICghcGF5bWVudEluZm9zLnBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zLnBheW1lbnRJbmZvcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8UXVlcnlMaW1pdHM+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JMaW1pdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGxpbWl0cyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JMaW1pdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiLi4ub24gUXVlcnlMaW1pdHNcIjoge1xuICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFpbDoge1xuICAgICAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobGltaXRzLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTGltaXRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG4gICAgaWYgKGxpbWl0cy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGxpbWl0cztcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KGNsb3VkLmNvdW50KSxcbiAgICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgICAgbWF4U2l6ZTogY2xvdWQubWF4U2l6ZSA/IEJpZ0ludChjbG91ZC5tYXhTaXplKSA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5yZWNlaXZlZC5tYXhDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudFxuICAgICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnJlY2VpdmVkLmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IEJpZ0ludChtYWlsLnNlbnQuY291bnQpLFxuICAgICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiBtYWlsLnNlbnQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5zZW50LmZpbGVTaXplKSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4+IHwgRXJyb3JOb3RGb3VuZCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gVXNlclJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICAgICAgICAgIHBob25lOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ29kRmF0aGVyOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHVzZXIuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YToge1xuICAgICAgICBnb2RDaGlsZHJlbjogdXNlci5nb2RDaGlsZHJlbixcbiAgICAgICAgZ29kRmF0aGVyOiB1c2VyLmdvZEZhdGhlclxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXBkYXRlQXBwREJDb25maWcoe1xuICAgIGFwcENvZGUsXG4gICAgY29uZmlnLFxuICAgIGVudixcbiAgICBzZXNzaW9uSWRcbiAgfToge1xuICAgIGFwcENvZGU6IHN0cmluZztcbiAgICBjb25maWc6IEFwcERCQ29uZmlnO1xuICAgIGVudjogU2VjcmVjeUVudjtcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxBcHBEQkNvbmZpZz4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwibXV0YXRpb25cIikoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGUsXG4gICAgICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShjb25maWcpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRBcHBEQkNvbmZpZyhcbiAgICBhcHBDb2RlOiBzdHJpbmcsXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxcbiAgICB8IFN1Y2Nlc3NSZXNwb25zZTxBcHBEQkNvbmZpZz5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApKFwicXVlcnlcIikoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiQ29uZmlnUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZy5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWcuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiQ29uZmlnLmpzb25cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPEZhcUl0ZW1bXT4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZhcSB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBmYXE6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRmFxUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGZhcToge1xuICAgICAgICAgICAgICBhbnN3ZXI6IHRydWUsXG4gICAgICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgICAgICBxdWVzdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmYXEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmYXEuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZmFxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZmFxLmZhcVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxCbG9nSXRlbVtdPiB8IEVycm9yTGFuZ05vdEV4aXN0IHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgYmxvZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkoXCJxdWVyeVwiKSh7XG4gICAgICBibG9nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYW5nXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTGFuZ05vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEJsb2dSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgYmxvZ0l0ZW1zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBibG9nSWQ6IHRydWUsXG4gICAgICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgICAgICBzdW1tYXJ5OiB0cnVlLFxuICAgICAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghYmxvZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGJsb2cuX190eXBlbmFtZSA9PT0gXCJFcnJvckxhbmdOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gYmxvZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGJsb2cuYmxvZ0l0ZW1zLm1hcChiID0+ICh7IC4uLmIsIGRhdGU6IG5ldyBEYXRlKGIuZGF0ZSkgfSkpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8U2VuZFJlcG9ydCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgc2VuZFJlcG9ydCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8VT5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJHZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYkdldCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJHZXQuanNvblxuICAgIH07XG4gIH1cblxuICBhc3luYyBkYlNldDxUIGV4dGVuZHMgVXNlckRhdGEsIFUgZXh0ZW5kcyBEb2N1bWVudD4oe1xuICAgIHZhbHVlLFxuICAgIHVzZXJJZFxuICB9OiB7XG4gICAgdmFsdWU6IFU7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgaW5jbHVkaW5nIGZpZWxkcyB5b3Ugd2FudCB0byB1cGRhdGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRiU2V0IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiU2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZSh2YWx1ZSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxUW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvckJhc2ljIHwgRXJyb3JOb3RFeGlzdCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBkYlNlYXJjaCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBkYlNlYXJjaDogW1xuICAgICAgICB7XG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgIGZpZWxkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RFeGlzdFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEYlNlYXJjaFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBqc29uOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiU2VhcmNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJTZWFyY2g7XG4gICAgfVxuXG4gICAgaWYgKGRiU2VhcmNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gZGJTZWFyY2g7XG4gICAgfVxuXG4gICAgaWYgKGRiU2VhcmNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gZGJTZWFyY2g7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBkYlNlYXJjaC5qc29uXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZvbGRlcih7IGlkIH06IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVGb2xkZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgZGVsZXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IG1vdmVGb2xkZXJzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGb2xkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmb2xkZXJzSWQsXG4gICAgICAgICAgcGFyZW50Rm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vdmVGb2xkZXJzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbW92ZUZpbGVzKHtcbiAgICBmaWxlc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmaWxlc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IG1vdmVGaWxlcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBtb3ZlRmlsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpbGVzSWQsXG4gICAgICAgICAgcGFyZW50Rm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vdmVGaWxlcyA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGZvbGRlclNpemUoe1xuICAgIGZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxGb2xkZXJTaXplPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgZm9sZGVyU2l6ZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBmb2xkZXJTaXplOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBGb2xkZXJTaXplUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgICBzaXplQmVmb3JlOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb2xkZXJTaXplLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGZvbGRlclNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHNpemU6IEJpZ0ludChmb2xkZXJTaXplLnNpemUpLFxuICAgICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRTcG9uc29yc2hpcExpbmsoe1xuICAgIGJhY2tVcmxcbiAgfToge1xuICAgIGJhY2tVcmw6IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgRXJyb3JOb3RGb3VuZCB8IG51bGw+IHtcbiAgICBjb25zdCBtZSA9IGF3YWl0IHRoaXMubWUoeyB3aXRoUHVibGljS2V5OiBmYWxzZSB9KTtcblxuICAgIGlmICghbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtZS5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldExpbmsoe1xuICAgICAgYXBwOiBcImF1dGhcIixcbiAgICAgIHBhdGg6IGAvc2lnbi11cD9nZj0ke2J0b2EobWUuZGF0YS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|