@secrecy/lib 1.0.0-dev.18 → 1.0.0-dev.19
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.js +72 -72
- package/lib/ZeusThunder.js +3 -6
- package/lib/client/admin/index.js +10 -10
- package/lib/client/index.d.ts +1 -0
- package/lib/client/index.js +239 -206
- package/lib/zeus/const.js +727 -726
- package/lib/zeus/index.d.ts +1285 -32470
- package/lib/zeus/index.js +34 -43
- package/package.json +1 -1
package/lib/BaseClient.js
CHANGED
|
@@ -10,7 +10,7 @@ import { serialize } from "bson";
|
|
|
10
10
|
import { getLink } from "@secrecy/lib-utils";
|
|
11
11
|
import { usersCache } from "./cache.js";
|
|
12
12
|
import { getStorage } from "./client/storage.js";
|
|
13
|
-
import {
|
|
13
|
+
import { Selector } from "./zeus/index.js";
|
|
14
14
|
import { createThunder } from "./ZeusThunder.js";
|
|
15
15
|
|
|
16
16
|
function internalToPaymentInfos(p) {
|
|
@@ -45,7 +45,7 @@ export function isValidPlan(planCode) {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
var getUserSelector = function getUserSelector(userId, withPublicKey) {
|
|
48
|
-
var
|
|
48
|
+
var _Selector = Selector("Query")({
|
|
49
49
|
user: [{
|
|
50
50
|
userId: userId
|
|
51
51
|
}, {
|
|
@@ -61,7 +61,7 @@ var getUserSelector = function getUserSelector(userId, withPublicKey) {
|
|
|
61
61
|
lastLogin: true
|
|
62
62
|
}]
|
|
63
63
|
}),
|
|
64
|
-
user =
|
|
64
|
+
user = _Selector.user;
|
|
65
65
|
|
|
66
66
|
return user;
|
|
67
67
|
};
|
|
@@ -72,7 +72,7 @@ function getUser(_x) {
|
|
|
72
72
|
|
|
73
73
|
function _getUser() {
|
|
74
74
|
_getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27(params) {
|
|
75
|
-
var selector, _yield$params$client
|
|
75
|
+
var selector, _yield$params$client, user;
|
|
76
76
|
|
|
77
77
|
return _regeneratorRuntime.wrap(function _callee27$(_context27) {
|
|
78
78
|
while (1) {
|
|
@@ -80,13 +80,13 @@ function _getUser() {
|
|
|
80
80
|
case 0:
|
|
81
81
|
selector = getUserSelector(params.userId, params.withPublicKey);
|
|
82
82
|
_context27.next = 3;
|
|
83
|
-
return params.client
|
|
83
|
+
return params.client("query")({
|
|
84
84
|
user: selector
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
case 3:
|
|
88
|
-
_yield$params$client
|
|
89
|
-
user = _yield$params$client
|
|
88
|
+
_yield$params$client = _context27.sent;
|
|
89
|
+
user = _yield$params$client.user;
|
|
90
90
|
|
|
91
91
|
if (user) {
|
|
92
92
|
_context27.next = 7;
|
|
@@ -129,7 +129,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
129
129
|
switch (_context.prev = _context.next) {
|
|
130
130
|
case 0:
|
|
131
131
|
_context.next = 2;
|
|
132
|
-
return this.client
|
|
132
|
+
return this.client("query")({
|
|
133
133
|
user: [{}, {
|
|
134
134
|
sessions: {
|
|
135
135
|
id: true,
|
|
@@ -218,7 +218,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
218
218
|
|
|
219
219
|
_context2.prev = 1;
|
|
220
220
|
_context2.next = 4;
|
|
221
|
-
return this.client
|
|
221
|
+
return this.client("mutation")({
|
|
222
222
|
logout: [{
|
|
223
223
|
sessionId: sessionId
|
|
224
224
|
}, true]
|
|
@@ -350,7 +350,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
350
350
|
|
|
351
351
|
_proto.updateProfile = /*#__PURE__*/function () {
|
|
352
352
|
var _updateProfile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(_ref) {
|
|
353
|
-
var firstname, lastname, lang, _yield$this$client
|
|
353
|
+
var firstname, lastname, lang, _yield$this$client, updateProfile;
|
|
354
354
|
|
|
355
355
|
return _regeneratorRuntime.wrap(function _callee6$(_context6) {
|
|
356
356
|
while (1) {
|
|
@@ -358,7 +358,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
358
358
|
case 0:
|
|
359
359
|
firstname = _ref.firstname, lastname = _ref.lastname, lang = _ref.lang;
|
|
360
360
|
_context6.next = 3;
|
|
361
|
-
return this.client
|
|
361
|
+
return this.client("mutation")({
|
|
362
362
|
updateProfile: [{
|
|
363
363
|
firstname: firstname,
|
|
364
364
|
lastname: lastname,
|
|
@@ -377,8 +377,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
377
377
|
});
|
|
378
378
|
|
|
379
379
|
case 3:
|
|
380
|
-
_yield$this$client
|
|
381
|
-
updateProfile = _yield$this$client
|
|
380
|
+
_yield$this$client = _context6.sent;
|
|
381
|
+
updateProfile = _yield$this$client.updateProfile;
|
|
382
382
|
|
|
383
383
|
if (updateProfile) {
|
|
384
384
|
_context6.next = 7;
|
|
@@ -417,7 +417,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
417
417
|
switch (_context7.prev = _context7.next) {
|
|
418
418
|
case 0:
|
|
419
419
|
_context7.next = 2;
|
|
420
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
420
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
421
421
|
plans: {
|
|
422
422
|
kind: true,
|
|
423
423
|
codes: true,
|
|
@@ -473,14 +473,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
473
473
|
|
|
474
474
|
_proto.pay = /*#__PURE__*/function () {
|
|
475
475
|
var _pay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(planCode, input, autoRenew) {
|
|
476
|
-
var _yield$this$
|
|
476
|
+
var _yield$this$client2, pay;
|
|
477
477
|
|
|
478
478
|
return _regeneratorRuntime.wrap(function _callee8$(_context8) {
|
|
479
479
|
while (1) {
|
|
480
480
|
switch (_context8.prev = _context8.next) {
|
|
481
481
|
case 0:
|
|
482
482
|
_context8.next = 2;
|
|
483
|
-
return this.client
|
|
483
|
+
return this.client("mutation")({
|
|
484
484
|
pay: [{
|
|
485
485
|
input: input,
|
|
486
486
|
planCode: planCode,
|
|
@@ -489,8 +489,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
489
489
|
});
|
|
490
490
|
|
|
491
491
|
case 2:
|
|
492
|
-
_yield$this$
|
|
493
|
-
pay = _yield$this$
|
|
492
|
+
_yield$this$client2 = _context8.sent;
|
|
493
|
+
pay = _yield$this$client2.pay;
|
|
494
494
|
return _context8.abrupt("return", pay != null ? pay : false);
|
|
495
495
|
|
|
496
496
|
case 5:
|
|
@@ -510,20 +510,20 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
510
510
|
|
|
511
511
|
_proto.cancelPayment = /*#__PURE__*/function () {
|
|
512
512
|
var _cancelPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
|
|
513
|
-
var _yield$this$
|
|
513
|
+
var _yield$this$client3, cancelPayment;
|
|
514
514
|
|
|
515
515
|
return _regeneratorRuntime.wrap(function _callee9$(_context9) {
|
|
516
516
|
while (1) {
|
|
517
517
|
switch (_context9.prev = _context9.next) {
|
|
518
518
|
case 0:
|
|
519
519
|
_context9.next = 2;
|
|
520
|
-
return this.client
|
|
520
|
+
return this.client("mutation")({
|
|
521
521
|
cancelPayment: true
|
|
522
522
|
});
|
|
523
523
|
|
|
524
524
|
case 2:
|
|
525
|
-
_yield$this$
|
|
526
|
-
cancelPayment = _yield$this$
|
|
525
|
+
_yield$this$client3 = _context9.sent;
|
|
526
|
+
cancelPayment = _yield$this$client3.cancelPayment;
|
|
527
527
|
return _context9.abrupt("return", cancelPayment != null ? cancelPayment : false);
|
|
528
528
|
|
|
529
529
|
case 5:
|
|
@@ -543,14 +543,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
543
543
|
|
|
544
544
|
_proto.paymentInfos = /*#__PURE__*/function () {
|
|
545
545
|
var _paymentInfos = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
|
|
546
|
-
var _yield$this$
|
|
546
|
+
var _yield$this$client4, paymentInfos;
|
|
547
547
|
|
|
548
548
|
return _regeneratorRuntime.wrap(function _callee10$(_context10) {
|
|
549
549
|
while (1) {
|
|
550
550
|
switch (_context10.prev = _context10.next) {
|
|
551
551
|
case 0:
|
|
552
552
|
_context10.next = 2;
|
|
553
|
-
return this.client
|
|
553
|
+
return this.client("query")({
|
|
554
554
|
paymentInfos: {
|
|
555
555
|
hostedUrl: true,
|
|
556
556
|
currentSubscription: {
|
|
@@ -584,8 +584,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
584
584
|
});
|
|
585
585
|
|
|
586
586
|
case 2:
|
|
587
|
-
_yield$this$
|
|
588
|
-
paymentInfos = _yield$this$
|
|
587
|
+
_yield$this$client4 = _context10.sent;
|
|
588
|
+
paymentInfos = _yield$this$client4.paymentInfos;
|
|
589
589
|
|
|
590
590
|
if (paymentInfos) {
|
|
591
591
|
_context10.next = 6;
|
|
@@ -614,14 +614,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
614
614
|
|
|
615
615
|
_proto.limits = /*#__PURE__*/function () {
|
|
616
616
|
var _limits = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
|
|
617
|
-
var _yield$this$
|
|
617
|
+
var _yield$this$client5, limits, cloud, mail;
|
|
618
618
|
|
|
619
619
|
return _regeneratorRuntime.wrap(function _callee11$(_context11) {
|
|
620
620
|
while (1) {
|
|
621
621
|
switch (_context11.prev = _context11.next) {
|
|
622
622
|
case 0:
|
|
623
623
|
_context11.next = 2;
|
|
624
|
-
return this.client
|
|
624
|
+
return this.client("query")({
|
|
625
625
|
limits: {
|
|
626
626
|
cloud: {
|
|
627
627
|
size: true,
|
|
@@ -651,8 +651,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
651
651
|
});
|
|
652
652
|
|
|
653
653
|
case 2:
|
|
654
|
-
_yield$this$
|
|
655
|
-
limits = _yield$this$
|
|
654
|
+
_yield$this$client5 = _context11.sent;
|
|
655
|
+
limits = _yield$this$client5.limits;
|
|
656
656
|
|
|
657
657
|
if (limits) {
|
|
658
658
|
_context11.next = 6;
|
|
@@ -709,14 +709,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
709
709
|
var _godFatherAndChildren = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
|
|
710
710
|
var _user$godFather;
|
|
711
711
|
|
|
712
|
-
var _yield$this$
|
|
712
|
+
var _yield$this$client6, user;
|
|
713
713
|
|
|
714
714
|
return _regeneratorRuntime.wrap(function _callee12$(_context12) {
|
|
715
715
|
while (1) {
|
|
716
716
|
switch (_context12.prev = _context12.next) {
|
|
717
717
|
case 0:
|
|
718
718
|
_context12.next = 2;
|
|
719
|
-
return this.client
|
|
719
|
+
return this.client("query")({
|
|
720
720
|
user: [{}, {
|
|
721
721
|
godChildren: {
|
|
722
722
|
id: true,
|
|
@@ -736,8 +736,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
736
736
|
});
|
|
737
737
|
|
|
738
738
|
case 2:
|
|
739
|
-
_yield$this$
|
|
740
|
-
user = _yield$this$
|
|
739
|
+
_yield$this$client6 = _context12.sent;
|
|
740
|
+
user = _yield$this$client6.user;
|
|
741
741
|
|
|
742
742
|
if (user) {
|
|
743
743
|
_context12.next = 6;
|
|
@@ -776,7 +776,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
776
776
|
case 0:
|
|
777
777
|
appCode = _ref2.appCode, config = _ref2.config, env = _ref2.env, sessionId = _ref2.sessionId;
|
|
778
778
|
_context13.next = 3;
|
|
779
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
779
|
+
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
780
780
|
dbConfig: [{
|
|
781
781
|
appCode: appCode,
|
|
782
782
|
config: JSON.stringify(config)
|
|
@@ -812,7 +812,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
812
812
|
switch (_context14.prev = _context14.next) {
|
|
813
813
|
case 0:
|
|
814
814
|
_context14.next = 2;
|
|
815
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
815
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
816
816
|
dbConfig: [{
|
|
817
817
|
appCode: appCode
|
|
818
818
|
}, true]
|
|
@@ -848,7 +848,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
848
848
|
case 0:
|
|
849
849
|
lang = _ref3.lang, env = _ref3.env, sessionId = _ref3.sessionId;
|
|
850
850
|
_context15.next = 3;
|
|
851
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
851
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
852
852
|
faq: [{
|
|
853
853
|
lang: lang
|
|
854
854
|
}, {
|
|
@@ -888,7 +888,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
888
888
|
case 0:
|
|
889
889
|
env = _ref4.env, lang = _ref4.lang, sessionId = _ref4.sessionId;
|
|
890
890
|
_context16.next = 3;
|
|
891
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
891
|
+
return BaseClient._getBaseClient(env, sessionId)("query")({
|
|
892
892
|
blog: [{
|
|
893
893
|
lang: lang
|
|
894
894
|
}, {
|
|
@@ -931,14 +931,14 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
931
931
|
|
|
932
932
|
_proto.reportUser = /*#__PURE__*/function () {
|
|
933
933
|
var _reportUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17(reportedUserId, customMessage) {
|
|
934
|
-
var _yield$this$
|
|
934
|
+
var _yield$this$client7, sendReport;
|
|
935
935
|
|
|
936
936
|
return _regeneratorRuntime.wrap(function _callee17$(_context17) {
|
|
937
937
|
while (1) {
|
|
938
938
|
switch (_context17.prev = _context17.next) {
|
|
939
939
|
case 0:
|
|
940
940
|
_context17.next = 2;
|
|
941
|
-
return this.client
|
|
941
|
+
return this.client("mutation")({
|
|
942
942
|
sendReport: [{
|
|
943
943
|
reportedUserId: reportedUserId,
|
|
944
944
|
customMessage: customMessage
|
|
@@ -961,8 +961,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
961
961
|
});
|
|
962
962
|
|
|
963
963
|
case 2:
|
|
964
|
-
_yield$this$
|
|
965
|
-
sendReport = _yield$this$
|
|
964
|
+
_yield$this$client7 = _context17.sent;
|
|
965
|
+
sendReport = _yield$this$client7.sendReport;
|
|
966
966
|
return _context17.abrupt("return", sendReport);
|
|
967
967
|
|
|
968
968
|
case 5:
|
|
@@ -990,7 +990,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
990
990
|
case 0:
|
|
991
991
|
sessionId = _ref5.sessionId, userId = _ref5.userId, env = _ref5.env;
|
|
992
992
|
_context18.next = 3;
|
|
993
|
-
return BaseClient._getBaseClient(env, sessionId)
|
|
993
|
+
return BaseClient._getBaseClient(env, sessionId)("mutation")({
|
|
994
994
|
deleteUser: [{
|
|
995
995
|
userId: userId
|
|
996
996
|
}, true]
|
|
@@ -1018,7 +1018,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1018
1018
|
|
|
1019
1019
|
_proto.dbGet = /*#__PURE__*/function () {
|
|
1020
1020
|
var _dbGet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19(_ref6) {
|
|
1021
|
-
var field, userId, _yield$this$
|
|
1021
|
+
var field, userId, _yield$this$client8, dbGet;
|
|
1022
1022
|
|
|
1023
1023
|
return _regeneratorRuntime.wrap(function _callee19$(_context19) {
|
|
1024
1024
|
while (1) {
|
|
@@ -1026,7 +1026,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1026
1026
|
case 0:
|
|
1027
1027
|
field = _ref6.field, userId = _ref6.userId;
|
|
1028
1028
|
_context19.next = 3;
|
|
1029
|
-
return this.client
|
|
1029
|
+
return this.client("query")({
|
|
1030
1030
|
dbGet: [{
|
|
1031
1031
|
field: field,
|
|
1032
1032
|
userId: userId
|
|
@@ -1034,8 +1034,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1034
1034
|
});
|
|
1035
1035
|
|
|
1036
1036
|
case 3:
|
|
1037
|
-
_yield$this$
|
|
1038
|
-
dbGet = _yield$this$
|
|
1037
|
+
_yield$this$client8 = _context19.sent;
|
|
1038
|
+
dbGet = _yield$this$client8.dbGet;
|
|
1039
1039
|
return _context19.abrupt("return", dbGet.res);
|
|
1040
1040
|
|
|
1041
1041
|
case 6:
|
|
@@ -1055,7 +1055,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1055
1055
|
|
|
1056
1056
|
_proto.dbSet = /*#__PURE__*/function () {
|
|
1057
1057
|
var _dbSet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20(_ref7) {
|
|
1058
|
-
var value, userId, _yield$this$
|
|
1058
|
+
var value, userId, _yield$this$client9, dbSet;
|
|
1059
1059
|
|
|
1060
1060
|
return _regeneratorRuntime.wrap(function _callee20$(_context20) {
|
|
1061
1061
|
while (1) {
|
|
@@ -1072,7 +1072,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1072
1072
|
|
|
1073
1073
|
case 3:
|
|
1074
1074
|
_context20.next = 5;
|
|
1075
|
-
return this.client
|
|
1075
|
+
return this.client("mutation")({
|
|
1076
1076
|
dbSet: [{
|
|
1077
1077
|
userId: userId,
|
|
1078
1078
|
value: serialize(value).toString("base64")
|
|
@@ -1080,8 +1080,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1080
1080
|
});
|
|
1081
1081
|
|
|
1082
1082
|
case 5:
|
|
1083
|
-
_yield$this$
|
|
1084
|
-
dbSet = _yield$this$
|
|
1083
|
+
_yield$this$client9 = _context20.sent;
|
|
1084
|
+
dbSet = _yield$this$client9.dbSet;
|
|
1085
1085
|
return _context20.abrupt("return", dbSet.res);
|
|
1086
1086
|
|
|
1087
1087
|
case 8:
|
|
@@ -1101,7 +1101,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1101
1101
|
|
|
1102
1102
|
_proto.dbSearch = /*#__PURE__*/function () {
|
|
1103
1103
|
var _dbSearch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(_ref8) {
|
|
1104
|
-
var search, field, _yield$this$
|
|
1104
|
+
var search, field, _yield$this$client10, dbSearch;
|
|
1105
1105
|
|
|
1106
1106
|
return _regeneratorRuntime.wrap(function _callee21$(_context21) {
|
|
1107
1107
|
while (1) {
|
|
@@ -1109,7 +1109,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1109
1109
|
case 0:
|
|
1110
1110
|
search = _ref8.search, field = _ref8.field;
|
|
1111
1111
|
_context21.next = 3;
|
|
1112
|
-
return this.client
|
|
1112
|
+
return this.client("query")({
|
|
1113
1113
|
dbSearch: [{
|
|
1114
1114
|
search: search,
|
|
1115
1115
|
field: field
|
|
@@ -1117,8 +1117,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1117
1117
|
});
|
|
1118
1118
|
|
|
1119
1119
|
case 3:
|
|
1120
|
-
_yield$this$
|
|
1121
|
-
dbSearch = _yield$this$
|
|
1120
|
+
_yield$this$client10 = _context21.sent;
|
|
1121
|
+
dbSearch = _yield$this$client10.dbSearch;
|
|
1122
1122
|
return _context21.abrupt("return", dbSearch);
|
|
1123
1123
|
|
|
1124
1124
|
case 6:
|
|
@@ -1138,7 +1138,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1138
1138
|
|
|
1139
1139
|
_proto.deleteFolder = /*#__PURE__*/function () {
|
|
1140
1140
|
var _deleteFolder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(_ref9) {
|
|
1141
|
-
var id, _yield$this$
|
|
1141
|
+
var id, _yield$this$client11, deleteFolder;
|
|
1142
1142
|
|
|
1143
1143
|
return _regeneratorRuntime.wrap(function _callee22$(_context22) {
|
|
1144
1144
|
while (1) {
|
|
@@ -1146,15 +1146,15 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1146
1146
|
case 0:
|
|
1147
1147
|
id = _ref9.id;
|
|
1148
1148
|
_context22.next = 3;
|
|
1149
|
-
return this.client
|
|
1149
|
+
return this.client("mutation")({
|
|
1150
1150
|
deleteFolder: [{
|
|
1151
1151
|
id: id
|
|
1152
1152
|
}, true]
|
|
1153
1153
|
});
|
|
1154
1154
|
|
|
1155
1155
|
case 3:
|
|
1156
|
-
_yield$this$
|
|
1157
|
-
deleteFolder = _yield$this$
|
|
1156
|
+
_yield$this$client11 = _context22.sent;
|
|
1157
|
+
deleteFolder = _yield$this$client11.deleteFolder;
|
|
1158
1158
|
return _context22.abrupt("return", deleteFolder != null ? deleteFolder : false);
|
|
1159
1159
|
|
|
1160
1160
|
case 6:
|
|
@@ -1174,7 +1174,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1174
1174
|
|
|
1175
1175
|
_proto.moveFolders = /*#__PURE__*/function () {
|
|
1176
1176
|
var _moveFolders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(_ref10) {
|
|
1177
|
-
var foldersId, parentFolderId, _yield$this$
|
|
1177
|
+
var foldersId, parentFolderId, _yield$this$client12, moveFolders;
|
|
1178
1178
|
|
|
1179
1179
|
return _regeneratorRuntime.wrap(function _callee23$(_context23) {
|
|
1180
1180
|
while (1) {
|
|
@@ -1182,7 +1182,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1182
1182
|
case 0:
|
|
1183
1183
|
foldersId = _ref10.foldersId, parentFolderId = _ref10.parentFolderId;
|
|
1184
1184
|
_context23.next = 3;
|
|
1185
|
-
return this.client
|
|
1185
|
+
return this.client("mutation")({
|
|
1186
1186
|
moveFolders: [{
|
|
1187
1187
|
foldersId: foldersId,
|
|
1188
1188
|
parentFolderId: parentFolderId
|
|
@@ -1190,8 +1190,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1190
1190
|
});
|
|
1191
1191
|
|
|
1192
1192
|
case 3:
|
|
1193
|
-
_yield$this$
|
|
1194
|
-
moveFolders = _yield$this$
|
|
1193
|
+
_yield$this$client12 = _context23.sent;
|
|
1194
|
+
moveFolders = _yield$this$client12.moveFolders;
|
|
1195
1195
|
return _context23.abrupt("return", moveFolders != null ? moveFolders : false);
|
|
1196
1196
|
|
|
1197
1197
|
case 6:
|
|
@@ -1211,7 +1211,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1211
1211
|
|
|
1212
1212
|
_proto.moveFiles = /*#__PURE__*/function () {
|
|
1213
1213
|
var _moveFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(_ref11) {
|
|
1214
|
-
var filesId, parentFolderId, _yield$this$
|
|
1214
|
+
var filesId, parentFolderId, _yield$this$client13, moveFiles;
|
|
1215
1215
|
|
|
1216
1216
|
return _regeneratorRuntime.wrap(function _callee24$(_context24) {
|
|
1217
1217
|
while (1) {
|
|
@@ -1219,7 +1219,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1219
1219
|
case 0:
|
|
1220
1220
|
filesId = _ref11.filesId, parentFolderId = _ref11.parentFolderId;
|
|
1221
1221
|
_context24.next = 3;
|
|
1222
|
-
return this.client
|
|
1222
|
+
return this.client("mutation")({
|
|
1223
1223
|
moveFiles: [{
|
|
1224
1224
|
filesId: filesId,
|
|
1225
1225
|
parentFolderId: parentFolderId
|
|
@@ -1227,8 +1227,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1227
1227
|
});
|
|
1228
1228
|
|
|
1229
1229
|
case 3:
|
|
1230
|
-
_yield$this$
|
|
1231
|
-
moveFiles = _yield$this$
|
|
1230
|
+
_yield$this$client13 = _context24.sent;
|
|
1231
|
+
moveFiles = _yield$this$client13.moveFiles;
|
|
1232
1232
|
return _context24.abrupt("return", moveFiles != null ? moveFiles : false);
|
|
1233
1233
|
|
|
1234
1234
|
case 6:
|
|
@@ -1248,7 +1248,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1248
1248
|
|
|
1249
1249
|
_proto.folderSize = /*#__PURE__*/function () {
|
|
1250
1250
|
var _folderSize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25(_ref12) {
|
|
1251
|
-
var folderId, _yield$this$
|
|
1251
|
+
var folderId, _yield$this$client14, folderSize;
|
|
1252
1252
|
|
|
1253
1253
|
return _regeneratorRuntime.wrap(function _callee25$(_context25) {
|
|
1254
1254
|
while (1) {
|
|
@@ -1256,7 +1256,7 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1256
1256
|
case 0:
|
|
1257
1257
|
folderId = _ref12.folderId;
|
|
1258
1258
|
_context25.next = 3;
|
|
1259
|
-
return this.client
|
|
1259
|
+
return this.client("query")({
|
|
1260
1260
|
folderSize: [{
|
|
1261
1261
|
folderId: folderId
|
|
1262
1262
|
}, {
|
|
@@ -1266,8 +1266,8 @@ export var BaseClient = /*#__PURE__*/function () {
|
|
|
1266
1266
|
});
|
|
1267
1267
|
|
|
1268
1268
|
case 3:
|
|
1269
|
-
_yield$this$
|
|
1270
|
-
folderSize = _yield$this$
|
|
1269
|
+
_yield$this$client14 = _context25.sent;
|
|
1270
|
+
folderSize = _yield$this$client14.folderSize;
|
|
1271
1271
|
|
|
1272
1272
|
if (folderSize) {
|
|
1273
1273
|
_context25.next = 7;
|
|
@@ -1373,4 +1373,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
|
|
|
1373
1373
|
BaseClient._getBaseClient = function (env, session) {
|
|
1374
1374
|
return createThunder(BaseClient.getBaseUrl(env), session);
|
|
1375
1375
|
};
|
|
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=
|
|
1376
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm1lIiwic2V0IiwidXBkYXRlUHJvZmlsZSIsIkVycm9yIiwicGxhbnMiLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwicGxhbiIsInRvdGFsIiwicGRmIiwiY3VycmVuY3kiLCJjbG91ZCIsInNpemUiLCJtYXhTaXplIiwibWF4Q291bnQiLCJtYWlsIiwicmVjZWl2ZWQiLCJtYXhGaWxlQ291bnQiLCJtYXhGaWxlU2l6ZSIsInNlbnQiLCJCaWdJbnQiLCJnb2RGYXRoZXJBbmRDaGlsZHJlbiIsImdvZENoaWxkcmVuIiwiZ29kRmF0aGVyIiwidXBkYXRlQXBwREJDb25maWciLCJhcHBDb2RlIiwiY29uZmlnIiwiZGJDb25maWciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXBwREJDb25maWciLCJnZXRGQVEiLCJmYXEiLCJhbnN3ZXIiLCJvcmRlciIsInF1ZXN0aW9uIiwiZ2V0QmxvZyIsImJsb2ciLCJibG9nSWQiLCJhdXRob3IiLCJib2R5IiwiaW1hZ2UiLCJpbWFnZUFsdCIsInN1bW1hcnkiLCJ0aXRsZSIsImIiLCJyZXBvcnRVc2VyIiwicmVwb3J0ZWRVc2VySWQiLCJjdXN0b21NZXNzYWdlIiwic2VuZFJlcG9ydCIsInJlcG9ydGVkVXNlciIsImRlbGV0ZVVzZXIiLCJkYkdldCIsImZpZWxkIiwicmVzIiwiZGJTZXQiLCJ2YWx1ZSIsInRvU3RyaW5nIiwiZGJTZWFyY2giLCJzZWFyY2giLCJkZWxldGVGb2xkZXIiLCJtb3ZlRm9sZGVycyIsImZvbGRlcnNJZCIsInBhcmVudEZvbGRlcklkIiwibW92ZUZpbGVzIiwiZmlsZXNJZCIsImZvbGRlclNpemUiLCJmb2xkZXJJZCIsInNpemVCZWZvcmUiLCJnZXRTcG9uc29yc2hpcExpbmsiLCJiYWNrVXJsIiwicGF0aCIsImJ0b2EiLCJnZXRCYXNlVXJsIiwiZ3JhcGhjZG4iLCJwcm9jZXNzIiwiTk9ERV9FTlYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUF5S0EsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FFUCxJQVZhO0FBV2pCQyxNQUFBQSxTQUFTLEVBQUVQLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQXRCLEdBQ1AsSUFBSUYsSUFBSixDQUFTTCxDQUFDLENB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QUFSLENBQVl1SCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRdkgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9xSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxnQ0FGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHdDQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxvQ0FBUDtBQVRKO0FBV0QsQzs7QUFwQlV2SCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Qy9DLGFBQWEsQ0FBQzhDLFVBQVUsQ0FBQ3NILFVBQVgsQ0FBc0JwSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgZ2V0TGluayB9IGZyb20gXCJAc2VjcmVjeS9saWItdXRpbHNcIjtcbmltcG9ydCB7IHVzZXJzQ2FjaGUgfSBmcm9tIFwiLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyU2Vzc2lvbiB9IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5RW52IH0gZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiLi9jbGllbnQvc3RvcmFnZS5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBMYW5nLFxuICBQYXlJbnB1dFR5cGUsXG4gIFBsYW5LaW5kLFxuICBUaHVuZGVyLFxuICBVc2VyUm9sZVxufSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0cnVlLFxuICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICBwdWJsaWNLZXk6IHdpdGhQdWJsaWNLZXkgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8VXNlcjxVPiB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHBhcmFtcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgIGxvZ291dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWU8VCBleHRlbmRzIFdpdGhQdWJsaWNLZXkgPSBXaXRoUHVibGljS2V5PihcbiAgICBwYXJhbXM/OiBUXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyKHBhcmFtcyB8fCAoeyB3aXRoUHVibGljS2V5OiB0cnVlIH0gYXMgVCkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVzZXI8VCBleHRlbmRzIFN0YXRpY0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVCxcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuX2dldEJhc2VDbGllbnQocGFyYW1zLmVudiwgc2Vzc2lvbklkKSxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5pZCwgdXNlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KHBhcmFtczogVCk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByb2ZpbGUoe1xuICAgIGZpcnN0bmFtZSxcbiAgICBsYXN0bmFtZSxcbiAgICBsYW5nXG4gIH06IHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFuZzogTGFuZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgIGNvZGVzOiB0cnVlLFxuICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICBkb3dubG9hZENvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHVwbG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICByZWNlaXZlZE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZW50TWFpbHM6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwbGFucztcbiAgfVxuXG4gIGFzeW5jIHBheShcbiAgICBwbGFuQ29kZTogU2VjcmVjeVBsYW5zQ29kZXMsXG4gICAgaW5wdXQ6IFBheUlucHV0LFxuICAgIGF1dG9SZW5ldz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcGF5IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgaG9zdGVkVXJsOiB0cnVlLFxuICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgIGFjdGl2YXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxlZEF0OiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgcGF1c2VkQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlZEF0OiB0cnVlLFxuICAgICAgICAgIHN0YXRlOiB0cnVlLFxuICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgcGxhbjogdHJ1ZSxcbiAgICAgICAgICBwbGFuQ29kZTogdHJ1ZSxcblxuICAgICAgICAgIHRvdGFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgcGRmOiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgIHN0YXR1czogdHJ1ZSxcbiAgICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgIGN1cnJlbmN5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghcGF5bWVudEluZm9zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJuYWxUb1BheW1lbnRJbmZvcyhwYXltZW50SW5mb3MpO1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8UXVlcnlMaW1pdHMgfCBudWxsPiB7XG4gICAgY29uc3QgeyBsaW1pdHMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgbGltaXRzOiB7XG4gICAgICAgIGNsb3VkOiB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgIG1heENvdW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1haWw6IHtcbiAgICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWxpbWl0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjbG91ZCwgbWFpbCB9ID0gbGltaXRzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3VkOiB7XG4gICAgICAgIGNvdW50OiBCaWdJbnQoY2xvdWQuY291bnQpLFxuICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgIG1heENvdW50OiBjbG91ZC5tYXhDb3VudCA/IEJpZ0ludChjbG91ZC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBjbG91ZC5tYXhTaXplID8gQmlnSW50KGNsb3VkLm1heFNpemUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG1haWw6IHtcbiAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgIG1heENvdW50OiBtYWlsLnJlY2VpdmVkLm1heENvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heENvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwuc2VudC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlQ291bnQ6IEJpZ0ludChtYWlsLnNlbnQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwuc2VudC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnNlbnQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlU2l6ZSlcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdvZEZhdGhlckFuZENoaWxkcmVuKCk6IFByb21pc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4gfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlLFxuICAgICAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJDb25maWc7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXBwREJDb25maWcoXG4gICAgYXBwQ29kZTogc3RyaW5nLFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcInF1ZXJ5XCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGQVEoe1xuICAgIGxhbmcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgbGFuZz86IExhbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZhcUl0ZW1bXT4ge1xuICAgIGNvbnN0IHsgZmFxIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpKFwicXVlcnlcIikoe1xuICAgICAgYmxvZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgYmxvZ0lkOiB0cnVlLFxuICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgaW1hZ2VBbHQ6IHRydWUsXG4gICAgICAgICAgc3VtbWFyeTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmxvZy5tYXAoYiA9PiAoeyAuLi5iLCBkYXRlOiBuZXcgRGF0ZShiLmRhdGUpIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8U2VuZFJlcG9ydCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgc2VuZFJlcG9ydCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJHZXQucmVzO1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGRiU2VhcmNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkZWxldGVGb2xkZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWxldGVGb2xkZXIgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRm9sZGVycyh7XG4gICAgZm9sZGVyc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZvbGRlcnMgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRmlsZXMoe1xuICAgIGZpbGVzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZpbGVzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZm9sZGVyU2l6ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgc2l6ZUJlZm9yZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaXplOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplKSxcbiAgICAgIHNpemVCZWZvcmU6IEJpZ0ludChmb2xkZXJTaXplLnNpemVCZWZvcmUpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldFNwb25zb3JzaGlwTGluayh7XG4gICAgYmFja1VybFxuICB9OiB7XG4gICAgYmFja1VybDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbWUgPSBhd2FpdCB0aGlzLm1lKHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfSk7XG5cbiAgICBpZiAoIW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TGluayh7XG4gICAgICBhcHA6IFwiYXV0aFwiLFxuICAgICAgcGF0aDogYC9zaWduLXVwP2dmPSR7YnRvYShtZS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|