react-intl 5.4.1 → 5.4.5
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 -1
- package/_validate_dist-esm_options.optionsvalid.d.ts +1 -1
- package/_validate_dist_options.optionsvalid.d.ts +1 -1
- package/lib/src/components/message.d.ts +1 -1
- package/lib/src/components/message.d.ts.map +1 -1
- package/lib/src/formatters/list.d.ts.map +1 -1
- package/lib/src/formatters/message.d.ts.map +1 -1
- package/lib/src/formatters/message.js +12 -4
- package/lib/src/types.d.ts +1 -1
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +116 -9
- package/package.json +5 -5
- package/react-intl.umd.js +366 -95
- package/react-intl.umd.min.js +2 -2
- package/src/components/message.d.ts +1 -1
- package/src/components/message.d.ts.map +1 -1
- package/src/formatters/list.d.ts.map +1 -1
- package/src/formatters/message.d.ts.map +1 -1
- package/src/formatters/message.js +12 -4
- package/src/types.d.ts +1 -1
- package/src/types.d.ts.map +1 -1
- package/src/utils.d.ts.map +1 -1
- package/src/utils.js +115 -8
package/react-intl.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
|
|
4
|
-
(global = global || self, factory(global.
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactIntl = {}, global.React));
|
|
5
5
|
}(this, (function (exports, React) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -3621,55 +3621,157 @@
|
|
|
3621
3621
|
exports.parse = parse;
|
|
3622
3622
|
});
|
|
3623
3623
|
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3624
|
+
//
|
|
3625
|
+
// Main
|
|
3626
|
+
//
|
|
3627
|
+
|
|
3628
|
+
function memoize (fn, options) {
|
|
3629
|
+
var cache = options && options.cache
|
|
3630
|
+
? options.cache
|
|
3631
|
+
: cacheDefault;
|
|
3632
|
+
|
|
3633
|
+
var serializer = options && options.serializer
|
|
3634
|
+
? options.serializer
|
|
3635
|
+
: serializerDefault;
|
|
3636
|
+
|
|
3637
|
+
var strategy = options && options.strategy
|
|
3638
|
+
? options.strategy
|
|
3639
|
+
: strategyDefault;
|
|
3640
|
+
|
|
3641
|
+
return strategy(fn, {
|
|
3642
|
+
cache: cache,
|
|
3643
|
+
serializer: serializer
|
|
3644
|
+
})
|
|
3643
3645
|
}
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3646
|
+
|
|
3647
|
+
//
|
|
3648
|
+
// Strategy
|
|
3649
|
+
//
|
|
3650
|
+
|
|
3651
|
+
function isPrimitive (value) {
|
|
3652
|
+
return value == null || typeof value === 'number' || typeof value === 'boolean' // || typeof value === "string" 'unsafe' primitive for our needs
|
|
3651
3653
|
}
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
3654
|
+
|
|
3655
|
+
function monadic (fn, cache, serializer, arg) {
|
|
3656
|
+
var cacheKey = isPrimitive(arg) ? arg : serializer(arg);
|
|
3657
|
+
|
|
3658
|
+
var computedValue = cache.get(cacheKey);
|
|
3659
|
+
if (typeof computedValue === 'undefined') {
|
|
3660
|
+
computedValue = fn.call(this, arg);
|
|
3661
|
+
cache.set(cacheKey, computedValue);
|
|
3662
|
+
}
|
|
3663
|
+
|
|
3664
|
+
return computedValue
|
|
3665
|
+
}
|
|
3666
|
+
|
|
3667
|
+
function variadic (fn, cache, serializer) {
|
|
3668
|
+
var args = Array.prototype.slice.call(arguments, 3);
|
|
3669
|
+
var cacheKey = serializer(args);
|
|
3670
|
+
|
|
3671
|
+
var computedValue = cache.get(cacheKey);
|
|
3672
|
+
if (typeof computedValue === 'undefined') {
|
|
3673
|
+
computedValue = fn.apply(this, args);
|
|
3674
|
+
cache.set(cacheKey, computedValue);
|
|
3675
|
+
}
|
|
3676
|
+
|
|
3677
|
+
return computedValue
|
|
3678
|
+
}
|
|
3679
|
+
|
|
3680
|
+
function assemble (fn, context, strategy, cache, serialize) {
|
|
3681
|
+
return strategy.bind(
|
|
3682
|
+
context,
|
|
3683
|
+
fn,
|
|
3684
|
+
cache,
|
|
3685
|
+
serialize
|
|
3686
|
+
)
|
|
3687
|
+
}
|
|
3688
|
+
|
|
3689
|
+
function strategyDefault (fn, options) {
|
|
3690
|
+
var strategy = fn.length === 1 ? monadic : variadic;
|
|
3691
|
+
|
|
3692
|
+
return assemble(
|
|
3693
|
+
fn,
|
|
3694
|
+
this,
|
|
3695
|
+
strategy,
|
|
3696
|
+
options.cache.create(),
|
|
3697
|
+
options.serializer
|
|
3698
|
+
)
|
|
3699
|
+
}
|
|
3700
|
+
|
|
3701
|
+
function strategyVariadic (fn, options) {
|
|
3702
|
+
var strategy = variadic;
|
|
3703
|
+
|
|
3704
|
+
return assemble(
|
|
3705
|
+
fn,
|
|
3706
|
+
this,
|
|
3707
|
+
strategy,
|
|
3708
|
+
options.cache.create(),
|
|
3709
|
+
options.serializer
|
|
3710
|
+
)
|
|
3711
|
+
}
|
|
3712
|
+
|
|
3713
|
+
function strategyMonadic (fn, options) {
|
|
3714
|
+
var strategy = monadic;
|
|
3715
|
+
|
|
3716
|
+
return assemble(
|
|
3717
|
+
fn,
|
|
3718
|
+
this,
|
|
3719
|
+
strategy,
|
|
3720
|
+
options.cache.create(),
|
|
3721
|
+
options.serializer
|
|
3722
|
+
)
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3725
|
+
//
|
|
3726
|
+
// Serializer
|
|
3727
|
+
//
|
|
3728
|
+
|
|
3729
|
+
function serializerDefault () {
|
|
3730
|
+
return JSON.stringify(arguments)
|
|
3731
|
+
}
|
|
3732
|
+
|
|
3733
|
+
//
|
|
3734
|
+
// Cache
|
|
3735
|
+
//
|
|
3736
|
+
|
|
3737
|
+
function ObjectWithoutPrototypeCache () {
|
|
3738
|
+
this.cache = Object.create(null);
|
|
3739
|
+
}
|
|
3740
|
+
|
|
3741
|
+
ObjectWithoutPrototypeCache.prototype.has = function (key) {
|
|
3742
|
+
return (key in this.cache)
|
|
3670
3743
|
};
|
|
3671
|
-
|
|
3672
|
-
|
|
3744
|
+
|
|
3745
|
+
ObjectWithoutPrototypeCache.prototype.get = function (key) {
|
|
3746
|
+
return this.cache[key]
|
|
3747
|
+
};
|
|
3748
|
+
|
|
3749
|
+
ObjectWithoutPrototypeCache.prototype.set = function (key, value) {
|
|
3750
|
+
this.cache[key] = value;
|
|
3751
|
+
};
|
|
3752
|
+
|
|
3753
|
+
var cacheDefault = {
|
|
3754
|
+
create: function create () {
|
|
3755
|
+
return new ObjectWithoutPrototypeCache()
|
|
3756
|
+
}
|
|
3757
|
+
};
|
|
3758
|
+
|
|
3759
|
+
//
|
|
3760
|
+
// API
|
|
3761
|
+
//
|
|
3762
|
+
|
|
3763
|
+
var src = memoize;
|
|
3764
|
+
var strategies = {
|
|
3765
|
+
variadic: strategyVariadic,
|
|
3766
|
+
monadic: strategyMonadic
|
|
3767
|
+
};
|
|
3768
|
+
src.strategies = strategies;
|
|
3769
|
+
|
|
3770
|
+
var memoize$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.assign(/*#__PURE__*/Object.create(null), src, {
|
|
3771
|
+
'default': src,
|
|
3772
|
+
__moduleExports: src,
|
|
3773
|
+
strategies: strategies
|
|
3774
|
+
}));
|
|
3673
3775
|
|
|
3674
3776
|
var error = createCommonjsModule(function (module, exports) {
|
|
3675
3777
|
var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
|
|
@@ -3930,6 +4032,13 @@
|
|
|
3930
4032
|
};
|
|
3931
4033
|
return __assign.apply(this, arguments);
|
|
3932
4034
|
};
|
|
4035
|
+
var __spreadArrays = (commonjsGlobal && commonjsGlobal.__spreadArrays) || function () {
|
|
4036
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
4037
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
4038
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
4039
|
+
r[k] = a[j];
|
|
4040
|
+
return r;
|
|
4041
|
+
};
|
|
3933
4042
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3934
4043
|
|
|
3935
4044
|
|
|
@@ -3953,6 +4062,26 @@
|
|
|
3953
4062
|
return all;
|
|
3954
4063
|
}, __assign({}, defaultConfig));
|
|
3955
4064
|
}
|
|
4065
|
+
function createFastMemoizeCache(store) {
|
|
4066
|
+
return {
|
|
4067
|
+
create: function () {
|
|
4068
|
+
return {
|
|
4069
|
+
has: function (key) {
|
|
4070
|
+
return key in store;
|
|
4071
|
+
},
|
|
4072
|
+
get: function (key) {
|
|
4073
|
+
return store[key];
|
|
4074
|
+
},
|
|
4075
|
+
set: function (key, value) {
|
|
4076
|
+
store[key] = value;
|
|
4077
|
+
},
|
|
4078
|
+
};
|
|
4079
|
+
},
|
|
4080
|
+
};
|
|
4081
|
+
}
|
|
4082
|
+
// @ts-ignore this is to deal with rollup's default import shenanigans
|
|
4083
|
+
var _memoizeIntl = src.default || src;
|
|
4084
|
+
var memoizeIntl = _memoizeIntl;
|
|
3956
4085
|
function createDefaultFormatters(cache) {
|
|
3957
4086
|
if (cache === void 0) { cache = {
|
|
3958
4087
|
number: {},
|
|
@@ -3960,12 +4089,41 @@
|
|
|
3960
4089
|
pluralRules: {},
|
|
3961
4090
|
}; }
|
|
3962
4091
|
return {
|
|
3963
|
-
getNumberFormat:
|
|
3964
|
-
|
|
3965
|
-
|
|
4092
|
+
getNumberFormat: memoizeIntl(function () {
|
|
4093
|
+
var _a;
|
|
4094
|
+
var args = [];
|
|
4095
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
4096
|
+
args[_i] = arguments[_i];
|
|
4097
|
+
}
|
|
4098
|
+
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
4099
|
+
}, {
|
|
4100
|
+
cache: createFastMemoizeCache(cache.number),
|
|
4101
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
4102
|
+
}),
|
|
4103
|
+
getDateTimeFormat: memoizeIntl(function () {
|
|
4104
|
+
var _a;
|
|
4105
|
+
var args = [];
|
|
4106
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
4107
|
+
args[_i] = arguments[_i];
|
|
4108
|
+
}
|
|
4109
|
+
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
4110
|
+
}, {
|
|
4111
|
+
cache: createFastMemoizeCache(cache.dateTime),
|
|
4112
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
4113
|
+
}),
|
|
4114
|
+
getPluralRules: memoizeIntl(function () {
|
|
4115
|
+
var _a;
|
|
4116
|
+
var args = [];
|
|
4117
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
4118
|
+
args[_i] = arguments[_i];
|
|
4119
|
+
}
|
|
4120
|
+
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
4121
|
+
}, {
|
|
4122
|
+
cache: createFastMemoizeCache(cache.pluralRules),
|
|
4123
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
4124
|
+
}),
|
|
3966
4125
|
};
|
|
3967
4126
|
}
|
|
3968
|
-
exports.createDefaultFormatters = createDefaultFormatters;
|
|
3969
4127
|
var IntlMessageFormat = /** @class */ (function () {
|
|
3970
4128
|
function IntlMessageFormat(message, locales, overrideFormats, opts) {
|
|
3971
4129
|
var _this = this;
|
|
@@ -4103,7 +4261,6 @@
|
|
|
4103
4261
|
return IntlMessageFormat;
|
|
4104
4262
|
}());
|
|
4105
4263
|
exports.IntlMessageFormat = IntlMessageFormat;
|
|
4106
|
-
exports.default = IntlMessageFormat;
|
|
4107
4264
|
});
|
|
4108
4265
|
|
|
4109
4266
|
var intlMessageformat = createCommonjsModule(function (module, exports) {
|
|
@@ -4120,7 +4277,7 @@
|
|
|
4120
4277
|
__export(formatters);
|
|
4121
4278
|
__export(core);
|
|
4122
4279
|
__export(error);
|
|
4123
|
-
exports.default = core.
|
|
4280
|
+
exports.default = core.IntlMessageFormat;
|
|
4124
4281
|
});
|
|
4125
4282
|
|
|
4126
4283
|
var diff = createCommonjsModule(function (module, exports) {
|
|
@@ -5135,6 +5292,24 @@
|
|
|
5135
5292
|
This source code is licensed under the BSD-style license found in the LICENSE
|
|
5136
5293
|
file in the root directory of React's source tree.
|
|
5137
5294
|
*/
|
|
5295
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
5296
|
+
__assign = Object.assign || function(t) {
|
|
5297
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5298
|
+
s = arguments[i];
|
|
5299
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
5300
|
+
t[p] = s[p];
|
|
5301
|
+
}
|
|
5302
|
+
return t;
|
|
5303
|
+
};
|
|
5304
|
+
return __assign.apply(this, arguments);
|
|
5305
|
+
};
|
|
5306
|
+
var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
|
|
5307
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
5308
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
5309
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
5310
|
+
r[k] = a[j];
|
|
5311
|
+
return r;
|
|
5312
|
+
};
|
|
5138
5313
|
function filterProps(props, whitelist, defaults) {
|
|
5139
5314
|
if (defaults === void 0) { defaults = {}; }
|
|
5140
5315
|
return whitelist.reduce(function (filtered, name) {
|
|
@@ -5173,6 +5348,26 @@
|
|
|
5173
5348
|
displayNames: {},
|
|
5174
5349
|
};
|
|
5175
5350
|
}
|
|
5351
|
+
function createFastMemoizeCache(store) {
|
|
5352
|
+
return {
|
|
5353
|
+
create: function () {
|
|
5354
|
+
return {
|
|
5355
|
+
has: function (key) {
|
|
5356
|
+
return key in store;
|
|
5357
|
+
},
|
|
5358
|
+
get: function (key) {
|
|
5359
|
+
return store[key];
|
|
5360
|
+
},
|
|
5361
|
+
set: function (key, value) {
|
|
5362
|
+
store[key] = value;
|
|
5363
|
+
},
|
|
5364
|
+
};
|
|
5365
|
+
},
|
|
5366
|
+
};
|
|
5367
|
+
}
|
|
5368
|
+
// @ts-ignore this is to deal with rollup's default import shenanigans
|
|
5369
|
+
var _memoizeIntl = src || memoize$1;
|
|
5370
|
+
var memoizeIntl = _memoizeIntl;
|
|
5176
5371
|
/**
|
|
5177
5372
|
* Create intl formatters and populate cache
|
|
5178
5373
|
* @param cache explicit cache to prevent leaking memory
|
|
@@ -5182,14 +5377,83 @@
|
|
|
5182
5377
|
var RelativeTimeFormat = Intl.RelativeTimeFormat;
|
|
5183
5378
|
var ListFormat = Intl.ListFormat;
|
|
5184
5379
|
var DisplayNames = Intl.DisplayNames;
|
|
5380
|
+
var getDateTimeFormat = memoizeIntl(function () {
|
|
5381
|
+
var _a;
|
|
5382
|
+
var args = [];
|
|
5383
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5384
|
+
args[_i] = arguments[_i];
|
|
5385
|
+
}
|
|
5386
|
+
return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
5387
|
+
}, {
|
|
5388
|
+
cache: createFastMemoizeCache(cache.dateTime),
|
|
5389
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5390
|
+
});
|
|
5391
|
+
var getNumberFormat = memoizeIntl(function () {
|
|
5392
|
+
var _a;
|
|
5393
|
+
var args = [];
|
|
5394
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5395
|
+
args[_i] = arguments[_i];
|
|
5396
|
+
}
|
|
5397
|
+
return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
5398
|
+
}, {
|
|
5399
|
+
cache: createFastMemoizeCache(cache.number),
|
|
5400
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5401
|
+
});
|
|
5402
|
+
var getPluralRules = memoizeIntl(function () {
|
|
5403
|
+
var _a;
|
|
5404
|
+
var args = [];
|
|
5405
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5406
|
+
args[_i] = arguments[_i];
|
|
5407
|
+
}
|
|
5408
|
+
return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArrays([void 0], args)))();
|
|
5409
|
+
}, {
|
|
5410
|
+
cache: createFastMemoizeCache(cache.pluralRules),
|
|
5411
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5412
|
+
});
|
|
5185
5413
|
return {
|
|
5186
|
-
getDateTimeFormat:
|
|
5187
|
-
getNumberFormat:
|
|
5188
|
-
getMessageFormat:
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5414
|
+
getDateTimeFormat: getDateTimeFormat,
|
|
5415
|
+
getNumberFormat: getNumberFormat,
|
|
5416
|
+
getMessageFormat: memoizeIntl(function (message, locales, overrideFormats, opts) {
|
|
5417
|
+
return new intlMessageformat.IntlMessageFormat(message, locales, overrideFormats, __assign({ formatters: {
|
|
5418
|
+
getNumberFormat: getNumberFormat,
|
|
5419
|
+
getDateTimeFormat: getDateTimeFormat,
|
|
5420
|
+
getPluralRules: getPluralRules,
|
|
5421
|
+
} }, (opts || {})));
|
|
5422
|
+
}, {
|
|
5423
|
+
cache: createFastMemoizeCache(cache.message),
|
|
5424
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5425
|
+
}),
|
|
5426
|
+
getRelativeTimeFormat: memoizeIntl(function () {
|
|
5427
|
+
var args = [];
|
|
5428
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5429
|
+
args[_i] = arguments[_i];
|
|
5430
|
+
}
|
|
5431
|
+
return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArrays([void 0], args)))();
|
|
5432
|
+
}, {
|
|
5433
|
+
cache: createFastMemoizeCache(cache.relativeTime),
|
|
5434
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5435
|
+
}),
|
|
5436
|
+
getPluralRules: getPluralRules,
|
|
5437
|
+
getListFormat: memoizeIntl(function () {
|
|
5438
|
+
var args = [];
|
|
5439
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5440
|
+
args[_i] = arguments[_i];
|
|
5441
|
+
}
|
|
5442
|
+
return new (ListFormat.bind.apply(ListFormat, __spreadArrays([void 0], args)))();
|
|
5443
|
+
}, {
|
|
5444
|
+
cache: createFastMemoizeCache(cache.list),
|
|
5445
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5446
|
+
}),
|
|
5447
|
+
getDisplayNames: memoizeIntl(function () {
|
|
5448
|
+
var args = [];
|
|
5449
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
5450
|
+
args[_i] = arguments[_i];
|
|
5451
|
+
}
|
|
5452
|
+
return new (DisplayNames.bind.apply(DisplayNames, __spreadArrays([void 0], args)))();
|
|
5453
|
+
}, {
|
|
5454
|
+
cache: createFastMemoizeCache(cache.displayNames),
|
|
5455
|
+
strategy: memoizeIntl.strategies.variadic,
|
|
5456
|
+
}),
|
|
5193
5457
|
};
|
|
5194
5458
|
}
|
|
5195
5459
|
function getNamedFormat(formats, type, name, onError) {
|
|
@@ -5374,8 +5638,8 @@
|
|
|
5374
5638
|
__moduleExports: hoistNonReactStatics_cjs
|
|
5375
5639
|
}));
|
|
5376
5640
|
|
|
5377
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
5378
|
-
__assign = Object.assign || function(t) {
|
|
5641
|
+
var __assign$1 = (undefined && undefined.__assign) || function () {
|
|
5642
|
+
__assign$1 = Object.assign || function(t) {
|
|
5379
5643
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5380
5644
|
s = arguments[i];
|
|
5381
5645
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -5383,7 +5647,7 @@
|
|
|
5383
5647
|
}
|
|
5384
5648
|
return t;
|
|
5385
5649
|
};
|
|
5386
|
-
return __assign.apply(this, arguments);
|
|
5650
|
+
return __assign$1.apply(this, arguments);
|
|
5387
5651
|
};
|
|
5388
5652
|
// Since rollup cannot deal with namespace being a function,
|
|
5389
5653
|
// this is to interop with TypeScript since `invariant`
|
|
@@ -5406,12 +5670,12 @@
|
|
|
5406
5670
|
invariantIntlContext(intl);
|
|
5407
5671
|
}
|
|
5408
5672
|
var intlProp = (_a = {}, _a[intlPropName] = intl, _a);
|
|
5409
|
-
return (React.createElement(WrappedComponent, __assign({}, props, intlProp, { ref: forwardRef ? props.forwardedRef : null })));
|
|
5673
|
+
return (React.createElement(WrappedComponent, __assign$1({}, props, intlProp, { ref: forwardRef ? props.forwardedRef : null })));
|
|
5410
5674
|
})); };
|
|
5411
5675
|
WithIntl.displayName = "injectIntl(" + getDisplayName(WrappedComponent) + ")";
|
|
5412
5676
|
WithIntl.WrappedComponent = WrappedComponent;
|
|
5413
5677
|
if (forwardRef) {
|
|
5414
|
-
return hoistNonReactStatics$1(React.forwardRef(function (props, ref) { return (React.createElement(WithIntl, __assign({}, props, { forwardedRef: ref }))); }), WrappedComponent);
|
|
5678
|
+
return hoistNonReactStatics$1(React.forwardRef(function (props, ref) { return (React.createElement(WithIntl, __assign$1({}, props, { forwardedRef: ref }))); }), WrappedComponent);
|
|
5415
5679
|
}
|
|
5416
5680
|
return hoistNonReactStatics$1(WithIntl, WrappedComponent);
|
|
5417
5681
|
}
|
|
@@ -5570,8 +5834,8 @@
|
|
|
5570
5834
|
* Copyrights licensed under the New BSD License.
|
|
5571
5835
|
* See the accompanying LICENSE file for terms.
|
|
5572
5836
|
*/
|
|
5573
|
-
var __assign$
|
|
5574
|
-
__assign$
|
|
5837
|
+
var __assign$2 = (undefined && undefined.__assign) || function () {
|
|
5838
|
+
__assign$2 = Object.assign || function(t) {
|
|
5575
5839
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5576
5840
|
s = arguments[i];
|
|
5577
5841
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -5579,7 +5843,7 @@
|
|
|
5579
5843
|
}
|
|
5580
5844
|
return t;
|
|
5581
5845
|
};
|
|
5582
|
-
return __assign$
|
|
5846
|
+
return __assign$2.apply(this, arguments);
|
|
5583
5847
|
};
|
|
5584
5848
|
var DATE_TIME_FORMAT_OPTIONS = [
|
|
5585
5849
|
'localeMatcher',
|
|
@@ -5607,14 +5871,14 @@
|
|
|
5607
5871
|
var locale = _a.locale, formats = _a.formats, onError = _a.onError, timeZone = _a.timeZone;
|
|
5608
5872
|
if (options === void 0) { options = {}; }
|
|
5609
5873
|
var format = options.format;
|
|
5610
|
-
var defaults = __assign$
|
|
5874
|
+
var defaults = __assign$2(__assign$2({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));
|
|
5611
5875
|
var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);
|
|
5612
5876
|
if (type === 'time' &&
|
|
5613
5877
|
!filteredOptions.hour &&
|
|
5614
5878
|
!filteredOptions.minute &&
|
|
5615
5879
|
!filteredOptions.second) {
|
|
5616
5880
|
// Add default formatting options if hour, minute, or second isn't defined.
|
|
5617
|
-
filteredOptions = __assign$
|
|
5881
|
+
filteredOptions = __assign$2(__assign$2({}, filteredOptions), { hour: 'numeric', minute: 'numeric' });
|
|
5618
5882
|
}
|
|
5619
5883
|
return getDateTimeFormat(locale, filteredOptions);
|
|
5620
5884
|
}
|
|
@@ -5688,8 +5952,8 @@
|
|
|
5688
5952
|
* Copyrights licensed under the New BSD License.
|
|
5689
5953
|
* See the accompanying LICENSE file for terms.
|
|
5690
5954
|
*/
|
|
5691
|
-
var __assign$
|
|
5692
|
-
__assign$
|
|
5955
|
+
var __assign$3 = (undefined && undefined.__assign) || function () {
|
|
5956
|
+
__assign$3 = Object.assign || function(t) {
|
|
5693
5957
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5694
5958
|
s = arguments[i];
|
|
5695
5959
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -5697,9 +5961,9 @@
|
|
|
5697
5961
|
}
|
|
5698
5962
|
return t;
|
|
5699
5963
|
};
|
|
5700
|
-
return __assign$
|
|
5964
|
+
return __assign$3.apply(this, arguments);
|
|
5701
5965
|
};
|
|
5702
|
-
var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
|
|
5966
|
+
var __spreadArrays$1 = (undefined && undefined.__spreadArrays) || function () {
|
|
5703
5967
|
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
5704
5968
|
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
5705
5969
|
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
@@ -5708,14 +5972,14 @@
|
|
|
5708
5972
|
};
|
|
5709
5973
|
function setTimeZoneInOptions(opts, timeZone) {
|
|
5710
5974
|
return Object.keys(opts).reduce(function (all, k) {
|
|
5711
|
-
all[k] = __assign$
|
|
5975
|
+
all[k] = __assign$3({ timeZone: timeZone }, opts[k]);
|
|
5712
5976
|
return all;
|
|
5713
5977
|
}, {});
|
|
5714
5978
|
}
|
|
5715
5979
|
function deepMergeOptions(opts1, opts2) {
|
|
5716
|
-
var keys = Object.keys(__assign$
|
|
5980
|
+
var keys = Object.keys(__assign$3(__assign$3({}, opts1), opts2));
|
|
5717
5981
|
return keys.reduce(function (all, k) {
|
|
5718
|
-
all[k] = __assign$
|
|
5982
|
+
all[k] = __assign$3(__assign$3({}, (opts1[k] || {})), (opts2[k] || {}));
|
|
5719
5983
|
return all;
|
|
5720
5984
|
}, {});
|
|
5721
5985
|
}
|
|
@@ -5723,8 +5987,8 @@
|
|
|
5723
5987
|
if (!timeZone) {
|
|
5724
5988
|
return f1;
|
|
5725
5989
|
}
|
|
5726
|
-
var mfFormats = intlMessageformat.formats;
|
|
5727
|
-
return __assign$
|
|
5990
|
+
var mfFormats = intlMessageformat.IntlMessageFormat.formats;
|
|
5991
|
+
return __assign$3(__assign$3(__assign$3({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });
|
|
5728
5992
|
}
|
|
5729
5993
|
function assignUniqueKeysToFormatXMLElementFnArgument(values) {
|
|
5730
5994
|
return Object.keys(values).reduce(function (acc, k) {
|
|
@@ -5737,15 +6001,22 @@
|
|
|
5737
6001
|
}
|
|
5738
6002
|
function prepareIntlMessageFormatHtmlOutput(chunks, shouldWrap) {
|
|
5739
6003
|
return Array.isArray(chunks) && shouldWrap
|
|
5740
|
-
? React.createElement.apply(React, __spreadArrays([React.Fragment, null], chunks)) : chunks;
|
|
6004
|
+
? React.createElement.apply(React, __spreadArrays$1([React.Fragment, null], chunks)) : chunks;
|
|
5741
6005
|
}
|
|
5742
6006
|
function formatMessage(_a, state, messageDescriptor, values) {
|
|
5743
6007
|
var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, onError = _a.onError, timeZone = _a.timeZone, wrapRichTextChunksInFragment = _a.wrapRichTextChunksInFragment;
|
|
5744
6008
|
if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }
|
|
5745
|
-
var
|
|
6009
|
+
var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;
|
|
5746
6010
|
// `id` is a required field of a Message Descriptor.
|
|
5747
|
-
intlUtils.invariant(!!
|
|
5748
|
-
var
|
|
6011
|
+
intlUtils.invariant(!!msgId, '[React Intl] An `id` must be provided to format a message.');
|
|
6012
|
+
var id = String(msgId);
|
|
6013
|
+
var message = messages && messages.hasOwnProperty(id) && messages[id];
|
|
6014
|
+
// IMPORTANT: Hot path if `message` is AST with a single literal node
|
|
6015
|
+
if (Array.isArray(message) &&
|
|
6016
|
+
message.length === 1 &&
|
|
6017
|
+
message[0].type === intlMessageformatParser.TYPE.literal) {
|
|
6018
|
+
return message[0].value;
|
|
6019
|
+
}
|
|
5749
6020
|
// IMPORTANT: Hot path straight lookup for performance
|
|
5750
6021
|
if (!values && message && typeof message === 'string') {
|
|
5751
6022
|
return message.replace(/'\{(.*?)\}'/gi, "{$1}");
|
|
@@ -5921,8 +6192,8 @@
|
|
|
5921
6192
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
5922
6193
|
};
|
|
5923
6194
|
})();
|
|
5924
|
-
var __assign$
|
|
5925
|
-
__assign$
|
|
6195
|
+
var __assign$4 = (undefined && undefined.__assign) || function () {
|
|
6196
|
+
__assign$4 = Object.assign || function(t) {
|
|
5926
6197
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5927
6198
|
s = arguments[i];
|
|
5928
6199
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -5930,7 +6201,7 @@
|
|
|
5930
6201
|
}
|
|
5931
6202
|
return t;
|
|
5932
6203
|
};
|
|
5933
|
-
return __assign$
|
|
6204
|
+
return __assign$4.apply(this, arguments);
|
|
5934
6205
|
};
|
|
5935
6206
|
var shallowEquals = objects || shallowEquals_;
|
|
5936
6207
|
function processIntlConfig(config) {
|
|
@@ -5953,7 +6224,7 @@
|
|
|
5953
6224
|
*/
|
|
5954
6225
|
function createIntl(config, cache) {
|
|
5955
6226
|
var formatters = createFormatters(cache);
|
|
5956
|
-
var resolvedConfig = __assign$
|
|
6227
|
+
var resolvedConfig = __assign$4(__assign$4({}, DEFAULT_INTL_CONFIG), config);
|
|
5957
6228
|
var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;
|
|
5958
6229
|
if (!locale) {
|
|
5959
6230
|
if (onError) {
|
|
@@ -5973,7 +6244,7 @@
|
|
|
5973
6244
|
onError) {
|
|
5974
6245
|
onError(new MissingDataError("Missing locale data for locale: \"" + locale + "\" in Intl.DateTimeFormat. Using default locale: \"" + defaultLocale + "\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details"));
|
|
5975
6246
|
}
|
|
5976
|
-
return __assign$
|
|
6247
|
+
return __assign$4(__assign$4({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), formatMessage: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });
|
|
5977
6248
|
}
|
|
5978
6249
|
var IntlProvider$1 = /** @class */ (function (_super) {
|
|
5979
6250
|
__extends$1(IntlProvider, _super);
|
|
@@ -6020,8 +6291,8 @@
|
|
|
6020
6291
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
6021
6292
|
};
|
|
6022
6293
|
})();
|
|
6023
|
-
var __assign$
|
|
6024
|
-
__assign$
|
|
6294
|
+
var __assign$5 = (undefined && undefined.__assign) || function () {
|
|
6295
|
+
__assign$5 = Object.assign || function(t) {
|
|
6025
6296
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6026
6297
|
s = arguments[i];
|
|
6027
6298
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -6029,7 +6300,7 @@
|
|
|
6029
6300
|
}
|
|
6030
6301
|
return t;
|
|
6031
6302
|
};
|
|
6032
|
-
return __assign$
|
|
6303
|
+
return __assign$5.apply(this, arguments);
|
|
6033
6304
|
};
|
|
6034
6305
|
var MINUTE = 60;
|
|
6035
6306
|
var HOUR = 60 * 60;
|
|
@@ -6162,7 +6433,7 @@
|
|
|
6162
6433
|
var unitDuration = getDurationInSeconds(currentUnit);
|
|
6163
6434
|
currentValue = Math.round(currentValueInSeconds / unitDuration);
|
|
6164
6435
|
}
|
|
6165
|
-
var formattedRelativeTime = formatRelativeTime(currentValue, currentUnit, __assign$
|
|
6436
|
+
var formattedRelativeTime = formatRelativeTime(currentValue, currentUnit, __assign$5({}, _this.props));
|
|
6166
6437
|
if (typeof children === 'function') {
|
|
6167
6438
|
return children(formattedRelativeTime);
|
|
6168
6439
|
}
|
|
@@ -6235,7 +6506,7 @@
|
|
|
6235
6506
|
}
|
|
6236
6507
|
return t;
|
|
6237
6508
|
};
|
|
6238
|
-
var __spreadArrays$
|
|
6509
|
+
var __spreadArrays$2 = (undefined && undefined.__spreadArrays) || function () {
|
|
6239
6510
|
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
6240
6511
|
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
6241
6512
|
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
@@ -6271,7 +6542,7 @@
|
|
|
6271
6542
|
if (Component) {
|
|
6272
6543
|
// Needs to use `createElement()` instead of JSX, otherwise React will
|
|
6273
6544
|
// warn about a missing `key` prop with rich-text message formatting.
|
|
6274
|
-
return React.createElement.apply(React, __spreadArrays$
|
|
6545
|
+
return React.createElement.apply(React, __spreadArrays$2([Component, null], nodes));
|
|
6275
6546
|
}
|
|
6276
6547
|
return nodes;
|
|
6277
6548
|
}));
|
|
@@ -6325,4 +6596,4 @@
|
|
|
6325
6596
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
6326
6597
|
|
|
6327
6598
|
})));
|
|
6328
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtaW50bC51bWQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL3NyYy90eXBlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL3NyYy9wYXJzZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9zcmMvbm9ybWFsaXplLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvc3JjL3NrZWxldG9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1mb3JtYXQtY2FjaGUvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0L3NyYy9lcnJvci5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvc3JjL2Zvcm1hdHRlcnMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0L3NyYy9jb3JlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC11dGlscy9zcmMvZGlmZi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC11dGlscy9zcmMvaW52YXJpYW50LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsLXV0aWxzL3NyYy91bml0cy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC11dGlscy9zcmMvcG9seWZpbGwtdXRpbHMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwtdXRpbHMvc3JjL3Jlc29sdmUtbG9jYWxlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsLXV0aWxzL2luZGV4LmpzIiwibGliL3NyYy9lcnJvci5qcyIsImxpYi9zcmMvdXRpbHMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwibGliL3NyYy9jb21wb25lbnRzL2luamVjdEludGwuanMiLCJsaWIvc3JjL2NvbXBvbmVudHMvY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50LmpzIiwibGliL3NyYy9jb21wb25lbnRzL3VzZUludGwuanMiLCJsaWIvc3JjL2Zvcm1hdHRlcnMvbnVtYmVyLmpzIiwibGliL3NyYy9mb3JtYXR0ZXJzL3JlbGF0aXZlVGltZS5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9kYXRlVGltZS5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9wbHVyYWwuanMiLCJsaWIvc3JjL2Zvcm1hdHRlcnMvbWVzc2FnZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaGFsbG93LWVxdWFsL29iamVjdHMvaW5kZXguanMiLCJsaWIvc3JjL2Zvcm1hdHRlcnMvbGlzdC5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9kaXNwbGF5TmFtZS5qcyIsImxpYi9zcmMvY29tcG9uZW50cy9wcm92aWRlci5qcyIsImxpYi9zcmMvY29tcG9uZW50cy9yZWxhdGl2ZS5qcyIsImxpYi9zcmMvY29tcG9uZW50cy9wbHVyYWwuanMiLCJsaWIvc3JjL2NvbXBvbmVudHMvbWVzc2FnZS5qcyIsImxpYi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBUWVBFO1xuKGZ1bmN0aW9uIChUWVBFKSB7XG4gICAgLyoqXG4gICAgICogUmF3IHRleHRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJsaXRlcmFsXCJdID0gMF0gPSBcImxpdGVyYWxcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3L28gYW55IGZvcm1hdCwgZS5nIGB2YXJgIGluIGB0aGlzIGlzIGEge3Zhcn1gXG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wiYXJndW1lbnRcIl0gPSAxXSA9IFwiYXJndW1lbnRcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3LyBudW1iZXIgZm9ybWF0XG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wibnVtYmVyXCJdID0gMl0gPSBcIm51bWJlclwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIGRhdGUgZm9ybWF0XG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wiZGF0ZVwiXSA9IDNdID0gXCJkYXRlXCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gdGltZSBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJ0aW1lXCJdID0gNF0gPSBcInRpbWVcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3LyBzZWxlY3QgZm9ybWF0XG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wic2VsZWN0XCJdID0gNV0gPSBcInNlbGVjdFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIHBsdXJhbCBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJwbHVyYWxcIl0gPSA2XSA9IFwicGx1cmFsXCI7XG4gICAgLyoqXG4gICAgICogT25seSBwb3NzaWJsZSB3aXRoaW4gcGx1cmFsIGFyZ3VtZW50LlxuICAgICAqIFRoaXMgaXMgdGhlIGAjYCBzeW1ib2wgdGhhdCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIGNvdW50LlxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInBvdW5kXCJdID0gN10gPSBcInBvdW5kXCI7XG4gICAgLyoqXG4gICAgICogWE1MLWxpa2UgdGFnXG4gICAgICovXG4gICAgVFlQRVtUWVBFW1widGFnXCJdID0gOF0gPSBcInRhZ1wiO1xufSkoVFlQRSA9IGV4cG9ydHMuVFlQRSB8fCAoZXhwb3J0cy5UWVBFID0ge30pKTtcbnZhciBTS0VMRVRPTl9UWVBFO1xuKGZ1bmN0aW9uIChTS0VMRVRPTl9UWVBFKSB7XG4gICAgU0tFTEVUT05fVFlQRVtTS0VMRVRPTl9UWVBFW1wibnVtYmVyXCJdID0gMF0gPSBcIm51bWJlclwiO1xuICAgIFNLRUxFVE9OX1RZUEVbU0tFTEVUT05fVFlQRVtcImRhdGVUaW1lXCJdID0gMV0gPSBcImRhdGVUaW1lXCI7XG59KShTS0VMRVRPTl9UWVBFID0gZXhwb3J0cy5TS0VMRVRPTl9UWVBFIHx8IChleHBvcnRzLlNLRUxFVE9OX1RZUEUgPSB7fSkpO1xuLyoqXG4gKiBUeXBlIEd1YXJkc1xuICovXG5mdW5jdGlvbiBpc0xpdGVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubGl0ZXJhbDtcbn1cbmV4cG9ydHMuaXNMaXRlcmFsRWxlbWVudCA9IGlzTGl0ZXJhbEVsZW1lbnQ7XG5mdW5jdGlvbiBpc0FyZ3VtZW50RWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLmFyZ3VtZW50O1xufVxuZXhwb3J0cy5pc0FyZ3VtZW50RWxlbWVudCA9IGlzQXJndW1lbnRFbGVtZW50O1xuZnVuY3Rpb24gaXNOdW1iZXJFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubnVtYmVyO1xufVxuZXhwb3J0cy5pc051bWJlckVsZW1lbnQgPSBpc051bWJlckVsZW1lbnQ7XG5mdW5jdGlvbiBpc0RhdGVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUuZGF0ZTtcbn1cbmV4cG9ydHMuaXNEYXRlRWxlbWVudCA9IGlzRGF0ZUVsZW1lbnQ7XG5mdW5jdGlvbiBpc1RpbWVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGltZTtcbn1cbmV4cG9ydHMuaXNUaW1lRWxlbWVudCA9IGlzVGltZUVsZW1lbnQ7XG5mdW5jdGlvbiBpc1NlbGVjdEVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5zZWxlY3Q7XG59XG5leHBvcnRzLmlzU2VsZWN0RWxlbWVudCA9IGlzU2VsZWN0RWxlbWVudDtcbmZ1bmN0aW9uIGlzUGx1cmFsRWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLnBsdXJhbDtcbn1cbmV4cG9ydHMuaXNQbHVyYWxFbGVtZW50ID0gaXNQbHVyYWxFbGVtZW50O1xuZnVuY3Rpb24gaXNQb3VuZEVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5wb3VuZDtcbn1cbmV4cG9ydHMuaXNQb3VuZEVsZW1lbnQgPSBpc1BvdW5kRWxlbWVudDtcbmZ1bmN0aW9uIGlzVGFnRWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLnRhZztcbn1cbmV4cG9ydHMuaXNUYWdFbGVtZW50ID0gaXNUYWdFbGVtZW50O1xuZnVuY3Rpb24gaXNOdW1iZXJTa2VsZXRvbihlbCkge1xuICAgIHJldHVybiAhIShlbCAmJiB0eXBlb2YgZWwgPT09ICdvYmplY3QnICYmIGVsLnR5cGUgPT09IDAgLyogbnVtYmVyICovKTtcbn1cbmV4cG9ydHMuaXNOdW1iZXJTa2VsZXRvbiA9IGlzTnVtYmVyU2tlbGV0b247XG5mdW5jdGlvbiBpc0RhdGVUaW1lU2tlbGV0b24oZWwpIHtcbiAgICByZXR1cm4gISEoZWwgJiYgdHlwZW9mIGVsID09PSAnb2JqZWN0JyAmJiBlbC50eXBlID09PSAxIC8qIGRhdGVUaW1lICovKTtcbn1cbmV4cG9ydHMuaXNEYXRlVGltZVNrZWxldG9uID0gaXNEYXRlVGltZVNrZWxldG9uO1xuZnVuY3Rpb24gY3JlYXRlTGl0ZXJhbEVsZW1lbnQodmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUWVBFLmxpdGVyYWwsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xufVxuZXhwb3J0cy5jcmVhdGVMaXRlcmFsRWxlbWVudCA9IGNyZWF0ZUxpdGVyYWxFbGVtZW50O1xuZnVuY3Rpb24gY3JlYXRlTnVtYmVyRWxlbWVudCh2YWx1ZSwgc3R5bGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUWVBFLm51bWJlcixcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgfTtcbn1cbmV4cG9ydHMuY3JlYXRlTnVtYmVyRWxlbWVudCA9IGNyZWF0ZU51bWJlckVsZW1lbnQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIEB0cy1ub2NoZWNrXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xudmFyIFN5bnRheEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTeW50YXhFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTeW50YXhFcnJvcihtZXNzYWdlLCBleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICBfdGhpcy5leHBlY3RlZCA9IGV4cGVjdGVkO1xuICAgICAgICBfdGhpcy5mb3VuZCA9IGZvdW5kO1xuICAgICAgICBfdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgICBfdGhpcy5uYW1lID0gXCJTeW50YXhFcnJvclwiO1xuICAgICAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKF90aGlzLCBTeW50YXhFcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbiAoZXhwZWN0ZWQsIGZvdW5kKSB7XG4gICAgICAgIGZ1bmN0aW9uIGhleChjaCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbGl0ZXJhbEVzY2FwZShzKSB7XG4gICAgICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgXCJcXFxcXFxcIlwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXDAvZywgXCJcXFxcMFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJcXFxcdFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHIvZywgXCJcXFxcclwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4MDAtXFx4MEZdL2csIGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gXCJcXFxceDBcIiArIGhleChjaCk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIFwiXFxcXHhcIiArIGhleChjaCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF0vZywgXCJcXFxcXVwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXF4vZywgXCJcXFxcXlwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8tL2csIFwiXFxcXC1cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwwL2csIFwiXFxcXDBcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiXFxcXHRcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csIFwiXFxcXHJcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIFwiXFxcXHgwXCIgKyBoZXgoY2gpOyB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4XCIgKyBoZXgoY2gpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV4cGVjdGF0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwibGl0ZXJhbFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgICAgICAgICAgY2FzZSBcImNsYXNzXCI6XG4gICAgICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBleHBlY3RhdGlvbi5wYXJ0cy5tYXAoZnVuY3Rpb24gKHBhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBhcnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGFzc0VzY2FwZShwYXJ0WzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUocGFydFsxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNsYXNzRXNjYXBlKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiW1wiICsgKGV4cGVjdGF0aW9uLmludmVydGVkID8gXCJeXCIgOiBcIlwiKSArIGVzY2FwZWRQYXJ0cyArIFwiXVwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhbnlcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZW5kIG9mIGlucHV0XCI7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm90aGVyXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbi5kZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkMSkge1xuICAgICAgICAgICAgdmFyIGRlc2NyaXB0aW9ucyA9IGV4cGVjdGVkMS5tYXAoZGVzY3JpYmVFeHBlY3RhdGlvbik7XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIHZhciBqO1xuICAgICAgICAgICAgZGVzY3JpcHRpb25zLnNvcnQoKTtcbiAgICAgICAgICAgIGlmIChkZXNjcmlwdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGogPSAxOyBpIDwgZGVzY3JpcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdGlvbnNbaSAtIDFdICE9PSBkZXNjcmlwdGlvbnNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uc1tqXSA9IGRlc2NyaXB0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnMubGVuZ3RoID0gajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF0gKyBcIiBvciBcIiArIGRlc2NyaXB0aW9uc1sxXTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICsgXCIsIG9yIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICArIGRlc2NyaXB0aW9uc1tkZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzY3JpYmVGb3VuZChmb3VuZDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3VuZDEgPyBcIlxcXCJcIiArIGxpdGVyYWxFc2NhcGUoZm91bmQxKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJFeHBlY3RlZCBcIiArIGRlc2NyaWJlRXhwZWN0ZWQoZXhwZWN0ZWQpICsgXCIgYnV0IFwiICsgZGVzY3JpYmVGb3VuZChmb3VuZCkgKyBcIiBmb3VuZC5cIjtcbiAgICB9O1xuICAgIHJldHVybiBTeW50YXhFcnJvcjtcbn0oRXJyb3IpKTtcbmV4cG9ydHMuU3ludGF4RXJyb3IgPSBTeW50YXhFcnJvcjtcbmZ1bmN0aW9uIHBlZyRwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zICE9PSB1bmRlZmluZWQgPyBvcHRpb25zIDoge307XG4gICAgdmFyIHBlZyRGQUlMRUQgPSB7fTtcbiAgICB2YXIgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgc3RhcnQ6IHBlZyRwYXJzZXN0YXJ0IH07XG4gICAgdmFyIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiA9IHBlZyRwYXJzZXN0YXJ0O1xuICAgIHZhciBwZWckYzAgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhaWdub3JlVGFnOyB9O1xuICAgIHZhciBwZWckYzEgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfTtcbiAgICB2YXIgcGVnJGMyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaWdub3JlVGFnOyB9O1xuICAgIHZhciBwZWckYzMgPSBcIjxcIjtcbiAgICB2YXIgcGVnJGM0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIjxcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzUgPSBmdW5jdGlvbiAocGFydHMpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8JzsgfTtcbiAgICB2YXIgcGVnJGM3ID0gZnVuY3Rpb24gKG1lc3NhZ2VUZXh0KSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IHR5cGVzXzEuVFlQRS5saXRlcmFsLCB2YWx1ZTogbWVzc2FnZVRleHQgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM4ID0gXCIjXCI7XG4gICAgdmFyIHBlZyRjOSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIjXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogdHlwZXNfMS5UWVBFLnBvdW5kIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInRhZ0VsZW1lbnRcIik7XG4gICAgdmFyIHBlZyRjMTIgPSBmdW5jdGlvbiAob3BlbiwgY2hpbGRyZW4sIGNsb3NlKSB7XG4gICAgICAgIGlmIChvcGVuICE9PSBjbG9zZSkge1xuICAgICAgICAgICAgZXJyb3IoXCJNaXNtYXRjaCB0YWcgXFxcIlwiICsgb3BlbiArIFwiXFxcIiAhPT0gXFxcIlwiICsgY2xvc2UgKyBcIlxcXCJcIiwgbG9jYXRpb24oKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogdHlwZXNfMS5UWVBFLnRhZywgdmFsdWU6IG9wZW4sIGNoaWxkcmVuOiBjaGlsZHJlbiB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzEzID0gXCIvPlwiO1xuICAgIHZhciBwZWckYzE0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi8+XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxNSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUubGl0ZXJhbCwgdmFsdWU6IHZhbHVlLmpvaW4oJycpIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTYgPSBcIj5cIjtcbiAgICB2YXIgcGVnJGMxNyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI+XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxOCA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZzsgfTtcbiAgICB2YXIgcGVnJGMxOSA9IFwiPC9cIjtcbiAgICB2YXIgcGVnJGMyMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI8L1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ3VtZW50RWxlbWVudFwiKTtcbiAgICB2YXIgcGVnJGMyMiA9IFwie1wiO1xuICAgIHZhciBwZWckYzIzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIntcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzI0ID0gXCJ9XCI7XG4gICAgdmFyIHBlZyRjMjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogdHlwZXNfMS5UWVBFLmFyZ3VtZW50LCB2YWx1ZTogdmFsdWUgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGMyNyA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwibnVtYmVyU2tlbGV0b25JZFwiKTtcbiAgICB2YXIgcGVnJGMyOCA9IC9eWydcXC97fV0vO1xuICAgIHZhciBwZWckYzI5ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiLCBcIi9cIiwgXCJ7XCIsIFwifVwiXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMzMCA9IHBlZyRhbnlFeHBlY3RhdGlvbigpO1xuICAgIHZhciBwZWckYzMxID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uXCIpO1xuICAgIHZhciBwZWckYzMyID0gXCIvXCI7XG4gICAgdmFyIHBlZyRjMzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiL1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMzQgPSBmdW5jdGlvbiAob3B0aW9uKSB7IHJldHVybiBvcHRpb247IH07XG4gICAgdmFyIHBlZyRjMzUgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm51bWJlclNrZWxldG9uVG9rZW5cIik7XG4gICAgdmFyIHBlZyRjMzYgPSBmdW5jdGlvbiAoc3RlbSwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4geyBzdGVtOiBzdGVtLCBvcHRpb25zOiBvcHRpb25zIH07XG4gICAgfTtcbiAgICB2YXIgcGVnJGMzNyA9IGZ1bmN0aW9uICh0b2tlbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogMCAvKiBudW1iZXIgKi8sIHRva2VuczogdG9rZW5zIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMzggPSBcIjo6XCI7XG4gICAgdmFyIHBlZyRjMzkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiOjpcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQwID0gZnVuY3Rpb24gKHNrZWxldG9uKSB7IHJldHVybiBza2VsZXRvbjsgfTtcbiAgICB2YXIgcGVnJGM0MSA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdudW1iZXJBcmdTdHlsZScpOyByZXR1cm4gdHJ1ZTsgfTtcbiAgICB2YXIgcGVnJGM0MiA9IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gc3R5bGUucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM0MyA9IFwiLFwiO1xuICAgIHZhciBwZWckYzQ0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ1ID0gXCJudW1iZXJcIjtcbiAgICB2YXIgcGVnJGM0NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJudW1iZXJcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ3ID0gZnVuY3Rpb24gKHZhbHVlLCB0eXBlLCBzdHlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlID09PSAnbnVtYmVyJyA/IHR5cGVzXzEuVFlQRS5udW1iZXIgOiB0eXBlID09PSAnZGF0ZScgPyB0eXBlc18xLlRZUEUuZGF0ZSA6IHR5cGVzXzEuVFlQRS50aW1lLCBzdHlsZTogc3R5bGUgJiYgc3R5bGVbMl0sIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzQ4ID0gXCInXCI7XG4gICAgdmFyIHBlZyRjNDkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJ1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTAgPSAvXlteJ10vO1xuICAgIHZhciBwZWckYzUxID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzUyID0gL15bXmEtekEtWid7fV0vO1xuICAgIHZhciBwZWckYzUzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCInXCIsIFwie1wiLCBcIn1cIl0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM1NCA9IC9eW2EtekEtWl0vO1xuICAgIHZhciBwZWckYzU1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTYgPSBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiAxIC8qIGRhdGVUaW1lICovLCBwYXR0ZXJuOiBwYXR0ZXJuIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNTcgPSBmdW5jdGlvbiAoKSB7IG1lc3NhZ2VDdHgucHVzaCgnZGF0ZU9yVGltZUFyZ1N0eWxlJyk7IHJldHVybiB0cnVlOyB9O1xuICAgIHZhciBwZWckYzU4ID0gXCJkYXRlXCI7XG4gICAgdmFyIHBlZyRjNTkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiZGF0ZVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNjAgPSBcInRpbWVcIjtcbiAgICB2YXIgcGVnJGM2MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ0aW1lXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2MiA9IFwicGx1cmFsXCI7XG4gICAgdmFyIHBlZyRjNjMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwicGx1cmFsXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2NCA9IFwic2VsZWN0b3JkaW5hbFwiO1xuICAgIHZhciBwZWckYzY1ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInNlbGVjdG9yZGluYWxcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzY2ID0gXCJvZmZzZXQ6XCI7XG4gICAgdmFyIHBlZyRjNjcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwib2Zmc2V0OlwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNjggPSBmdW5jdGlvbiAodmFsdWUsIHBsdXJhbFR5cGUsIG9mZnNldCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUucGx1cmFsLCBwbHVyYWxUeXBlOiBwbHVyYWxUeXBlID09PSAncGx1cmFsJyA/ICdjYXJkaW5hbCcgOiAnb3JkaW5hbCcsIHZhbHVlOiB2YWx1ZSwgb2Zmc2V0OiBvZmZzZXQgPyBvZmZzZXRbMl0gOiAwLCBvcHRpb25zOiBvcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBfYSkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IF9hLmlkLCB2YWx1ZSA9IF9hLnZhbHVlLCBvcHRpb25Mb2NhdGlvbiA9IF9hLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiBhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJEdXBsaWNhdGUgb3B0aW9uIFxcXCJcIiArIGlkICsgXCJcXFwiIGluIHBsdXJhbCBlbGVtZW50OiBcXFwiXCIgKyB0ZXh0KCkgKyBcIlxcXCJcIiwgbG9jYXRpb24oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFsbFtpZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbkxvY2F0aW9uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICAgICAgfSwge30pIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNjkgPSBcInNlbGVjdFwiO1xuICAgIHZhciBwZWckYzcwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInNlbGVjdFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNzEgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogdHlwZXNfMS5UWVBFLnNlbGVjdCwgdmFsdWU6IHZhbHVlLCBvcHRpb25zOiBvcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBfYSkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IF9hLmlkLCB2YWx1ZSA9IF9hLnZhbHVlLCBvcHRpb25Mb2NhdGlvbiA9IF9hLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiBhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJEdXBsaWNhdGUgb3B0aW9uIFxcXCJcIiArIGlkICsgXCJcXFwiIGluIHNlbGVjdCBlbGVtZW50OiBcXFwiXCIgKyB0ZXh0KCkgKyBcIlxcXCJcIiwgbG9jYXRpb24oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFsbFtpZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbkxvY2F0aW9uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICAgICAgfSwge30pIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNzIgPSBcIj1cIjtcbiAgICB2YXIgcGVnJGM3MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI9XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM3NCA9IGZ1bmN0aW9uIChpZCkgeyBtZXNzYWdlQ3R4LnB1c2goJ3NlbGVjdCcpOyByZXR1cm4gdHJ1ZTsgfTtcbiAgICB2YXIgcGVnJGM3NSA9IGZ1bmN0aW9uIChpZCwgdmFsdWUpIHtcbiAgICAgICAgbWVzc2FnZUN0eC5wb3AoKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgaWQ6IGlkLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNzYgPSBmdW5jdGlvbiAoaWQpIHsgbWVzc2FnZUN0eC5wdXNoKCdwbHVyYWwnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNzcgPSBmdW5jdGlvbiAoaWQsIHZhbHVlKSB7XG4gICAgICAgIG1lc3NhZ2VDdHgucG9wKCk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IGlkOiBpZCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzc4ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJ3aGl0ZXNwYWNlXCIpO1xuICAgIHZhciBwZWckYzc5ID0gL15bXFx0LVxcciBcXHg4NVxceEEwXFx1MTY4MFxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXS87XG4gICAgdmFyIHBlZyRjODAgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiXFx0XCIsIFwiXFxyXCJdLCBcIiBcIiwgXCJcXHg4NVwiLCBcIlxceEEwXCIsIFwiXFx1MTY4MFwiLCBbXCJcXHUyMDAwXCIsIFwiXFx1MjAwQVwiXSwgXCJcXHUyMDI4XCIsIFwiXFx1MjAyOVwiLCBcIlxcdTIwMkZcIiwgXCJcXHUyMDVGXCIsIFwiXFx1MzAwMFwiXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM4MSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwic3ludGF4IHBhdHRlcm5cIik7XG4gICAgdmFyIHBlZyRjODIgPSAvXlshLVxcLzotQFstXFxeYHstflxceEExLVxceEE3XFx4QTlcXHhBQlxceEFDXFx4QUVcXHhCMFxceEIxXFx4QjZcXHhCQlxceEJGXFx4RDdcXHhGN1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjAzRVxcdTIwNDEtXFx1MjA1M1xcdTIwNTUtXFx1MjA1RVxcdTIxOTAtXFx1MjQ1RlxcdTI1MDAtXFx1Mjc3NVxcdTI3OTQtXFx1MkJGRlxcdTJFMDAtXFx1MkU3RlxcdTMwMDEtXFx1MzAwM1xcdTMwMDgtXFx1MzAyMFxcdTMwMzBcXHVGRDNFXFx1RkQzRlxcdUZFNDVcXHVGRTQ2XS87XG4gICAgdmFyIHBlZyRjODMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiIVwiLCBcIi9cIl0sIFtcIjpcIiwgXCJAXCJdLCBbXCJbXCIsIFwiXlwiXSwgXCJgXCIsIFtcIntcIiwgXCJ+XCJdLCBbXCJcXHhBMVwiLCBcIlxceEE3XCJdLCBcIlxceEE5XCIsIFwiXFx4QUJcIiwgXCJcXHhBQ1wiLCBcIlxceEFFXCIsIFwiXFx4QjBcIiwgXCJcXHhCMVwiLCBcIlxceEI2XCIsIFwiXFx4QkJcIiwgXCJcXHhCRlwiLCBcIlxceEQ3XCIsIFwiXFx4RjdcIiwgW1wiXFx1MjAxMFwiLCBcIlxcdTIwMjdcIl0sIFtcIlxcdTIwMzBcIiwgXCJcXHUyMDNFXCJdLCBbXCJcXHUyMDQxXCIsIFwiXFx1MjA1M1wiXSwgW1wiXFx1MjA1NVwiLCBcIlxcdTIwNUVcIl0sIFtcIlxcdTIxOTBcIiwgXCJcXHUyNDVGXCJdLCBbXCJcXHUyNTAwXCIsIFwiXFx1Mjc3NVwiXSwgW1wiXFx1Mjc5NFwiLCBcIlxcdTJCRkZcIl0sIFtcIlxcdTJFMDBcIiwgXCJcXHUyRTdGXCJdLCBbXCJcXHUzMDAxXCIsIFwiXFx1MzAwM1wiXSwgW1wiXFx1MzAwOFwiLCBcIlxcdTMwMjBcIl0sIFwiXFx1MzAzMFwiLCBcIlxcdUZEM0VcIiwgXCJcXHVGRDNGXCIsIFwiXFx1RkU0NVwiLCBcIlxcdUZFNDZcIl0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjODQgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm9wdGlvbmFsIHdoaXRlc3BhY2VcIik7XG4gICAgdmFyIHBlZyRjODUgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm51bWJlclwiKTtcbiAgICB2YXIgcGVnJGM4NiA9IFwiLVwiO1xuICAgIHZhciBwZWckYzg3ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi1cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzg4ID0gZnVuY3Rpb24gKG5lZ2F0aXZlLCBudW0pIHtcbiAgICAgICAgcmV0dXJuIG51bVxuICAgICAgICAgICAgPyBuZWdhdGl2ZVxuICAgICAgICAgICAgICAgID8gLW51bVxuICAgICAgICAgICAgICAgIDogbnVtXG4gICAgICAgICAgICA6IDA7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM4OSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXBvc3Ryb3BoZVwiKTtcbiAgICB2YXIgcGVnJGM5MCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiZG91YmxlIGFwb3N0cm9waGVzXCIpO1xuICAgIHZhciBwZWckYzkxID0gXCInJ1wiO1xuICAgIHZhciBwZWckYzkyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIicnXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM5MyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFwiJ1wiOyB9O1xuICAgIHZhciBwZWckYzk0ID0gZnVuY3Rpb24gKGVzY2FwZWRDaGFyLCBxdW90ZWRDaGFycykge1xuICAgICAgICByZXR1cm4gZXNjYXBlZENoYXIgKyBxdW90ZWRDaGFycy5yZXBsYWNlKFwiJydcIiwgXCInXCIpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjOTUgPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gKHggIT09ICc8JyAmJlxuICAgICAgICAgICAgeCAhPT0gJ3snICYmXG4gICAgICAgICAgICAhKGlzSW5QbHVyYWxPcHRpb24oKSAmJiB4ID09PSAnIycpICYmXG4gICAgICAgICAgICAhKGlzTmVzdGVkTWVzc2FnZVRleHQoKSAmJiB4ID09PSAnfScpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzk2ID0gXCJcXG5cIjtcbiAgICB2YXIgcGVnJGM5NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXG5cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzk4ID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHggPT09ICc8JyB8fCB4ID09PSAnPicgfHwgeCA9PT0gJ3snIHx8IHggPT09ICd9JyB8fCAoaXNJblBsdXJhbE9wdGlvbigpICYmIHggPT09ICcjJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM5OSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJnTmFtZU9yTnVtYmVyXCIpO1xuICAgIHZhciBwZWckYzEwMCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwidmFsaWRUYWdcIik7XG4gICAgdmFyIHBlZyRjMTAxID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJhcmdOdW1iZXJcIik7XG4gICAgdmFyIHBlZyRjMTAyID0gXCIwXCI7XG4gICAgdmFyIHBlZyRjMTAzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIjBcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzEwNCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07XG4gICAgdmFyIHBlZyRjMTA1ID0gL15bMS05XS87XG4gICAgdmFyIHBlZyRjMTA2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjFcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMDcgPSAvXlswLTldLztcbiAgICB2YXIgcGVnJGMxMDggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiMFwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzEwOSA9IGZ1bmN0aW9uIChkaWdpdHMpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGRpZ2l0cy5qb2luKCcnKSwgMTApO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTEwID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJhcmdOYW1lXCIpO1xuICAgIHZhciBwZWckYzExMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwidGFnTmFtZVwiKTtcbiAgICB2YXIgcGVnJGN1cnJQb3MgPSAwO1xuICAgIHZhciBwZWckc2F2ZWRQb3MgPSAwO1xuICAgIHZhciBwZWckcG9zRGV0YWlsc0NhY2hlID0gW3sgbGluZTogMSwgY29sdW1uOiAxIH1dO1xuICAgIHZhciBwZWckbWF4RmFpbFBvcyA9IDA7XG4gICAgdmFyIHBlZyRtYXhGYWlsRXhwZWN0ZWQgPSBbXTtcbiAgICB2YXIgcGVnJHNpbGVudEZhaWxzID0gMDtcbiAgICB2YXIgcGVnJHJlc3VsdDtcbiAgICBpZiAob3B0aW9ucy5zdGFydFJ1bGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIShvcHRpb25zLnN0YXJ0UnVsZSBpbiBwZWckc3RhcnRSdWxlRnVuY3Rpb25zKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3Qgc3RhcnQgcGFyc2luZyBmcm9tIHJ1bGUgXFxcIlwiICsgb3B0aW9ucy5zdGFydFJ1bGUgKyBcIlxcXCIuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbnNbb3B0aW9ucy5zdGFydFJ1bGVdO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0ZXh0KCkge1xuICAgICAgICByZXR1cm4gaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsb2NhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGV4cGVjdGVkKGRlc2NyaXB0aW9uLCBsb2NhdGlvbjEpIHtcbiAgICAgICAgbG9jYXRpb24xID0gbG9jYXRpb24xICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gbG9jYXRpb24xXG4gICAgICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gICAgICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihbcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pXSwgaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpLCBsb2NhdGlvbjEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlcnJvcihtZXNzYWdlLCBsb2NhdGlvbjEpIHtcbiAgICAgICAgbG9jYXRpb24xID0gbG9jYXRpb24xICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gbG9jYXRpb24xXG4gICAgICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gICAgICAgIHRocm93IHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRsaXRlcmFsRXhwZWN0YXRpb24odGV4dDEsIGlnbm9yZUNhc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHRleHQ6IHRleHQxLCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRjbGFzc0V4cGVjdGF0aW9uKHBhcnRzLCBpbnZlcnRlZCwgaWdub3JlQ2FzZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImNsYXNzXCIsIHBhcnRzOiBwYXJ0cywgaW52ZXJ0ZWQ6IGludmVydGVkLCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRhbnlFeHBlY3RhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJhbnlcIiB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckZW5kRXhwZWN0YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZW5kXCIgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJvdGhlclwiLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHBvcykge1xuICAgICAgICB2YXIgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXTtcbiAgICAgICAgdmFyIHA7XG4gICAgICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICAgICAgICByZXR1cm4gZGV0YWlscztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHAgPSBwb3MgLSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFwZWckcG9zRGV0YWlsc0NhY2hlW3BdKSB7XG4gICAgICAgICAgICAgICAgcC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcF07XG4gICAgICAgICAgICBkZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgIGxpbmU6IGRldGFpbHMubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGRldGFpbHMuY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2hpbGUgKHAgPCBwb3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwKSA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHMuY29sdW1uID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHMuY29sdW1uKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHArKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSA9IGRldGFpbHM7XG4gICAgICAgICAgICByZXR1cm4gZGV0YWlscztcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckY29tcHV0ZUxvY2F0aW9uKHN0YXJ0UG9zLCBlbmRQb3MpIHtcbiAgICAgICAgdmFyIHN0YXJ0UG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhzdGFydFBvcyk7XG4gICAgICAgIHZhciBlbmRQb3NEZXRhaWxzID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKGVuZFBvcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgICAgIG9mZnNldDogc3RhcnRQb3MsXG4gICAgICAgICAgICAgICAgbGluZTogc3RhcnRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBzdGFydFBvc0RldGFpbHMuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBlbmRQb3MsXG4gICAgICAgICAgICAgICAgbGluZTogZW5kUG9zRGV0YWlscy5saW5lLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogZW5kUG9zRGV0YWlscy5jb2x1bW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGZhaWwoZXhwZWN0ZWQxKSB7XG4gICAgICAgIGlmIChwZWckY3VyclBvcyA8IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlZyRjdXJyUG9zID4gcGVnJG1heEZhaWxQb3MpIHtcbiAgICAgICAgICAgIHBlZyRtYXhGYWlsUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZC5wdXNoKGV4cGVjdGVkMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uMSkge1xuICAgICAgICByZXR1cm4gbmV3IFN5bnRheEVycm9yKG1lc3NhZ2UsIFtdLCBcIlwiLCBsb2NhdGlvbjEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoZXhwZWN0ZWQxLCBmb3VuZCwgbG9jYXRpb24xKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3ludGF4RXJyb3IoU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlKGV4cGVjdGVkMSwgZm91bmQpLCBleHBlY3RlZDEsIGZvdW5kLCBsb2NhdGlvbjEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VzdGFydCgpIHtcbiAgICAgICAgdmFyIHMwO1xuICAgICAgICBzMCA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VtZXNzYWdlKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBzMCA9IFtdO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZW1lc3NhZ2VFbGVtZW50KCk7XG4gICAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZW1lc3NhZ2VFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VtZXNzYWdlRWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjMCgpO1xuICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2V0YWdFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMShzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlbGl0ZXJhbEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlYXJndW1lbnRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlc2ltcGxlRm9ybWF0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlcGx1cmFsRWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckcGFyc2VzZWxlY3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlcG91bmRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGMyKCk7XG4gICAgICAgIGlmIChzMSkge1xuICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1KHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMxID0gW107XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vub25UYWdTdGFydGluZ0FuZ2xlQnJhY2tldCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vub25UYWdTdGFydGluZ0FuZ2xlQnJhY2tldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1KHMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vub25UYWdTdGFydGluZ0FuZ2xlQnJhY2tldCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMiA9IHBlZyRwYXJzZW9wZW5pbmdUYWcoKTtcbiAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWNsb3NpbmdUYWcoKTtcbiAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlc2VsZkNsb3NpbmdUYWcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckYzM7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzYoKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbGl0ZXJhbEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlbWVzc2FnZVRleHQoKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM3KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXBvdW5kRWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzg7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMCgpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNldGFnRWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckcGFyc2VzZWxmQ2xvc2luZ1RhZygpO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZW9wZW5pbmdUYWcoKTtcbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWNsb3NpbmdUYWcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMihzMSwgczIsIHMzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2VsZkNsb3NpbmdUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjMztcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNldmFsaWRUYWcoKTtcbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzE0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzMywgczQsIHM1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTUoczEpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlb3BlbmluZ1RhZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMztcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldmFsaWRUYWcoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjIpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzE2O1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzE3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxOChzMik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlY2xvc2luZ1RhZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMxOSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzE5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldmFsaWRUYWcoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjIpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzE2O1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzE3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxOChzMik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJndW1lbnRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzI2KHMzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlclNrZWxldG9uSWQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IFtdO1xuICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyOSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW5PcHRpb24oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0Nykge1xuICAgICAgICAgICAgczEgPSBwZWckYzMyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25JZCgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzM0KHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW4oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uSWQoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW107XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW5PcHRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzYoczIsIHMzKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b24oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IFtdO1xuICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW4oKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzM3KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlckFyZ1N0eWxlKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMzgpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDAoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNDEoKTtcbiAgICAgICAgICAgIGlmIChzMSkge1xuICAgICAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VtZXNzYWdlVGV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzQyKHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlckZvcm1hdEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KSA9PT0gcGVnJGM0NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzQ1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlbnVtYmVyQXJnU3R5bGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBbczEwLCBzMTEsIHMxMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBzMTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0NyhzMywgczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbkxpdGVyYWwoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzQ4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM1MC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGM1MC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGM0ODtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gW3MxLCBzMiwgczNdO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gW107XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM1Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1Myk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGM1Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uUGF0dGVybigpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgczAgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjNTQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzU1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzU0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzU1KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b24oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uTGl0ZXJhbCgpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvblBhdHRlcm4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbkxpdGVyYWwoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uUGF0dGVybigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gaW5wdXQuc3Vic3RyaW5nKHMxLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTYoczEpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZU9yVGltZUFyZ1N0eWxlKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMzgpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b24oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MChzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMxID0gcGVnJGM1NygpO1xuICAgICAgICAgICAgaWYgKHMxKSB7XG4gICAgICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDIoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZU9yVGltZUZvcm1hdEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA0KSA9PT0gcGVnJGM1OCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzU4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzU5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDQpID09PSBwZWckYzYwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzYwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzYxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZWRhdGVPclRpbWVBcmdTdHlsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IFtzMTAsIHMxMSwgczEyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHMxMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzQ3KHMzLCBzNywgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VzaW1wbGVGb3JtYXRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczA7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlbnVtYmVyRm9ybWF0RWxlbWVudCgpO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlZGF0ZU9yVGltZUZvcm1hdEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXBsdXJhbEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMiwgczEzLCBzMTQsIHMxNTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KSA9PT0gcGVnJGM2Mikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzYyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzYzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDEzKSA9PT0gcGVnJGM2NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2NDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAxMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNykgPT09IHBlZyRjNjYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckYzY2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2Nyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNCA9IHBlZyRwYXJzZW51bWJlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBbczEyLCBzMTMsIHMxNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBzMTI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE0ID0gcGVnJHBhcnNlcGx1cmFsT3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMucHVzaChzMTQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNCA9IHBlZyRwYXJzZXBsdXJhbE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE1ID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM2OChzMywgczcsIHMxMSwgczEzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VzZWxlY3RFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTIsIHMxMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KSA9PT0gcGVnJGM2OSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzY5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzcwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlc2VsZWN0T3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEucHVzaChzMTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VzZWxlY3RPcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzEoczMsIHMxMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXBsdXJhbFJ1bGVTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYxKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjNzI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNzMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VudW1iZXIoKTtcbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckcGFyc2VhcmdOYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VzZWxlY3RPcHRpb24oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczc7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlXygpO1xuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlYXJnTmFtZSgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNzQoczIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3NShzMiwgczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwbHVyYWxPcHRpb24oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczc7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlXygpO1xuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlcGx1cmFsUnVsZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMyMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM3NihzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlbWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzc3KHMyLCBzNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXdoaXRlU3BhY2UoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM3OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzc4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZV8oKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlcigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjODY7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VhcmdOdW1iZXIoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4OChzMSwgczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXBvc3Ryb3BoZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM5MSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzkxO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzkzKCk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzQ4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlZXNjYXBlZENoYXIoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM5MSkge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjOTE7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGM1MC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM5MTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5Mik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGM1MC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyaW5nKHMzLCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzQ4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzk0KHMyLCBzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczMgPSBwZWckYzk1KHMyKTtcbiAgICAgICAgICAgIGlmIChzMykge1xuICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMCkge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM5NjtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5Nyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vlc2NhcGVkQ2hhcigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMzID0gcGVnJGM5OChzMik7XG4gICAgICAgICAgICBpZiAoczMpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VhcmdOdW1iZXIoKTtcbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZWFyZ05hbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzk5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXZhbGlkVGFnKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VhcmdOdW1iZXIoKTtcbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRwYXJzZXRhZ05hbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VhcmdOdW1iZXIoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ4KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTAyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMDQoKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKHBlZyRjMTA1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTA2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzEwNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMTA3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEwOShzMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VhcmdOYW1lKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXRhZ05hbWUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IFtdO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjODY7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckYzg2O1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTExKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIHZhciBtZXNzYWdlQ3R4ID0gWydyb290J107XG4gICAgZnVuY3Rpb24gaXNOZXN0ZWRNZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VDdHgubGVuZ3RoID4gMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNJblBsdXJhbE9wdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VDdHhbbWVzc2FnZUN0eC5sZW5ndGggLSAxXSA9PT0gJ3BsdXJhbCc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluc2VydExvY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmNhcHR1cmVMb2NhdGlvbiA/IHtcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbigpXG4gICAgICAgIH0gOiB7fTtcbiAgICB9XG4gICAgdmFyIGlnbm9yZVRhZyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5pZ25vcmVUYWc7XG4gICAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihwZWckbWF4RmFpbEV4cGVjdGVkLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aFxuICAgICAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKSk7XG4gICAgfVxufVxuZXhwb3J0cy5wZWdQYXJzZSA9IHBlZyRwYXJzZTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXlzID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5cykgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcbiAgICByZXR1cm4gcjtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xudmFyIHBhcnNlcl8xID0gcmVxdWlyZShcIi4vcGFyc2VyXCIpO1xudmFyIFBMVVJBTF9IQVNIVEFHX1JFR0VYID0gLyhefFteXFxcXF0pIy9nO1xuLyoqXG4gKiBXaGV0aGVyIHRvIGNvbnZlcnQgYCNgIGluIHBsdXJhbCBydWxlIG9wdGlvbnNcbiAqIHRvIGB7dmFyLCBudW1iZXJ9YFxuICogQHBhcmFtIGVsIEFTVCBFbGVtZW50XG4gKiBAcGFyYW0gcGx1cmFsU3RhY2sgY3VycmVudCBwbHVyYWwgc3RhY2tcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKGVscykge1xuICAgIGVscy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAvLyBJZiB3ZSdyZSBlbmNvdW50ZXJpbmcgYSBwbHVyYWwgZWxcbiAgICAgICAgaWYgKCF0eXBlc18xLmlzUGx1cmFsRWxlbWVudChlbCkgJiYgIXR5cGVzXzEuaXNTZWxlY3RFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdvIGRvd24gdGhlIG9wdGlvbnMgYW5kIHNlYXJjaCBmb3IgIyBpbiBhbnkgbGl0ZXJhbCBlbGVtZW50XG4gICAgICAgIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tpZF07XG4gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgYSBtYXRjaCwgd2UgaGF2ZSB0byBzcGxpdCB0aGlzXG4gICAgICAgICAgICAvLyBhbmQgaW5qZWN0IGEgTnVtYmVyRWxlbWVudCBpbiB0aGUgbWlkZGxlXG4gICAgICAgICAgICB2YXIgbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCA9IC0xO1xuICAgICAgICAgICAgdmFyIGxpdGVyYWxFbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsXzEgPSBvcHQudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVzXzEuaXNMaXRlcmFsRWxlbWVudChlbF8xKSAmJiBQTFVSQUxfSEFTSFRBR19SRUdFWC50ZXN0KGVsXzEudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nTGl0ZXJhbEVsSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBsaXRlcmFsRWwgPSBlbF8xO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGl0ZXJhbEVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZhbHVlID0gbGl0ZXJhbEVsLnZhbHVlLnJlcGxhY2UoUExVUkFMX0hBU0hUQUdfUkVHRVgsIFwiJDF7XCIgKyBlbC52YWx1ZSArIFwiLCBudW1iZXJ9XCIpO1xuICAgICAgICAgICAgICAgIHZhciBuZXdFbHMgPSBwYXJzZXJfMS5wZWdQYXJzZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgKF9hID0gb3B0LnZhbHVlKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXlzKFttYXRjaGluZ0xpdGVyYWxFbEluZGV4LCAxXSwgbmV3RWxzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub3JtYWxpemVIYXNodGFnSW5QbHVyYWwob3B0LnZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5leHBvcnRzLm5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbCA9IG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbDtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogaHR0cHM6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9jYXJpZHkvaW50bC1kYXRldGltZWZvcm1hdC1wYXR0ZXJuL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gKiB3aXRoIHNvbWUgdHdlYWtzXG4gKi9cbnZhciBEQVRFX1RJTUVfUkVHRVggPSAvKD86W0VlY117MSw2fXxHezEsNX18W1FxXXsxLDV9fCg/Olt5WXVyXSt8VXsxLDV9KXxbTUxdezEsNX18ZHsxLDJ9fER7MSwzfXxGezF9fFthYkJdezEsNX18W2hrSEtdezEsMn18d3sxLDJ9fFd7MX18bXsxLDJ9fHN7MSwyfXxbelpPdlZ4WF17MSw0fSkoPz0oW14nXSonW14nXSonKSpbXiddKiQpL2c7XG4vKipcbiAqIFBhcnNlIERhdGUgdGltZSBza2VsZXRvbiBpbnRvIEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gKiBSZWY6IGh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogQHB1YmxpY1xuICogQHBhcmFtIHNrZWxldG9uIHNrZWxldG9uIHN0cmluZ1xuICovXG5mdW5jdGlvbiBwYXJzZURhdGVUaW1lU2tlbGV0b24oc2tlbGV0b24pIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgc2tlbGV0b24ucmVwbGFjZShEQVRFX1RJTUVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICB2YXIgbGVuID0gbWF0Y2gubGVuZ3RoO1xuICAgICAgICBzd2l0Y2ggKG1hdGNoWzBdKSB7XG4gICAgICAgICAgICAvLyBFcmFcbiAgICAgICAgICAgIGNhc2UgJ0cnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5lcmEgPSBsZW4gPT09IDQgPyAnbG9uZycgOiBsZW4gPT09IDUgPyAnbmFycm93JyA6ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBZZWFyXG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQueWVhciA9IGxlbiA9PT0gMiA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgICAgY2FzZSAndSc6XG4gICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWS91L1UvcmAgKHllYXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHlgIGluc3RlYWQnKTtcbiAgICAgICAgICAgIC8vIFF1YXJ0ZXJcbiAgICAgICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BxL1FgIChxdWFydGVyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgLy8gTW9udGhcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm1vbnRoID0gWydudW1lcmljJywgJzItZGlnaXQnLCAnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFdlZWtcbiAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2B3L1dgICh3ZWVrKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRheSA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgIGNhc2UgJ0YnOlxuICAgICAgICAgICAgY2FzZSAnZyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BEL0YvZ2AgKGRheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgZGAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gV2Vla2RheVxuICAgICAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBsZW4gPT09IDQgPyAnc2hvcnQnIDogbGVuID09PSA1ID8gJ25hcnJvdycgOiAnc2hvcnQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BlLi5lZWVgICh3ZWVrZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQud2Vla2RheSA9IFsnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnLCAnc2hvcnQnXVtsZW4gLSA0XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgIGlmIChsZW4gPCA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgYy4uY2NjYCAod2Vla2RheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBbJ3Nob3J0JywgJ2xvbmcnLCAnbmFycm93JywgJ3Nob3J0J11bbGVuIC0gNF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBQZXJpb2RcbiAgICAgICAgICAgIGNhc2UgJ2EnOiAvLyBBTSwgUE1cbiAgICAgICAgICAgICAgICByZXN1bHQuaG91cjEyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2InOiAvLyBhbSwgcG0sIG5vb24sIG1pZG5pZ2h0XG4gICAgICAgICAgICBjYXNlICdCJzogLy8gZmxleGlibGUgZGF5IHBlcmlvZHNcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGIvQmAgKHBlcmlvZCkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgYWAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gSG91clxuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMTInO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDIzJztcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ciA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ckN5Y2xlID0gJ2gxMSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMjQnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgY2FzZSAnSic6XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGovSi9DYCAoaG91cikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgaC9IL0sva2AgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gTWludXRlXG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubWludXRlID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFNlY29uZFxuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNlY29uZCA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgUy9BYCAoc2Vjb25kKSBwYXR0ZW5ycyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBzYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBab25lXG4gICAgICAgICAgICBjYXNlICd6JzogLy8gMS4uMywgNDogc3BlY2lmaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgICAgIHJlc3VsdC50aW1lWm9uZU5hbWUgPSBsZW4gPCA0ID8gJ3Nob3J0JyA6ICdsb25nJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1onOiAvLyAxLi4zLCA0LCA1OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgY2FzZSAnTyc6IC8vIDEsIDQ6IG1pbGlzZWNvbmRzIGluIGRheSBzaG9ydCwgbG9uZ1xuICAgICAgICAgICAgY2FzZSAndic6IC8vIDEsIDQ6IGdlbmVyaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgY2FzZSAnVic6IC8vIDEsIDIsIDMsIDQ6IHRpbWUgem9uZSBJRCBvciBjaXR5XG4gICAgICAgICAgICBjYXNlICdYJzogLy8gMSwgMiwgMywgNDogVGhlIElTTzg2MDEgdmFyaW9zIGZvcm1hdHNcbiAgICAgICAgICAgIGNhc2UgJ3gnOiAvLyAxLCAyLCAzLCA0OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWi9PL3YvVi9YL3hgICh0aW1lWm9uZSkgcGF0dGVucnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgemAgaW5zdGVhZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5wYXJzZURhdGVUaW1lU2tlbGV0b24gPSBwYXJzZURhdGVUaW1lU2tlbGV0b247XG5mdW5jdGlvbiBpY3VVbml0VG9FY21hKHVuaXQpIHtcbiAgICByZXR1cm4gdW5pdC5yZXBsYWNlKC9eKC4qPyktLywgJycpO1xufVxudmFyIEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWCA9IC9eXFwuKD86KDArKShcXCopP3woIyspfCgwKykoIyspKSQvZztcbnZhciBTSUdOSUZJQ0FOVF9QUkVDSVNJT05fUkVHRVggPSAvXihAKyk/KFxcK3wjKyk/JC9nO1xuZnVuY3Rpb24gcGFyc2VTaWduaWZpY2FudFByZWNpc2lvbihzdHIpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgc3RyLnJlcGxhY2UoU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYLCBmdW5jdGlvbiAoXywgZzEsIGcyKSB7XG4gICAgICAgIC8vIEBAQCBjYXNlXG4gICAgICAgIGlmICh0eXBlb2YgZzIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXN1bHQubWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyBAQEArIGNhc2VcbiAgICAgICAgZWxzZSBpZiAoZzIgPT09ICcrJykge1xuICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyAuIyMjIGNhc2VcbiAgICAgICAgZWxzZSBpZiAoZzFbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyAuQEAjIyBvciAuQEBAIGNhc2VcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQubWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9XG4gICAgICAgICAgICAgICAgZzEubGVuZ3RoICsgKHR5cGVvZiBnMiA9PT0gJ3N0cmluZycgPyBnMi5sZW5ndGggOiAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIHBhcnNlU2lnbihzdHIpIHtcbiAgICBzd2l0Y2ggKHN0cikge1xuICAgICAgICBjYXNlICdzaWduLWF1dG8nOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2F1dG8nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWFsd2F5cyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnYWx3YXlzJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tYWNjb3VudGluZy1hbHdheXMnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWV4Y2VwdC16ZXJvJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdleGNlcHRaZXJvJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tYWNjb3VudGluZy1leGNlcHQtemVybyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnZXhjZXB0WmVybycsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLW5ldmVyJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICduZXZlcicsXG4gICAgICAgICAgICB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIHBhcnNlTm90YXRpb25PcHRpb25zKG9wdCkge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICB2YXIgc2lnbk9wdHMgPSBwYXJzZVNpZ24ob3B0KTtcbiAgICBpZiAoc2lnbk9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHNpZ25PcHRzO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNza2VsZXRvbi1zdGVtcy1hbmQtb3B0aW9uc1xuICovXG5mdW5jdGlvbiBjb252ZXJ0TnVtYmVyU2tlbGV0b25Ub051bWJlckZvcm1hdE9wdGlvbnModG9rZW5zKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMCwgdG9rZW5zXzEgPSB0b2tlbnM7IF9pIDwgdG9rZW5zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IHRva2Vuc18xW19pXTtcbiAgICAgICAgc3dpdGNoICh0b2tlbi5zdGVtKSB7XG4gICAgICAgICAgICBjYXNlICdwZXJjZW50JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAncGVyY2VudCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlID0gJ2N1cnJlbmN5JztcbiAgICAgICAgICAgICAgICByZXN1bHQuY3VycmVuY3kgPSB0b2tlbi5vcHRpb25zWzBdO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnZ3JvdXAtb2ZmJzpcbiAgICAgICAgICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZWNpc2lvbi1pbnRlZ2VyJzpcbiAgICAgICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnbWVhc3VyZS11bml0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAndW5pdCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXQgPSBpY3VVbml0VG9FY21hKHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnY29tcGFjdC1zaG9ydCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wYWN0RGlzcGxheSA9ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdjb21wYWN0LWxvbmcnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ub3RhdGlvbiA9ICdjb21wYWN0JztcbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGFjdERpc3BsYXkgPSAnbG9uZyc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdzY2llbnRpZmljJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgeyBub3RhdGlvbjogJ3NjaWVudGlmaWMnIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYWxsKSwgcGFyc2VOb3RhdGlvbk9wdGlvbnMob3B0KSkpOyB9LCB7fSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnZW5naW5lZXJpbmcnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IG5vdGF0aW9uOiAnZW5naW5lZXJpbmcnIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYWxsKSwgcGFyc2VOb3RhdGlvbk9wdGlvbnMob3B0KSkpOyB9LCB7fSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnbm90YXRpb24tc2ltcGxlJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubm90YXRpb24gPSAnc3RhbmRhcmQnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9pY3U0Yy9zb3VyY2UvaTE4bi91bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaFxuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1uYXJyb3cnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnbmFycm93U3ltYm9sJztcbiAgICAgICAgICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnbmFycm93JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtc2hvcnQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnY29kZSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXREaXNwbGF5ID0gJ3Nob3J0JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtZnVsbC1uYW1lJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuY3VycmVuY3lEaXNwbGF5ID0gJ25hbWUnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC51bml0RGlzcGxheSA9ICdsb25nJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtaXNvLWNvZGUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnc3ltYm9sJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmVjaXNpb25cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjZnJhY3Rpb24tcHJlY2lzaW9uXG4gICAgICAgIC8vIHByZWNpc2lvbi1pbnRlZ2VyIGNhc2VcbiAgICAgICAgaWYgKEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWC50ZXN0KHRva2VuLnN0ZW0pKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4ub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ZyYWN0aW9uLXByZWNpc2lvbiBzdGVtcyBvbmx5IGFjY2VwdCBhIHNpbmdsZSBvcHRpb25hbCBvcHRpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2VuLnN0ZW0ucmVwbGFjZShGUkFDVElPTl9QUkVDSVNJT05fUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIsIGczLCBnNCwgZzUpIHtcbiAgICAgICAgICAgICAgICAvLyAuMDAwKiBjYXNlIChiZWZvcmUgSUNVNjcgaXQgd2FzIC4wMDArKVxuICAgICAgICAgICAgICAgIGlmIChnMiA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIC4jIyMgY2FzZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGczICYmIGczWzBdID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGczLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gLjAwIyMgY2FzZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGc0ICYmIGc1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGggKyBnNS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHRva2VuLm9wdGlvbnNbMF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChTSUdOSUZJQ0FOVF9QUkVDSVNJT05fUkVHRVgudGVzdCh0b2tlbi5zdGVtKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24odG9rZW4uc3RlbSkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNpZ25PcHRzID0gcGFyc2VTaWduKHRva2VuLnN0ZW0pO1xuICAgICAgICBpZiAoc2lnbk9wdHMpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCBzaWduT3B0cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMuY29udmVydE51bWJlclNrZWxldG9uVG9OdW1iZXJGb3JtYXRPcHRpb25zID0gY29udmVydE51bWJlclNrZWxldG9uVG9OdW1iZXJGb3JtYXRPcHRpb25zO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHBhcnNlcl8xID0gcmVxdWlyZShcIi4vc3JjL3BhcnNlclwiKTtcbnZhciBub3JtYWxpemVfMSA9IHJlcXVpcmUoXCIuL3NyYy9ub3JtYWxpemVcIik7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvdHlwZXNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL3BhcnNlclwiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvc2tlbGV0b25cIikpO1xuZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdHMpIHtcbiAgICB2YXIgZWxzID0gcGFyc2VyXzEucGVnUGFyc2UoaW5wdXQsIG9wdHMpO1xuICAgIGlmICghb3B0cyB8fCBvcHRzLm5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgbm9ybWFsaXplXzEubm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKGVscyk7XG4gICAgfVxuICAgIHJldHVybiBlbHM7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbnZhciBfX3NwcmVhZEFycmF5cyA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheXMpIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxuICAgICAgICAgICAgcltrXSA9IGFbal07XG4gICAgcmV0dXJuIHI7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gLS0gVXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGdldENhY2hlSWQoaW5wdXRzKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0cy5tYXAoZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnID8gb3JkZXJlZFByb3BzKGlucHV0KSA6IGlucHV0O1xuICAgIH0pKTtcbn1cbmZ1bmN0aW9uIG9yZGVyZWRQcm9wcyhvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAuc29ydCgpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0ge30sIF9hW2tdID0gb2JqW2tdLCBfYSk7XG4gICAgfSk7XG59XG52YXIgbWVtb2l6ZUZvcm1hdENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKEZvcm1hdENvbnN0cnVjdG9yLCBjYWNoZSkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7IGNhY2hlID0ge307IH1cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhY2hlSWQgPSBnZXRDYWNoZUlkKGFyZ3MpO1xuICAgICAgICB2YXIgZm9ybWF0ID0gY2FjaGVJZCAmJiBjYWNoZVtjYWNoZUlkXTtcbiAgICAgICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IG5ldyAoKF9hID0gRm9ybWF0Q29uc3RydWN0b3IpLmJpbmQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXlzKFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgICAgICAgICBpZiAoY2FjaGVJZCkge1xuICAgICAgICAgICAgICAgIGNhY2hlW2NhY2hlSWRdID0gZm9ybWF0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBtZW1vaXplRm9ybWF0Q29uc3RydWN0b3I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEVycm9yQ29kZTtcbihmdW5jdGlvbiAoRXJyb3JDb2RlKSB7XG4gICAgLy8gV2hlbiB3ZSBoYXZlIGEgcGxhY2Vob2xkZXIgYnV0IG5vIHZhbHVlIHRvIGZvcm1hdFxuICAgIEVycm9yQ29kZVtcIk1JU1NJTkdfVkFMVUVcIl0gPSBcIk1JU1NJTkdfVkFMVUVcIjtcbiAgICAvLyBXaGVuIHZhbHVlIHN1cHBsaWVkIGlzIGludmFsaWRcbiAgICBFcnJvckNvZGVbXCJJTlZBTElEX1ZBTFVFXCJdID0gXCJJTlZBTElEX1ZBTFVFXCI7XG4gICAgLy8gV2hlbiB3ZSBuZWVkIHNwZWNpZmljIEludGwgQVBJIGJ1dCBpdCdzIG5vdCBhdmFpbGFibGVcbiAgICBFcnJvckNvZGVbXCJNSVNTSU5HX0lOVExfQVBJXCJdID0gXCJNSVNTSU5HX0lOVExfQVBJXCI7XG59KShFcnJvckNvZGUgPSBleHBvcnRzLkVycm9yQ29kZSB8fCAoZXhwb3J0cy5FcnJvckNvZGUgPSB7fSkpO1xudmFyIEZvcm1hdEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhGb3JtYXRFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBGb3JtYXRFcnJvcihtc2csIGNvZGUsIG9yaWdpbmFsTWVzc2FnZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtc2cpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmNvZGUgPSBjb2RlO1xuICAgICAgICBfdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBvcmlnaW5hbE1lc3NhZ2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRm9ybWF0RXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCJbZm9ybWF0anMgRXJyb3I6IFwiICsgdGhpcy5jb2RlICsgXCJdIFwiICsgdGhpcy5tZXNzYWdlO1xuICAgIH07XG4gICAgcmV0dXJuIEZvcm1hdEVycm9yO1xufShFcnJvcikpO1xuZXhwb3J0cy5Gb3JtYXRFcnJvciA9IEZvcm1hdEVycm9yO1xudmFyIEludmFsaWRWYWx1ZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkVmFsdWVFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbnZhbGlkVmFsdWVFcnJvcih2YXJpYWJsZUlkLCB2YWx1ZSwgb3B0aW9ucywgb3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBcIkludmFsaWQgdmFsdWVzIGZvciBcXFwiXCIgKyB2YXJpYWJsZUlkICsgXCJcXFwiOiBcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIi4gT3B0aW9ucyBhcmUgXFxcIlwiICsgT2JqZWN0LmtleXMob3B0aW9ucykuam9pbignXCIsIFwiJykgKyBcIlxcXCJcIiwgXCJJTlZBTElEX1ZBTFVFXCIgLyogSU5WQUxJRF9WQUxVRSAqLywgb3JpZ2luYWxNZXNzYWdlKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gSW52YWxpZFZhbHVlRXJyb3I7XG59KEZvcm1hdEVycm9yKSk7XG5leHBvcnRzLkludmFsaWRWYWx1ZUVycm9yID0gSW52YWxpZFZhbHVlRXJyb3I7XG52YXIgSW52YWxpZFZhbHVlVHlwZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkVmFsdWVUeXBlRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW52YWxpZFZhbHVlVHlwZUVycm9yKHZhbHVlLCB0eXBlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVmFsdWUgZm9yIFxcXCJcIiArIHZhbHVlICsgXCJcXFwiIG11c3QgYmUgb2YgdHlwZSBcIiArIHR5cGUsIFwiSU5WQUxJRF9WQUxVRVwiIC8qIElOVkFMSURfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEludmFsaWRWYWx1ZVR5cGVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydHMuSW52YWxpZFZhbHVlVHlwZUVycm9yID0gSW52YWxpZFZhbHVlVHlwZUVycm9yO1xudmFyIE1pc3NpbmdWYWx1ZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nVmFsdWVFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNaXNzaW5nVmFsdWVFcnJvcih2YXJpYWJsZUlkLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVGhlIGludGwgc3RyaW5nIGNvbnRleHQgdmFyaWFibGUgXFxcIlwiICsgdmFyaWFibGVJZCArIFwiXFxcIiB3YXMgbm90IHByb3ZpZGVkIHRvIHRoZSBzdHJpbmcgXFxcIlwiICsgb3JpZ2luYWxNZXNzYWdlICsgXCJcXFwiXCIsIFwiTUlTU0lOR19WQUxVRVwiIC8qIE1JU1NJTkdfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIE1pc3NpbmdWYWx1ZUVycm9yO1xufShGb3JtYXRFcnJvcikpO1xuZXhwb3J0cy5NaXNzaW5nVmFsdWVFcnJvciA9IE1pc3NpbmdWYWx1ZUVycm9yO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xID0gcmVxdWlyZShcImludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXJcIik7XG52YXIgZXJyb3JfMSA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xudmFyIFBBUlRfVFlQRTtcbihmdW5jdGlvbiAoUEFSVF9UWVBFKSB7XG4gICAgUEFSVF9UWVBFW1BBUlRfVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIFBBUlRfVFlQRVtQQVJUX1RZUEVbXCJvYmplY3RcIl0gPSAxXSA9IFwib2JqZWN0XCI7XG59KShQQVJUX1RZUEUgPSBleHBvcnRzLlBBUlRfVFlQRSB8fCAoZXhwb3J0cy5QQVJUX1RZUEUgPSB7fSkpO1xuZnVuY3Rpb24gbWVyZ2VMaXRlcmFsKHBhcnRzKSB7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIHBhcnQpIHtcbiAgICAgICAgdmFyIGxhc3RQYXJ0ID0gYWxsW2FsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCFsYXN0UGFydCB8fFxuICAgICAgICAgICAgbGFzdFBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovIHx8XG4gICAgICAgICAgICBwYXJ0LnR5cGUgIT09IDAgLyogbGl0ZXJhbCAqLykge1xuICAgICAgICAgICAgYWxsLnB1c2gocGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsYXN0UGFydC52YWx1ZSArPSBwYXJ0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwgW10pO1xufVxuZnVuY3Rpb24gaXNGb3JtYXRYTUxFbGVtZW50Rm4oZWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIGVsID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Zvcm1hdFhNTEVsZW1lbnRGbiA9IGlzRm9ybWF0WE1MRWxlbWVudEZuO1xuLy8gVE9ETyhza2VsZXRvbik6IGFkZCBza2VsZXRvbiBzdXBwb3J0XG5mdW5jdGlvbiBmb3JtYXRUb1BhcnRzKGVscywgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCBjdXJyZW50UGx1cmFsVmFsdWUsIFxuLy8gRm9yIGRlYnVnZ2luZ1xub3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgLy8gSG90IHBhdGggZm9yIHN0cmFpZ2h0IHNpbXBsZSBtc2cgdHJhbnNsYXRpb25zXG4gICAgaWYgKGVscy5sZW5ndGggPT09IDEgJiYgaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzTGl0ZXJhbEVsZW1lbnQoZWxzWzBdKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZWxzWzBdLnZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMCwgZWxzXzEgPSBlbHM7IF9pIDwgZWxzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlbCA9IGVsc18xW19pXTtcbiAgICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5nIHBhcnRzLlxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzTGl0ZXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlbC52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVE9ETzogc2hvdWxkIHRoaXMgcGFydCBiZSBsaXRlcmFsIHR5cGU/XG4gICAgICAgIC8vIFJlcGxhY2UgYCNgIGluIHBsdXJhbCBydWxlcyB3aXRoIHRoZSBhY3R1YWwgbnVtZXJpYyB2YWx1ZS5cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc1BvdW5kRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFBsdXJhbFZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVycy5nZXROdW1iZXJGb3JtYXQobG9jYWxlcykuZm9ybWF0KGN1cnJlbnRQbHVyYWxWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFyTmFtZSA9IGVsLnZhbHVlO1xuICAgICAgICAvLyBFbmZvcmNlIHRoYXQgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGNhbGxlci5cbiAgICAgICAgaWYgKCEodmFsdWVzICYmIHZhck5hbWUgaW4gdmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yXzEuTWlzc2luZ1ZhbHVlRXJyb3IodmFyTmFtZSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsdWUgPSB2YWx1ZXNbdmFyTmFtZV07XG4gICAgICAgIGlmIChpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNBcmd1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbHVlID1cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IDAgLyogbGl0ZXJhbCAqLyA6IDEgLyogb2JqZWN0ICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZm9ybWF0IHBsdXJhbCBhbmQgc2VsZWN0IHBhcnRzJyBvcHRpb24g4oCUIHdoaWNoIGNhbiBiZSBhXG4gICAgICAgIC8vIG5lc3RlZCBwYXR0ZXJuIHN0cnVjdHVyZS4gVGhlIGNob29zaW5nIG9mIHRoZSBvcHRpb24gdG8gdXNlIGlzXG4gICAgICAgIC8vIGFic3RyYWN0ZWQtYnkgYW5kIGRlbGVnYXRlZC10byB0aGUgcGFydCBoZWxwZXIgb2JqZWN0LlxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzRGF0ZUVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLmRhdGVbZWwuc3R5bGVdXG4gICAgICAgICAgICAgICAgOiBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNEYXRlVGltZVNrZWxldG9uKGVsLnN0eWxlKVxuICAgICAgICAgICAgICAgICAgICA/IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5wYXJzZURhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUucGF0dGVybilcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5nZXREYXRlVGltZUZvcm1hdChsb2NhbGVzLCBzdHlsZSlcbiAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNUaW1lRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHR5cGVvZiBlbC5zdHlsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IGZvcm1hdHMudGltZVtlbC5zdHlsZV1cbiAgICAgICAgICAgICAgICA6IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLnBhcnNlRGF0ZVRpbWVTa2VsZXRvbihlbC5zdHlsZS5wYXR0ZXJuKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc051bWJlckVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLm51bWJlcltlbC5zdHlsZV1cbiAgICAgICAgICAgICAgICA6IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc051bWJlclNrZWxldG9uKGVsLnN0eWxlKVxuICAgICAgICAgICAgICAgICAgICA/IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5jb252ZXJ0TnVtYmVyU2tlbGV0b25Ub051bWJlckZvcm1hdE9wdGlvbnMoZWwuc3R5bGUudG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldE51bWJlckZvcm1hdChsb2NhbGVzLCBzdHlsZSlcbiAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh2YWx1ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNUYWdFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGRyZW4sIHZhbHVlXzEgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtYXRGbiA9IHZhbHVlc1t2YWx1ZV8xXTtcbiAgICAgICAgICAgIGlmICghaXNGb3JtYXRYTUxFbGVtZW50Rm4oZm9ybWF0Rm4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yXzEuSW52YWxpZFZhbHVlVHlwZUVycm9yKHZhbHVlXzEsICdmdW5jdGlvbicsIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcGFydHMgPSBmb3JtYXRUb1BhcnRzKGNoaWxkcmVuLCBsb2NhbGVzLCBmb3JtYXR0ZXJzLCBmb3JtYXRzLCB2YWx1ZXMsIGN1cnJlbnRQbHVyYWxWYWx1ZSk7XG4gICAgICAgICAgICB2YXIgY2h1bmtzID0gZm9ybWF0Rm4ocGFydHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLnZhbHVlOyB9KSk7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2h1bmtzKSkge1xuICAgICAgICAgICAgICAgIGNodW5rcyA9IFtjaHVua3NdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBjaHVua3MubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZW9mIGMgPT09ICdzdHJpbmcnID8gMCAvKiBsaXRlcmFsICovIDogMSAvKiBvYmplY3QgKi8sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc1NlbGVjdEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1t2YWx1ZV0gfHwgZWwub3B0aW9ucy5vdGhlcjtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yXzEuSW52YWxpZFZhbHVlRXJyb3IoZWwudmFsdWUsIHZhbHVlLCBPYmplY3Qua2V5cyhlbC5vcHRpb25zKSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgZm9ybWF0VG9QYXJ0cyhvcHQudmFsdWUsIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcykpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc1BsdXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tcIj1cIiArIHZhbHVlXTtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJbnRsLlBsdXJhbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBlcnJvcl8xLkZvcm1hdEVycm9yKFwiSW50bC5QbHVyYWxSdWxlcyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuXFxuVHJ5IHBvbHlmaWxsaW5nIGl0IHVzaW5nIFxcXCJAZm9ybWF0anMvaW50bC1wbHVyYWxydWxlc1xcXCJcXG5cIiwgXCJNSVNTSU5HX0lOVExfQVBJXCIgLyogTUlTU0lOR19JTlRMX0FQSSAqLywgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHJ1bGUgPSBmb3JtYXR0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5nZXRQbHVyYWxSdWxlcyhsb2NhbGVzLCB7IHR5cGU6IGVsLnBsdXJhbFR5cGUgfSlcbiAgICAgICAgICAgICAgICAgICAgLnNlbGVjdCh2YWx1ZSAtIChlbC5vZmZzZXQgfHwgMCkpO1xuICAgICAgICAgICAgICAgIG9wdCA9IGVsLm9wdGlvbnNbcnVsZV0gfHwgZWwub3B0aW9ucy5vdGhlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yXzEuSW52YWxpZFZhbHVlRXJyb3IoZWwudmFsdWUsIHZhbHVlLCBPYmplY3Qua2V5cyhlbC5vcHRpb25zKSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgZm9ybWF0VG9QYXJ0cyhvcHQudmFsdWUsIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcywgdmFsdWUgLSAoZWwub2Zmc2V0IHx8IDApKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VMaXRlcmFsKHJlc3VsdCk7XG59XG5leHBvcnRzLmZvcm1hdFRvUGFydHMgPSBmb3JtYXRUb1BhcnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuQ29weXJpZ2h0IChjKSAyMDE0LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiovXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMSA9IHJlcXVpcmUoXCJpbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyXCIpO1xudmFyIGludGxfZm9ybWF0X2NhY2hlXzEgPSByZXF1aXJlKFwiaW50bC1mb3JtYXQtY2FjaGVcIik7XG52YXIgZm9ybWF0dGVyc18xID0gcmVxdWlyZShcIi4vZm9ybWF0dGVyc1wiKTtcbi8vIC0tIE1lc3NhZ2VGb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnKGMxLCBjMikge1xuICAgIGlmICghYzIpIHtcbiAgICAgICAgcmV0dXJuIGMxO1xuICAgIH1cbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIChjMSB8fCB7fSkpLCAoYzIgfHwge30pKSwgT2JqZWN0LmtleXMoYzEpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjMVtrXSksIChjMltrXSB8fCB7fSkpO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIHt9KSk7XG59XG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoZGVmYXVsdENvbmZpZywgY29uZmlncykge1xuICAgIGlmICghY29uZmlncykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdENvbmZpZztcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmF1bHRDb25maWcpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWdba10sIGNvbmZpZ3Nba10pO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIF9fYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0Rm9ybWF0dGVycyhjYWNoZSkge1xuICAgIGlmIChjYWNoZSA9PT0gdm9pZCAwKSB7IGNhY2hlID0ge1xuICAgICAgICBudW1iZXI6IHt9LFxuICAgICAgICBkYXRlVGltZToge30sXG4gICAgICAgIHBsdXJhbFJ1bGVzOiB7fSxcbiAgICB9OyB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0TnVtYmVyRm9ybWF0OiBpbnRsX2Zvcm1hdF9jYWNoZV8xLmRlZmF1bHQoSW50bC5OdW1iZXJGb3JtYXQsIGNhY2hlLm51bWJlciksXG4gICAgICAgIGdldERhdGVUaW1lRm9ybWF0OiBpbnRsX2Zvcm1hdF9jYWNoZV8xLmRlZmF1bHQoSW50bC5EYXRlVGltZUZvcm1hdCwgY2FjaGUuZGF0ZVRpbWUpLFxuICAgICAgICBnZXRQbHVyYWxSdWxlczogaW50bF9mb3JtYXRfY2FjaGVfMS5kZWZhdWx0KEludGwuUGx1cmFsUnVsZXMsIGNhY2hlLnBsdXJhbFJ1bGVzKSxcbiAgICB9O1xufVxuZXhwb3J0cy5jcmVhdGVEZWZhdWx0Rm9ybWF0dGVycyA9IGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzO1xudmFyIEludGxNZXNzYWdlRm9ybWF0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEludGxNZXNzYWdlRm9ybWF0KG1lc3NhZ2UsIGxvY2FsZXMsIG92ZXJyaWRlRm9ybWF0cywgb3B0cykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAobG9jYWxlcyA9PT0gdm9pZCAwKSB7IGxvY2FsZXMgPSBJbnRsTWVzc2FnZUZvcm1hdC5kZWZhdWx0TG9jYWxlOyB9XG4gICAgICAgIHRoaXMuZm9ybWF0dGVyQ2FjaGUgPSB7XG4gICAgICAgICAgICBudW1iZXI6IHt9LFxuICAgICAgICAgICAgZGF0ZVRpbWU6IHt9LFxuICAgICAgICAgICAgcGx1cmFsUnVsZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1hdCA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhciBwYXJ0cyA9IF90aGlzLmZvcm1hdFRvUGFydHModmFsdWVzKTtcbiAgICAgICAgICAgIC8vIEhvdCBwYXRoIGZvciBzdHJhaWdodCBzaW1wbGUgbXNnIHRyYW5zbGF0aW9uc1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0c1swXS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBwYXJ0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgcGFydCkge1xuICAgICAgICAgICAgICAgIGlmICghYWxsLmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgICAgICBwYXJ0LnR5cGUgIT09IDAgLyogbGl0ZXJhbCAqLyB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYWxsW2FsbC5sZW5ndGggLSAxXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsLnB1c2gocGFydC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbGxbYWxsLmxlbmd0aCAtIDFdICs9IHBhcnQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhbGw7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFswXSB8fCAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0VG9QYXJ0cyA9IGZ1bmN0aW9uICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZXJzXzEuZm9ybWF0VG9QYXJ0cyhfdGhpcy5hc3QsIF90aGlzLmxvY2FsZXMsIF90aGlzLmZvcm1hdHRlcnMsIF90aGlzLmZvcm1hdHMsIHZhbHVlcywgdW5kZWZpbmVkLCBfdGhpcy5tZXNzYWdlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNvbHZlZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgbG9jYWxlOiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoX3RoaXMubG9jYWxlcylbMF0sXG4gICAgICAgIH0pOyB9O1xuICAgICAgICB0aGlzLmdldEFzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLmFzdDsgfTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgICAgIGlmICghSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UgbXVzdCBiZSBzZXQgdG8gcHJvY2VzcyBgbWVzc2FnZWAgb2YgdHlwZSBgc3RyaW5nYCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGFyc2Ugc3RyaW5nIG1lc3NhZ2VzIGludG8gYW4gQVNULlxuICAgICAgICAgICAgdGhpcy5hc3QgPSBJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlKG1lc3NhZ2UsIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVIYXNodGFnSW5QbHVyYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlnbm9yZVRhZzogb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLmlnbm9yZVRhZyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3QgPSBtZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmFzdCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0EgbWVzc2FnZSBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgU3RyaW5nIG9yIEFTVC4nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDcmVhdGVzIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgYGZvcm1hdHNgIG1lcmdlZCB3aXRoIHRoZSBkZWZhdWx0XG4gICAgICAgIC8vIGZvcm1hdHMuXG4gICAgICAgIHRoaXMuZm9ybWF0cyA9IG1lcmdlQ29uZmlncyhJbnRsTWVzc2FnZUZvcm1hdC5mb3JtYXRzLCBvdmVycmlkZUZvcm1hdHMpO1xuICAgICAgICAvLyBEZWZpbmVkIGZpcnN0IGJlY2F1c2UgaXQncyB1c2VkIHRvIGJ1aWxkIHRoZSBmb3JtYXQgcGF0dGVybi5cbiAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcbiAgICAgICAgdGhpcy5mb3JtYXR0ZXJzID1cbiAgICAgICAgICAgIChvcHRzICYmIG9wdHMuZm9ybWF0dGVycykgfHwgY3JlYXRlRGVmYXVsdEZvcm1hdHRlcnModGhpcy5mb3JtYXR0ZXJDYWNoZSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRsTWVzc2FnZUZvcm1hdCwgXCJkZWZhdWx0TG9jYWxlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Lm1lbW9pemVkRGVmYXVsdExvY2FsZSkge1xuICAgICAgICAgICAgICAgIEludGxNZXNzYWdlRm9ybWF0Lm1lbW9pemVkRGVmYXVsdExvY2FsZSA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEludGxNZXNzYWdlRm9ybWF0Lm1lbW9pemVkRGVmYXVsdExvY2FsZSA9IG51bGw7XG4gICAgSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZSA9IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5wYXJzZTtcbiAgICAvLyBEZWZhdWx0IGZvcm1hdCBvcHRpb25zIHVzZWQgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgYGZvcm1hdHNgIHByb3ZpZGVkIHRvIHRoZVxuICAgIC8vIGNvbnN0cnVjdG9yLiBUaGVzZSBhcmUgdXNlZCB3aGVuIGNvbnN0cnVjdGluZyB0aGUgaW50ZXJuYWwgSW50bC5OdW1iZXJGb3JtYXRcbiAgICAvLyBhbmQgSW50bC5EYXRlVGltZUZvcm1hdCBpbnN0YW5jZXMuXG4gICAgSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cyA9IHtcbiAgICAgICAgbnVtYmVyOiB7XG4gICAgICAgICAgICBjdXJyZW5jeToge1xuICAgICAgICAgICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBlcmNlbnQ6IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ3BlcmNlbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBtb250aDogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHllYXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZWRpdW06IHtcbiAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bGw6IHtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5OiAnbG9uZycsXG4gICAgICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0aW1lOiB7XG4gICAgICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZWRpdW06IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVsbDoge1xuICAgICAgICAgICAgICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIEludGxNZXNzYWdlRm9ybWF0O1xufSgpKTtcbmV4cG9ydHMuSW50bE1lc3NhZ2VGb3JtYXQgPSBJbnRsTWVzc2FnZUZvcm1hdDtcbmV4cG9ydHMuZGVmYXVsdCA9IEludGxNZXNzYWdlRm9ybWF0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuQ29weXJpZ2h0IChjKSAyMDE0LCBZYWhvbyEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiovXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvcmVfMSA9IHJlcXVpcmUoXCIuL3NyYy9jb3JlXCIpO1xuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2Zvcm1hdHRlcnNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2NvcmVcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vc3JjL2Vycm9yXCIpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IGNvcmVfMS5kZWZhdWx0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE1TX1BFUl9TRUNPTkQgPSAxZTM7XG52YXIgU0VDU19QRVJfTUlOID0gNjA7XG52YXIgU0VDU19QRVJfSE9VUiA9IFNFQ1NfUEVSX01JTiAqIDYwO1xudmFyIFNFQ1NfUEVSX0RBWSA9IFNFQ1NfUEVSX0hPVVIgKiAyNDtcbnZhciBTRUNTX1BFUl9XRUVLID0gU0VDU19QRVJfREFZICogNztcbmZ1bmN0aW9uIHNlbGVjdFVuaXQoZnJvbSwgdG8sIHRocmVzaG9sZHMpIHtcbiAgICBpZiAodG8gPT09IHZvaWQgMCkgeyB0byA9IERhdGUubm93KCk7IH1cbiAgICBpZiAodGhyZXNob2xkcyA9PT0gdm9pZCAwKSB7IHRocmVzaG9sZHMgPSB7fTsgfVxuICAgIHZhciByZXNvbHZlZFRocmVzaG9sZHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXhwb3J0cy5ERUZBVUxUX1RIUkVTSE9MRFMpLCAodGhyZXNob2xkcyB8fCB7fSkpO1xuICAgIHZhciBzZWNzID0gKCtmcm9tIC0gK3RvKSAvIE1TX1BFUl9TRUNPTkQ7XG4gICAgaWYgKE1hdGguYWJzKHNlY3MpIDwgcmVzb2x2ZWRUaHJlc2hvbGRzLnNlY29uZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoc2VjcyksXG4gICAgICAgICAgICB1bml0OiAnc2Vjb25kJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIG1pbnMgPSBzZWNzIC8gU0VDU19QRVJfTUlOO1xuICAgIGlmIChNYXRoLmFicyhtaW5zKSA8IHJlc29sdmVkVGhyZXNob2xkcy5taW51dGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLnJvdW5kKG1pbnMpLFxuICAgICAgICAgICAgdW5pdDogJ21pbnV0ZScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBob3VycyA9IHNlY3MgLyBTRUNTX1BFUl9IT1VSO1xuICAgIGlmIChNYXRoLmFicyhob3VycykgPCByZXNvbHZlZFRocmVzaG9sZHMuaG91cikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoaG91cnMpLFxuICAgICAgICAgICAgdW5pdDogJ2hvdXInLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgZGF5cyA9IHNlY3MgLyBTRUNTX1BFUl9EQVk7XG4gICAgaWYgKE1hdGguYWJzKGRheXMpIDwgcmVzb2x2ZWRUaHJlc2hvbGRzLmRheSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGF5cyksXG4gICAgICAgICAgICB1bml0OiAnZGF5JyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGZyb21EYXRlID0gbmV3IERhdGUoZnJvbSk7XG4gICAgdmFyIHRvRGF0ZSA9IG5ldyBEYXRlKHRvKTtcbiAgICB2YXIgeWVhcnMgPSBmcm9tRGF0ZS5nZXRGdWxsWWVhcigpIC0gdG9EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgaWYgKE1hdGgucm91bmQoTWF0aC5hYnMoeWVhcnMpKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLnJvdW5kKHllYXJzKSxcbiAgICAgICAgICAgIHVuaXQ6ICd5ZWFyJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIG1vbnRocyA9IHllYXJzICogMTIgKyBmcm9tRGF0ZS5nZXRNb250aCgpIC0gdG9EYXRlLmdldE1vbnRoKCk7XG4gICAgaWYgKE1hdGgucm91bmQoTWF0aC5hYnMobW9udGhzKSkgPiAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogTWF0aC5yb3VuZChtb250aHMpLFxuICAgICAgICAgICAgdW5pdDogJ21vbnRoJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHdlZWtzID0gc2VjcyAvIFNFQ1NfUEVSX1dFRUs7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE1hdGgucm91bmQod2Vla3MpLFxuICAgICAgICB1bml0OiAnd2VlaycsXG4gICAgfTtcbn1cbmV4cG9ydHMuc2VsZWN0VW5pdCA9IHNlbGVjdFVuaXQ7XG5leHBvcnRzLkRFRkFVTFRfVEhSRVNIT0xEUyA9IHtcbiAgICBzZWNvbmQ6IDQ1LFxuICAgIG1pbnV0ZTogNDUsXG4gICAgaG91cjogMjIsXG4gICAgZGF5OiA1LFxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSwgRXJyKSB7XG4gICAgaWYgKEVyciA9PT0gdm9pZCAwKSB7IEVyciA9IEVycm9yOyB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycihtZXNzYWdlKTtcbiAgICB9XG59XG5leHBvcnRzLmludmFyaWFudCA9IGludmFyaWFudDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3NhbmN0aW9uZWRzaW1wbGV1bml0aWRlbnRpZmllclxuZXhwb3J0cy5TQU5DVElPTkVEX1VOSVRTID0gW1xuICAgICdhbmdsZS1kZWdyZWUnLFxuICAgICdhcmVhLWFjcmUnLFxuICAgICdhcmVhLWhlY3RhcmUnLFxuICAgICdjb25jZW50ci1wZXJjZW50JyxcbiAgICAnZGlnaXRhbC1iaXQnLFxuICAgICdkaWdpdGFsLWJ5dGUnLFxuICAgICdkaWdpdGFsLWdpZ2FiaXQnLFxuICAgICdkaWdpdGFsLWdpZ2FieXRlJyxcbiAgICAnZGlnaXRhbC1raWxvYml0JyxcbiAgICAnZGlnaXRhbC1raWxvYnl0ZScsXG4gICAgJ2RpZ2l0YWwtbWVnYWJpdCcsXG4gICAgJ2RpZ2l0YWwtbWVnYWJ5dGUnLFxuICAgICdkaWdpdGFsLXBldGFieXRlJyxcbiAgICAnZGlnaXRhbC10ZXJhYml0JyxcbiAgICAnZGlnaXRhbC10ZXJhYnl0ZScsXG4gICAgJ2R1cmF0aW9uLWRheScsXG4gICAgJ2R1cmF0aW9uLWhvdXInLFxuICAgICdkdXJhdGlvbi1taWxsaXNlY29uZCcsXG4gICAgJ2R1cmF0aW9uLW1pbnV0ZScsXG4gICAgJ2R1cmF0aW9uLW1vbnRoJyxcbiAgICAnZHVyYXRpb24tc2Vjb25kJyxcbiAgICAnZHVyYXRpb24td2VlaycsXG4gICAgJ2R1cmF0aW9uLXllYXInLFxuICAgICdsZW5ndGgtY2VudGltZXRlcicsXG4gICAgJ2xlbmd0aC1mb290JyxcbiAgICAnbGVuZ3RoLWluY2gnLFxuICAgICdsZW5ndGgta2lsb21ldGVyJyxcbiAgICAnbGVuZ3RoLW1ldGVyJyxcbiAgICAnbGVuZ3RoLW1pbGUtc2NhbmRpbmF2aWFuJyxcbiAgICAnbGVuZ3RoLW1pbGUnLFxuICAgICdsZW5ndGgtbWlsbGltZXRlcicsXG4gICAgJ2xlbmd0aC15YXJkJyxcbiAgICAnbWFzcy1ncmFtJyxcbiAgICAnbWFzcy1raWxvZ3JhbScsXG4gICAgJ21hc3Mtb3VuY2UnLFxuICAgICdtYXNzLXBvdW5kJyxcbiAgICAnbWFzcy1zdG9uZScsXG4gICAgJ3RlbXBlcmF0dXJlLWNlbHNpdXMnLFxuICAgICd0ZW1wZXJhdHVyZS1mYWhyZW5oZWl0JyxcbiAgICAndm9sdW1lLWZsdWlkLW91bmNlJyxcbiAgICAndm9sdW1lLWdhbGxvbicsXG4gICAgJ3ZvbHVtZS1saXRlcicsXG4gICAgJ3ZvbHVtZS1taWxsaWxpdGVyJyxcbl07XG4vLyBJbiBDTERSLCB0aGUgdW5pdCBuYW1lIGFsd2F5cyBmb2xsb3dzIHRoZSBmb3JtIGBuYW1lc3BhY2UtdW5pdGAgcGF0dGVybi5cbi8vIEZvciBleGFtcGxlOiBgZGlnaXRhbC1iaXRgIGluc3RlYWQgb2YgYGJpdGAuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgbmFtZXNwYWNlIHByZWZpeC5cbmZ1bmN0aW9uIHJlbW92ZVVuaXROYW1lc3BhY2UodW5pdCkge1xuICAgIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59XG5leHBvcnRzLnJlbW92ZVVuaXROYW1lc3BhY2UgPSByZW1vdmVVbml0TmFtZXNwYWNlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW52YXJpYW50XzEgPSByZXF1aXJlKFwiLi9pbnZhcmlhbnRcIik7XG52YXIgdW5pdHNfMSA9IHJlcXVpcmUoXCIuL3VuaXRzXCIpO1xuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkobywga2V5KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrZXkpO1xufVxuZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eSA9IGhhc093blByb3BlcnR5O1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG4gKiBAcGFyYW0gYXJnXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0KGFyZykge1xuICAgIGlmIChhcmcgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmRlZmluZWQvbnVsbCBjYW5ub3QgYmUgY29udmVydGVkIHRvIG9iamVjdCcpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0KGFyZyk7XG59XG5leHBvcnRzLnRvT2JqZWN0ID0gdG9PYmplY3Q7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9zdHJpbmdcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcobykge1xuICAgIC8vIE9ubHkgc3ltYm9sIGlzIGlycmVndWxhci4uLlxuICAgIGlmICh0eXBlb2YgbyA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG8pO1xufVxuZXhwb3J0cy50b1N0cmluZyA9IHRvU3RyaW5nO1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWdldG9wdGlvblxuICogQHBhcmFtIG9wdHNcbiAqIEBwYXJhbSBwcm9wXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIGZhbGxiYWNrXG4gKi9cbmZ1bmN0aW9uIGdldE9wdGlvbihvcHRzLCBwcm9wLCB0eXBlLCB2YWx1ZXMsIGZhbGxiYWNrKSB7XG4gICAgLy8gY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3B0cywgcHJvcCk7XG4gICAgdmFyIHZhbHVlID0gb3B0c1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZSAhPT0gJ2Jvb2xlYW4nICYmIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHR5cGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IEJvb2xlYW4odmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSB0b1N0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcyAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbCA9PSB2YWx1ZTsgfSkubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcih2YWx1ZSArIFwiIGlzIG5vdCB3aXRoaW4gXCIgKyB2YWx1ZXMuam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG5leHBvcnRzLmdldE9wdGlvbiA9IGdldE9wdGlvbjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1kZWZhdWx0bnVtYmVyb3B0aW9uXG4gKiBAcGFyYW0gdmFsXG4gKiBAcGFyYW0gbWluXG4gKiBAcGFyYW0gbWF4XG4gKiBAcGFyYW0gZmFsbGJhY2tcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdE51bWJlck9wdGlvbih2YWwsIG1pbiwgbWF4LCBmYWxsYmFjaykge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWwgPSBOdW1iZXIodmFsKTtcbiAgICAgICAgaWYgKGlzTmFOKHZhbCkgfHwgdmFsIDwgbWluIHx8IHZhbCA+IG1heCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IodmFsICsgXCIgaXMgb3V0c2lkZSBvZiByYW5nZSBbXCIgKyBtaW4gKyBcIiwgXCIgKyBtYXggKyBcIl1cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xufVxuZXhwb3J0cy5kZWZhdWx0TnVtYmVyT3B0aW9uID0gZGVmYXVsdE51bWJlck9wdGlvbjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1nZXRudW1iZXJvcHRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcGFyYW0gcHJvcGVydHlcbiAqIEBwYXJhbSBtaW5cbiAqIEBwYXJhbSBtYXhcbiAqIEBwYXJhbSBmYWxsYmFja1xuICovXG5mdW5jdGlvbiBnZXROdW1iZXJPcHRpb24ob3B0aW9ucywgcHJvcGVydHksIG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSB7XG4gICAgdmFyIHZhbCA9IG9wdGlvbnNbcHJvcGVydHldO1xuICAgIHJldHVybiBkZWZhdWx0TnVtYmVyT3B0aW9uKHZhbCwgbWluaW11bSwgbWF4aW11bSwgZmFsbGJhY2spO1xufVxuZXhwb3J0cy5nZXROdW1iZXJPcHRpb24gPSBnZXROdW1iZXJPcHRpb247XG5mdW5jdGlvbiBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgZmllbGQsIHZhbHVlKSB7XG4gICAgaWYgKCFtYXAuZ2V0KHBsKSkge1xuICAgICAgICBtYXAuc2V0KHBsLCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgICB9XG4gICAgdmFyIHNsb3RzID0gbWFwLmdldChwbCk7XG4gICAgc2xvdHNbZmllbGRdID0gdmFsdWU7XG59XG5leHBvcnRzLnNldEludGVybmFsU2xvdCA9IHNldEludGVybmFsU2xvdDtcbmZ1bmN0aW9uIHNldE11bHRpSW50ZXJuYWxTbG90cyhtYXAsIHBsLCBwcm9wcykge1xuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhwcm9wcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBrID0gX2FbX2ldO1xuICAgICAgICBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgaywgcHJvcHNba10pO1xuICAgIH1cbn1cbmV4cG9ydHMuc2V0TXVsdGlJbnRlcm5hbFNsb3RzID0gc2V0TXVsdGlJbnRlcm5hbFNsb3RzO1xuZnVuY3Rpb24gZ2V0SW50ZXJuYWxTbG90KG1hcCwgcGwsIGZpZWxkKSB7XG4gICAgcmV0dXJuIGdldE11bHRpSW50ZXJuYWxTbG90cyhtYXAsIHBsLCBmaWVsZClbZmllbGRdO1xufVxuZXhwb3J0cy5nZXRJbnRlcm5hbFNsb3QgPSBnZXRJbnRlcm5hbFNsb3Q7XG5mdW5jdGlvbiBnZXRNdWx0aUludGVybmFsU2xvdHMobWFwLCBwbCkge1xuICAgIHZhciBmaWVsZHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBmaWVsZHNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciBzbG90cyA9IG1hcC5nZXQocGwpO1xuICAgIGlmICghc2xvdHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihwbCArIFwiIEludGVybmFsU2xvdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcIik7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIGYpIHtcbiAgICAgICAgYWxsW2ZdID0gc2xvdHNbZl07XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG5leHBvcnRzLmdldE11bHRpSW50ZXJuYWxTbG90cyA9IGdldE11bHRpSW50ZXJuYWxTbG90cztcbmZ1bmN0aW9uIGlzTGl0ZXJhbFBhcnQocGF0dGVyblBhcnQpIHtcbiAgICByZXR1cm4gcGF0dGVyblBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnO1xufVxuZXhwb3J0cy5pc0xpdGVyYWxQYXJ0ID0gaXNMaXRlcmFsUGFydDtcbmZ1bmN0aW9uIHBhcnRpdGlvblBhdHRlcm4ocGF0dGVybikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYmVnaW5JbmRleCA9IHBhdHRlcm4uaW5kZXhPZigneycpO1xuICAgIHZhciBlbmRJbmRleCA9IDA7XG4gICAgdmFyIG5leHRJbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoO1xuICAgIHdoaWxlIChiZWdpbkluZGV4IDwgcGF0dGVybi5sZW5ndGggJiYgYmVnaW5JbmRleCA+IC0xKSB7XG4gICAgICAgIGVuZEluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd9JywgYmVnaW5JbmRleCk7XG4gICAgICAgIGludmFyaWFudF8xLmludmFyaWFudChlbmRJbmRleCA+IGJlZ2luSW5kZXgsIFwiSW52YWxpZCBwYXR0ZXJuIFwiICsgcGF0dGVybik7XG4gICAgICAgIGlmIChiZWdpbkluZGV4ID4gbmV4dEluZGV4KSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwYXR0ZXJuLnN1YnN0cmluZyhuZXh0SW5kZXgsIGJlZ2luSW5kZXgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgdHlwZTogcGF0dGVybi5zdWJzdHJpbmcoYmVnaW5JbmRleCArIDEsIGVuZEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBuZXh0SW5kZXggPSBlbmRJbmRleCArIDE7XG4gICAgICAgIGJlZ2luSW5kZXggPSBwYXR0ZXJuLmluZGV4T2YoJ3snLCBuZXh0SW5kZXgpO1xuICAgIH1cbiAgICBpZiAobmV4dEluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgIHZhbHVlOiBwYXR0ZXJuLnN1YnN0cmluZyhuZXh0SW5kZXgsIGxlbmd0aCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5wYXJ0aXRpb25QYXR0ZXJuID0gcGFydGl0aW9uUGF0dGVybjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRuZmRpZ2l0b3B0aW9uc1xuICovXG5mdW5jdGlvbiBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoaW50ZXJuYWxTbG90cywgb3B0cywgbW5mZERlZmF1bHQsIG14ZmREZWZhdWx0LCBub3RhdGlvbikge1xuICAgIHZhciBtbmlkID0gZ2V0TnVtYmVyT3B0aW9uKG9wdHMsICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsIDEsIDIxLCAxKTtcbiAgICB2YXIgbW5mZCA9IG9wdHMubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIHZhciBteGZkID0gb3B0cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHM7XG4gICAgdmFyIG1uc2QgPSBvcHRzLm1pbmltdW1TaWduaWZpY2FudERpZ2l0cztcbiAgICB2YXIgbXhzZCA9IG9wdHMubWF4aW11bVNpZ25pZmljYW50RGlnaXRzO1xuICAgIGludGVybmFsU2xvdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBtbmlkO1xuICAgIGlmIChtbnNkICE9PSB1bmRlZmluZWQgfHwgbXhzZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGludGVybmFsU2xvdHMucm91bmRpbmdUeXBlID0gJ3NpZ25pZmljYW50RGlnaXRzJztcbiAgICAgICAgbW5zZCA9IGRlZmF1bHROdW1iZXJPcHRpb24obW5zZCwgMSwgMjEsIDEpO1xuICAgICAgICBteHNkID0gZGVmYXVsdE51bWJlck9wdGlvbihteHNkLCBtbnNkLCAyMSwgMjEpO1xuICAgICAgICBpbnRlcm5hbFNsb3RzLm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1uc2Q7XG4gICAgICAgIGludGVybmFsU2xvdHMubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbXhzZDtcbiAgICB9XG4gICAgZWxzZSBpZiAobW5mZCAhPT0gdW5kZWZpbmVkIHx8IG14ZmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbnRlcm5hbFNsb3RzLnJvdW5kaW5nVHlwZSA9ICdmcmFjdGlvbkRpZ2l0cyc7XG4gICAgICAgIG1uZmQgPSBkZWZhdWx0TnVtYmVyT3B0aW9uKG1uZmQsIDAsIDIwLCBtbmZkRGVmYXVsdCk7XG4gICAgICAgIHZhciBteGZkQWN0dWFsRGVmYXVsdCA9IE1hdGgubWF4KG1uZmQsIG14ZmREZWZhdWx0KTtcbiAgICAgICAgbXhmZCA9IGRlZmF1bHROdW1iZXJPcHRpb24obXhmZCwgbW5mZCwgMjAsIG14ZmRBY3R1YWxEZWZhdWx0KTtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtbmZkO1xuICAgICAgICBpbnRlcm5hbFNsb3RzLm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG14ZmQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdGF0aW9uID09PSAnY29tcGFjdCcpIHtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5yb3VuZGluZ1R5cGUgPSAnY29tcGFjdFJvdW5kaW5nJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGludGVybmFsU2xvdHMucm91bmRpbmdUeXBlID0gJ2ZyYWN0aW9uRGlnaXRzJztcbiAgICAgICAgaW50ZXJuYWxTbG90cy5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtbmZkRGVmYXVsdDtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBteGZkRGVmYXVsdDtcbiAgICB9XG59XG5leHBvcnRzLnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyA9IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucztcbmZ1bmN0aW9uIG9iamVjdElzKHgsIHkpIHtcbiAgICBpZiAoT2JqZWN0LmlzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuaXMoeCwgeSk7XG4gICAgfVxuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH1cbiAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG59XG5leHBvcnRzLm9iamVjdElzID0gb2JqZWN0SXM7XG52YXIgTk9UX0FfWl9SRUdFWCA9IC9bXkEtWl0vO1xuLyoqXG4gKiBUaGlzIGZvbGxvd3MgaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYXNlLXNlbnNpdGl2aXR5LWFuZC1jYXNlLW1hcHBpbmdcbiAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGNvbnZlcnRcbiAqL1xuZnVuY3Rpb24gdG9VcHBlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pL2csIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pO1xufVxuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZGN1cnJlbmN5Y29kZVxuICovXG5mdW5jdGlvbiBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY3VycmVuY3kpIHtcbiAgICBjdXJyZW5jeSA9IHRvVXBwZXJDYXNlKGN1cnJlbmN5KTtcbiAgICBpZiAoY3VycmVuY3kubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKE5PVF9BX1pfUkVHRVgudGVzdChjdXJyZW5jeSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlID0gaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlO1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnN0cmluZ1xuICogVE9ETzogZGVkdXAgd2l0aCBpbnRsLXBsdXJhbHJ1bGVzXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdE51bWVyaWNUb1N0cmluZyhpbnRlcm5hbFNsb3RzLCB4KSB7XG4gICAgdmFyIGlzTmVnYXRpdmUgPSB4IDwgMCB8fCBvYmplY3RJcyh4LCAtMCk7XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgeCA9IC14O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIHZhciByb3VybmRpbmdUeXBlID0gaW50ZXJuYWxTbG90cy5yb3VuZGluZ1R5cGU7XG4gICAgc3dpdGNoIChyb3VybmRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3NpZ25pZmljYW50RGlnaXRzJzpcbiAgICAgICAgICAgIHJlc3VsdCA9IHRvUmF3UHJlY2lzaW9uKHgsIGludGVybmFsU2xvdHMubWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBpbnRlcm5hbFNsb3RzLm1heGltdW1TaWduaWZpY2FudERpZ2l0cyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnJhY3Rpb25EaWdpdHMnOlxuICAgICAgICAgICAgcmVzdWx0ID0gdG9SYXdGaXhlZCh4LCBpbnRlcm5hbFNsb3RzLm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgaW50ZXJuYWxTbG90cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXN1bHQgPSB0b1Jhd1ByZWNpc2lvbih4LCAxLCAyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaW50ZWdlckRpZ2l0c0NvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvUmF3Rml4ZWQoeCwgMCwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgeCA9IHJlc3VsdC5yb3VuZGVkTnVtYmVyO1xuICAgIHZhciBzdHJpbmcgPSByZXN1bHQuZm9ybWF0dGVkU3RyaW5nO1xuICAgIHZhciBpbnQgPSByZXN1bHQuaW50ZWdlckRpZ2l0c0NvdW50O1xuICAgIHZhciBtaW5JbnRlZ2VyID0gaW50ZXJuYWxTbG90cy5taW5pbXVtSW50ZWdlckRpZ2l0cztcbiAgICBpZiAoaW50IDwgbWluSW50ZWdlcikge1xuICAgICAgICB2YXIgZm9yd2FyZFplcm9zID0gcmVwZWF0KCcwJywgbWluSW50ZWdlciAtIGludCk7XG4gICAgICAgIHN0cmluZyA9IGZvcndhcmRaZXJvcyArIHN0cmluZztcbiAgICB9XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgeCA9IC14O1xuICAgIH1cbiAgICByZXR1cm4geyByb3VuZGVkTnVtYmVyOiB4LCBmb3JtYXR0ZWRTdHJpbmc6IHN0cmluZyB9O1xufVxuZXhwb3J0cy5mb3JtYXROdW1lcmljVG9TdHJpbmcgPSBmb3JtYXROdW1lcmljVG9TdHJpbmc7XG4vKipcbiAqIFRPRE86IGRlZHVwIHdpdGggaW50bC1wbHVyYWxydWxlcyBhbmQgc3VwcG9ydCBCaWdJbnRcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdG9yYXdmaXhlZFxuICogQHBhcmFtIHggYSBmaW5pdGUgbm9uLW5lZ2F0aXZlIE51bWJlciBvciBCaWdJbnRcbiAqIEBwYXJhbSBtaW5GcmFjdGlvbiBhbmQgaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDIwXG4gKiBAcGFyYW0gbWF4RnJhY3Rpb24gYW5kIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyMFxuICovXG5mdW5jdGlvbiB0b1Jhd0ZpeGVkKHgsIG1pbkZyYWN0aW9uLCBtYXhGcmFjdGlvbikge1xuICAgIHZhciBmID0gbWF4RnJhY3Rpb247XG4gICAgdmFyIG4gPSBNYXRoLnJvdW5kKHggKiBNYXRoLnBvdygxMCwgZikpO1xuICAgIHZhciB4RmluYWwgPSBuIC8gTWF0aC5wb3coMTAsIGYpO1xuICAgIC8vIG4gaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBidXQgaXQgaXMgcG9zc2libGUgdG8gYmUgZ3JlYXRlciB0aGFuIDFlMjEuXG4gICAgLy8gSW4gc3VjaCBjYXNlIHdlIHdpbGwgZ28gdGhlIHNsb3cgcGF0aC5cbiAgICAvLyBTZWUgYWxzbzogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1lcmljLXR5cGVzLW51bWJlci10b3N0cmluZ1xuICAgIHZhciBtO1xuICAgIGlmIChuIDwgMWUyMSkge1xuICAgICAgICBtID0gbi50b1N0cmluZygpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbSA9IG4udG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIF9hID0gbS5zcGxpdCgnZScpLCBtYW50aXNzYSA9IF9hWzBdLCBleHBvbmVudCA9IF9hWzFdO1xuICAgICAgICBtID0gbWFudGlzc2EucmVwbGFjZSgnLicsICcnKTtcbiAgICAgICAgbSA9IG0gKyByZXBlYXQoJzAnLCBNYXRoLm1heCgrZXhwb25lbnQgLSBtLmxlbmd0aCArIDEsIDApKTtcbiAgICB9XG4gICAgdmFyIGludDtcbiAgICBpZiAoZiAhPT0gMCkge1xuICAgICAgICB2YXIgayA9IG0ubGVuZ3RoO1xuICAgICAgICBpZiAoayA8PSBmKSB7XG4gICAgICAgICAgICB2YXIgeiA9IHJlcGVhdCgnMCcsIGYgKyAxIC0gayk7XG4gICAgICAgICAgICBtID0geiArIG07XG4gICAgICAgICAgICBrID0gZiArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBtLnNsaWNlKDAsIGsgLSBmKTtcbiAgICAgICAgdmFyIGIgPSBtLnNsaWNlKGsgLSBmKTtcbiAgICAgICAgbSA9IGEgKyBcIi5cIiArIGI7XG4gICAgICAgIGludCA9IGEubGVuZ3RoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW50ID0gbS5sZW5ndGg7XG4gICAgfVxuICAgIHZhciBjdXQgPSBtYXhGcmFjdGlvbiAtIG1pbkZyYWN0aW9uO1xuICAgIHdoaWxlIChjdXQgPiAwICYmIG1bbS5sZW5ndGggLSAxXSA9PT0gJzAnKSB7XG4gICAgICAgIG0gPSBtLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY3V0LS07XG4gICAgfVxuICAgIGlmIChtW20ubGVuZ3RoIC0gMV0gPT09ICcuJykge1xuICAgICAgICBtID0gbS5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIHJldHVybiB7IGZvcm1hdHRlZFN0cmluZzogbSwgcm91bmRlZE51bWJlcjogeEZpbmFsLCBpbnRlZ2VyRGlnaXRzQ291bnQ6IGludCB9O1xufVxuZXhwb3J0cy50b1Jhd0ZpeGVkID0gdG9SYXdGaXhlZDtcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdG9yYXdwcmVjaXNpb25cbmZ1bmN0aW9uIHRvUmF3UHJlY2lzaW9uKHgsIG1pblByZWNpc2lvbiwgbWF4UHJlY2lzaW9uKSB7XG4gICAgdmFyIHAgPSBtYXhQcmVjaXNpb247XG4gICAgdmFyIG07XG4gICAgdmFyIGU7XG4gICAgdmFyIHhGaW5hbDtcbiAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgICBtID0gcmVwZWF0KCcwJywgcCk7XG4gICAgICAgIGUgPSAwO1xuICAgICAgICB4RmluYWwgPSAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHhUb1N0cmluZyA9IHgudG9TdHJpbmcoKTtcbiAgICAgICAgLy8gSWYgeFRvU3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBzY2llbnRpZmljIG5vdGF0aW9uLCB0aGUgbnVtYmVyIGlzIGVpdGhlciB2ZXJ5IHNtYWxsIG9yIHZlcnlcbiAgICAgICAgLy8gbGFyZ2UuIElmIHRoZSBwcmVjaXNpb24gb2YgdGhlIGZvcm1hdHRlZCBzdHJpbmcgaXMgbG93ZXIgdGhhdCByZXF1ZXN0ZWQgbWF4IHByZWNpc2lvbiwgd2VcbiAgICAgICAgLy8gc2hvdWxkIHN0aWxsIGluZmVyIHRoZW0gZnJvbSB0aGUgZm9ybWF0dGVkIHN0cmluZywgb3RoZXJ3aXNlIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IG1pZ2h0IGhhdmVcbiAgICAgICAgLy8gcHJlY2lzaW9uIGxvc3MgKGUuZy4gMWU0MSB3aWxsIG5vdCBoYXZlIDAgaW4gZXZlcnkgdHJhaWxpbmcgZGlnaXRzKS5cbiAgICAgICAgdmFyIHhUb1N0cmluZ0V4cG9uZW50SW5kZXggPSB4VG9TdHJpbmcuaW5kZXhPZignZScpO1xuICAgICAgICB2YXIgX2EgPSB4VG9TdHJpbmcuc3BsaXQoJ2UnKSwgeFRvU3RyaW5nTWFudGlzc2EgPSBfYVswXSwgeFRvU3RyaW5nRXhwb25lbnQgPSBfYVsxXTtcbiAgICAgICAgdmFyIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludCA9IHhUb1N0cmluZ01hbnRpc3NhLnJlcGxhY2UoJy4nLCAnJyk7XG4gICAgICAgIGlmICh4VG9TdHJpbmdFeHBvbmVudEluZGV4ID49IDAgJiZcbiAgICAgICAgICAgIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludC5sZW5ndGggPD0gcCkge1xuICAgICAgICAgICAgZSA9ICt4VG9TdHJpbmdFeHBvbmVudDtcbiAgICAgICAgICAgIG0gPVxuICAgICAgICAgICAgICAgIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludCArXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdCgnMCcsIHAgLSB4VG9TdHJpbmdNYW50aXNzYVdpdGhvdXREZWNpbWFsUG9pbnQubGVuZ3RoKTtcbiAgICAgICAgICAgIHhGaW5hbCA9IHg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlID0gZ2V0TWFnbml0dWRlKHgpO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZU9mZnNldCA9IGUgLSBwICsgMTtcbiAgICAgICAgICAgIC8vIG4gaXMgdGhlIGludGVnZXIgY29udGFpbmluZyB0aGUgcmVxdWlyZWQgcHJlY2lzaW9uIGRpZ2l0cy4gVG8gZGVyaXZlIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLFxuICAgICAgICAgICAgLy8gd2Ugd2lsbCBhZGp1c3QgaXRzIGRlY2ltYWwgcGxhY2UgaW4gdGhlIGxvZ2ljIGJlbG93LlxuICAgICAgICAgICAgdmFyIG4gPSBNYXRoLnJvdW5kKGFkanVzdERlY2ltYWxQbGFjZSh4LCBkZWNpbWFsUGxhY2VPZmZzZXQpKTtcbiAgICAgICAgICAgIC8vIFRoZSByb3VuZGluZyBjYXVzZWQgdGhlIGNoYW5nZSBvZiBtYWduaXR1ZGUsIHNvIHdlIHNob3VsZCBpbmNyZW1lbnQgYGVgIGJ5IDEuXG4gICAgICAgICAgICBpZiAoYWRqdXN0RGVjaW1hbFBsYWNlKG4sIHAgLSAxKSA+PSAxMCkge1xuICAgICAgICAgICAgICAgIGUgPSBlICsgMTtcbiAgICAgICAgICAgICAgICAvLyBEaXZpZGUgbiBieSAxMCB0byBzd2FsbG93IG9uZSBwcmVjaXNpb24uXG4gICAgICAgICAgICAgICAgbiA9IE1hdGguZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG0gPSBuLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAvLyBFcXVpdmFsZW50IG9mIG4gKiAxMCAqKiAoZSAtIHAgKyAxKVxuICAgICAgICAgICAgeEZpbmFsID0gYWRqdXN0RGVjaW1hbFBsYWNlKG4sIHAgLSAxIC0gZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGludDtcbiAgICBpZiAoZSA+PSBwIC0gMSkge1xuICAgICAgICBtID0gbSArIHJlcGVhdCgnMCcsIGUgLSBwICsgMSk7XG4gICAgICAgIGludCA9IGUgKyAxO1xuICAgIH1cbiAgICBlbHNlIGlmIChlID49IDApIHtcbiAgICAgICAgbSA9IG0uc2xpY2UoMCwgZSArIDEpICsgXCIuXCIgKyBtLnNsaWNlKGUgKyAxKTtcbiAgICAgICAgaW50ID0gZSArIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtID0gXCIwLlwiICsgcmVwZWF0KCcwJywgLWUgLSAxKSArIG07XG4gICAgICAgIGludCA9IDE7XG4gICAgfVxuICAgIGlmIChtLmluZGV4T2YoJy4nKSA+PSAwICYmIG1heFByZWNpc2lvbiA+IG1pblByZWNpc2lvbikge1xuICAgICAgICB2YXIgY3V0ID0gbWF4UHJlY2lzaW9uIC0gbWluUHJlY2lzaW9uO1xuICAgICAgICB3aGlsZSAoY3V0ID4gMCAmJiBtW20ubGVuZ3RoIC0gMV0gPT09ICcwJykge1xuICAgICAgICAgICAgbSA9IG0uc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgY3V0LS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1bbS5sZW5ndGggLSAxXSA9PT0gJy4nKSB7XG4gICAgICAgICAgICBtID0gbS5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZm9ybWF0dGVkU3RyaW5nOiBtLCByb3VuZGVkTnVtYmVyOiB4RmluYWwsIGludGVnZXJEaWdpdHNDb3VudDogaW50IH07XG4gICAgLy8geCAvICgxMCAqKiBtYWduaXR1ZGUpLCBidXQgdHJ5IHRvIHByZXNlcnZlIGFzIG11Y2ggZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGFzIHBvc3NpYmxlLlxuICAgIGZ1bmN0aW9uIGFkanVzdERlY2ltYWxQbGFjZSh4LCBtYWduaXR1ZGUpIHtcbiAgICAgICAgcmV0dXJuIG1hZ25pdHVkZSA8IDAgPyB4ICogTWF0aC5wb3coMTAsIC1tYWduaXR1ZGUpIDogeCAvIE1hdGgucG93KDEwLCBtYWduaXR1ZGUpO1xuICAgIH1cbn1cbmV4cG9ydHMudG9SYXdQcmVjaXNpb24gPSB0b1Jhd1ByZWNpc2lvbjtcbmZ1bmN0aW9uIHJlcGVhdChzLCB0aW1lcykge1xuICAgIGlmICh0eXBlb2Ygcy5yZXBlYXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwZWF0KHRpbWVzKTtcbiAgICB9XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheSh0aW1lcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJyW2ldID0gcztcbiAgICB9XG4gICAgcmV0dXJuIGFyci5qb2luKCcnKTtcbn1cbmV4cG9ydHMucmVwZWF0ID0gcmVwZWF0O1xuLyoqXG4gKiBDYW5ub3QgZG8gTWF0aC5sb2coeCkgLyBNYXRoLmxvZygxMCkgYmMgaWYgSUVFRSBmbG9hdGluZyBwb2ludCBpc3N1ZVxuICogQHBhcmFtIHggbnVtYmVyXG4gKi9cbmZ1bmN0aW9uIGdldE1hZ25pdHVkZSh4KSB7XG4gICAgLy8gQ2Fubm90IGNvdW50IHN0cmluZyBsZW5ndGggdmlhIE51bWJlci50b1N0cmluZyBiZWNhdXNlIGl0IG1heSB1c2Ugc2NpZW50aWZpYyBub3RhdGlvblxuICAgIC8vIGZvciB2ZXJ5IHNtYWxsIG9yIHZlcnkgbGFyZ2UgbnVtYmVycy5cbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZyh4KSAqIE1hdGguTE9HMTBFKTtcbn1cbmV4cG9ydHMuZ2V0TWFnbml0dWRlID0gZ2V0TWFnbml0dWRlO1xuLyoqXG4gKiBUaGlzIGZvbGxvd3MgaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYXNlLXNlbnNpdGl2aXR5LWFuZC1jYXNlLW1hcHBpbmdcbiAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGNvbnZlcnRcbiAqL1xuZnVuY3Rpb24gdG9Mb3dlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjLnRvTG93ZXJDYXNlKCk7IH0pO1xufVxudmFyIFNIT1JURU5FRF9TQUNUSU9OX1VOSVRTID0gdW5pdHNfMS5TQU5DVElPTkVEX1VOSVRTLm1hcChmdW5jdGlvbiAodW5pdCkge1xuICAgIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59KTtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllclxuICogQHBhcmFtIHVuaXRcbiAqL1xuZnVuY3Rpb24gaXNXZWxsRm9ybWVkVW5pdElkZW50aWZpZXIodW5pdCkge1xuICAgIHVuaXQgPSB0b0xvd2VyQ2FzZSh1bml0KTtcbiAgICBpZiAoU0hPUlRFTkVEX1NBQ1RJT05fVU5JVFMuaW5kZXhPZih1bml0KSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgdW5pdHMgPSB1bml0LnNwbGl0KCctcGVyLScpO1xuICAgIGlmICh1bml0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoU0hPUlRFTkVEX1NBQ1RJT05fVU5JVFMuaW5kZXhPZih1bml0c1swXSkgPCAwIHx8XG4gICAgICAgIFNIT1JURU5FRF9TQUNUSU9OX1VOSVRTLmluZGV4T2YodW5pdHNbMV0pIDwgMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy5pc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllciA9IGlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyO1xuLypcbiAgMTcgRUNNQVNjcmlwdCBTdGFuZGFyZCBCdWlsdC1pbiBPYmplY3RzOlxuICAgIEV2ZXJ5IGJ1aWx0LWluIEZ1bmN0aW9uIG9iamVjdCwgaW5jbHVkaW5nIGNvbnN0cnVjdG9ycywgdGhhdCBpcyBub3RcbiAgICBpZGVudGlmaWVkIGFzIGFuIGFub255bW91cyBmdW5jdGlvbiBoYXMgYSBuYW1lIHByb3BlcnR5IHdob3NlIHZhbHVlXG4gICAgaXMgYSBTdHJpbmcuXG5cbiAgICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgdGhlIG5hbWUgcHJvcGVydHkgb2YgYSBidWlsdC1pbiBGdW5jdGlvblxuICAgIG9iamVjdCwgaWYgaXQgZXhpc3RzLCBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLFxuICAgIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LlxuKi9cbmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwgX2EpIHtcbiAgICB2YXIgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbnZhcmlhbnRfMSA9IHJlcXVpcmUoXCIuL2ludmFyaWFudFwiKTtcbnZhciBwb2x5ZmlsbF91dGlsc18xID0gcmVxdWlyZShcIi4vcG9seWZpbGwtdXRpbHNcIik7XG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlTG9jYWxlKGdldERlZmF1bHRMb2NhbGUpIHtcbiAgICB2YXIgbG9va3VwTWF0Y2hlciA9IGNyZWF0ZUxvb2t1cE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSk7XG4gICAgdmFyIGJlc3RGaXRNYXRjaGVyID0gY3JlYXRlQmVzdEZpdE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSk7XG4gICAgLyoqXG4gICAgICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlbG9jYWxlXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucywgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBsb2NhbGVEYXRhKSB7XG4gICAgICAgIHZhciBtYXRjaGVyID0gb3B0aW9ucy5sb2NhbGVNYXRjaGVyO1xuICAgICAgICB2YXIgcjtcbiAgICAgICAgaWYgKG1hdGNoZXIgPT09ICdsb29rdXAnKSB7XG4gICAgICAgICAgICByID0gbG9va3VwTWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHIgPSBiZXN0Rml0TWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm91bmRMb2NhbGUgPSByLmxvY2FsZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgbG9jYWxlOiAnJywgZGF0YUxvY2FsZTogZm91bmRMb2NhbGUgfTtcbiAgICAgICAgdmFyIHN1cHBvcnRlZEV4dGVuc2lvbiA9ICctdSc7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzXzEgPSByZWxldmFudEV4dGVuc2lvbktleXM7IF9pIDwgcmVsZXZhbnRFeHRlbnNpb25LZXlzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gcmVsZXZhbnRFeHRlbnNpb25LZXlzXzFbX2ldO1xuICAgICAgICAgICAgdmFyIGZvdW5kTG9jYWxlRGF0YSA9IGxvY2FsZURhdGFbZm91bmRMb2NhbGVdO1xuICAgICAgICAgICAgaW52YXJpYW50XzEuaW52YXJpYW50KHR5cGVvZiBmb3VuZExvY2FsZURhdGEgPT09ICdvYmplY3QnICYmIGZvdW5kTG9jYWxlRGF0YSAhPT0gbnVsbCwgXCJsb2NhbGUgZGF0YSBcIiArIGtleSArIFwiIG11c3QgYmUgYW4gb2JqZWN0XCIpO1xuICAgICAgICAgICAgdmFyIGtleUxvY2FsZURhdGEgPSBmb3VuZExvY2FsZURhdGFba2V5XTtcbiAgICAgICAgICAgIGludmFyaWFudF8xLmludmFyaWFudChBcnJheS5pc0FycmF5KGtleUxvY2FsZURhdGEpLCBcImtleUxvY2FsZURhdGEgZm9yIFwiICsga2V5ICsgXCIgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGtleUxvY2FsZURhdGFbMF07XG4gICAgICAgICAgICBpbnZhcmlhbnRfMS5pbnZhcmlhbnQodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSA9PT0gbnVsbCwgXCJ2YWx1ZSBtdXN0IGJlIHN0cmluZyBvciBudWxsIGJ1dCBnb3QgXCIgKyB0eXBlb2YgdmFsdWUgKyBcIiBpbiBrZXkgXCIgKyBrZXkpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9uID0gJyc7XG4gICAgICAgICAgICBpZiAoci5leHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVxdWVzdGVkVmFsdWUgPSB1bmljb2RlRXh0ZW5zaW9uVmFsdWUoci5leHRlbnNpb24sIGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZFZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKH5rZXlMb2NhbGVEYXRhLmluZGV4T2YocmVxdWVzdGVkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXF1ZXN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9IFwiLVwiICsga2V5ICsgXCItXCIgKyB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh+cmVxdWVzdGVkVmFsdWUuaW5kZXhPZigndHJ1ZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICd0cnVlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9uID0gXCItXCIgKyBrZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoa2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3B0aW9uc1ZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgICAgICAgICAgICAgIGludmFyaWFudF8xLmludmFyaWFudCh0eXBlb2Ygb3B0aW9uc1ZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9uc1ZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zVmFsdWUgPT09IG51bGwsICdvcHRpb25zVmFsdWUgbXVzdCBiZSBTdHJpbmcsIFVuZGVmaW5lZCBvciBOdWxsJyk7XG4gICAgICAgICAgICAgICAgaWYgKH5rZXlMb2NhbGVEYXRhLmluZGV4T2Yob3B0aW9uc1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uc1ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb25zVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbiArPSBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9uLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHZhciBwcml2YXRlSW5kZXggPSBmb3VuZExvY2FsZS5pbmRleE9mKCcteC0nKTtcbiAgICAgICAgICAgIGlmIChwcml2YXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZm91bmRMb2NhbGUgPSBmb3VuZExvY2FsZSArIHN1cHBvcnRlZEV4dGVuc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBwcmVFeHRlbnNpb24gPSBmb3VuZExvY2FsZS5zbGljZSgwLCBwcml2YXRlSW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciBwb3N0RXh0ZW5zaW9uID0gZm91bmRMb2NhbGUuc2xpY2UocHJpdmF0ZUluZGV4LCBmb3VuZExvY2FsZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGZvdW5kTG9jYWxlID0gcHJlRXh0ZW5zaW9uICsgc3VwcG9ydGVkRXh0ZW5zaW9uICsgcG9zdEV4dGVuc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvdW5kTG9jYWxlID0gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKGZvdW5kTG9jYWxlKVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQubG9jYWxlID0gZm91bmRMb2NhbGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbn1cbmV4cG9ydHMuY3JlYXRlUmVzb2x2ZUxvY2FsZSA9IGNyZWF0ZVJlc29sdmVMb2NhbGU7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnZhbHVlXG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcGFyYW0ga2V5XG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVFeHRlbnNpb25WYWx1ZShleHRlbnNpb24sIGtleSkge1xuICAgIGludmFyaWFudF8xLmludmFyaWFudChrZXkubGVuZ3RoID09PSAyLCAna2V5IG11c3QgaGF2ZSAyIGVsZW1lbnRzJyk7XG4gICAgdmFyIHNpemUgPSBleHRlbnNpb24ubGVuZ3RoO1xuICAgIHZhciBzZWFyY2hWYWx1ZSA9IFwiLVwiICsga2V5ICsgXCItXCI7XG4gICAgdmFyIHBvcyA9IGV4dGVuc2lvbi5pbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgICBpZiAocG9zICE9PSAtMSkge1xuICAgICAgICB2YXIgc3RhcnQgPSBwb3MgKyA0O1xuICAgICAgICB2YXIgZW5kID0gc3RhcnQ7XG4gICAgICAgIHZhciBrID0gc3RhcnQ7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgdmFyIGUgPSBleHRlbnNpb24uaW5kZXhPZignLScsIGspO1xuICAgICAgICAgICAgdmFyIGxlbiA9IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChlID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGxlbiA9IHNpemUgLSBrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZSAtIGs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuID09PSAyKSB7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHNpemU7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBlO1xuICAgICAgICAgICAgICAgIGsgPSBlICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICBzZWFyY2hWYWx1ZSA9IFwiLVwiICsga2V5O1xuICAgIHBvcyA9IGV4dGVuc2lvbi5pbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgICBpZiAocG9zICE9PSAtMSAmJiBwb3MgKyAzID09PSBzaXplKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbnZhciBVTklDT0RFX0VYVEVOU0lPTl9TRVFVRU5DRV9SRUdFWCA9IC8tdSg/Oi1bMC05YS16XXsyLDh9KSsvZ2k7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtYmVzdGF2YWlsYWJsZWxvY2FsZVxuICogQHBhcmFtIGF2YWlsYWJsZUxvY2FsZXNcbiAqIEBwYXJhbSBsb2NhbGVcbiAqL1xuZnVuY3Rpb24gYmVzdEF2YWlsYWJsZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCBsb2NhbGUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gbG9jYWxlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmICh+YXZhaWxhYmxlTG9jYWxlcy5pbmRleE9mKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvcyA9IGNhbmRpZGF0ZS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgICBpZiAoIX5wb3MpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA+PSAyICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBwb3MgLT0gMjtcbiAgICAgICAgfVxuICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc2xpY2UoMCwgcG9zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVMb29rdXBNYXRjaGVyKGdldERlZmF1bHRMb2NhbGUpIHtcbiAgICAvKipcbiAgICAgKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWxvb2t1cG1hdGNoZXJcbiAgICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24gbG9va3VwTWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7IGxvY2FsZTogJycgfTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzEgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSByZXF1ZXN0ZWRMb2NhbGVzXzFbX2ldO1xuICAgICAgICAgICAgdmFyIG5vRXh0ZW5zaW9uTG9jYWxlID0gbG9jYWxlLnJlcGxhY2UoVU5JQ09ERV9FWFRFTlNJT05fU0VRVUVOQ0VfUkVHRVgsICcnKTtcbiAgICAgICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQubG9jYWxlID0gYXZhaWxhYmxlTG9jYWxlO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT09IG5vRXh0ZW5zaW9uTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbnNpb24gPSBsb2NhbGUuc2xpY2Uobm9FeHRlbnNpb25Mb2NhbGUubGVuZ3RoICsgMSwgbG9jYWxlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LmxvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlQmVzdEZpdE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBiZXN0Rml0TWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7IGxvY2FsZTogJycgfTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzIgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSByZXF1ZXN0ZWRMb2NhbGVzXzJbX2ldO1xuICAgICAgICAgICAgdmFyIG5vRXh0ZW5zaW9uTG9jYWxlID0gbG9jYWxlLnJlcGxhY2UoVU5JQ09ERV9FWFRFTlNJT05fU0VRVUVOQ0VfUkVHRVgsICcnKTtcbiAgICAgICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQubG9jYWxlID0gYXZhaWxhYmxlTG9jYWxlO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT09IG5vRXh0ZW5zaW9uTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbnNpb24gPSBsb2NhbGUuc2xpY2Uobm9FeHRlbnNpb25Mb2NhbGUubGVuZ3RoICsgMSwgbG9jYWxlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LmxvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0TG9jYWxlSGllcmFyY2h5KGxvY2FsZSkge1xuICAgIHZhciByZXN1bHRzID0gW2xvY2FsZV07XG4gICAgdmFyIGxvY2FsZVBhcnRzID0gbG9jYWxlLnNwbGl0KCctJyk7XG4gICAgZm9yICh2YXIgaSA9IGxvY2FsZVBhcnRzLmxlbmd0aDsgaSA+IDE7IGktLSkge1xuICAgICAgICByZXN1bHRzLnB1c2gobG9jYWxlUGFydHMuc2xpY2UoMCwgaSAtIDEpLmpvaW4oJy0nKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuZXhwb3J0cy5nZXRMb2NhbGVIaWVyYXJjaHkgPSBnZXRMb2NhbGVIaWVyYXJjaHk7XG5mdW5jdGlvbiBsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpIHtcbiAgICB2YXIgc3Vic2V0ID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzMgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IHJlcXVlc3RlZExvY2FsZXNfM1tfaV07XG4gICAgICAgIHZhciBub0V4dGVuc2lvbkxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKFVOSUNPREVfRVhURU5TSU9OX1NFUVVFTkNFX1JFR0VYLCAnJyk7XG4gICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgaWYgKGF2YWlsYWJsZUxvY2FsZSkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goYXZhaWxhYmxlTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuZnVuY3Rpb24gc3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKSB7XG4gICAgdmFyIG1hdGNoZXIgPSAnYmVzdCBmaXQnO1xuICAgIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0aW9ucyA9IHBvbHlmaWxsX3V0aWxzXzEudG9PYmplY3Qob3B0aW9ucyk7XG4gICAgICAgIG1hdGNoZXIgPSBwb2x5ZmlsbF91dGlsc18xLmdldE9wdGlvbihvcHRpb25zLCAnbG9jYWxlTWF0Y2hlcicsICdzdHJpbmcnLCBbJ2xvb2t1cCcsICdiZXN0IGZpdCddLCAnYmVzdCBmaXQnKTtcbiAgICB9XG4gICAgaWYgKG1hdGNoZXIgPT09ICdiZXN0IGZpdCcpIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcyk7XG4gICAgfVxuICAgIHJldHVybiBsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpO1xufVxuZXhwb3J0cy5zdXBwb3J0ZWRMb2NhbGVzID0gc3VwcG9ydGVkTG9jYWxlcztcbnZhciBNaXNzaW5nTG9jYWxlRGF0YUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nTG9jYWxlRGF0YUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdMb2NhbGVEYXRhRXJyb3IoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ01JU1NJTkdfTE9DQUxFX0RBVEEnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBNaXNzaW5nTG9jYWxlRGF0YUVycm9yO1xufShFcnJvcikpO1xuZnVuY3Rpb24gaXNNaXNzaW5nTG9jYWxlRGF0YUVycm9yKGUpIHtcbiAgICByZXR1cm4gZS50eXBlID09PSAnTUlTU0lOR19MT0NBTEVfREFUQSc7XG59XG5leHBvcnRzLmlzTWlzc2luZ0xvY2FsZURhdGFFcnJvciA9IGlzTWlzc2luZ0xvY2FsZURhdGFFcnJvcjtcbmZ1bmN0aW9uIHVucGFja0RhdGEobG9jYWxlLCBsb2NhbGVEYXRhLCBcbi8qKiBCeSBkZWZhdWx0IHNoYWxsb3cgbWVyZ2UgdGhlIGRpY3Rpb25hcmllcy4gKi9cbnJlZHVjZXIpIHtcbiAgICBpZiAocmVkdWNlciA9PT0gdm9pZCAwKSB7IHJlZHVjZXIgPSBmdW5jdGlvbiAoYWxsLCBkKSB7IHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oe30sIGFsbCksIGQpKTsgfTsgfVxuICAgIHZhciBsb2NhbGVIaWVyYXJjaHkgPSBnZXRMb2NhbGVIaWVyYXJjaHkobG9jYWxlKTtcbiAgICB2YXIgZGF0YVRvTWVyZ2UgPSBsb2NhbGVIaWVyYXJjaHlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAobCkgeyByZXR1cm4gbG9jYWxlRGF0YS5kYXRhW2xdOyB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmICghZGF0YVRvTWVyZ2UubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBNaXNzaW5nTG9jYWxlRGF0YUVycm9yKFwiTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgXFxcIlwiICsgbG9jYWxlICsgXCJcXFwiLCBsb29rdXAgaGllcmFyY2h5OiBcIiArIGxvY2FsZUhpZXJhcmNoeS5qb2luKCcsICcpKTtcbiAgICB9XG4gICAgZGF0YVRvTWVyZ2UucmV2ZXJzZSgpO1xuICAgIHJldHVybiBkYXRhVG9NZXJnZS5yZWR1Y2UocmVkdWNlciwge30pO1xufVxuZXhwb3J0cy51bnBhY2tEYXRhID0gdW5wYWNrRGF0YTtcbiIsIlwidXNlIHN0cmljdFwiO1xuZnVuY3Rpb24gX19leHBvcnQobSkge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBkaWZmXzEgPSByZXF1aXJlKFwiLi9zcmMvZGlmZlwiKTtcbmV4cG9ydHMuc2VsZWN0VW5pdCA9IGRpZmZfMS5zZWxlY3RVbml0O1xudmFyIHBvbHlmaWxsX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9zcmMvcG9seWZpbGwtdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHROdW1iZXJPcHRpb24gPSBwb2x5ZmlsbF91dGlsc18xLmRlZmF1bHROdW1iZXJPcHRpb247XG5leHBvcnRzLmdldEludGVybmFsU2xvdCA9IHBvbHlmaWxsX3V0aWxzXzEuZ2V0SW50ZXJuYWxTbG90O1xuZXhwb3J0cy5nZXRNdWx0aUludGVybmFsU2xvdHMgPSBwb2x5ZmlsbF91dGlsc18xLmdldE11bHRpSW50ZXJuYWxTbG90cztcbmV4cG9ydHMuZ2V0TnVtYmVyT3B0aW9uID0gcG9seWZpbGxfdXRpbHNfMS5nZXROdW1iZXJPcHRpb247XG5leHBvcnRzLmdldE9wdGlvbiA9IHBvbHlmaWxsX3V0aWxzXzEuZ2V0T3B0aW9uO1xuZXhwb3J0cy5pc0xpdGVyYWxQYXJ0ID0gcG9seWZpbGxfdXRpbHNfMS5pc0xpdGVyYWxQYXJ0O1xuZXhwb3J0cy5wYXJ0aXRpb25QYXR0ZXJuID0gcG9seWZpbGxfdXRpbHNfMS5wYXJ0aXRpb25QYXR0ZXJuO1xuZXhwb3J0cy5zZXRJbnRlcm5hbFNsb3QgPSBwb2x5ZmlsbF91dGlsc18xLnNldEludGVybmFsU2xvdDtcbmV4cG9ydHMuc2V0TXVsdGlJbnRlcm5hbFNsb3RzID0gcG9seWZpbGxfdXRpbHNfMS5zZXRNdWx0aUludGVybmFsU2xvdHM7XG5leHBvcnRzLnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyA9IHBvbHlmaWxsX3V0aWxzXzEuc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zO1xuZXhwb3J0cy50b09iamVjdCA9IHBvbHlmaWxsX3V0aWxzXzEudG9PYmplY3Q7XG5leHBvcnRzLm9iamVjdElzID0gcG9seWZpbGxfdXRpbHNfMS5vYmplY3RJcztcbmV4cG9ydHMuaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlID0gcG9seWZpbGxfdXRpbHNfMS5pc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGU7XG5leHBvcnRzLnRvU3RyaW5nID0gcG9seWZpbGxfdXRpbHNfMS50b1N0cmluZztcbmV4cG9ydHMuZm9ybWF0TnVtZXJpY1RvU3RyaW5nID0gcG9seWZpbGxfdXRpbHNfMS5mb3JtYXROdW1lcmljVG9TdHJpbmc7XG5leHBvcnRzLnRvUmF3Rml4ZWQgPSBwb2x5ZmlsbF91dGlsc18xLnRvUmF3Rml4ZWQ7XG5leHBvcnRzLnRvUmF3UHJlY2lzaW9uID0gcG9seWZpbGxfdXRpbHNfMS50b1Jhd1ByZWNpc2lvbjtcbmV4cG9ydHMuZ2V0TWFnbml0dWRlID0gcG9seWZpbGxfdXRpbHNfMS5nZXRNYWduaXR1ZGU7XG5leHBvcnRzLnJlcGVhdCA9IHBvbHlmaWxsX3V0aWxzXzEucmVwZWF0O1xuZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eSA9IHBvbHlmaWxsX3V0aWxzXzEuaGFzT3duUHJvcGVydHk7XG5leHBvcnRzLmlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyID0gcG9seWZpbGxfdXRpbHNfMS5pc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllcjtcbmV4cG9ydHMuZGVmaW5lUHJvcGVydHkgPSBwb2x5ZmlsbF91dGlsc18xLmRlZmluZVByb3BlcnR5O1xudmFyIHJlc29sdmVfbG9jYWxlXzEgPSByZXF1aXJlKFwiLi9zcmMvcmVzb2x2ZS1sb2NhbGVcIik7XG5leHBvcnRzLmNyZWF0ZVJlc29sdmVMb2NhbGUgPSByZXNvbHZlX2xvY2FsZV8xLmNyZWF0ZVJlc29sdmVMb2NhbGU7XG5leHBvcnRzLmdldExvY2FsZUhpZXJhcmNoeSA9IHJlc29sdmVfbG9jYWxlXzEuZ2V0TG9jYWxlSGllcmFyY2h5O1xuZXhwb3J0cy5zdXBwb3J0ZWRMb2NhbGVzID0gcmVzb2x2ZV9sb2NhbGVfMS5zdXBwb3J0ZWRMb2NhbGVzO1xuZXhwb3J0cy51bnBhY2tEYXRhID0gcmVzb2x2ZV9sb2NhbGVfMS51bnBhY2tEYXRhO1xuZXhwb3J0cy5pc01pc3NpbmdMb2NhbGVEYXRhRXJyb3IgPSByZXNvbHZlX2xvY2FsZV8xLmlzTWlzc2luZ0xvY2FsZURhdGFFcnJvcjtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy91bml0c1wiKSk7XG52YXIgaW52YXJpYW50XzEgPSByZXF1aXJlKFwiLi9zcmMvaW52YXJpYW50XCIpO1xuZXhwb3J0cy5pbnZhcmlhbnQgPSBpbnZhcmlhbnRfMS5pbnZhcmlhbnQ7XG4iLCJ2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbmV4cG9ydCB2YXIgUmVhY3RJbnRsRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChSZWFjdEludGxFcnJvckNvZGUpIHtcbiAgICBSZWFjdEludGxFcnJvckNvZGVbXCJGT1JNQVRfRVJST1JcIl0gPSBcIkZPUk1BVF9FUlJPUlwiO1xuICAgIFJlYWN0SW50bEVycm9yQ29kZVtcIlVOU1VQUE9SVEVEX0ZPUk1BVFRFUlwiXSA9IFwiVU5TVVBQT1JURURfRk9STUFUVEVSXCI7XG4gICAgUmVhY3RJbnRsRXJyb3JDb2RlW1wiSU5WQUxJRF9DT05GSUdcIl0gPSBcIklOVkFMSURfQ09ORklHXCI7XG4gICAgUmVhY3RJbnRsRXJyb3JDb2RlW1wiTUlTU0lOR19EQVRBXCJdID0gXCJNSVNTSU5HX0RBVEFcIjtcbiAgICBSZWFjdEludGxFcnJvckNvZGVbXCJNSVNTSU5HX1RSQU5TTEFUSU9OXCJdID0gXCJNSVNTSU5HX1RSQU5TTEFUSU9OXCI7XG59KShSZWFjdEludGxFcnJvckNvZGUgfHwgKFJlYWN0SW50bEVycm9yQ29kZSA9IHt9KSk7XG52YXIgUmVhY3RJbnRsRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlYWN0SW50bEVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlYWN0SW50bEVycm9yKGNvZGUsIG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBcIltSZWFjdCBJbnRsIEVycm9yIFwiICsgY29kZSArIFwiXSBcIiArIG1lc3NhZ2UgKyBcIiBcXG5cIiArIChleGNlcHRpb24gPyBcIlxcblwiICsgZXhjZXB0aW9uLm1lc3NhZ2UgKyBcIlxcblwiICsgZXhjZXB0aW9uLnN0YWNrIDogJycpKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX3RoaXMsIFJlYWN0SW50bEVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdEludGxFcnJvcjtcbn0oRXJyb3IpKTtcbmV4cG9ydCB7IFJlYWN0SW50bEVycm9yIH07XG52YXIgVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBVbnN1cHBvcnRlZEZvcm1hdHRlckVycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJVTlNVUFBPUlRFRF9GT1JNQVRURVJcIiAvKiBVTlNVUFBPUlRFRF9GT1JNQVRURVIgKi8sIG1lc3NhZ2UsIGV4Y2VwdGlvbikgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3I7XG59KFJlYWN0SW50bEVycm9yKSk7XG5leHBvcnQgeyBVbnN1cHBvcnRlZEZvcm1hdHRlckVycm9yIH07XG52YXIgSW52YWxpZENvbmZpZ0Vycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkQ29uZmlnRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW52YWxpZENvbmZpZ0Vycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJJTlZBTElEX0NPTkZJR1wiIC8qIElOVkFMSURfQ09ORklHICovLCBtZXNzYWdlLCBleGNlcHRpb24pIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBJbnZhbGlkQ29uZmlnRXJyb3I7XG59KFJlYWN0SW50bEVycm9yKSk7XG5leHBvcnQgeyBJbnZhbGlkQ29uZmlnRXJyb3IgfTtcbnZhciBNaXNzaW5nRGF0YUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nRGF0YUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdEYXRhRXJyb3IobWVzc2FnZSwgZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBcIk1JU1NJTkdfREFUQVwiIC8qIE1JU1NJTkdfREFUQSAqLywgbWVzc2FnZSwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gTWlzc2luZ0RhdGFFcnJvcjtcbn0oUmVhY3RJbnRsRXJyb3IpKTtcbmV4cG9ydCB7IE1pc3NpbmdEYXRhRXJyb3IgfTtcbnZhciBNZXNzYWdlRm9ybWF0RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1lc3NhZ2VGb3JtYXRFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNZXNzYWdlRm9ybWF0RXJyb3IobWVzc2FnZSwgbG9jYWxlLCBkZXNjcmlwdG9yLCBleGNlcHRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sIG1lc3NhZ2UgKyBcIiBcXG5Mb2NhbGU6IFwiICsgbG9jYWxlICsgXCJcXG5NZXNzYWdlSUQ6IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5pZCkgKyBcIlxcbkRlZmF1bHQgTWVzc2FnZTogXCIgKyAoZGVzY3JpcHRvciA9PT0gbnVsbCB8fCBkZXNjcmlwdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXNjcmlwdG9yLmRlZmF1bHRNZXNzYWdlKSArIFwiXFxuRGVzY3JpcHRpb246IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5kZXNjcmlwdGlvbikgKyBcIiBcXG5cIiwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gTWVzc2FnZUZvcm1hdEVycm9yO1xufShSZWFjdEludGxFcnJvcikpO1xuZXhwb3J0IHsgTWVzc2FnZUZvcm1hdEVycm9yIH07XG52YXIgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yKGRlc2NyaXB0b3IsIGxvY2FsZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBcIk1JU1NJTkdfVFJBTlNMQVRJT05cIiAvKiBNSVNTSU5HX1RSQU5TTEFUSU9OICovLCBcIk1pc3NpbmcgbWVzc2FnZTogXFxcIlwiICsgZGVzY3JpcHRvci5pZCArIFwiXFxcIiBmb3IgbG9jYWxlIFxcXCJcIiArIGxvY2FsZSArIFwiXFxcIiwgdXNpbmcgXCIgKyAoZGVzY3JpcHRvci5kZWZhdWx0TWVzc2FnZSA/ICdkZWZhdWx0IG1lc3NhZ2UnIDogJ2lkJykgKyBcIiBhcyBmYWxsYmFjay5cIikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yO1xufShSZWFjdEludGxFcnJvcikpO1xuZXhwb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IgfTtcbiIsIi8qXG5IVE1MIGVzY2FwaW5nIGlzIHRoZSBzYW1lIGFzIFJlYWN0J3NcbihvbiBwdXJwb3NlLikgVGhlcmVmb3JlLCBpdCBoYXMgdGhlIGZvbGxvd2luZyBDb3B5cmlnaHQgYW5kIExpY2Vuc2luZzpcblxuQ29weXJpZ2h0IDIwMTMtMjAxNCwgRmFjZWJvb2ssIEluYy5cbkFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZSBMSUNFTlNFXG5maWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiBSZWFjdCdzIHNvdXJjZSB0cmVlLlxuKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBJbnRsTWVzc2FnZUZvcm1hdCBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IG1lbW9pemVJbnRsQ29uc3RydWN0b3IgZnJvbSAnaW50bC1mb3JtYXQtY2FjaGUnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnQGZvcm1hdGpzL2ludGwtdXRpbHMnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclByb3BzKHByb3BzLCB3aGl0ZWxpc3QsIGRlZmF1bHRzKSB7XG4gICAgaWYgKGRlZmF1bHRzID09PSB2b2lkIDApIHsgZGVmYXVsdHMgPSB7fTsgfVxuICAgIHJldHVybiB3aGl0ZWxpc3QucmVkdWNlKGZ1bmN0aW9uIChmaWx0ZXJlZCwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZSBpbiBwcm9wcykge1xuICAgICAgICAgICAgZmlsdGVyZWRbbmFtZV0gPSBwcm9wc1tuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZFtuYW1lXSA9IGRlZmF1bHRzW25hbWVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICB9LCB7fSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW52YXJpYW50SW50bENvbnRleHQoaW50bCkge1xuICAgIGludmFyaWFudChpbnRsLCAnW1JlYWN0IEludGxdIENvdWxkIG5vdCBmaW5kIHJlcXVpcmVkIGBpbnRsYCBvYmplY3QuICcgK1xuICAgICAgICAnPEludGxQcm92aWRlcj4gbmVlZHMgdG8gZXhpc3QgaW4gdGhlIGNvbXBvbmVudCBhbmNlc3RyeS4nKTtcbn1cbmV4cG9ydCB2YXIgZGVmYXVsdEVycm9ySGFuZGxlciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbn07XG5leHBvcnQgdmFyIERFRkFVTFRfSU5UTF9DT05GSUcgPSB7XG4gICAgZm9ybWF0czoge30sXG4gICAgbWVzc2FnZXM6IHt9LFxuICAgIHRpbWVab25lOiB1bmRlZmluZWQsXG4gICAgdGV4dENvbXBvbmVudDogUmVhY3QuRnJhZ21lbnQsXG4gICAgZGVmYXVsdExvY2FsZTogJ2VuJyxcbiAgICBkZWZhdWx0Rm9ybWF0czoge30sXG4gICAgb25FcnJvcjogZGVmYXVsdEVycm9ySGFuZGxlcixcbn07XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW50bENhY2hlKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVUaW1lOiB7fSxcbiAgICAgICAgbnVtYmVyOiB7fSxcbiAgICAgICAgbWVzc2FnZToge30sXG4gICAgICAgIHJlbGF0aXZlVGltZToge30sXG4gICAgICAgIHBsdXJhbFJ1bGVzOiB7fSxcbiAgICAgICAgbGlzdDoge30sXG4gICAgICAgIGRpc3BsYXlOYW1lczoge30sXG4gICAgfTtcbn1cbi8qKlxuICogQ3JlYXRlIGludGwgZm9ybWF0dGVycyBhbmQgcG9wdWxhdGUgY2FjaGVcbiAqIEBwYXJhbSBjYWNoZSBleHBsaWNpdCBjYWNoZSB0byBwcmV2ZW50IGxlYWtpbmcgbWVtb3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtYXR0ZXJzKGNhY2hlKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTsgfVxuICAgIHZhciBSZWxhdGl2ZVRpbWVGb3JtYXQgPSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDtcbiAgICB2YXIgTGlzdEZvcm1hdCA9IEludGwuTGlzdEZvcm1hdDtcbiAgICB2YXIgRGlzcGxheU5hbWVzID0gSW50bC5EaXNwbGF5TmFtZXM7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0RGF0ZVRpbWVGb3JtYXQ6IG1lbW9pemVJbnRsQ29uc3RydWN0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgY2FjaGUuZGF0ZVRpbWUpLFxuICAgICAgICBnZXROdW1iZXJGb3JtYXQ6IG1lbW9pemVJbnRsQ29uc3RydWN0b3IoSW50bC5OdW1iZXJGb3JtYXQsIGNhY2hlLm51bWJlciksXG4gICAgICAgIGdldE1lc3NhZ2VGb3JtYXQ6IG1lbW9pemVJbnRsQ29uc3RydWN0b3IoSW50bE1lc3NhZ2VGb3JtYXQsIGNhY2hlLm1lc3NhZ2UpLFxuICAgICAgICBnZXRSZWxhdGl2ZVRpbWVGb3JtYXQ6IG1lbW9pemVJbnRsQ29uc3RydWN0b3IoUmVsYXRpdmVUaW1lRm9ybWF0LCBjYWNoZS5yZWxhdGl2ZVRpbWUpLFxuICAgICAgICBnZXRQbHVyYWxSdWxlczogbWVtb2l6ZUludGxDb25zdHJ1Y3RvcihJbnRsLlBsdXJhbFJ1bGVzLCBjYWNoZS5wbHVyYWxSdWxlcyksXG4gICAgICAgIGdldExpc3RGb3JtYXQ6IG1lbW9pemVJbnRsQ29uc3RydWN0b3IoTGlzdEZvcm1hdCwgY2FjaGUubGlzdCksXG4gICAgICAgIGdldERpc3BsYXlOYW1lczogbWVtb2l6ZUludGxDb25zdHJ1Y3RvcihEaXNwbGF5TmFtZXMsIGNhY2hlLmRpc3BsYXlOYW1lcyksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCB0eXBlLCBuYW1lLCBvbkVycm9yKSB7XG4gICAgdmFyIGZvcm1hdFR5cGUgPSBmb3JtYXRzICYmIGZvcm1hdHNbdHlwZV07XG4gICAgdmFyIGZvcm1hdDtcbiAgICBpZiAoZm9ybWF0VHlwZSkge1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXRUeXBlW25hbWVdO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuICAgIG9uRXJyb3IobmV3IFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IoXCJObyBcIiArIHR5cGUgKyBcIiBmb3JtYXQgbmFtZWQ6IFwiICsgbmFtZSkpO1xufVxuLyoqXG4gKiBUYWtlcyBhIGBmb3JtYXRYTUxFbGVtZW50Rm5gLCBhbmQgY29tcG9zZXMgaXQgaW4gZnVuY3Rpb24sIHdoaWNoIHBhc3Nlc1xuICogYXJndW1lbnQgYHBhcnRzYCB0aHJvdWdoLCBhc3NpZ25pbmcgdW5pcXVlIGtleSB0byBlYWNoIHBhcnQsIHRvIHByZXZlbnRcbiAqIFwiRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIlwiIFJlYWN0IGVycm9yLlxuICogQHBhcmFtIGZvcm1hdFhNTEVsZW1lbnRGblxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduVW5pcXVlS2V5c1RvUGFydHMoZm9ybWF0WE1MRWxlbWVudEZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJ0cykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgIHJldHVybiBmb3JtYXRYTUxFbGVtZW50Rm4oUmVhY3QuQ2hpbGRyZW4udG9BcnJheShwYXJ0cykpO1xuICAgIH07XG59XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBob2lzdE5vblJlYWN0U3RhdGljc18gZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuLy8gU2luY2Ugcm9sbHVwIGNhbm5vdCBkZWFsIHdpdGggbmFtZXNwYWNlIGJlaW5nIGEgZnVuY3Rpb24sXG4vLyB0aGlzIGlzIHRvIGludGVyb3Agd2l0aCBUeXBlU2NyaXB0IHNpbmNlIGBpbnZhcmlhbnRgXG4vLyBkb2VzIG5vdCBleHBvcnQgYSBkZWZhdWx0XG4vLyBodHRwczovL2dpdGh1Yi5jb20vcm9sbHVwL3JvbGx1cC9pc3N1ZXMvMTI2N1xudmFyIGhvaXN0Tm9uUmVhY3RTdGF0aWNzID0gaG9pc3ROb25SZWFjdFN0YXRpY3NfLmRlZmF1bHQgfHwgaG9pc3ROb25SZWFjdFN0YXRpY3NfO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xufVxuLy8gVE9ETzogV2Ugc2hvdWxkIHByb3ZpZGUgaW5pdGlhbCB2YWx1ZSBoZXJlXG52YXIgSW50bENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xudmFyIEludGxDb25zdW1lciA9IEludGxDb250ZXh0LkNvbnN1bWVyLCBJbnRsUHJvdmlkZXIgPSBJbnRsQ29udGV4dC5Qcm92aWRlcjtcbmV4cG9ydCB2YXIgUHJvdmlkZXIgPSBJbnRsUHJvdmlkZXI7XG5leHBvcnQgdmFyIENvbnRleHQgPSBJbnRsQ29udGV4dDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluamVjdEludGwoV3JhcHBlZENvbXBvbmVudCwgb3B0aW9ucykge1xuICAgIHZhciBfYSA9IG9wdGlvbnMgfHwge30sIF9iID0gX2EuaW50bFByb3BOYW1lLCBpbnRsUHJvcE5hbWUgPSBfYiA9PT0gdm9pZCAwID8gJ2ludGwnIDogX2IsIF9jID0gX2EuZm9yd2FyZFJlZiwgZm9yd2FyZFJlZiA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLCBfZCA9IF9hLmVuZm9yY2VDb250ZXh0LCBlbmZvcmNlQ29udGV4dCA9IF9kID09PSB2b2lkIDAgPyB0cnVlIDogX2Q7XG4gICAgdmFyIFdpdGhJbnRsID0gZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbnRsQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChpbnRsKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGVuZm9yY2VDb250ZXh0KSB7XG4gICAgICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW50bFByb3AgPSAoX2EgPSB7fSwgX2FbaW50bFByb3BOYW1lXSA9IGludGwsIF9hKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwcm9wcywgaW50bFByb3AsIHsgcmVmOiBmb3J3YXJkUmVmID8gcHJvcHMuZm9yd2FyZGVkUmVmIDogbnVsbCB9KSkpO1xuICAgIH0pKTsgfTtcbiAgICBXaXRoSW50bC5kaXNwbGF5TmFtZSA9IFwiaW5qZWN0SW50bChcIiArIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpICsgXCIpXCI7XG4gICAgV2l0aEludGwuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgaWYgKGZvcndhcmRSZWYpIHtcbiAgICAgICAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFdpdGhJbnRsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgZm9yd2FyZGVkUmVmOiByZWYgfSkpKTsgfSksIFdyYXBwZWRDb21wb25lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEludGwsIFdyYXBwZWRDb21wb25lbnQpO1xufVxuIiwidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9pbmplY3RJbnRsJztcbnZhciBEaXNwbGF5TmFtZTtcbihmdW5jdGlvbiAoRGlzcGxheU5hbWUpIHtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdERhdGVcIl0gPSBcIkZvcm1hdHRlZERhdGVcIjtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdFRpbWVcIl0gPSBcIkZvcm1hdHRlZFRpbWVcIjtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdE51bWJlclwiXSA9IFwiRm9ybWF0dGVkTnVtYmVyXCI7XG4gICAgRGlzcGxheU5hbWVbXCJmb3JtYXRMaXN0XCJdID0gXCJGb3JtYXR0ZWRMaXN0XCI7XG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgRGlzcGxheU5hbWUgaXMgdGhlIGxvY2FsZSBkaXNwbGF5IG5hbWUsIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoXG4gICAgLy8gdGhlIG5hbWUgb2YgdGhlIGVudW0sIHdoaWNoIGlzIGZvciBSZWFjdCBjb21wb25lbnQgZGlzcGxheSBuYW1lIGluIGRldiB0b29scy5cbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdERpc3BsYXlOYW1lXCJdID0gXCJGb3JtYXR0ZWREaXNwbGF5TmFtZVwiO1xufSkoRGlzcGxheU5hbWUgfHwgKERpc3BsYXlOYW1lID0ge30pKTtcbnZhciBEaXNwbGF5TmFtZVBhcnRzO1xuKGZ1bmN0aW9uIChEaXNwbGF5TmFtZVBhcnRzKSB7XG4gICAgRGlzcGxheU5hbWVQYXJ0c1tcImZvcm1hdERhdGVcIl0gPSBcIkZvcm1hdHRlZERhdGVQYXJ0c1wiO1xuICAgIERpc3BsYXlOYW1lUGFydHNbXCJmb3JtYXRUaW1lXCJdID0gXCJGb3JtYXR0ZWRUaW1lUGFydHNcIjtcbiAgICBEaXNwbGF5TmFtZVBhcnRzW1wiZm9ybWF0TnVtYmVyXCJdID0gXCJGb3JtYXR0ZWROdW1iZXJQYXJ0c1wiO1xuICAgIERpc3BsYXlOYW1lUGFydHNbXCJmb3JtYXRMaXN0XCJdID0gXCJGb3JtYXR0ZWRMaXN0UGFydHNcIjtcbn0pKERpc3BsYXlOYW1lUGFydHMgfHwgKERpc3BsYXlOYW1lUGFydHMgPSB7fSkpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWROdW1iZXJQYXJ0cyA9IGZ1bmN0aW9uIChwcm9wcykgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgZm9ybWF0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwiY2hpbGRyZW5cIl0pO1xuICAgIHJldHVybiBjaGlsZHJlbihpbnRsLmZvcm1hdE51bWJlclRvUGFydHModmFsdWUsIGZvcm1hdFByb3BzKSk7XG59KSk7IH07XG5Gb3JtYXR0ZWROdW1iZXJQYXJ0cy5kaXNwbGF5TmFtZSA9ICdGb3JtYXR0ZWROdW1iZXJQYXJ0cyc7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVkRGF0ZVRpbWVQYXJ0c0NvbXBvbmVudChuYW1lKSB7XG4gICAgdmFyIENvbXBvbmVudFBhcnRzID0gZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoaW50bCkge1xuICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGZvcm1hdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImNoaWxkcmVuXCJdKTtcbiAgICAgICAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcbiAgICAgICAgdmFyIGZvcm1hdHRlZFBhcnRzID0gbmFtZSA9PT0gJ2Zvcm1hdERhdGUnXG4gICAgICAgICAgICA/IGludGwuZm9ybWF0RGF0ZVRvUGFydHMoZGF0ZSwgZm9ybWF0UHJvcHMpXG4gICAgICAgICAgICA6IGludGwuZm9ybWF0VGltZVRvUGFydHMoZGF0ZSwgZm9ybWF0UHJvcHMpO1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkUGFydHMpO1xuICAgIH0pKTsgfTtcbiAgICBDb21wb25lbnRQYXJ0cy5kaXNwbGF5TmFtZSA9IERpc3BsYXlOYW1lUGFydHNbbmFtZV07XG4gICAgcmV0dXJuIENvbXBvbmVudFBhcnRzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudChuYW1lKSB7XG4gICAgdmFyIENvbXBvbmVudCA9IGZ1bmN0aW9uIChwcm9wcykgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICAgICAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBmb3JtYXRQcm9wcyA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiXSk7XG4gICAgICAgIC8vIFRPRE86IGZpeCBUUyB0eXBlIGRlZmluaXRpb24gZm9yIGxvY2FsZU1hdGNoZXIgdXBzdHJlYW1cbiAgICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gaW50bFtuYW1lXSh2YWx1ZSwgZm9ybWF0UHJvcHMpO1xuICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBUZXh0ID0gaW50bC50ZXh0Q29tcG9uZW50IHx8IFJlYWN0LkZyYWdtZW50O1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBudWxsLCBmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSkpOyB9O1xuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IERpc3BsYXlOYW1lW25hbWVdO1xuICAgIHJldHVybiBDb21wb25lbnQ7XG59XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9pbmplY3RJbnRsJztcbmltcG9ydCB7IGludmFyaWFudEludGxDb250ZXh0IH0gZnJvbSAnLi4vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSW50bCgpIHtcbiAgICB2YXIgaW50bCA9IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gICAgcmV0dXJuIGludGw7XG59XG4iLCJpbXBvcnQgeyBnZXROYW1lZEZvcm1hdCwgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSZWFjdEludGxFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbnZhciBOVU1CRVJfRk9STUFUX09QVElPTlMgPSBbXG4gICAgJ2xvY2FsZU1hdGNoZXInLFxuICAgICdzdHlsZScsXG4gICAgJ2N1cnJlbmN5JyxcbiAgICAnY3VycmVuY3lEaXNwbGF5JyxcbiAgICAndW5pdCcsXG4gICAgJ3VuaXREaXNwbGF5JyxcbiAgICAndXNlR3JvdXBpbmcnLFxuICAgICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsXG4gICAgJ21pbmltdW1GcmFjdGlvbkRpZ2l0cycsXG4gICAgJ21heGltdW1GcmFjdGlvbkRpZ2l0cycsXG4gICAgJ21pbmltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICAgJ21heGltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICAgLy8gRVMyMDIwIE51bWJlckZvcm1hdFxuICAgICdjb21wYWN0RGlzcGxheScsXG4gICAgJ2N1cnJlbmN5RGlzcGxheScsXG4gICAgJ2N1cnJlbmN5U2lnbicsXG4gICAgJ25vdGF0aW9uJyxcbiAgICAnc2lnbkRpc3BsYXknLFxuICAgICd1bml0JyxcbiAgICAndW5pdERpc3BsYXknLFxuXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoX2EsIGdldE51bWJlckZvcm1hdCwgb3B0aW9ucykge1xuICAgIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsIGZvcm1hdHMgPSBfYS5mb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvcjtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICB2YXIgZGVmYXVsdHMgPSAoKGZvcm1hdCAmJlxuICAgICAgICBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCAnbnVtYmVyJywgZm9ybWF0LCBvbkVycm9yKSkgfHxcbiAgICAgICAge30pO1xuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBOVU1CRVJfRk9STUFUX09QVElPTlMsIGRlZmF1bHRzKTtcbiAgICByZXR1cm4gZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25maWcub25FcnJvcihuZXcgUmVhY3RJbnRsRXJyb3IoXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sICdFcnJvciBmb3JtYXR0aW5nIG51bWJlci4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlclRvUGFydHMoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCBvcHRpb25zKS5mb3JtYXRUb1BhcnRzKHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBudW1iZXIuJywgZSkpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG4iLCJpbXBvcnQgeyBnZXROYW1lZEZvcm1hdCwgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtYXRFcnJvciB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBNZXNzYWdlRm9ybWF0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG52YXIgUkVMQVRJVkVfVElNRV9GT1JNQVRfT1BUSU9OUyA9IFsnbnVtZXJpYycsICdzdHlsZSddO1xuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKF9hLCBnZXRSZWxhdGl2ZVRpbWVGb3JtYXQsIG9wdGlvbnMpIHtcbiAgICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLCBmb3JtYXRzID0gX2EuZm9ybWF0cywgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG4gICAgdmFyIGRlZmF1bHRzID0gKCEhZm9ybWF0ICYmIGdldE5hbWVkRm9ybWF0KGZvcm1hdHMsICdyZWxhdGl2ZScsIGZvcm1hdCwgb25FcnJvcikpIHx8IHt9O1xuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBSRUxBVElWRV9USU1FX0ZPUk1BVF9PUFRJT05TLCBkZWZhdWx0cyk7XG4gICAgcmV0dXJuIGdldFJlbGF0aXZlVGltZUZvcm1hdChsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKGNvbmZpZywgZ2V0UmVsYXRpdmVUaW1lRm9ybWF0LCB2YWx1ZSwgdW5pdCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgaWYgKCF1bml0KSB7XG4gICAgICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgICB9XG4gICAgdmFyIFJlbGF0aXZlVGltZUZvcm1hdCA9IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0O1xuICAgIGlmICghUmVsYXRpdmVUaW1lRm9ybWF0KSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBGb3JtYXRFcnJvcihcIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdFxcXCJcXG5cIiwgXCJNSVNTSU5HX0lOVExfQVBJXCIgLyogTUlTU0lOR19JTlRMX0FQSSAqLykpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0UmVsYXRpdmVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQodmFsdWUsIHVuaXQpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25maWcub25FcnJvcihuZXcgTWVzc2FnZUZvcm1hdEVycm9yKCdFcnJvciBmb3JtYXR0aW5nIHJlbGF0aXZlIHRpbWUuJywgZSkpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGZpbHRlclByb3BzLCBnZXROYW1lZEZvcm1hdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlYWN0SW50bEVycm9yIH0gZnJvbSAnLi4vZXJyb3InO1xudmFyIERBVEVfVElNRV9GT1JNQVRfT1BUSU9OUyA9IFtcbiAgICAnbG9jYWxlTWF0Y2hlcicsXG4gICAgJ2Zvcm1hdE1hdGNoZXInLFxuICAgICd0aW1lWm9uZScsXG4gICAgJ2hvdXIxMicsXG4gICAgJ3dlZWtkYXknLFxuICAgICdlcmEnLFxuICAgICd5ZWFyJyxcbiAgICAnbW9udGgnLFxuICAgICdkYXknLFxuICAgICdob3VyJyxcbiAgICAnbWludXRlJyxcbiAgICAnc2Vjb25kJyxcbiAgICAndGltZVpvbmVOYW1lJyxcbiAgICAnaG91ckN5Y2xlJyxcbiAgICAnZGF0ZVN0eWxlJyxcbiAgICAndGltZVN0eWxlJyxcbiAgICAnZnJhY3Rpb25hbFNlY29uZERpZ2l0cycsXG4gICAgJ2NhbGVuZGFyJyxcbiAgICAvLyAnZGF5UGVyaW9kJyxcbiAgICAnbnVtYmVyaW5nU3lzdGVtJyxcbl07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKF9hLCB0eXBlLCBnZXREYXRlVGltZUZvcm1hdCwgb3B0aW9ucykge1xuICAgIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsIGZvcm1hdHMgPSBfYS5mb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvciwgdGltZVpvbmUgPSBfYS50aW1lWm9uZTtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICB2YXIgZGVmYXVsdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgKHRpbWVab25lICYmIHsgdGltZVpvbmU6IHRpbWVab25lIH0pKSwgKGZvcm1hdCAmJiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCB0eXBlLCBmb3JtYXQsIG9uRXJyb3IpKSk7XG4gICAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlclByb3BzKG9wdGlvbnMsIERBVEVfVElNRV9GT1JNQVRfT1BUSU9OUywgZGVmYXVsdHMpO1xuICAgIGlmICh0eXBlID09PSAndGltZScgJiZcbiAgICAgICAgIWZpbHRlcmVkT3B0aW9ucy5ob3VyICYmXG4gICAgICAgICFmaWx0ZXJlZE9wdGlvbnMubWludXRlICYmXG4gICAgICAgICFmaWx0ZXJlZE9wdGlvbnMuc2Vjb25kKSB7XG4gICAgICAgIC8vIEFkZCBkZWZhdWx0IGZvcm1hdHRpbmcgb3B0aW9ucyBpZiBob3VyLCBtaW51dGUsIG9yIHNlY29uZCBpc24ndCBkZWZpbmVkLlxuICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZmlsdGVyZWRPcHRpb25zKSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlIHx8IDApIDogdmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICdkYXRlJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBkYXRlLicsIGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhkYXRlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lKGNvbmZpZywgZ2V0RGF0ZVRpbWVGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSB8fCAwKSA6IHZhbHVlO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZXIoY29uZmlnLCAndGltZScsIGdldERhdGVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBSZWFjdEludGxFcnJvcihcIkZPUk1BVF9FUlJPUlwiIC8qIEZPUk1BVF9FUlJPUiAqLywgJ0Vycm9yIGZvcm1hdHRpbmcgdGltZS4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcoZGF0ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZVRvUGFydHMoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlIHx8IDApIDogdmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICdkYXRlJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBSZWFjdEludGxFcnJvcihcIkZPUk1BVF9FUlJPUlwiIC8qIEZPUk1BVF9FUlJPUiAqLywgJ0Vycm9yIGZvcm1hdHRpbmcgZGF0ZS4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lVG9QYXJ0cyhjb25maWcsIGdldERhdGVUaW1lRm9ybWF0LCB2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgJ3RpbWUnLCBnZXREYXRlVGltZUZvcm1hdCwgb3B0aW9ucykuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyB0aW1lLicsIGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuIiwiaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlRm9ybWF0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG5pbXBvcnQgeyBGb3JtYXRFcnJvciB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG52YXIgUExVUkFMX0ZPUk1BVF9PUFRJT05TID0gW1xuICAgICdsb2NhbGVNYXRjaGVyJyxcbiAgICAndHlwZScsXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBsdXJhbChfYSwgZ2V0UGx1cmFsUnVsZXMsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICBpZiAoIUludGwuUGx1cmFsUnVsZXMpIHtcbiAgICAgICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXBsdXJhbHJ1bGVzXFxcIlxcblwiLCBcIk1JU1NJTkdfSU5UTF9BUElcIiAvKiBNSVNTSU5HX0lOVExfQVBJICovKSk7XG4gICAgfVxuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBQTFVSQUxfRk9STUFUX09QVElPTlMpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXRQbHVyYWxSdWxlcyhsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucykuc2VsZWN0KHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihuZXcgTWVzc2FnZUZvcm1hdEVycm9yKCdFcnJvciBmb3JtYXR0aW5nIHBsdXJhbC4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiAnb3RoZXInO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG4gKiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fc3ByZWFkQXJyYXlzID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5cykgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcbiAgICByZXR1cm4gcjtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICdAZm9ybWF0anMvaW50bC11dGlscyc7XG5pbXBvcnQgeyBhc3NpZ25VbmlxdWVLZXlzVG9QYXJ0cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBJbnRsTWVzc2FnZUZvcm1hdCwgeyBpc0Zvcm1hdFhNTEVsZW1lbnRGbiwgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IsIE1lc3NhZ2VGb3JtYXRFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbmZ1bmN0aW9uIHNldFRpbWVab25lSW5PcHRpb25zKG9wdHMsIHRpbWVab25lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9wdHMpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKHsgdGltZVpvbmU6IHRpbWVab25lIH0sIG9wdHNba10pO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZU9wdGlvbnMob3B0czEsIG9wdHMyKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0czEpLCBvcHRzMikpO1xuICAgIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCAob3B0czFba10gfHwge30pKSwgKG9wdHMyW2tdIHx8IHt9KSk7XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwge30pO1xufVxuZnVuY3Rpb24gZGVlcE1lcmdlRm9ybWF0c0FuZFNldFRpbWVab25lKGYxLCB0aW1lWm9uZSkge1xuICAgIGlmICghdGltZVpvbmUpIHtcbiAgICAgICAgcmV0dXJuIGYxO1xuICAgIH1cbiAgICB2YXIgbWZGb3JtYXRzID0gSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cztcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIG1mRm9ybWF0cyksIGYxKSwgeyBkYXRlOiBkZWVwTWVyZ2VPcHRpb25zKHNldFRpbWVab25lSW5PcHRpb25zKG1mRm9ybWF0cy5kYXRlLCB0aW1lWm9uZSksIHNldFRpbWVab25lSW5PcHRpb25zKGYxLmRhdGUgfHwge30sIHRpbWVab25lKSksIHRpbWU6IGRlZXBNZXJnZU9wdGlvbnMoc2V0VGltZVpvbmVJbk9wdGlvbnMobWZGb3JtYXRzLnRpbWUsIHRpbWVab25lKSwgc2V0VGltZVpvbmVJbk9wdGlvbnMoZjEudGltZSB8fCB7fSwgdGltZVpvbmUpKSB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25VbmlxdWVLZXlzVG9Gb3JtYXRYTUxFbGVtZW50Rm5Bcmd1bWVudCh2YWx1ZXMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWVzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xuICAgICAgICB2YXIgdiA9IHZhbHVlc1trXTtcbiAgICAgICAgYWNjW2tdID0gaXNGb3JtYXRYTUxFbGVtZW50Rm4odilcbiAgICAgICAgICAgID8gYXNzaWduVW5pcXVlS2V5c1RvUGFydHModilcbiAgICAgICAgICAgIDogdjtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59XG5mdW5jdGlvbiBwcmVwYXJlSW50bE1lc3NhZ2VGb3JtYXRIdG1sT3V0cHV0KGNodW5rcywgc2hvdWxkV3JhcCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNodW5rcykgJiYgc2hvdWxkV3JhcFxuICAgICAgICA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkoUmVhY3QsIF9fc3ByZWFkQXJyYXlzKFtSZWFjdC5GcmFnbWVudCwgbnVsbF0sIGNodW5rcykpIDogY2h1bmtzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UoX2EsIHN0YXRlLCBtZXNzYWdlRGVzY3JpcHRvciwgdmFsdWVzKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgZm9ybWF0cyA9IF9hLmZvcm1hdHMsIG1lc3NhZ2VzID0gX2EubWVzc2FnZXMsIGRlZmF1bHRMb2NhbGUgPSBfYS5kZWZhdWx0TG9jYWxlLCBkZWZhdWx0Rm9ybWF0cyA9IF9hLmRlZmF1bHRGb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvciwgdGltZVpvbmUgPSBfYS50aW1lWm9uZSwgd3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCA9IF9hLndyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQ7XG4gICAgaWYgKG1lc3NhZ2VEZXNjcmlwdG9yID09PSB2b2lkIDApIHsgbWVzc2FnZURlc2NyaXB0b3IgPSB7IGlkOiAnJyB9OyB9XG4gICAgdmFyIGlkID0gbWVzc2FnZURlc2NyaXB0b3IuaWQsIGRlZmF1bHRNZXNzYWdlID0gbWVzc2FnZURlc2NyaXB0b3IuZGVmYXVsdE1lc3NhZ2U7XG4gICAgLy8gYGlkYCBpcyBhIHJlcXVpcmVkIGZpZWxkIG9mIGEgTWVzc2FnZSBEZXNjcmlwdG9yLlxuICAgIGludmFyaWFudCghIWlkLCAnW1JlYWN0IEludGxdIEFuIGBpZGAgbXVzdCBiZSBwcm92aWRlZCB0byBmb3JtYXQgYSBtZXNzYWdlLicpO1xuICAgIHZhciBtZXNzYWdlID0gbWVzc2FnZXMgJiYgbWVzc2FnZXNbU3RyaW5nKGlkKV07XG4gICAgLy8gSU1QT1JUQU5UOiBIb3QgcGF0aCBzdHJhaWdodCBsb29rdXAgZm9yIHBlcmZvcm1hbmNlXG4gICAgaWYgKCF2YWx1ZXMgJiYgbWVzc2FnZSAmJiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVwbGFjZSgvJ1xceyguKj8pXFx9Jy9naSwgXCJ7JDF9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0Y2hlZFZhbHVlcyA9IHZhbHVlcyAmJiBhc3NpZ25VbmlxdWVLZXlzVG9Gb3JtYXRYTUxFbGVtZW50Rm5Bcmd1bWVudCh2YWx1ZXMpO1xuICAgIGZvcm1hdHMgPSBkZWVwTWVyZ2VGb3JtYXRzQW5kU2V0VGltZVpvbmUoZm9ybWF0cywgdGltZVpvbmUpO1xuICAgIGRlZmF1bHRGb3JtYXRzID0gZGVlcE1lcmdlRm9ybWF0c0FuZFNldFRpbWVab25lKGRlZmF1bHRGb3JtYXRzLCB0aW1lWm9uZSk7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgIGlmICghZGVmYXVsdE1lc3NhZ2UgfHxcbiAgICAgICAgICAgIChsb2NhbGUgJiYgbG9jYWxlLnRvTG93ZXJDYXNlKCkgIT09IGRlZmF1bHRMb2NhbGUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgd2FybmluZ3MgZnJvbSBsaXR0ZXJpbmcgdGhlIGNvbnNvbGUgaW4gZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIC8vIHdoZW4gbm8gYG1lc3NhZ2VzYCBhcmUgcGFzc2VkIGludG8gdGhlIDxJbnRsUHJvdmlkZXI+IGZvciB0aGVcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgbG9jYWxlLlxuICAgICAgICAgICAgb25FcnJvcihuZXcgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IobWVzc2FnZURlc2NyaXB0b3IsIGxvY2FsZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0TWVzc2FnZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVyID0gc3RhdGUuZ2V0TWVzc2FnZUZvcm1hdChkZWZhdWx0TWVzc2FnZSwgZGVmYXVsdExvY2FsZSwgZGVmYXVsdEZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmVwYXJlSW50bE1lc3NhZ2VGb3JtYXRIdG1sT3V0cHV0KGZvcm1hdHRlci5mb3JtYXQocGF0Y2hlZFZhbHVlcyksIHdyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yKG5ldyBNZXNzYWdlRm9ybWF0RXJyb3IoXCJFcnJvciBmb3JtYXR0aW5nIGRlZmF1bHQgbWVzc2FnZSBmb3I6IFxcXCJcIiArIGlkICsgXCJcXFwiLCByZW5kZXJpbmcgZGVmYXVsdCBtZXNzYWdlIHZlcmJhdGltXCIsIGxvY2FsZSwgbWVzc2FnZURlc2NyaXB0b3IsIGUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICAvLyBXZSBoYXZlIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2VcbiAgICB0cnkge1xuICAgICAgICB2YXIgZm9ybWF0dGVyID0gc3RhdGUuZ2V0TWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGUsIGZvcm1hdHMsIHtcbiAgICAgICAgICAgIGZvcm1hdHRlcnM6IHN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByZXBhcmVJbnRsTWVzc2FnZUZvcm1hdEh0bWxPdXRwdXQoZm9ybWF0dGVyLmZvcm1hdChwYXRjaGVkVmFsdWVzKSwgd3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IobmV3IE1lc3NhZ2VGb3JtYXRFcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgbWVzc2FnZTogXFxcIlwiICsgaWQgKyBcIlxcXCIsIHVzaW5nIFwiICsgKGRlZmF1bHRNZXNzYWdlID8gJ2RlZmF1bHQgbWVzc2FnZScgOiAnaWQnKSArIFwiIGFzIGZhbGxiYWNrLlwiLCBsb2NhbGUsIG1lc3NhZ2VEZXNjcmlwdG9yLCBlKSk7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0TWVzc2FnZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGZvcm1hdHRlciA9IHN0YXRlLmdldE1lc3NhZ2VGb3JtYXQoZGVmYXVsdE1lc3NhZ2UsIGRlZmF1bHRMb2NhbGUsIGRlZmF1bHRGb3JtYXRzKTtcbiAgICAgICAgICAgIHJldHVybiBwcmVwYXJlSW50bE1lc3NhZ2VGb3JtYXRIdG1sT3V0cHV0KGZvcm1hdHRlci5mb3JtYXQocGF0Y2hlZFZhbHVlcyksIHdyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBvbkVycm9yKG5ldyBNZXNzYWdlRm9ybWF0RXJyb3IoXCJFcnJvciBmb3JtYXR0aW5nIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZm9yOiBcXFwiXCIgKyBpZCArIFwiXFxcIiwgcmVuZGVyaW5nIG1lc3NhZ2UgdmVyYmF0aW1cIiwgbG9jYWxlLCBtZXNzYWdlRGVzY3JpcHRvciwgZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlIHx8IGlkO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBzaGFsbG93RXF1YWxPYmplY3RzKG9iakEsIG9iakIpIHtcbiAgaWYgKG9iakEgPT09IG9iakIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghb2JqQSB8fCAhb2JqQikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBhS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIgYktleXMgPSBPYmplY3Qua2V5cyhvYmpCKTtcbiAgdmFyIGxlbiA9IGFLZXlzLmxlbmd0aDtcblxuICBpZiAoYktleXMubGVuZ3RoICE9PSBsZW4pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGFLZXlzW2ldO1xuXG4gICAgaWYgKG9iakFba2V5XSAhPT0gb2JqQltrZXldIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVhbE9iamVjdHM7XG4iLCJpbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZvcm1hdEVycm9yIH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0JztcbmltcG9ydCB7IFJlYWN0SW50bEVycm9yIH0gZnJvbSAnLi4vZXJyb3InO1xudmFyIExJU1RfRk9STUFUX09QVElPTlMgPSBbXG4gICAgJ2xvY2FsZU1hdGNoZXInLFxuICAgICd0eXBlJyxcbiAgICAnc3R5bGUnLFxuXTtcbnZhciBub3cgPSBEYXRlLm5vdygpO1xuZnVuY3Rpb24gZ2VuZXJhdGVUb2tlbihpKSB7XG4gICAgcmV0dXJuIG5vdyArIFwiX1wiICsgaSArIFwiX1wiICsgbm93O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExpc3QoX2EsIGdldExpc3RGb3JtYXQsIHZhbHVlcywgb3B0aW9ucykge1xuICAgIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsIG9uRXJyb3IgPSBfYS5vbkVycm9yO1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIExpc3RGb3JtYXQgPSBJbnRsLkxpc3RGb3JtYXQ7XG4gICAgaWYgKCFMaXN0Rm9ybWF0KSB7XG4gICAgICAgIG9uRXJyb3IobmV3IEZvcm1hdEVycm9yKFwiSW50bC5MaXN0Rm9ybWF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLWxpc3Rmb3JtYXRcXFwiXFxuXCIsIFwiTUlTU0lOR19JTlRMX0FQSVwiIC8qIE1JU1NJTkdfSU5UTF9BUEkgKi8pKTtcbiAgICB9XG4gICAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlclByb3BzKG9wdGlvbnMsIExJU1RfRk9STUFUX09QVElPTlMpO1xuICAgIHRyeSB7XG4gICAgICAgIHZhciByaWNoVmFsdWVzXzEgPSB7fTtcbiAgICAgICAgdmFyIHNlcmlhbGl6ZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gZ2VuZXJhdGVUb2tlbihpKTtcbiAgICAgICAgICAgICAgICByaWNoVmFsdWVzXzFbaWRdID0gdjtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyaWNoVmFsdWVzXzEpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldExpc3RGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpLmZvcm1hdChzZXJpYWxpemVkVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGFydHMgPSBnZXRMaXN0Rm9ybWF0KGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKS5mb3JtYXRUb1BhcnRzKHNlcmlhbGl6ZWRWYWx1ZXMpO1xuICAgICAgICByZXR1cm4gcGFydHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIGVsKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gZWwudmFsdWU7XG4gICAgICAgICAgICBpZiAocmljaFZhbHVlc18xW3ZhbF0pIHtcbiAgICAgICAgICAgICAgICBhbGwucHVzaChyaWNoVmFsdWVzXzFbdmFsXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgYWxsW2FsbC5sZW5ndGggLSAxXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBhbGxbYWxsLmxlbmd0aCAtIDFdICs9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFsbC5wdXNoKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBsaXN0LicsIGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbiIsImltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybWF0RXJyb3IgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgUmVhY3RJbnRsRXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG52YXIgRElTUExBWV9OQU1FU19PUFRPTlMgPSBbXG4gICAgJ2xvY2FsZU1hdGNoZXInLFxuICAgICdzdHlsZScsXG4gICAgJ3R5cGUnLFxuICAgICdmYWxsYmFjaycsXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpc3BsYXlOYW1lKF9hLCBnZXREaXNwbGF5TmFtZXMsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgRGlzcGxheU5hbWVzID0gSW50bC5EaXNwbGF5TmFtZXM7XG4gICAgaWYgKCFEaXNwbGF5TmFtZXMpIHtcbiAgICAgICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLkRpc3BsYXlOYW1lcyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuXFxuVHJ5IHBvbHlmaWxsaW5nIGl0IHVzaW5nIFxcXCJAZm9ybWF0anMvaW50bC1kaXNwbGF5bmFtZXNcXFwiXFxuXCIsIFwiTUlTU0lOR19JTlRMX0FQSVwiIC8qIE1JU1NJTkdfSU5UTF9BUEkgKi8pKTtcbiAgICB9XG4gICAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlclByb3BzKG9wdGlvbnMsIERJU1BMQVlfTkFNRVNfT1BUT05TKTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKS5vZih2YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIG9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBkaXNwbGF5IG5hbWUuJywgZSkpO1xuICAgIH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICcuL2luamVjdEludGwnO1xuaW1wb3J0IHsgREVGQVVMVF9JTlRMX0NPTkZJRywgY3JlYXRlRm9ybWF0dGVycywgaW52YXJpYW50SW50bENvbnRleHQsIGNyZWF0ZUludGxDYWNoZSwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXIsIGZvcm1hdE51bWJlclRvUGFydHMgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL251bWJlcic7XG5pbXBvcnQgeyBmb3JtYXRSZWxhdGl2ZVRpbWUgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL3JlbGF0aXZlVGltZSc7XG5pbXBvcnQgeyBmb3JtYXREYXRlLCBmb3JtYXRUaW1lLCBmb3JtYXREYXRlVG9QYXJ0cywgZm9ybWF0VGltZVRvUGFydHMsIH0gZnJvbSAnLi4vZm9ybWF0dGVycy9kYXRlVGltZSc7XG5pbXBvcnQgeyBmb3JtYXRQbHVyYWwgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL3BsdXJhbCc7XG5pbXBvcnQgeyBmb3JtYXRNZXNzYWdlIH0gZnJvbSAnLi4vZm9ybWF0dGVycy9tZXNzYWdlJztcbmltcG9ydCAqIGFzIHNoYWxsb3dFcXVhbHNfIGZyb20gJ3NoYWxsb3ctZXF1YWwvb2JqZWN0cyc7XG5pbXBvcnQgeyBmb3JtYXRMaXN0IH0gZnJvbSAnLi4vZm9ybWF0dGVycy9saXN0JztcbmltcG9ydCB7IGZvcm1hdERpc3BsYXlOYW1lIH0gZnJvbSAnLi4vZm9ybWF0dGVycy9kaXNwbGF5TmFtZSc7XG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlnRXJyb3IsIE1pc3NpbmdEYXRhRXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG52YXIgc2hhbGxvd0VxdWFscyA9IHNoYWxsb3dFcXVhbHNfLmRlZmF1bHQgfHwgc2hhbGxvd0VxdWFsc187XG5mdW5jdGlvbiBwcm9jZXNzSW50bENvbmZpZyhjb25maWcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBsb2NhbGU6IGNvbmZpZy5sb2NhbGUsXG4gICAgICAgIHRpbWVab25lOiBjb25maWcudGltZVpvbmUsXG4gICAgICAgIGZvcm1hdHM6IGNvbmZpZy5mb3JtYXRzLFxuICAgICAgICB0ZXh0Q29tcG9uZW50OiBjb25maWcudGV4dENvbXBvbmVudCxcbiAgICAgICAgbWVzc2FnZXM6IGNvbmZpZy5tZXNzYWdlcyxcbiAgICAgICAgZGVmYXVsdExvY2FsZTogY29uZmlnLmRlZmF1bHRMb2NhbGUsXG4gICAgICAgIGRlZmF1bHRGb3JtYXRzOiBjb25maWcuZGVmYXVsdEZvcm1hdHMsXG4gICAgICAgIG9uRXJyb3I6IGNvbmZpZy5vbkVycm9yLFxuICAgICAgICB3cmFwUmljaFRleHRDaHVua3NJbkZyYWdtZW50OiBjb25maWcud3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCxcbiAgICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgaW50bCBvYmplY3RcbiAqIEBwYXJhbSBjb25maWcgaW50bCBjb25maWdcbiAqIEBwYXJhbSBjYWNoZSBjYWNoZSBmb3IgZm9ybWF0dGVyIGluc3RhbmNlcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRsKGNvbmZpZywgY2FjaGUpIHtcbiAgICB2YXIgZm9ybWF0dGVycyA9IGNyZWF0ZUZvcm1hdHRlcnMoY2FjaGUpO1xuICAgIHZhciByZXNvbHZlZENvbmZpZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBERUZBVUxUX0lOVExfQ09ORklHKSwgY29uZmlnKTtcbiAgICB2YXIgbG9jYWxlID0gcmVzb2x2ZWRDb25maWcubG9jYWxlLCBkZWZhdWx0TG9jYWxlID0gcmVzb2x2ZWRDb25maWcuZGVmYXVsdExvY2FsZSwgb25FcnJvciA9IHJlc29sdmVkQ29uZmlnLm9uRXJyb3I7XG4gICAgaWYgKCFsb2NhbGUpIHtcbiAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICAgIG9uRXJyb3IobmV3IEludmFsaWRDb25maWdFcnJvcihcIlxcXCJsb2NhbGVcXFwiIHdhcyBub3QgY29uZmlndXJlZCwgdXNpbmcgXFxcIlwiICsgZGVmYXVsdExvY2FsZSArIFwiXFxcIiBhcyBmYWxsYmFjay4gU2VlIGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy9yZWFjdC1pbnRsL2FwaSNpbnRsc2hhcGUgZm9yIG1vcmUgZGV0YWlsc1wiKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU2luY2UgdGhlcmUncyBubyByZWdpc3RlcmVkIGxvY2FsZSBkYXRhIGZvciBgbG9jYWxlYCwgdGhpcyB3aWxsXG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIHRoZSBgZGVmYXVsdExvY2FsZWAgdG8gbWFrZSBzdXJlIHRoaW5ncyBjYW4gcmVuZGVyLlxuICAgICAgICAvLyBUaGUgYG1lc3NhZ2VzYCBhcmUgb3ZlcnJpZGRlbiB0byB0aGUgYGRlZmF1bHRQcm9wc2AgZW1wdHkgb2JqZWN0XG4gICAgICAgIC8vIHRvIG1haW50YWluIHJlZmVyZW50aWFsIGVxdWFsaXR5IGFjcm9zcyByZS1yZW5kZXJzLiBJdCdzIGFzc3VtZWRcbiAgICAgICAgLy8gZWFjaCA8Rm9ybWF0dGVkTWVzc2FnZT4gY29udGFpbnMgYSBgZGVmYXVsdE1lc3NhZ2VgIHByb3AuXG4gICAgICAgIHJlc29sdmVkQ29uZmlnLmxvY2FsZSA9IHJlc29sdmVkQ29uZmlnLmRlZmF1bHRMb2NhbGUgfHwgJ2VuJztcbiAgICB9XG4gICAgZWxzZSBpZiAoIUludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihsb2NhbGUpLmxlbmd0aCAmJiBvbkVycm9yKSB7XG4gICAgICAgIG9uRXJyb3IobmV3IE1pc3NpbmdEYXRhRXJyb3IoXCJNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciBsb2NhbGU6IFxcXCJcIiArIGxvY2FsZSArIFwiXFxcIiBpbiBJbnRsLk51bWJlckZvcm1hdC4gVXNpbmcgZGVmYXVsdCBsb2NhbGU6IFxcXCJcIiArIGRlZmF1bHRMb2NhbGUgKyBcIlxcXCIgYXMgZmFsbGJhY2suIFNlZSBodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvcmVhY3QtaW50bCNydW50aW1lLXJlcXVpcmVtZW50cyBmb3IgbW9yZSBkZXRhaWxzXCIpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIUludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoICYmXG4gICAgICAgIG9uRXJyb3IpIHtcbiAgICAgICAgb25FcnJvcihuZXcgTWlzc2luZ0RhdGFFcnJvcihcIk1pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIGxvY2FsZTogXFxcIlwiICsgbG9jYWxlICsgXCJcXFwiIGluIEludGwuRGF0ZVRpbWVGb3JtYXQuIFVzaW5nIGRlZmF1bHQgbG9jYWxlOiBcXFwiXCIgKyBkZWZhdWx0TG9jYWxlICsgXCJcXFwiIGFzIGZhbGxiYWNrLiBTZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3JlYWN0LWludGwjcnVudGltZS1yZXF1aXJlbWVudHMgZm9yIG1vcmUgZGV0YWlsc1wiKSk7XG4gICAgfVxuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzb2x2ZWRDb25maWcpLCB7IGZvcm1hdHRlcnM6IGZvcm1hdHRlcnMsIGZvcm1hdE51bWJlcjogZm9ybWF0TnVtYmVyLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KSwgZm9ybWF0TnVtYmVyVG9QYXJ0czogZm9ybWF0TnVtYmVyVG9QYXJ0cy5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldE51bWJlckZvcm1hdCksIGZvcm1hdFJlbGF0aXZlVGltZTogZm9ybWF0UmVsYXRpdmVUaW1lLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0UmVsYXRpdmVUaW1lRm9ybWF0KSwgZm9ybWF0RGF0ZTogZm9ybWF0RGF0ZS5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KSwgZm9ybWF0RGF0ZVRvUGFydHM6IGZvcm1hdERhdGVUb1BhcnRzLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0RGF0ZVRpbWVGb3JtYXQpLCBmb3JtYXRUaW1lOiBmb3JtYXRUaW1lLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0RGF0ZVRpbWVGb3JtYXQpLCBmb3JtYXRUaW1lVG9QYXJ0czogZm9ybWF0VGltZVRvUGFydHMuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXREYXRlVGltZUZvcm1hdCksIGZvcm1hdFBsdXJhbDogZm9ybWF0UGx1cmFsLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0UGx1cmFsUnVsZXMpLCBmb3JtYXRNZXNzYWdlOiBmb3JtYXRNZXNzYWdlLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMpLCBmb3JtYXRMaXN0OiBmb3JtYXRMaXN0LmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0TGlzdEZvcm1hdCksIGZvcm1hdERpc3BsYXlOYW1lOiBmb3JtYXREaXNwbGF5TmFtZS5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERpc3BsYXlOYW1lcykgfSk7XG59XG52YXIgSW50bFByb3ZpZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnRsUHJvdmlkZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW50bFByb3ZpZGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTtcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBjYWNoZTogX3RoaXMuY2FjaGUsXG4gICAgICAgICAgICBpbnRsOiBjcmVhdGVJbnRsKHByb2Nlc3NJbnRsQ29uZmlnKF90aGlzLnByb3BzKSwgX3RoaXMuY2FjaGUpLFxuICAgICAgICAgICAgcHJldkNvbmZpZzogcHJvY2Vzc0ludGxDb25maWcoX3RoaXMucHJvcHMpLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEludGxQcm92aWRlci5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiAocHJvcHMsIF9hKSB7XG4gICAgICAgIHZhciBwcmV2Q29uZmlnID0gX2EucHJldkNvbmZpZywgY2FjaGUgPSBfYS5jYWNoZTtcbiAgICAgICAgdmFyIGNvbmZpZyA9IHByb2Nlc3NJbnRsQ29uZmlnKHByb3BzKTtcbiAgICAgICAgaWYgKCFzaGFsbG93RXF1YWxzKHByZXZDb25maWcsIGNvbmZpZykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW50bDogY3JlYXRlSW50bChjb25maWcsIGNhY2hlKSxcbiAgICAgICAgICAgICAgICBwcmV2Q29uZmlnOiBjb25maWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgSW50bFByb3ZpZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGludmFyaWFudEludGxDb250ZXh0KHRoaXMuc3RhdGUuaW50bCk7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFByb3ZpZGVyLCB7IHZhbHVlOiB0aGlzLnN0YXRlLmludGwgfSwgdGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgfTtcbiAgICBJbnRsUHJvdmlkZXIuZGlzcGxheU5hbWUgPSAnSW50bFByb3ZpZGVyJztcbiAgICBJbnRsUHJvdmlkZXIuZGVmYXVsdFByb3BzID0gREVGQVVMVF9JTlRMX0NPTkZJRztcbiAgICByZXR1cm4gSW50bFByb3ZpZGVyO1xufShSZWFjdC5QdXJlQ29tcG9uZW50KSk7XG5leHBvcnQgZGVmYXVsdCBJbnRsUHJvdmlkZXI7XG4iLCJ2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG4vKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS5cbiAqIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2luamVjdEludGwnO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICdAZm9ybWF0anMvaW50bC11dGlscyc7XG52YXIgTUlOVVRFID0gNjA7XG52YXIgSE9VUiA9IDYwICogNjA7XG52YXIgREFZID0gNjAgKiA2MCAqIDI0O1xuZnVuY3Rpb24gc2VsZWN0VW5pdChzZWNvbmRzKSB7XG4gICAgdmFyIGFic1ZhbHVlID0gTWF0aC5hYnMoc2Vjb25kcyk7XG4gICAgaWYgKGFic1ZhbHVlIDwgTUlOVVRFKSB7XG4gICAgICAgIHJldHVybiAnc2Vjb25kJztcbiAgICB9XG4gICAgaWYgKGFic1ZhbHVlIDwgSE9VUikge1xuICAgICAgICByZXR1cm4gJ21pbnV0ZSc7XG4gICAgfVxuICAgIGlmIChhYnNWYWx1ZSA8IERBWSkge1xuICAgICAgICByZXR1cm4gJ2hvdXInO1xuICAgIH1cbiAgICByZXR1cm4gJ2RheSc7XG59XG5mdW5jdGlvbiBnZXREdXJhdGlvbkluU2Vjb25kcyh1bml0KSB7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgIHJldHVybiBNSU5VVEU7XG4gICAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICAgICAgcmV0dXJuIEhPVVI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gREFZO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbHVlVG9TZWNvbmRzKHZhbHVlLCB1bml0KSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNSU5VVEU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBIT1VSO1xuICAgIH1cbn1cbnZhciBJTkNSRU1FTlRBQkxFX1VOSVRTID0gWydzZWNvbmQnLCAnbWludXRlJywgJ2hvdXInXTtcbmZ1bmN0aW9uIGNhbkluY3JlbWVudCh1bml0KSB7XG4gICAgaWYgKHVuaXQgPT09IHZvaWQgMCkgeyB1bml0ID0gJ3NlY29uZCc7IH1cbiAgICByZXR1cm4gSU5DUkVNRU5UQUJMRV9VTklUUy5pbmNsdWRlcyh1bml0KTtcbn1cbnZhciBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZvcm1hdHRlZFJlbGF0aXZlVGltZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpIHx8IHRoaXM7XG4gICAgICAgIC8vIFB1YmxpYyBmb3IgdGVzdGluZ1xuICAgICAgICBfdGhpcy5fdXBkYXRlVGltZXIgPSBudWxsO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHByZXZVbml0OiBfdGhpcy5wcm9wcy51bml0LFxuICAgICAgICAgICAgcHJldlZhbHVlOiBfdGhpcy5wcm9wcy52YWx1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZUluU2Vjb25kczogY2FuSW5jcmVtZW50KF90aGlzLnByb3BzLnVuaXQpXG4gICAgICAgICAgICAgICAgPyB2YWx1ZVRvU2Vjb25kcyhfdGhpcy5wcm9wcy52YWx1ZSwgX3RoaXMucHJvcHMudW5pdClcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgIH07XG4gICAgICAgIGludmFyaWFudCghcHJvcHMudXBkYXRlSW50ZXJ2YWxJblNlY29uZHMgfHxcbiAgICAgICAgICAgICEhKHByb3BzLnVwZGF0ZUludGVydmFsSW5TZWNvbmRzICYmIGNhbkluY3JlbWVudChwcm9wcy51bml0KSksICdDYW5ub3Qgc2NoZWR1bGUgdXBkYXRlIHdpdGggdW5pdCBsb25nZXIgdGhhbiBob3VyJyk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRm9ybWF0dGVkUmVsYXRpdmVUaW1lLnByb3RvdHlwZS5zY2hlZHVsZU5leHRVcGRhdGUgPSBmdW5jdGlvbiAoX2EsIF9iKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB1cGRhdGVJbnRlcnZhbEluU2Vjb25kcyA9IF9hLnVwZGF0ZUludGVydmFsSW5TZWNvbmRzLCB1bml0ID0gX2EudW5pdDtcbiAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZUluU2Vjb25kcyA9IF9iLmN1cnJlbnRWYWx1ZUluU2Vjb25kcztcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVyKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZXIgPSBudWxsO1xuICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGludGVydmFsIGFuZCB3ZSBjYW5ub3QgaW5jcmVtZW50IHRoaXMgdW5pdCwgZG8gbm90aGluZ1xuICAgICAgICBpZiAoIXVwZGF0ZUludGVydmFsSW5TZWNvbmRzIHx8ICFjYW5JbmNyZW1lbnQodW5pdCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBuZXh0IGludGVyZXN0aW5nIHRpbWVcbiAgICAgICAgdmFyIG5leHRWYWx1ZUluU2Vjb25kcyA9IGN1cnJlbnRWYWx1ZUluU2Vjb25kcyAtIHVwZGF0ZUludGVydmFsSW5TZWNvbmRzO1xuICAgICAgICB2YXIgbmV4dFVuaXQgPSBzZWxlY3RVbml0KG5leHRWYWx1ZUluU2Vjb25kcyk7XG4gICAgICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIG1heCBhdXRvIGluY3JlbWVudGFibGUgdW5pdCwgZG9uJ3Qgc2NoZWR1bGUgYW5vdGhlciB1cGRhdGVcbiAgICAgICAgaWYgKG5leHRVbml0ID09PSAnZGF5Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1bml0RHVyYXRpb24gPSBnZXREdXJhdGlvbkluU2Vjb25kcyhuZXh0VW5pdCk7XG4gICAgICAgIHZhciByZW1haW5kZXIgPSBuZXh0VmFsdWVJblNlY29uZHMgJSB1bml0RHVyYXRpb247XG4gICAgICAgIHZhciBwcmV2SW50ZXJlc3RpbmdWYWx1ZUluU2Vjb25kcyA9IG5leHRWYWx1ZUluU2Vjb25kcyAtIHJlbWFpbmRlcjtcbiAgICAgICAgdmFyIG5leHRJbnRlcmVzdGluZ1ZhbHVlSW5TZWNvbmRzID0gcHJldkludGVyZXN0aW5nVmFsdWVJblNlY29uZHMgPj0gY3VycmVudFZhbHVlSW5TZWNvbmRzXG4gICAgICAgICAgICA/IHByZXZJbnRlcmVzdGluZ1ZhbHVlSW5TZWNvbmRzIC0gdW5pdER1cmF0aW9uXG4gICAgICAgICAgICA6IHByZXZJbnRlcmVzdGluZ1ZhbHVlSW5TZWNvbmRzO1xuICAgICAgICB2YXIgZGVsYXlJblNlY29uZHMgPSBNYXRoLmFicyhuZXh0SW50ZXJlc3RpbmdWYWx1ZUluU2Vjb25kcyAtIGN1cnJlbnRWYWx1ZUluU2Vjb25kcyk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZUluU2Vjb25kczogbmV4dEludGVyZXN0aW5nVmFsdWVJblNlY29uZHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZGVsYXlJblNlY29uZHMgKiAxZTMpO1xuICAgIH07XG4gICAgRm9ybWF0dGVkUmVsYXRpdmVUaW1lLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZU5leHRVcGRhdGUodGhpcy5wcm9wcywgdGhpcy5zdGF0ZSk7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZU5leHRVcGRhdGUodGhpcy5wcm9wcywgdGhpcy5zdGF0ZSk7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZXIpO1xuICAgICAgICB0aGlzLl91cGRhdGVUaW1lciA9IG51bGw7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gZnVuY3Rpb24gKHByb3BzLCBzdGF0ZSkge1xuICAgICAgICBpZiAocHJvcHMudW5pdCAhPT0gc3RhdGUucHJldlVuaXQgfHwgcHJvcHMudmFsdWUgIT09IHN0YXRlLnByZXZWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBwcmV2VmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgICAgICAgICAgIHByZXZVbml0OiBwcm9wcy51bml0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZUluU2Vjb25kczogY2FuSW5jcmVtZW50KHByb3BzLnVuaXQpXG4gICAgICAgICAgICAgICAgICAgID8gdmFsdWVUb1NlY29uZHMocHJvcHMudmFsdWUsIHByb3BzLnVuaXQpXG4gICAgICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChpbnRsKSB7XG4gICAgICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgICAgIHZhciBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBpbnRsLmZvcm1hdFJlbGF0aXZlVGltZSwgVGV4dCA9IGludGwudGV4dENvbXBvbmVudDtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCB2YWx1ZSA9IF9hLnZhbHVlLCB1bml0ID0gX2EudW5pdCwgdXBkYXRlSW50ZXJ2YWxJblNlY29uZHMgPSBfYS51cGRhdGVJbnRlcnZhbEluU2Vjb25kcztcbiAgICAgICAgICAgIHZhciBjdXJyZW50VmFsdWVJblNlY29uZHMgPSBfdGhpcy5zdGF0ZS5jdXJyZW50VmFsdWVJblNlY29uZHM7XG4gICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gdmFsdWUgfHwgMDtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VW5pdCA9IHVuaXQ7XG4gICAgICAgICAgICBpZiAoY2FuSW5jcmVtZW50KHVuaXQpICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGN1cnJlbnRWYWx1ZUluU2Vjb25kcyA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICB1cGRhdGVJbnRlcnZhbEluU2Vjb25kcykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRVbml0ID0gc2VsZWN0VW5pdChjdXJyZW50VmFsdWVJblNlY29uZHMpO1xuICAgICAgICAgICAgICAgIHZhciB1bml0RHVyYXRpb24gPSBnZXREdXJhdGlvbkluU2Vjb25kcyhjdXJyZW50VW5pdCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlID0gTWF0aC5yb3VuZChjdXJyZW50VmFsdWVJblNlY29uZHMgLyB1bml0RHVyYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFJlbGF0aXZlVGltZSA9IGZvcm1hdFJlbGF0aXZlVGltZShjdXJyZW50VmFsdWUsIGN1cnJlbnRVbml0LCBfX2Fzc2lnbih7fSwgX3RoaXMucHJvcHMpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkUmVsYXRpdmVUaW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChUZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgbnVsbCwgZm9ybWF0dGVkUmVsYXRpdmVUaW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWU7XG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5kaXNwbGF5TmFtZSA9ICdGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUnO1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5kZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIHZhbHVlOiAwLFxuICAgICAgICB1bml0OiAnc2Vjb25kJyxcbiAgICB9O1xuICAgIHJldHVybiBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWU7XG59KFJlYWN0LlB1cmVDb21wb25lbnQpKTtcbmV4cG9ydCB7IEZvcm1hdHRlZFJlbGF0aXZlVGltZSB9O1xuZXhwb3J0IGRlZmF1bHQgRm9ybWF0dGVkUmVsYXRpdmVUaW1lO1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG4gKiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgd2l0aEludGwgZnJvbSAnLi9pbmplY3RJbnRsJztcbnZhciBGb3JtYXR0ZWRQbHVyYWwgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSwgb3RoZXIgPSBwcm9wcy5vdGhlciwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgX2EgPSBwcm9wcy5pbnRsLCBmb3JtYXRQbHVyYWwgPSBfYS5mb3JtYXRQbHVyYWwsIFRleHQgPSBfYS50ZXh0Q29tcG9uZW50O1xuICAgIHZhciBwbHVyYWxDYXRlZ29yeSA9IGZvcm1hdFBsdXJhbCh2YWx1ZSwgcHJvcHMpO1xuICAgIHZhciBmb3JtYXR0ZWRQbHVyYWwgPSBwcm9wc1twbHVyYWxDYXRlZ29yeV0gfHwgb3RoZXI7XG4gICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkUGx1cmFsKTtcbiAgICB9XG4gICAgaWYgKFRleHQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgbnVsbCwgZm9ybWF0dGVkUGx1cmFsKTtcbiAgICB9XG4gICAgLy8gV29yayBhcm91bmQgQHR5cGVzL3JlYWN0IHdoZXJlIFJlYWN0LkZDIGNhbm5vdCByZXR1cm4gc3RyaW5nXG4gICAgcmV0dXJuIGZvcm1hdHRlZFBsdXJhbDtcbn07XG5Gb3JtYXR0ZWRQbHVyYWwuZGVmYXVsdFByb3BzID0ge1xuICAgIHR5cGU6ICdjYXJkaW5hbCcsXG59O1xuRm9ybWF0dGVkUGx1cmFsLmRpc3BsYXlOYW1lID0gJ0Zvcm1hdHRlZFBsdXJhbCc7XG4vLyBFeHBsaWNpdGx5IGFubm90YXRlIHR5cGUgaGVyZSB0byB3b3JrYXJvdW5kIEFQSSBleHRyYWN0b3IncyBpbmFiaWxpdHkgdG8gaGFuZGxlIGBpbXBvcnQoJy4vc29tZU1vZHVsZScpYFxuLy8gdHlwZSBhbm5vdGF0aW9ucyB3aGVuIHJvbGxpbmcgdXAgRFRTIGZpbGUuXG52YXIgRm9ybWF0dGVkUGx1cmFsV2l0aEludGwgPSB3aXRoSW50bChGb3JtYXR0ZWRQbHVyYWwpO1xuZXhwb3J0IGRlZmF1bHQgRm9ybWF0dGVkUGx1cmFsV2l0aEludGw7XG4iLCIvKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS5cbiAqIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xudmFyIF9fc3ByZWFkQXJyYXlzID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5cykgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcbiAgICByZXR1cm4gcjtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9pbmplY3RJbnRsJztcbmltcG9ydCB7IGludmFyaWFudEludGxDb250ZXh0IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0ICogYXMgc2hhbGxvd0VxdWFsc18gZnJvbSAnc2hhbGxvdy1lcXVhbC9vYmplY3RzJztcbnZhciBzaGFsbG93RXF1YWxzID0gc2hhbGxvd0VxdWFsc18uZGVmYXVsdCB8fCBzaGFsbG93RXF1YWxzXztcbnZhciBGb3JtYXR0ZWRNZXNzYWdlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhGb3JtYXR0ZWRNZXNzYWdlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZvcm1hdHRlZE1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgRm9ybWF0dGVkTWVzc2FnZS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKG5leHRQcm9wcykge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCB2YWx1ZXMgPSBfYS52YWx1ZXMsIG90aGVyUHJvcHMgPSBfX3Jlc3QoX2EsIFtcInZhbHVlc1wiXSk7XG4gICAgICAgIHZhciBuZXh0VmFsdWVzID0gbmV4dFByb3BzLnZhbHVlcywgbmV4dE90aGVyUHJvcHMgPSBfX3Jlc3QobmV4dFByb3BzLCBbXCJ2YWx1ZXNcIl0pO1xuICAgICAgICByZXR1cm4gKCFzaGFsbG93RXF1YWxzKG5leHRWYWx1ZXMsIHZhbHVlcykgfHxcbiAgICAgICAgICAgICFzaGFsbG93RXF1YWxzKG90aGVyUHJvcHMsIG5leHRPdGhlclByb3BzKSk7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRNZXNzYWdlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoaW50bCkge1xuICAgICAgICAgICAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gICAgICAgICAgICB2YXIgZm9ybWF0TWVzc2FnZSA9IGludGwuZm9ybWF0TWVzc2FnZSwgX2EgPSBpbnRsLnRleHRDb21wb25lbnQsIFRleHQgPSBfYSA9PT0gdm9pZCAwID8gUmVhY3QuRnJhZ21lbnQgOiBfYTtcbiAgICAgICAgICAgIHZhciBfYiA9IF90aGlzLnByb3BzLCBpZCA9IF9iLmlkLCBkZXNjcmlwdGlvbiA9IF9iLmRlc2NyaXB0aW9uLCBkZWZhdWx0TWVzc2FnZSA9IF9iLmRlZmF1bHRNZXNzYWdlLCB2YWx1ZXMgPSBfYi52YWx1ZXMsIGNoaWxkcmVuID0gX2IuY2hpbGRyZW4sIF9jID0gX2IudGFnTmFtZSwgQ29tcG9uZW50ID0gX2MgPT09IHZvaWQgMCA/IFRleHQgOiBfYztcbiAgICAgICAgICAgIHZhciBkZXNjcmlwdG9yID0geyBpZDogaWQsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgZGVmYXVsdE1lc3NhZ2U6IGRlZmF1bHRNZXNzYWdlIH07XG4gICAgICAgICAgICB2YXIgbm9kZXMgPSBmb3JtYXRNZXNzYWdlKGRlc2NyaXB0b3IsIHZhbHVlcyk7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgbm9kZXMgPSBbbm9kZXNdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihub2Rlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gTmVlZHMgdG8gdXNlIGBjcmVhdGVFbGVtZW50KClgIGluc3RlYWQgb2YgSlNYLCBvdGhlcndpc2UgUmVhY3Qgd2lsbFxuICAgICAgICAgICAgICAgIC8vIHdhcm4gYWJvdXQgYSBtaXNzaW5nIGBrZXlgIHByb3Agd2l0aCByaWNoLXRleHQgbWVzc2FnZSBmb3JtYXR0aW5nLlxuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KFJlYWN0LCBfX3NwcmVhZEFycmF5cyhbQ29tcG9uZW50LCBudWxsXSwgbm9kZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBub2RlcztcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRm9ybWF0dGVkTWVzc2FnZS5kaXNwbGF5TmFtZSA9ICdGb3JtYXR0ZWRNZXNzYWdlJztcbiAgICByZXR1cm4gRm9ybWF0dGVkTWVzc2FnZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgZGVmYXVsdCBGb3JtYXR0ZWRNZXNzYWdlO1xuIiwiaW1wb3J0IHsgY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50LCBjcmVhdGVGb3JtYXR0ZWREYXRlVGltZVBhcnRzQ29tcG9uZW50LCB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50JztcbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVNZXNzYWdlcyhtc2dzKSB7XG4gICAgcmV0dXJuIG1zZ3M7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTWVzc2FnZShtc2cpIHtcbiAgICByZXR1cm4gbXNnO1xufVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbmplY3RJbnRsLCBQcm92aWRlciBhcyBSYXdJbnRsUHJvdmlkZXIsIENvbnRleHQgYXMgSW50bENvbnRleHQsIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9pbmplY3RJbnRsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlSW50bCB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvdXNlSW50bCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEludGxQcm92aWRlciwgY3JlYXRlSW50bCB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvcHJvdmlkZXInO1xuLy8gSU1QT1JUQU5UOiBFeHBsaWNpdCBoZXJlIHRvIHByZXZlbnQgYXBpLWV4dHJhY3RvciBmcm9tIG91dHB1dGluZyBgaW1wb3J0KCcuL3NyYy90eXBlcycpLkN1c3RvbUZvcm1hdENvbmZpZ2BcbmV4cG9ydCB2YXIgRm9ybWF0dGVkRGF0ZSA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0RGF0ZScpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWRUaW1lID0gY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50KCdmb3JtYXRUaW1lJyk7XG5leHBvcnQgdmFyIEZvcm1hdHRlZE51bWJlciA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0TnVtYmVyJyk7XG5leHBvcnQgdmFyIEZvcm1hdHRlZExpc3QgPSBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQoJ2Zvcm1hdExpc3QnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkRGlzcGxheU5hbWUgPSBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQoJ2Zvcm1hdERpc3BsYXlOYW1lJyk7XG5leHBvcnQgdmFyIEZvcm1hdHRlZERhdGVQYXJ0cyA9IGNyZWF0ZUZvcm1hdHRlZERhdGVUaW1lUGFydHNDb21wb25lbnQoJ2Zvcm1hdERhdGUnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkVGltZVBhcnRzID0gY3JlYXRlRm9ybWF0dGVkRGF0ZVRpbWVQYXJ0c0NvbXBvbmVudCgnZm9ybWF0VGltZScpO1xuZXhwb3J0IHsgRm9ybWF0dGVkTnVtYmVyUGFydHMgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL2NyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcm1hdHRlZFJlbGF0aXZlVGltZSB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvcmVsYXRpdmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBGb3JtYXR0ZWRQbHVyYWwgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL3BsdXJhbCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcm1hdHRlZE1lc3NhZ2UgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL21lc3NhZ2UnO1xuZXhwb3J0IHsgY3JlYXRlSW50bENhY2hlIH0gZnJvbSAnLi9zcmMvdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvZXJyb3InO1xuIl0sIm5hbWVzIjpbInRoaXMiLCJ0eXBlc18xIiwicGFyc2VyXzEiLCJyZXF1aXJlJCQwIiwicmVxdWlyZSQkMSIsIm5vcm1hbGl6ZV8xIiwiaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xIiwiZXJyb3JfMSIsImludGxfZm9ybWF0X2NhY2hlXzEiLCJmb3JtYXR0ZXJzXzEiLCJjb3JlXzEiLCJ1bml0c18xIiwicG9seWZpbGxfdXRpbHNfMSIsImRpZmZfMSIsInJlc29sdmVfbG9jYWxlXzEiLCJSZWFjdEludGxFcnJvckNvZGUiLCJpbnZhcmlhbnQiLCJSZWFjdC5GcmFnbWVudCIsIm1lbW9pemVJbnRsQ29uc3RydWN0b3IiLCJJbnRsTWVzc2FnZUZvcm1hdCIsIlJlYWN0LkNoaWxkcmVuIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJob2lzdE5vblJlYWN0U3RhdGljc18uZGVmYXVsdCIsIlJlYWN0LmNyZWF0ZUNvbnRleHQiLCJSZWFjdC5jcmVhdGVFbGVtZW50IiwiUmVhY3QuZm9yd2FyZFJlZiIsIlJlYWN0LnVzZUNvbnRleHQiLCJnZXRGb3JtYXR0ZXIiLCJGb3JtYXRFcnJvciIsIl9fYXNzaWduIiwiaXNGb3JtYXRYTUxFbGVtZW50Rm4iLCJfX2V4dGVuZHMiLCJzaGFsbG93RXF1YWxzXy5kZWZhdWx0IiwiSW50bFByb3ZpZGVyIiwiUmVhY3QuUHVyZUNvbXBvbmVudCIsIndpdGhJbnRsIiwiX19yZXN0IiwiX19zcHJlYWRBcnJheXMiLCJzaGFsbG93RXF1YWxzIiwiUmVhY3QuQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0NBQzlELElBQUksSUFBSSxDQUFDO0NBQ1QsQ0FBQyxVQUFVLElBQUksRUFBRTtDQUNqQjtDQUNBO0NBQ0E7Q0FDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0NBQzFDO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7Q0FDNUM7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztDQUN4QztDQUNBO0NBQ0E7Q0FDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0NBQ3BDO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Q0FDcEM7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEs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LENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDekIsS0FBSztDQUNMLFNBQVM7Q0FDVCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkUsS0FBSztDQUNMLElBQUksSUFBSSxHQUFHLENBQUM7Q0FDWixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Q0FDcEIsWUFBWSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN0QixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3RCLFNBQVM7Q0FDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUNsQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENB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QyxjQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDNWQsVUFBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztDQUM1TyxzQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFB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
|
|
6599
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtaW50bC51bWQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL3NyYy90eXBlcy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL3NyYy9wYXJzZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9zcmMvbm9ybWFsaXplLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvc3JjL3NrZWxldG9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZmFzdC1tZW1vaXplL3NyYy9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvc3JjL2Vycm9yLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC9zcmMvZm9ybWF0dGVycy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQvc3JjL2NvcmUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0L2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsLXV0aWxzL3NyYy9kaWZmLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsLXV0aWxzL3NyYy9pbnZhcmlhbnQuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwtdXRpbHMvc3JjL3VuaXRzLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3JtYXRqcy9pbnRsLXV0aWxzL3NyYy9wb2x5ZmlsbC11dGlscy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZm9ybWF0anMvaW50bC11dGlscy9zcmMvcmVzb2x2ZS1sb2NhbGUuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGZvcm1hdGpzL2ludGwtdXRpbHMvaW5kZXguanMiLCJsaWIvc3JjL2Vycm9yLmpzIiwibGliL3NyYy91dGlscy5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCJsaWIvc3JjL2NvbXBvbmVudHMvaW5qZWN0SW50bC5qcyIsImxpYi9zcmMvY29tcG9uZW50cy9jcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQuanMiLCJsaWIvc3JjL2NvbXBvbmVudHMvdXNlSW50bC5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9udW1iZXIuanMiLCJsaWIvc3JjL2Zvcm1hdHRlcnMvcmVsYXRpdmVUaW1lLmpzIiwibGliL3NyYy9mb3JtYXR0ZXJzL2RhdGVUaW1lLmpzIiwibGliL3NyYy9mb3JtYXR0ZXJzL3BsdXJhbC5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9tZXNzYWdlLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NoYWxsb3ctZXF1YWwvb2JqZWN0cy9pbmRleC5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy9saXN0LmpzIiwibGliL3NyYy9mb3JtYXR0ZXJzL2Rpc3BsYXlOYW1lLmpzIiwibGliL3NyYy9jb21wb25lbnRzL3Byb3ZpZGVyLmpzIiwibGliL3NyYy9jb21wb25lbnRzL3JlbGF0aXZlLmpzIiwibGliL3NyYy9jb21wb25lbnRzL3BsdXJhbC5qcyIsImxpYi9zcmMvY29tcG9uZW50cy9tZXNzYWdlLmpzIiwibGliL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRZUEU7XG4oZnVuY3Rpb24gKFRZUEUpIHtcbiAgICAvKipcbiAgICAgKiBSYXcgdGV4dFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvbyBhbnkgZm9ybWF0LCBlLmcgYHZhcmAgaW4gYHRoaXMgaXMgYSB7dmFyfWBcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJhcmd1bWVudFwiXSA9IDFdID0gXCJhcmd1bWVudFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIG51bWJlciBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJudW1iZXJcIl0gPSAyXSA9IFwibnVtYmVyXCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gZGF0ZSBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJkYXRlXCJdID0gM10gPSBcImRhdGVcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3LyB0aW1lIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInRpbWVcIl0gPSA0XSA9IFwidGltZVwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIHNlbGVjdCBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJzZWxlY3RcIl0gPSA1XSA9IFwic2VsZWN0XCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gcGx1cmFsIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInBsdXJhbFwiXSA9IDZdID0gXCJwbHVyYWxcIjtcbiAgICAvKipcbiAgICAgKiBPbmx5IHBvc3NpYmxlIHdpdGhpbiBwbHVyYWwgYXJndW1lbnQuXG4gICAgICogVGhpcyBpcyB0aGUgYCNgIHN5bWJvbCB0aGF0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgY291bnQuXG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wicG91bmRcIl0gPSA3XSA9IFwicG91bmRcIjtcbiAgICAvKipcbiAgICAgKiBYTUwtbGlrZSB0YWdcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJ0YWdcIl0gPSA4XSA9IFwidGFnXCI7XG59KShUWVBFID0gZXhwb3J0cy5UWVBFIHx8IChleHBvcnRzLlRZUEUgPSB7fSkpO1xudmFyIFNLRUxFVE9OX1RZUEU7XG4oZnVuY3Rpb24gKFNLRUxFVE9OX1RZUEUpIHtcbiAgICBTS0VMRVRPTl9UWVBFW1NLRUxFVE9OX1RZUEVbXCJudW1iZXJcIl0gPSAwXSA9IFwibnVtYmVyXCI7XG4gICAgU0tFTEVUT05fVFlQRVtTS0VMRVRPTl9UWVBFW1wiZGF0ZVRpbWVcIl0gPSAxXSA9IFwiZGF0ZVRpbWVcIjtcbn0pKFNLRUxFVE9OX1RZUEUgPSBleHBvcnRzLlNLRUxFVE9OX1RZUEUgfHwgKGV4cG9ydHMuU0tFTEVUT05fVFlQRSA9IHt9KSk7XG4vKipcbiAqIFR5cGUgR3VhcmRzXG4gKi9cbmZ1bmN0aW9uIGlzTGl0ZXJhbEVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5saXRlcmFsO1xufVxuZXhwb3J0cy5pc0xpdGVyYWxFbGVtZW50ID0gaXNMaXRlcmFsRWxlbWVudDtcbmZ1bmN0aW9uIGlzQXJndW1lbnRFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUuYXJndW1lbnQ7XG59XG5leHBvcnRzLmlzQXJndW1lbnRFbGVtZW50ID0gaXNBcmd1bWVudEVsZW1lbnQ7XG5mdW5jdGlvbiBpc051bWJlckVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5udW1iZXI7XG59XG5leHBvcnRzLmlzTnVtYmVyRWxlbWVudCA9IGlzTnVtYmVyRWxlbWVudDtcbmZ1bmN0aW9uIGlzRGF0ZUVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5kYXRlO1xufVxuZXhwb3J0cy5pc0RhdGVFbGVtZW50ID0gaXNEYXRlRWxlbWVudDtcbmZ1bmN0aW9uIGlzVGltZUVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS50aW1lO1xufVxuZXhwb3J0cy5pc1RpbWVFbGVtZW50ID0gaXNUaW1lRWxlbWVudDtcbmZ1bmN0aW9uIGlzU2VsZWN0RWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLnNlbGVjdDtcbn1cbmV4cG9ydHMuaXNTZWxlY3RFbGVtZW50ID0gaXNTZWxlY3RFbGVtZW50O1xuZnVuY3Rpb24gaXNQbHVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucGx1cmFsO1xufVxuZXhwb3J0cy5pc1BsdXJhbEVsZW1lbnQgPSBpc1BsdXJhbEVsZW1lbnQ7XG5mdW5jdGlvbiBpc1BvdW5kRWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLnBvdW5kO1xufVxuZXhwb3J0cy5pc1BvdW5kRWxlbWVudCA9IGlzUG91bmRFbGVtZW50O1xuZnVuY3Rpb24gaXNUYWdFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGFnO1xufVxuZXhwb3J0cy5pc1RhZ0VsZW1lbnQgPSBpc1RhZ0VsZW1lbnQ7XG5mdW5jdGlvbiBpc051bWJlclNrZWxldG9uKGVsKSB7XG4gICAgcmV0dXJuICEhKGVsICYmIHR5cGVvZiBlbCA9PT0gJ29iamVjdCcgJiYgZWwudHlwZSA9PT0gMCAvKiBudW1iZXIgKi8pO1xufVxuZXhwb3J0cy5pc051bWJlclNrZWxldG9uID0gaXNOdW1iZXJTa2VsZXRvbjtcbmZ1bmN0aW9uIGlzRGF0ZVRpbWVTa2VsZXRvbihlbCkge1xuICAgIHJldHVybiAhIShlbCAmJiB0eXBlb2YgZWwgPT09ICdvYmplY3QnICYmIGVsLnR5cGUgPT09IDEgLyogZGF0ZVRpbWUgKi8pO1xufVxuZXhwb3J0cy5pc0RhdGVUaW1lU2tlbGV0b24gPSBpc0RhdGVUaW1lU2tlbGV0b247XG5mdW5jdGlvbiBjcmVhdGVMaXRlcmFsRWxlbWVudCh2YWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFRZUEUubGl0ZXJhbCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgIH07XG59XG5leHBvcnRzLmNyZWF0ZUxpdGVyYWxFbGVtZW50ID0gY3JlYXRlTGl0ZXJhbEVsZW1lbnQ7XG5mdW5jdGlvbiBjcmVhdGVOdW1iZXJFbGVtZW50KHZhbHVlLCBzdHlsZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IFRZUEUubnVtYmVyLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICB9O1xufVxuZXhwb3J0cy5jcmVhdGVOdW1iZXJFbGVtZW50ID0gY3JlYXRlTnVtYmVyRWxlbWVudDtcbiIsIlwidXNlIHN0cmljdFwiO1xuLy8gQHRzLW5vY2hlY2tcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG52YXIgU3ludGF4RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN5bnRheEVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIF90aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgICAgIF90aGlzLmZvdW5kID0gZm91bmQ7XG4gICAgICAgIF90aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgIF90aGlzLm5hbWUgPSBcIlN5bnRheEVycm9yXCI7XG4gICAgICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX3RoaXMsIFN5bnRheEVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFN5bnRheEVycm9yLmJ1aWxkTWVzc2FnZSA9IGZ1bmN0aW9uIChleHBlY3RlZCwgZm91bmQpIHtcbiAgICAgICAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBzXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cIi9nLCBcIlxcXFxcXFwiXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcMC9nLCBcIlxcXFwwXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlxcXFx0XCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcci9nLCBcIlxcXFxyXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4MFwiICsgaGV4KGNoKTsgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDEwLVxceDFGXFx4N0YtXFx4OUZdL2csIGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gXCJcXFxceFwiICsgaGV4KGNoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gY2xhc3NFc2NhcGUocykge1xuICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXS9nLCBcIlxcXFxdXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXi9nLCBcIlxcXFxeXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLy0vZywgXCJcXFxcLVwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXDAvZywgXCJcXFxcMFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZywgXCJcXFxcdFwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHIvZywgXCJcXFxcclwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4MDAtXFx4MEZdL2csIGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gXCJcXFxceDBcIiArIGhleChjaCk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIFwiXFxcXHhcIiArIGhleChjaCk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlc2NyaWJlRXhwZWN0YXRpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0YXRpb24udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIGxpdGVyYWxFc2NhcGUoZXhwZWN0YXRpb24udGV4dCkgKyBcIlxcXCJcIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiY2xhc3NcIjpcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVzY2FwZWRQYXJ0cyA9IGV4cGVjdGF0aW9uLnBhcnRzLm1hcChmdW5jdGlvbiAocGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFydClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKHBhcnRbMF0pICsgXCItXCIgKyBjbGFzc0VzY2FwZShwYXJ0WzFdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUocGFydCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJbXCIgKyAoZXhwZWN0YXRpb24uaW52ZXJ0ZWQgPyBcIl5cIiA6IFwiXCIpICsgZXNjYXBlZFBhcnRzICsgXCJdXCI7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFueVwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJhbnkgY2hhcmFjdGVyXCI7XG4gICAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwib3RoZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlc2NyaWJlRXhwZWN0ZWQoZXhwZWN0ZWQxKSB7XG4gICAgICAgICAgICB2YXIgZGVzY3JpcHRpb25zID0gZXhwZWN0ZWQxLm1hcChkZXNjcmliZUV4cGVjdGF0aW9uKTtcbiAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgdmFyIGo7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMSwgaiA9IDE7IGkgPCBkZXNjcmlwdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uc1tpIC0gMV0gIT09IGRlc2NyaXB0aW9uc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9ucy5sZW5ndGggPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zWzBdO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnMuc2xpY2UoMCwgLTEpLmpvaW4oXCIsIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKyBcIiwgb3IgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kMSA/IFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShmb3VuZDEpICsgXCJcXFwiXCIgOiBcImVuZCBvZiBpbnB1dFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xuICAgIH07XG4gICAgcmV0dXJuIFN5bnRheEVycm9yO1xufShFcnJvcikpO1xuZXhwb3J0cy5TeW50YXhFcnJvciA9IFN5bnRheEVycm9yO1xuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMgOiB7fTtcbiAgICB2YXIgcGVnJEZBSUxFRCA9IHt9O1xuICAgIHZhciBwZWckc3RhcnRSdWxlRnVuY3Rpb25zID0geyBzdGFydDogcGVnJHBhcnNlc3RhcnQgfTtcbiAgICB2YXIgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHBhcnNlc3RhcnQ7XG4gICAgdmFyIHBlZyRjMCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9O1xuICAgIHZhciBwZWckYzIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMyA9IFwiPFwiO1xuICAgIHZhciBwZWckYzQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNSA9IGZ1bmN0aW9uIChwYXJ0cykge1xuICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM2ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJzwnOyB9O1xuICAgIHZhciBwZWckYzcgPSBmdW5jdGlvbiAobWVzc2FnZVRleHQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogdHlwZXNfMS5UWVBFLmxpdGVyYWwsIHZhbHVlOiBtZXNzYWdlVGV4dCB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzggPSBcIiNcIjtcbiAgICB2YXIgcGVnJGM5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiNcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzEwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUucG91bmQgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGMxMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwidGFnRWxlbWVudFwiKTtcbiAgICB2YXIgcGVnJGMxMiA9IGZ1bmN0aW9uIChvcGVuLCBjaGlsZHJlbiwgY2xvc2UpIHtcbiAgICAgICAgaWYgKG9wZW4gIT09IGNsb3NlKSB7XG4gICAgICAgICAgICBlcnJvcihcIk1pc21hdGNoIHRhZyBcXFwiXCIgKyBvcGVuICsgXCJcXFwiICE9PSBcXFwiXCIgKyBjbG9zZSArIFwiXFxcIlwiLCBsb2NhdGlvbigpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUudGFnLCB2YWx1ZTogb3BlbiwgY2hpbGRyZW46IGNoaWxkcmVuIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTMgPSBcIi8+XCI7XG4gICAgdmFyIHBlZyRjMTQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLz5cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzE1ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IHR5cGVzXzEuVFlQRS5saXRlcmFsLCB2YWx1ZTogdmFsdWUuam9pbignJykgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGMxNiA9IFwiPlwiO1xuICAgIHZhciBwZWckYzE3ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIj5cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzE4ID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gdGFnOyB9O1xuICAgIHZhciBwZWckYzE5ID0gXCI8L1wiO1xuICAgIHZhciBwZWckYzIwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIjwvXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMyMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJndW1lbnRFbGVtZW50XCIpO1xuICAgIHZhciBwZWckYzIyID0gXCJ7XCI7XG4gICAgdmFyIHBlZyRjMjMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjQgPSBcIn1cIjtcbiAgICB2YXIgcGVnJGMyNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ9XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMyNiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUuYXJndW1lbnQsIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzI3ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJTa2VsZXRvbklkXCIpO1xuICAgIHZhciBwZWckYzI4ID0gL15bJ1xcL3t9XS87XG4gICAgdmFyIHBlZyRjMjkgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCInXCIsIFwiL1wiLCBcIntcIiwgXCJ9XCJdLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzMwID0gcGVnJGFueUV4cGVjdGF0aW9uKCk7XG4gICAgdmFyIHBlZyRjMzEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm51bWJlclNrZWxldG9uVG9rZW5PcHRpb25cIik7XG4gICAgdmFyIHBlZyRjMzIgPSBcIi9cIjtcbiAgICB2YXIgcGVnJGMzMyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIvXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMzNCA9IGZ1bmN0aW9uIChvcHRpb24pIHsgcmV0dXJuIG9wdGlvbjsgfTtcbiAgICB2YXIgcGVnJGMzNSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwibnVtYmVyU2tlbGV0b25Ub2tlblwiKTtcbiAgICB2YXIgcGVnJGMzNiA9IGZ1bmN0aW9uIChzdGVtLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB7IHN0ZW06IHN0ZW0sIG9wdGlvbnM6IG9wdGlvbnMgfTtcbiAgICB9O1xuICAgIHZhciBwZWckYzM3ID0gZnVuY3Rpb24gKHRva2Vucykge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiAwIC8qIG51bWJlciAqLywgdG9rZW5zOiB0b2tlbnMgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGMzOCA9IFwiOjpcIjtcbiAgICB2YXIgcGVnJGMzOSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI6OlwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNDAgPSBmdW5jdGlvbiAoc2tlbGV0b24pIHsgcmV0dXJuIHNrZWxldG9uOyB9O1xuICAgIHZhciBwZWckYzQxID0gZnVuY3Rpb24gKCkgeyBtZXNzYWdlQ3R4LnB1c2goJ251bWJlckFyZ1N0eWxlJyk7IHJldHVybiB0cnVlOyB9O1xuICAgIHZhciBwZWckYzQyID0gZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICAgIG1lc3NhZ2VDdHgucG9wKCk7XG4gICAgICAgIHJldHVybiBzdHlsZS5yZXBsYWNlKC9cXHMqJC8sICcnKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzQzID0gXCIsXCI7XG4gICAgdmFyIHBlZyRjNDQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNDUgPSBcIm51bWJlclwiO1xuICAgIHZhciBwZWckYzQ2ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIm51bWJlclwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNDcgPSBmdW5jdGlvbiAodmFsdWUsIHR5cGUsIHN0eWxlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IHR5cGUgPT09ICdudW1iZXInID8gdHlwZXNfMS5UWVBFLm51bWJlciA6IHR5cGUgPT09ICdkYXRlJyA/IHR5cGVzXzEuVFlQRS5kYXRlIDogdHlwZXNfMS5UWVBFLnRpbWUsIHN0eWxlOiBzdHlsZSAmJiBzdHlsZVsyXSwgdmFsdWU6IHZhbHVlIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNDggPSBcIidcIjtcbiAgICB2YXIgcGVnJGM0OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCInXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM1MCA9IC9eW14nXS87XG4gICAgdmFyIHBlZyRjNTEgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCInXCJdLCB0cnVlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTIgPSAvXlteYS16QS1aJ3t9XS87XG4gICAgdmFyIHBlZyRjNTMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBcIidcIiwgXCJ7XCIsIFwifVwiXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzU0ID0gL15bYS16QS1aXS87XG4gICAgdmFyIHBlZyRjNTUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM1NiA9IGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IDEgLyogZGF0ZVRpbWUgKi8sIHBhdHRlcm46IHBhdHRlcm4gfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM1NyA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdkYXRlT3JUaW1lQXJnU3R5bGUnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNTggPSBcImRhdGVcIjtcbiAgICB2YXIgcGVnJGM1OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJkYXRlXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2MCA9IFwidGltZVwiO1xuICAgIHZhciBwZWckYzYxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInRpbWVcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzYyID0gXCJwbHVyYWxcIjtcbiAgICB2YXIgcGVnJGM2MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJwbHVyYWxcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzY0ID0gXCJzZWxlY3RvcmRpbmFsXCI7XG4gICAgdmFyIHBlZyRjNjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic2VsZWN0b3JkaW5hbFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNjYgPSBcIm9mZnNldDpcIjtcbiAgICB2YXIgcGVnJGM2NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJvZmZzZXQ6XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2OCA9IGZ1bmN0aW9uICh2YWx1ZSwgcGx1cmFsVHlwZSwgb2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IHR5cGVzXzEuVFlQRS5wbHVyYWwsIHBsdXJhbFR5cGU6IHBsdXJhbFR5cGUgPT09ICdwbHVyYWwnID8gJ2NhcmRpbmFsJyA6ICdvcmRpbmFsJywgdmFsdWU6IHZhbHVlLCBvZmZzZXQ6IG9mZnNldCA/IG9mZnNldFsyXSA6IDAsIG9wdGlvbnM6IG9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gX2EuaWQsIHZhbHVlID0gX2EudmFsdWUsIG9wdGlvbkxvY2F0aW9uID0gX2EubG9jYXRpb247XG4gICAgICAgICAgICAgICAgaWYgKGlkIGluIGFsbCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkR1cGxpY2F0ZSBvcHRpb24gXFxcIlwiICsgaWQgKyBcIlxcXCIgaW4gcGx1cmFsIGVsZW1lbnQ6IFxcXCJcIiArIHRleHQoKSArIFwiXFxcIlwiLCBsb2NhdGlvbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWxsW2lkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogb3B0aW9uTG9jYXRpb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhbGw7XG4gICAgICAgICAgICB9LCB7fSkgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM2OSA9IFwic2VsZWN0XCI7XG4gICAgdmFyIHBlZyRjNzAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic2VsZWN0XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM3MSA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlc18xLlRZUEUuc2VsZWN0LCB2YWx1ZTogdmFsdWUsIG9wdGlvbnM6IG9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gX2EuaWQsIHZhbHVlID0gX2EudmFsdWUsIG9wdGlvbkxvY2F0aW9uID0gX2EubG9jYXRpb247XG4gICAgICAgICAgICAgICAgaWYgKGlkIGluIGFsbCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcihcIkR1cGxpY2F0ZSBvcHRpb24gXFxcIlwiICsgaWQgKyBcIlxcXCIgaW4gc2VsZWN0IGVsZW1lbnQ6IFxcXCJcIiArIHRleHQoKSArIFwiXFxcIlwiLCBsb2NhdGlvbigpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWxsW2lkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogb3B0aW9uTG9jYXRpb25cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBhbGw7XG4gICAgICAgICAgICB9LCB7fSkgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM3MiA9IFwiPVwiO1xuICAgIHZhciBwZWckYzczID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIj1cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzc0ID0gZnVuY3Rpb24gKGlkKSB7IG1lc3NhZ2VDdHgucHVzaCgnc2VsZWN0Jyk7IHJldHVybiB0cnVlOyB9O1xuICAgIHZhciBwZWckYzc1ID0gZnVuY3Rpb24gKGlkLCB2YWx1ZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyBpZDogaWQsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM3NiA9IGZ1bmN0aW9uIChpZCkgeyBtZXNzYWdlQ3R4LnB1c2goJ3BsdXJhbCcpOyByZXR1cm4gdHJ1ZTsgfTtcbiAgICB2YXIgcGVnJGM3NyA9IGZ1bmN0aW9uIChpZCwgdmFsdWUpIHtcbiAgICAgICAgbWVzc2FnZUN0eC5wb3AoKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgaWQ6IGlkLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNzggPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIndoaXRlc3BhY2VcIik7XG4gICAgdmFyIHBlZyRjNzkgPSAvXltcXHQtXFxyIFxceDg1XFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDBdLztcbiAgICB2YXIgcGVnJGM4MCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJcXHRcIiwgXCJcXHJcIl0sIFwiIFwiLCBcIlxceDg1XCIsIFwiXFx4QTBcIiwgXCJcXHUxNjgwXCIsIFtcIlxcdTIwMDBcIiwgXCJcXHUyMDBBXCJdLCBcIlxcdTIwMjhcIiwgXCJcXHUyMDI5XCIsIFwiXFx1MjAyRlwiLCBcIlxcdTIwNUZcIiwgXCJcXHUzMDAwXCJdLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzgxID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJzeW50YXggcGF0dGVyblwiKTtcbiAgICB2YXIgcGVnJGM4MiA9IC9eWyEtXFwvOi1AWy1cXF5gey1+XFx4QTEtXFx4QTdcXHhBOVxceEFCXFx4QUNcXHhBRVxceEIwXFx4QjFcXHhCNlxceEJCXFx4QkZcXHhEN1xceEY3XFx1MjAxMC1cXHUyMDI3XFx1MjAzMC1cXHUyMDNFXFx1MjA0MS1cXHUyMDUzXFx1MjA1NS1cXHUyMDVFXFx1MjE5MC1cXHUyNDVGXFx1MjUwMC1cXHUyNzc1XFx1Mjc5NC1cXHUyQkZGXFx1MkUwMC1cXHUyRTdGXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDIwXFx1MzAzMFxcdUZEM0VcXHVGRDNGXFx1RkU0NVxcdUZFNDZdLztcbiAgICB2YXIgcGVnJGM4MyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCIhXCIsIFwiL1wiXSwgW1wiOlwiLCBcIkBcIl0sIFtcIltcIiwgXCJeXCJdLCBcImBcIiwgW1wie1wiLCBcIn5cIl0sIFtcIlxceEExXCIsIFwiXFx4QTdcIl0sIFwiXFx4QTlcIiwgXCJcXHhBQlwiLCBcIlxceEFDXCIsIFwiXFx4QUVcIiwgXCJcXHhCMFwiLCBcIlxceEIxXCIsIFwiXFx4QjZcIiwgXCJcXHhCQlwiLCBcIlxceEJGXCIsIFwiXFx4RDdcIiwgXCJcXHhGN1wiLCBbXCJcXHUyMDEwXCIsIFwiXFx1MjAyN1wiXSwgW1wiXFx1MjAzMFwiLCBcIlxcdTIwM0VcIl0sIFtcIlxcdTIwNDFcIiwgXCJcXHUyMDUzXCJdLCBbXCJcXHUyMDU1XCIsIFwiXFx1MjA1RVwiXSwgW1wiXFx1MjE5MFwiLCBcIlxcdTI0NUZcIl0sIFtcIlxcdTI1MDBcIiwgXCJcXHUyNzc1XCJdLCBbXCJcXHUyNzk0XCIsIFwiXFx1MkJGRlwiXSwgW1wiXFx1MkUwMFwiLCBcIlxcdTJFN0ZcIl0sIFtcIlxcdTMwMDFcIiwgXCJcXHUzMDAzXCJdLCBbXCJcXHUzMDA4XCIsIFwiXFx1MzAyMFwiXSwgXCJcXHUzMDMwXCIsIFwiXFx1RkQzRVwiLCBcIlxcdUZEM0ZcIiwgXCJcXHVGRTQ1XCIsIFwiXFx1RkU0NlwiXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM4NCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwib3B0aW9uYWwgd2hpdGVzcGFjZVwiKTtcbiAgICB2YXIgcGVnJGM4NSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwibnVtYmVyXCIpO1xuICAgIHZhciBwZWckYzg2ID0gXCItXCI7XG4gICAgdmFyIHBlZyRjODcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjODggPSBmdW5jdGlvbiAobmVnYXRpdmUsIG51bSkge1xuICAgICAgICByZXR1cm4gbnVtXG4gICAgICAgICAgICA/IG5lZ2F0aXZlXG4gICAgICAgICAgICAgICAgPyAtbnVtXG4gICAgICAgICAgICAgICAgOiBudW1cbiAgICAgICAgICAgIDogMDtcbiAgICB9O1xuICAgIHZhciBwZWckYzg5ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJhcG9zdHJvcGhlXCIpO1xuICAgIHZhciBwZWckYzkwID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJkb3VibGUgYXBvc3Ryb3BoZXNcIik7XG4gICAgdmFyIHBlZyRjOTEgPSBcIicnXCI7XG4gICAgdmFyIHBlZyRjOTIgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJydcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzkzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gXCInXCI7IH07XG4gICAgdmFyIHBlZyRjOTQgPSBmdW5jdGlvbiAoZXNjYXBlZENoYXIsIHF1b3RlZENoYXJzKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGVkQ2hhciArIHF1b3RlZENoYXJzLnJlcGxhY2UoXCInJ1wiLCBcIidcIik7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM5NSA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiAoeCAhPT0gJzwnICYmXG4gICAgICAgICAgICB4ICE9PSAneycgJiZcbiAgICAgICAgICAgICEoaXNJblBsdXJhbE9wdGlvbigpICYmIHggPT09ICcjJykgJiZcbiAgICAgICAgICAgICEoaXNOZXN0ZWRNZXNzYWdlVGV4dCgpICYmIHggPT09ICd9JykpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjOTYgPSBcIlxcblwiO1xuICAgIHZhciBwZWckYzk3ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcblwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjOTggPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4geCA9PT0gJzwnIHx8IHggPT09ICc+JyB8fCB4ID09PSAneycgfHwgeCA9PT0gJ30nIHx8IChpc0luUGx1cmFsT3B0aW9uKCkgJiYgeCA9PT0gJyMnKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzk5ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJhcmdOYW1lT3JOdW1iZXJcIik7XG4gICAgdmFyIHBlZyRjMTAwID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJ2YWxpZFRhZ1wiKTtcbiAgICB2YXIgcGVnJGMxMDEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ051bWJlclwiKTtcbiAgICB2YXIgcGVnJGMxMDIgPSBcIjBcIjtcbiAgICB2YXIgcGVnJGMxMDMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiMFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMTA0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMDsgfTtcbiAgICB2YXIgcGVnJGMxMDUgPSAvXlsxLTldLztcbiAgICB2YXIgcGVnJGMxMDYgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiMVwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzEwNyA9IC9eWzAtOV0vO1xuICAgIHZhciBwZWckYzEwOCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCIwXCIsIFwiOVwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMTA5ID0gZnVuY3Rpb24gKGRpZ2l0cykge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLmpvaW4oJycpLCAxMCk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGMxMTAgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ05hbWVcIik7XG4gICAgdmFyIHBlZyRjMTExID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJ0YWdOYW1lXCIpO1xuICAgIHZhciBwZWckY3VyclBvcyA9IDA7XG4gICAgdmFyIHBlZyRzYXZlZFBvcyA9IDA7XG4gICAgdmFyIHBlZyRwb3NEZXRhaWxzQ2FjaGUgPSBbeyBsaW5lOiAxLCBjb2x1bW46IDEgfV07XG4gICAgdmFyIHBlZyRtYXhGYWlsUG9zID0gMDtcbiAgICB2YXIgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgIHZhciBwZWckc2lsZW50RmFpbHMgPSAwO1xuICAgIHZhciBwZWckcmVzdWx0O1xuICAgIGlmIChvcHRpb25zLnN0YXJ0UnVsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghKG9wdGlvbnMuc3RhcnRSdWxlIGluIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBzdGFydCBwYXJzaW5nIGZyb20gcnVsZSBcXFwiXCIgKyBvcHRpb25zLnN0YXJ0UnVsZSArIFwiXFxcIi5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uc1tvcHRpb25zLnN0YXJ0UnVsZV07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGxvY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXhwZWN0ZWQoZGVzY3JpcHRpb24sIGxvY2F0aW9uMSkge1xuICAgICAgICBsb2NhdGlvbjEgPSBsb2NhdGlvbjEgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBsb2NhdGlvbjFcbiAgICAgICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFtwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbildLCBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyksIGxvY2F0aW9uMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uMSkge1xuICAgICAgICBsb2NhdGlvbjEgPSBsb2NhdGlvbjEgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBsb2NhdGlvbjFcbiAgICAgICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgdGhyb3cgcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbih0ZXh0MSwgaWdub3JlQ2FzZSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImxpdGVyYWxcIiwgdGV4dDogdGV4dDEsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGNsYXNzRXhwZWN0YXRpb24ocGFydHMsIGludmVydGVkLCBpZ25vcmVDYXNlKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiY2xhc3NcIiwgcGFydHM6IHBhcnRzLCBpbnZlcnRlZDogaW52ZXJ0ZWQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGFueUV4cGVjdGF0aW9uKCkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImFueVwiIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRlbmRFeHBlY3RhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJlbmRcIiB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbikge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm90aGVyXCIsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckY29tcHV0ZVBvc0RldGFpbHMocG9zKSB7XG4gICAgICAgIHZhciBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdO1xuICAgICAgICB2YXIgcDtcbiAgICAgICAgaWYgKGRldGFpbHMpIHtcbiAgICAgICAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcCA9IHBvcyAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIXBlZyRwb3NEZXRhaWxzQ2FjaGVbcF0pIHtcbiAgICAgICAgICAgICAgICBwLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwXTtcbiAgICAgICAgICAgIGRldGFpbHMgPSB7XG4gICAgICAgICAgICAgICAgbGluZTogZGV0YWlscy5saW5lLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogZGV0YWlscy5jb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aGlsZSAocCA8IHBvcykge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHApID09PSAxMCkge1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmxpbmUrKztcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5jb2x1bW4gPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5jb2x1bW4rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdID0gZGV0YWlscztcbiAgICAgICAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRjb21wdXRlTG9jYXRpb24oc3RhcnRQb3MsIGVuZFBvcykge1xuICAgICAgICB2YXIgc3RhcnRQb3NEZXRhaWxzID0gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHN0YXJ0UG9zKTtcbiAgICAgICAgdmFyIGVuZFBvc0RldGFpbHMgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoZW5kUG9zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBzdGFydFBvcyxcbiAgICAgICAgICAgICAgICBsaW5lOiBzdGFydFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHN0YXJ0UG9zRGV0YWlscy5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmQ6IHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IGVuZFBvcyxcbiAgICAgICAgICAgICAgICBsaW5lOiBlbmRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBlbmRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckZmFpbChleHBlY3RlZDEpIHtcbiAgICAgICAgaWYgKHBlZyRjdXJyUG9zIDwgcGVnJG1heEZhaWxQb3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVnJGN1cnJQb3MgPiBwZWckbWF4RmFpbFBvcykge1xuICAgICAgICAgICAgcGVnJG1heEZhaWxQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBwZWckbWF4RmFpbEV4cGVjdGVkLnB1c2goZXhwZWN0ZWQxKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24xKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3ludGF4RXJyb3IobWVzc2FnZSwgW10sIFwiXCIsIGxvY2F0aW9uMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihleHBlY3RlZDEsIGZvdW5kLCBsb2NhdGlvbjEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTeW50YXhFcnJvcihTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UoZXhwZWN0ZWQxLCBmb3VuZCksIGV4cGVjdGVkMSwgZm91bmQsIGxvY2F0aW9uMSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXN0YXJ0KCkge1xuICAgICAgICB2YXIgczA7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlbWVzc2FnZSgpO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW1lc3NhZ2UoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gW107XG4gICAgICAgIHMxID0gcGVnJHBhcnNlbWVzc2FnZUVsZW1lbnQoKTtcbiAgICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgICAgIHMxID0gcGVnJHBhcnNlbWVzc2FnZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW1lc3NhZ2VFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGMwKCk7XG4gICAgICAgIGlmIChzMSkge1xuICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXRhZ0VsZW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxKHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckcGFyc2VsaXRlcmFsRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckcGFyc2Vhcmd1bWVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckcGFyc2VzaW1wbGVGb3JtYXRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckcGFyc2VwbHVyYWxFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXNlbGVjdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckcGFyc2Vwb3VuZEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VtZXNzYWdlVGV4dCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckYzIoKTtcbiAgICAgICAgaWYgKHMxKSB7XG4gICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzUoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBbXTtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW5vblRhZ1N0YXJ0aW5nQW5nbGVCcmFja2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW5vblRhZ1N0YXJ0aW5nQW5nbGVCcmFja2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzUoczEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW5vblRhZ1N0YXJ0aW5nQW5nbGVCcmFja2V0KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlb3BlbmluZ1RhZygpO1xuICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlY2xvc2luZ1RhZygpO1xuICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VzZWxmQ2xvc2luZ1RhZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjApIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRjMztcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNigpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VsaXRlcmFsRWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VtZXNzYWdlVGV4dCgpO1xuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzcoczEpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcG91bmRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM1KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzEwKCk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V0YWdFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRwYXJzZXNlbGZDbG9zaW5nVGFnKCk7XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMxID0gcGVnJHBhcnNlb3BlbmluZ1RhZygpO1xuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlY2xvc2luZ1RhZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzEyKHMxLCBzMiwgczMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VzZWxmQ2xvc2luZ1RhZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjApIHtcbiAgICAgICAgICAgIHMyID0gcGVnJGMzO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2V2YWxpZFRhZygpO1xuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzEzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBbczIsIHMzLCBzNCwgczVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxNShzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VvcGVuaW5nVGFnKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjApIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2V2YWxpZFRhZygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2Mikge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjMTY7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzE4KHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VjbG9zaW5nVGFnKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzE5KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTk7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2V2YWxpZFRhZygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2Mikge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjMTY7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzE4KHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vhcmd1bWVudEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMyMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlYXJnTmFtZU9yTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMjYoczMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25JZCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAocGVnJGMyOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzI4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBbczMsIHM0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ3KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvbklkKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzQoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlXygpO1xuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25JZCgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uVG9rZW5PcHRpb24oKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMzNihzMiwgczMpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbigpO1xuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzcoczEpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyQXJnU3R5bGUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMzOCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzM4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzM5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b24oKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MChzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMxID0gcGVnJGM0MSgpO1xuICAgICAgICAgICAgaWYgKHMxKSB7XG4gICAgICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDIoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyRm9ybWF0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzQ1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VudW1iZXJBcmdTdHlsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IFtzMTAsIHMxMSwgczEyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHMxMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzQ3KHMzLCBzNywgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uTGl0ZXJhbCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzUwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzUwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzQ4O1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBbczEsIHMyLCBzM107XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBbXTtcbiAgICAgICAgICAgIHMxID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzUyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzUyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25QYXR0ZXJuKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBzMCA9IFtdO1xuICAgICAgICBpZiAocGVnJGM1NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNTQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25MaXRlcmFsKCk7XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uUGF0dGVybigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uTGl0ZXJhbCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25QYXR0ZXJuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBpbnB1dC5zdWJzdHJpbmcoczEsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM1NihzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlT3JUaW1lQXJnU3R5bGUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGMzOCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzM4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzM5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQwKHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckYzU3KCk7XG4gICAgICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbWVzc2FnZVRleHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MihzMik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlT3JUaW1lRm9ybWF0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDQpID09PSBwZWckYzU4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNTg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNCkgPT09IHBlZyRjNjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNjEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRjNDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlZGF0ZU9yVGltZUFyZ1N0eWxlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gW3MxMCwgczExLCBzMTJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gczEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDcoczMsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXNpbXBsZUZvcm1hdEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMDtcbiAgICAgICAgczAgPSBwZWckcGFyc2VudW1iZXJGb3JtYXRFbGVtZW50KCk7XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckcGFyc2VkYXRlT3JUaW1lRm9ybWF0RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcGx1cmFsRWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyLCBzMTMsIHMxNCwgczE1O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzYyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNjI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNjMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMTMpID09PSBwZWckYzY0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzY0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDEzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2NSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA3KSA9PT0gcGVnJGM2Nikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRjNjY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzY3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE0ID0gcGVnJHBhcnNlbnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IFtzMTIsIHMxMywgczE0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHMxMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VwbHVyYWxPcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMy5wdXNoKHMxNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE0ID0gcGVnJHBhcnNlcGx1cmFsT3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTUgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzY4KHMzLCBzNywgczExLCBzMTMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXNlbGVjdEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMiwgczEzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzY5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNjk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNzApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VzZWxlY3RPcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMS5wdXNoKHMxMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZXNlbGVjdE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3MShzMywgczExKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcGx1cmFsUnVsZVNlbGVjdFZhbHVlKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjEpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJGM3MjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM3Myk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZW51bWJlcigpO1xuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWFyZ05hbWUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXNlbGVjdE9wdGlvbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VhcmdOYW1lKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMyMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM3NChzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlbWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzc1KHMyLCBzNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXBsdXJhbE9wdGlvbigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VwbHVyYWxSdWxlU2VsZWN0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzc2KHMyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzcoczIsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNld2hpdGVTcGFjZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzc5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNzgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4Myk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlXygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IFtdO1xuICAgICAgICBzMiA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbnVtYmVyKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDUpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4NjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4Nyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWFyZ051bWJlcigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzg4KHMxLCBzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VhcG9zdHJvcGhlKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgczAgPSBwZWckYzQ4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkxKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjOTE7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjOTMoKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vlc2NhcGVkQ2hhcigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkxKSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGM5MTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5Mik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzUwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM5MSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzkxO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzUwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHJpbmcoczMsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjNDg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjOTQoczIsIHMzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMyA9IHBlZyRjOTUoczIpO1xuICAgICAgICAgICAgaWYgKHMzKSB7XG4gICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEwKSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzk2O1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzk3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWVzY2FwZWRDaGFyKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczMgPSBwZWckYzk4KHMyKTtcbiAgICAgICAgICAgIGlmIChzMykge1xuICAgICAgICAgICAgICAgIHMzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZWFyZ051bWJlcigpO1xuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJHBhcnNlYXJnTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNldmFsaWRUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZWFyZ051bWJlcigpO1xuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJHBhcnNldGFnTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ051bWJlcigpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDgpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMDI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzEwNCgpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAocGVnJGMxMDUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjMTA3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwOCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMxMDcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwOCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTA5KHMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ05hbWUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IFtdO1xuICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCk7XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNldGFnTmFtZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDUpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJGM4NjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4Nyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRjODY7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjODcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgdmFyIG1lc3NhZ2VDdHggPSBbJ3Jvb3QnXTtcbiAgICBmdW5jdGlvbiBpc05lc3RlZE1lc3NhZ2VUZXh0KCkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZUN0eC5sZW5ndGggPiAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0luUGx1cmFsT3B0aW9uKCkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZUN0eFttZXNzYWdlQ3R4Lmxlbmd0aCAtIDFdID09PSAncGx1cmFsJztcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zZXJ0TG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuY2FwdHVyZUxvY2F0aW9uID8ge1xuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uKClcbiAgICAgICAgfSA6IHt9O1xuICAgIH1cbiAgICB2YXIgaWdub3JlVGFnID0gb3B0aW9ucyAmJiBvcHRpb25zLmlnbm9yZVRhZztcbiAgICBwZWckcmVzdWx0ID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uKCk7XG4gICAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPT09IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcGVnJHJlc3VsdDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICBwZWckZmFpbChwZWckZW5kRXhwZWN0YXRpb24oKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKHBlZyRtYXhGYWlsRXhwZWN0ZWQsIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoID8gaW5wdXQuY2hhckF0KHBlZyRtYXhGYWlsUG9zKSA6IG51bGwsIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoXG4gICAgICAgICAgICA/IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zICsgMSlcbiAgICAgICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MpKTtcbiAgICB9XG59XG5leHBvcnRzLnBlZ1BhcnNlID0gcGVnJHBhcnNlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19zcHJlYWRBcnJheXMgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xuICAgIHJldHVybiByO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB0eXBlc18xID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG52YXIgcGFyc2VyXzEgPSByZXF1aXJlKFwiLi9wYXJzZXJcIik7XG52YXIgUExVUkFMX0hBU0hUQUdfUkVHRVggPSAvKF58W15cXFxcXSkjL2c7XG4vKipcbiAqIFdoZXRoZXIgdG8gY29udmVydCBgI2AgaW4gcGx1cmFsIHJ1bGUgb3B0aW9uc1xuICogdG8gYHt2YXIsIG51bWJlcn1gXG4gKiBAcGFyYW0gZWwgQVNUIEVsZW1lbnRcbiAqIEBwYXJhbSBwbHVyYWxTdGFjayBjdXJyZW50IHBsdXJhbCBzdGFja1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVIYXNodGFnSW5QbHVyYWwoZWxzKSB7XG4gICAgZWxzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIC8vIElmIHdlJ3JlIGVuY291bnRlcmluZyBhIHBsdXJhbCBlbFxuICAgICAgICBpZiAoIXR5cGVzXzEuaXNQbHVyYWxFbGVtZW50KGVsKSAmJiAhdHlwZXNfMS5pc1NlbGVjdEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gR28gZG93biB0aGUgb3B0aW9ucyBhbmQgc2VhcmNoIGZvciAjIGluIGFueSBsaXRlcmFsIGVsZW1lbnRcbiAgICAgICAgT2JqZWN0LmtleXMoZWwub3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBvcHQgPSBlbC5vcHRpb25zW2lkXTtcbiAgICAgICAgICAgIC8vIElmIHdlIGdvdCBhIG1hdGNoLCB3ZSBoYXZlIHRvIHNwbGl0IHRoaXNcbiAgICAgICAgICAgIC8vIGFuZCBpbmplY3QgYSBOdW1iZXJFbGVtZW50IGluIHRoZSBtaWRkbGVcbiAgICAgICAgICAgIHZhciBtYXRjaGluZ0xpdGVyYWxFbEluZGV4ID0gLTE7XG4gICAgICAgICAgICB2YXIgbGl0ZXJhbEVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHQudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxfMSA9IG9wdC52YWx1ZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZXNfMS5pc0xpdGVyYWxFbGVtZW50KGVsXzEpICYmIFBMVVJBTF9IQVNIVEFHX1JFR0VYLnRlc3QoZWxfMS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGxpdGVyYWxFbCA9IGVsXzE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaXRlcmFsRWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBsaXRlcmFsRWwudmFsdWUucmVwbGFjZShQTFVSQUxfSEFTSFRBR19SRUdFWCwgXCIkMXtcIiArIGVsLnZhbHVlICsgXCIsIG51bWJlcn1cIik7XG4gICAgICAgICAgICAgICAgdmFyIG5ld0VscyA9IHBhcnNlcl8xLnBlZ1BhcnNlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICAoX2EgPSBvcHQudmFsdWUpLnNwbGljZS5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW21hdGNoaW5nTGl0ZXJhbEVsSW5kZXgsIDFdLCBuZXdFbHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbChvcHQudmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMubm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsID0gbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBodHRwczovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2NhcmlkeS9pbnRsLWRhdGV0aW1lZm9ybWF0LXBhdHRlcm4vYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqIHdpdGggc29tZSB0d2Vha3NcbiAqL1xudmFyIERBVEVfVElNRV9SRUdFWCA9IC8oPzpbRWVjXXsxLDZ9fEd7MSw1fXxbUXFdezEsNX18KD86W3lZdXJdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18RHsxLDN9fEZ7MX18W2FiQl17MSw1fXxbaGtIS117MSwyfXx3ezEsMn18V3sxfXxtezEsMn18c3sxLDJ9fFt6Wk92VnhYXXsxLDR9KSg/PShbXiddKidbXiddKicpKlteJ10qJCkvZztcbi8qKlxuICogUGFyc2UgRGF0ZSB0aW1lIHNrZWxldG9uIGludG8gSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAqIFJlZjogaHR0cHM6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gc2tlbGV0b24gc2tlbGV0b24gc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGF0ZVRpbWVTa2VsZXRvbihza2VsZXRvbikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBza2VsZXRvbi5yZXBsYWNlKERBVEVfVElNRV9SRUdFWCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBtYXRjaC5sZW5ndGg7XG4gICAgICAgIHN3aXRjaCAobWF0Y2hbMF0pIHtcbiAgICAgICAgICAgIC8vIEVyYVxuICAgICAgICAgICAgY2FzZSAnRyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmVyYSA9IGxlbiA9PT0gNCA/ICdsb25nJyA6IGxlbiA9PT0gNSA/ICduYXJyb3cnIDogJ3Nob3J0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFllYXJcbiAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgIHJlc3VsdC55ZWFyID0gbGVuID09PSAyID8gJzItZGlnaXQnIDogJ251bWVyaWMnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWSc6XG4gICAgICAgICAgICBjYXNlICd1JzpcbiAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgY2FzZSAncic6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BZL3UvVS9yYCAoeWVhcikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgeWAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gUXVhcnRlclxuICAgICAgICAgICAgY2FzZSAncSc6XG4gICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHEvUWAgKHF1YXJ0ZXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgICAgICAvLyBNb250aFxuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubW9udGggPSBbJ251bWVyaWMnLCAnMi1kaWdpdCcsICdzaG9ydCcsICdsb25nJywgJ25hcnJvdyddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gV2Vla1xuICAgICAgICAgICAgY2FzZSAndyc6XG4gICAgICAgICAgICBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYHcvV2AgKHdlZWspIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuZGF5ID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICAgICAgY2FzZSAnRic6XG4gICAgICAgICAgICBjYXNlICdnJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYEQvRi9nYCAoZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBkYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBXZWVrZGF5XG4gICAgICAgICAgICBjYXNlICdFJzpcbiAgICAgICAgICAgICAgICByZXN1bHQud2Vla2RheSA9IGxlbiA9PT0gNCA/ICdzaG9ydCcgOiBsZW4gPT09IDUgPyAnbmFycm93JyA6ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlJzpcbiAgICAgICAgICAgICAgICBpZiAobGVuIDwgNCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGUuLmVlZWAgKHdlZWtkYXkpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC53ZWVrZGF5ID0gWydzaG9ydCcsICdsb25nJywgJ25hcnJvdycsICdzaG9ydCddW2xlbiAtIDRdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYyc6XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BjLi5jY2NgICh3ZWVrZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQud2Vla2RheSA9IFsnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnLCAnc2hvcnQnXVtsZW4gLSA0XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFBlcmlvZFxuICAgICAgICAgICAgY2FzZSAnYSc6IC8vIEFNLCBQTVxuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyMTIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYic6IC8vIGFtLCBwbSwgbm9vbiwgbWlkbmlnaHRcbiAgICAgICAgICAgIGNhc2UgJ0InOiAvLyBmbGV4aWJsZSBkYXkgcGVyaW9kc1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgYi9CYCAocGVyaW9kKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBhYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBIb3VyXG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ckN5Y2xlID0gJ2gxMic7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMjMnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0snOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDExJztcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ciA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ckN5Y2xlID0gJ2gyNCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaic6XG4gICAgICAgICAgICBjYXNlICdKJzpcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgai9KL0NgIChob3VyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBoL0gvSy9rYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBNaW51dGVcbiAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5taW51dGUgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gU2Vjb25kXG4gICAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc2Vjb25kID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BTL0FgIChzZWNvbmQpIHBhdHRlbnJzIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHNgIGluc3RlYWQnKTtcbiAgICAgICAgICAgIC8vIFpvbmVcbiAgICAgICAgICAgIGNhc2UgJ3onOiAvLyAxLi4zLCA0OiBzcGVjaWZpYyBub24tbG9jYXRpb24gZm9ybWF0XG4gICAgICAgICAgICAgICAgcmVzdWx0LnRpbWVab25lTmFtZSA9IGxlbiA8IDQgPyAnc2hvcnQnIDogJ2xvbmcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6IC8vIDEuLjMsIDQsIDU6IFRoZSBJU084NjAxIHZhcmlvcyBmb3JtYXRzXG4gICAgICAgICAgICBjYXNlICdPJzogLy8gMSwgNDogbWlsaXNlY29uZHMgaW4gZGF5IHNob3J0LCBsb25nXG4gICAgICAgICAgICBjYXNlICd2JzogLy8gMSwgNDogZ2VuZXJpYyBub24tbG9jYXRpb24gZm9ybWF0XG4gICAgICAgICAgICBjYXNlICdWJzogLy8gMSwgMiwgMywgNDogdGltZSB6b25lIElEIG9yIGNpdHlcbiAgICAgICAgICAgIGNhc2UgJ1gnOiAvLyAxLCAyLCAzLCA0OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgY2FzZSAneCc6IC8vIDEsIDIsIDMsIDQ6IFRoZSBJU084NjAxIHZhcmlvcyBmb3JtYXRzXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BaL08vdi9WL1gveGAgKHRpbWVab25lKSBwYXR0ZW5ycyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGB6YCBpbnN0ZWFkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnBhcnNlRGF0ZVRpbWVTa2VsZXRvbiA9IHBhcnNlRGF0ZVRpbWVTa2VsZXRvbjtcbmZ1bmN0aW9uIGljdVVuaXRUb0VjbWEodW5pdCkge1xuICAgIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59XG52YXIgRlJBQ1RJT05fUFJFQ0lTSU9OX1JFR0VYID0gL15cXC4oPzooMCspKFxcKik/fCgjKyl8KDArKSgjKykpJC9nO1xudmFyIFNJR05JRklDQU5UX1BSRUNJU0lPTl9SRUdFWCA9IC9eKEArKT8oXFwrfCMrKT8kL2c7XG5mdW5jdGlvbiBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHN0cikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBzdHIucmVwbGFjZShTSUdOSUZJQ0FOVF9QUkVDSVNJT05fUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIpIHtcbiAgICAgICAgLy8gQEBAIGNhc2VcbiAgICAgICAgaWYgKHR5cGVvZiBnMiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIEBAQCsgY2FzZVxuICAgICAgICBlbHNlIGlmIChnMiA9PT0gJysnKSB7XG4gICAgICAgICAgICByZXN1bHQubWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIC4jIyMgY2FzZVxuICAgICAgICBlbHNlIGlmIChnMVswXSA9PT0gJyMnKSB7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIC5AQCMjIG9yIC5AQEAgY2FzZVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID1cbiAgICAgICAgICAgICAgICBnMS5sZW5ndGggKyAodHlwZW9mIGcyID09PSAnc3RyaW5nJyA/IGcyLmxlbmd0aCA6IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VTaWduKHN0cikge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICAgIGNhc2UgJ3NpZ24tYXV0byc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnYXV0bycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWFjY291bnRpbmcnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVNpZ246ICdhY2NvdW50aW5nJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tYWx3YXlzJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdhbHdheXMnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nLWFsd2F5cyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnYWx3YXlzJyxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVNpZ246ICdhY2NvdW50aW5nJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tZXhjZXB0LXplcm8nOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2V4Y2VwdFplcm8nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdleGNlcHRaZXJvJyxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVNpZ246ICdhY2NvdW50aW5nJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tbmV2ZXInOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ25ldmVyJyxcbiAgICAgICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gcGFyc2VOb3RhdGlvbk9wdGlvbnMob3B0KSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBzaWduT3B0cyA9IHBhcnNlU2lnbihvcHQpO1xuICAgIGlmIChzaWduT3B0cykge1xuICAgICAgICByZXR1cm4gc2lnbk9wdHM7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvYmxvYi9tYXN0ZXIvZG9jcy91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLm1kI3NrZWxldG9uLXN0ZW1zLWFuZC1vcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnROdW1iZXJTa2VsZXRvblRvTnVtYmVyRm9ybWF0T3B0aW9ucyh0b2tlbnMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIgX2kgPSAwLCB0b2tlbnNfMSA9IHRva2VuczsgX2kgPCB0b2tlbnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zXzFbX2ldO1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnN0ZW0pIHtcbiAgICAgICAgICAgIGNhc2UgJ3BlcmNlbnQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5zdHlsZSA9ICdwZXJjZW50JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeSA9IHRva2VuLm9wdGlvbnNbMF07XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdncm91cC1vZmYnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC51c2VHcm91cGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAncHJlY2lzaW9uLWludGVnZXInOlxuICAgICAgICAgICAgY2FzZSAnLic6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IDA7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdtZWFzdXJlLXVuaXQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5zdHlsZSA9ICd1bml0JztcbiAgICAgICAgICAgICAgICByZXN1bHQudW5pdCA9IGljdVVuaXRUb0VjbWEodG9rZW4ub3B0aW9uc1swXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdjb21wYWN0LXNob3J0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQubm90YXRpb24gPSAnY29tcGFjdCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBhY3REaXNwbGF5ID0gJ3Nob3J0JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbXBhY3QtbG9uZyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wYWN0RGlzcGxheSA9ICdsb25nJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3NjaWVudGlmaWMnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IG5vdGF0aW9uOiAnc2NpZW50aWZpYycgfSksIHRva2VuLm9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIG9wdCkgeyByZXR1cm4gKF9fYXNzaWduKF9fYXNzaWduKHt9LCBhbGwpLCBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpKSk7IH0sIHt9KSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdlbmdpbmVlcmluZyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgbm90YXRpb246ICdlbmdpbmVlcmluZycgfSksIHRva2VuLm9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIG9wdCkgeyByZXR1cm4gKF9fYXNzaWduKF9fYXNzaWduKHt9LCBhbGwpLCBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpKSk7IH0sIHt9KSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdub3RhdGlvbi1zaW1wbGUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ub3RhdGlvbiA9ICdzdGFuZGFyZCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2ljdTRjL3NvdXJjZS9pMThuL3VuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oXG4gICAgICAgICAgICBjYXNlICd1bml0LXdpZHRoLW5hcnJvdyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICduYXJyb3dTeW1ib2wnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC51bml0RGlzcGxheSA9ICduYXJyb3cnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1zaG9ydCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICdjb2RlJztcbiAgICAgICAgICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnc2hvcnQnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1mdWxsLW5hbWUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnbmFtZSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXREaXNwbGF5ID0gJ2xvbmcnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1pc28tY29kZSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICdzeW1ib2wnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByZWNpc2lvblxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb25cbiAgICAgICAgLy8gcHJlY2lzaW9uLWludGVnZXIgY2FzZVxuICAgICAgICBpZiAoRlJBQ1RJT05fUFJFQ0lTSU9OX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRnJhY3Rpb24tcHJlY2lzaW9uIHN0ZW1zIG9ubHkgYWNjZXB0IGEgc2luZ2xlIG9wdGlvbmFsIG9wdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW4uc3RlbS5yZXBsYWNlKEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWCwgZnVuY3Rpb24gKF8sIGcxLCBnMiwgZzMsIGc0LCBnNSkge1xuICAgICAgICAgICAgICAgIC8vIC4wMDAqIGNhc2UgKGJlZm9yZSBJQ1U2NyBpdCB3YXMgLjAwMCspXG4gICAgICAgICAgICAgICAgaWYgKGcyID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gLiMjIyBjYXNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZzMgJiYgZzNbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAuMDAjIyBjYXNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZzQgJiYgZzUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGc0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGc0Lmxlbmd0aCArIGc1Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRva2VuLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24odG9rZW4ub3B0aW9uc1swXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFNJR05JRklDQU5UX1BSRUNJU0lPTl9SRUdFWC50ZXN0KHRva2VuLnN0ZW0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgcGFyc2VTaWduaWZpY2FudFByZWNpc2lvbih0b2tlbi5zdGVtKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbk9wdHMgPSBwYXJzZVNpZ24odG9rZW4uc3RlbSk7XG4gICAgICAgIGlmIChzaWduT3B0cykge1xuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHNpZ25PcHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5jb252ZXJ0TnVtYmVyU2tlbGV0b25Ub051bWJlckZvcm1hdE9wdGlvbnMgPSBjb252ZXJ0TnVtYmVyU2tlbGV0b25Ub051bWJlckZvcm1hdE9wdGlvbnM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbmZ1bmN0aW9uIF9fZXhwb3J0KG0pIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgcGFyc2VyXzEgPSByZXF1aXJlKFwiLi9zcmMvcGFyc2VyXCIpO1xudmFyIG5vcm1hbGl6ZV8xID0gcmVxdWlyZShcIi4vc3JjL25vcm1hbGl6ZVwiKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy90eXBlc1wiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvcGFyc2VyXCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy9za2VsZXRvblwiKSk7XG5mdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0cykge1xuICAgIHZhciBlbHMgPSBwYXJzZXJfMS5wZWdQYXJzZShpbnB1dCwgb3B0cyk7XG4gICAgaWYgKCFvcHRzIHx8IG9wdHMubm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsICE9PSBmYWxzZSkge1xuICAgICAgICBub3JtYWxpemVfMS5ub3JtYWxpemVIYXNodGFnSW5QbHVyYWwoZWxzKTtcbiAgICB9XG4gICAgcmV0dXJuIGVscztcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbiIsIi8vXG4vLyBNYWluXG4vL1xuXG5mdW5jdGlvbiBtZW1vaXplIChmbiwgb3B0aW9ucykge1xuICB2YXIgY2FjaGUgPSBvcHRpb25zICYmIG9wdGlvbnMuY2FjaGVcbiAgICA/IG9wdGlvbnMuY2FjaGVcbiAgICA6IGNhY2hlRGVmYXVsdFxuXG4gIHZhciBzZXJpYWxpemVyID0gb3B0aW9ucyAmJiBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgICA/IG9wdGlvbnMuc2VyaWFsaXplclxuICAgIDogc2VyaWFsaXplckRlZmF1bHRcblxuICB2YXIgc3RyYXRlZ3kgPSBvcHRpb25zICYmIG9wdGlvbnMuc3RyYXRlZ3lcbiAgICA/IG9wdGlvbnMuc3RyYXRlZ3lcbiAgICA6IHN0cmF0ZWd5RGVmYXVsdFxuXG4gIHJldHVybiBzdHJhdGVneShmbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVyOiBzZXJpYWxpemVyXG4gIH0pXG59XG5cbi8vXG4vLyBTdHJhdGVneVxuLy9cblxuZnVuY3Rpb24gaXNQcmltaXRpdmUgKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgLy8gfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICd1bnNhZmUnIHByaW1pdGl2ZSBmb3Igb3VyIG5lZWRzXG59XG5cbmZ1bmN0aW9uIG1vbmFkaWMgKGZuLCBjYWNoZSwgc2VyaWFsaXplciwgYXJnKSB7XG4gIHZhciBjYWNoZUtleSA9IGlzUHJpbWl0aXZlKGFyZykgPyBhcmcgOiBzZXJpYWxpemVyKGFyZylcblxuICB2YXIgY29tcHV0ZWRWYWx1ZSA9IGNhY2hlLmdldChjYWNoZUtleSlcbiAgaWYgKHR5cGVvZiBjb21wdXRlZFZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIGNvbXB1dGVkVmFsdWUgPSBmbi5jYWxsKHRoaXMsIGFyZylcbiAgICBjYWNoZS5zZXQoY2FjaGVLZXksIGNvbXB1dGVkVmFsdWUpXG4gIH1cblxuICByZXR1cm4gY29tcHV0ZWRWYWx1ZVxufVxuXG5mdW5jdGlvbiB2YXJpYWRpYyAoZm4sIGNhY2hlLCBzZXJpYWxpemVyKSB7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAzKVxuICB2YXIgY2FjaGVLZXkgPSBzZXJpYWxpemVyKGFyZ3MpXG5cbiAgdmFyIGNvbXB1dGVkVmFsdWUgPSBjYWNoZS5nZXQoY2FjaGVLZXkpXG4gIGlmICh0eXBlb2YgY29tcHV0ZWRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb21wdXRlZFZhbHVlID0gZm4uYXBwbHkodGhpcywgYXJncylcbiAgICBjYWNoZS5zZXQoY2FjaGVLZXksIGNvbXB1dGVkVmFsdWUpXG4gIH1cblxuICByZXR1cm4gY29tcHV0ZWRWYWx1ZVxufVxuXG5mdW5jdGlvbiBhc3NlbWJsZSAoZm4sIGNvbnRleHQsIHN0cmF0ZWd5LCBjYWNoZSwgc2VyaWFsaXplKSB7XG4gIHJldHVybiBzdHJhdGVneS5iaW5kKFxuICAgIGNvbnRleHQsXG4gICAgZm4sXG4gICAgY2FjaGUsXG4gICAgc2VyaWFsaXplXG4gIClcbn1cblxuZnVuY3Rpb24gc3RyYXRlZ3lEZWZhdWx0IChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSBmbi5sZW5ndGggPT09IDEgPyBtb25hZGljIDogdmFyaWFkaWNcblxuICByZXR1cm4gYXNzZW1ibGUoXG4gICAgZm4sXG4gICAgdGhpcyxcbiAgICBzdHJhdGVneSxcbiAgICBvcHRpb25zLmNhY2hlLmNyZWF0ZSgpLFxuICAgIG9wdGlvbnMuc2VyaWFsaXplclxuICApXG59XG5cbmZ1bmN0aW9uIHN0cmF0ZWd5VmFyaWFkaWMgKGZuLCBvcHRpb25zKSB7XG4gIHZhciBzdHJhdGVneSA9IHZhcmlhZGljXG5cbiAgcmV0dXJuIGFzc2VtYmxlKFxuICAgIGZuLFxuICAgIHRoaXMsXG4gICAgc3RyYXRlZ3ksXG4gICAgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSxcbiAgICBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgKVxufVxuXG5mdW5jdGlvbiBzdHJhdGVneU1vbmFkaWMgKGZuLCBvcHRpb25zKSB7XG4gIHZhciBzdHJhdGVneSA9IG1vbmFkaWNcblxuICByZXR1cm4gYXNzZW1ibGUoXG4gICAgZm4sXG4gICAgdGhpcyxcbiAgICBzdHJhdGVneSxcbiAgICBvcHRpb25zLmNhY2hlLmNyZWF0ZSgpLFxuICAgIG9wdGlvbnMuc2VyaWFsaXplclxuICApXG59XG5cbi8vXG4vLyBTZXJpYWxpemVyXG4vL1xuXG5mdW5jdGlvbiBzZXJpYWxpemVyRGVmYXVsdCAoKSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmd1bWVudHMpXG59XG5cbi8vXG4vLyBDYWNoZVxuLy9cblxuZnVuY3Rpb24gT2JqZWN0V2l0aG91dFByb3RvdHlwZUNhY2hlICgpIHtcbiAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbClcbn1cblxuT2JqZWN0V2l0aG91dFByb3RvdHlwZUNhY2hlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAoa2V5IGluIHRoaXMuY2FjaGUpXG59XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gdGhpcy5jYWNoZVtrZXldXG59XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdGhpcy5jYWNoZVtrZXldID0gdmFsdWVcbn1cblxudmFyIGNhY2hlRGVmYXVsdCA9IHtcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUgKCkge1xuICAgIHJldHVybiBuZXcgT2JqZWN0V2l0aG91dFByb3RvdHlwZUNhY2hlKClcbiAgfVxufVxuXG4vL1xuLy8gQVBJXG4vL1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVcbm1vZHVsZS5leHBvcnRzLnN0cmF0ZWdpZXMgPSB7XG4gIHZhcmlhZGljOiBzdHJhdGVneVZhcmlhZGljLFxuICBtb25hZGljOiBzdHJhdGVneU1vbmFkaWNcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChFcnJvckNvZGUpIHtcbiAgICAvLyBXaGVuIHdlIGhhdmUgYSBwbGFjZWhvbGRlciBidXQgbm8gdmFsdWUgdG8gZm9ybWF0XG4gICAgRXJyb3JDb2RlW1wiTUlTU0lOR19WQUxVRVwiXSA9IFwiTUlTU0lOR19WQUxVRVwiO1xuICAgIC8vIFdoZW4gdmFsdWUgc3VwcGxpZWQgaXMgaW52YWxpZFxuICAgIEVycm9yQ29kZVtcIklOVkFMSURfVkFMVUVcIl0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgICAvLyBXaGVuIHdlIG5lZWQgc3BlY2lmaWMgSW50bCBBUEkgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZVxuICAgIEVycm9yQ29kZVtcIk1JU1NJTkdfSU5UTF9BUElcIl0gPSBcIk1JU1NJTkdfSU5UTF9BUElcIjtcbn0pKEVycm9yQ29kZSA9IGV4cG9ydHMuRXJyb3JDb2RlIHx8IChleHBvcnRzLkVycm9yQ29kZSA9IHt9KSk7XG52YXIgRm9ybWF0RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZvcm1hdEVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZvcm1hdEVycm9yKG1zZywgY29kZSwgb3JpZ2luYWxNZXNzYWdlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1zZykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY29kZSA9IGNvZGU7XG4gICAgICAgIF90aGlzLm9yaWdpbmFsTWVzc2FnZSA9IG9yaWdpbmFsTWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBGb3JtYXRFcnJvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIltmb3JtYXRqcyBFcnJvcjogXCIgKyB0aGlzLmNvZGUgKyBcIl0gXCIgKyB0aGlzLm1lc3NhZ2U7XG4gICAgfTtcbiAgICByZXR1cm4gRm9ybWF0RXJyb3I7XG59KEVycm9yKSk7XG5leHBvcnRzLkZvcm1hdEVycm9yID0gRm9ybWF0RXJyb3I7XG52YXIgSW52YWxpZFZhbHVlRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEludmFsaWRWYWx1ZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEludmFsaWRWYWx1ZUVycm9yKHZhcmlhYmxlSWQsIHZhbHVlLCBvcHRpb25zLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiSW52YWxpZCB2YWx1ZXMgZm9yIFxcXCJcIiArIHZhcmlhYmxlSWQgKyBcIlxcXCI6IFxcXCJcIiArIHZhbHVlICsgXCJcXFwiLiBPcHRpb25zIGFyZSBcXFwiXCIgKyBPYmplY3Qua2V5cyhvcHRpb25zKS5qb2luKCdcIiwgXCInKSArIFwiXFxcIlwiLCBcIklOVkFMSURfVkFMVUVcIiAvKiBJTlZBTElEX1ZBTFVFICovLCBvcmlnaW5hbE1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBJbnZhbGlkVmFsdWVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydHMuSW52YWxpZFZhbHVlRXJyb3IgPSBJbnZhbGlkVmFsdWVFcnJvcjtcbnZhciBJbnZhbGlkVmFsdWVUeXBlRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEludmFsaWRWYWx1ZVR5cGVFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbnZhbGlkVmFsdWVUeXBlRXJyb3IodmFsdWUsIHR5cGUsIG9yaWdpbmFsTWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJWYWx1ZSBmb3IgXFxcIlwiICsgdmFsdWUgKyBcIlxcXCIgbXVzdCBiZSBvZiB0eXBlIFwiICsgdHlwZSwgXCJJTlZBTElEX1ZBTFVFXCIgLyogSU5WQUxJRF9WQUxVRSAqLywgb3JpZ2luYWxNZXNzYWdlKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gSW52YWxpZFZhbHVlVHlwZUVycm9yO1xufShGb3JtYXRFcnJvcikpO1xuZXhwb3J0cy5JbnZhbGlkVmFsdWVUeXBlRXJyb3IgPSBJbnZhbGlkVmFsdWVUeXBlRXJyb3I7XG52YXIgTWlzc2luZ1ZhbHVlRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1pc3NpbmdWYWx1ZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdWYWx1ZUVycm9yKHZhcmlhYmxlSWQsIG9yaWdpbmFsTWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJUaGUgaW50bCBzdHJpbmcgY29udGV4dCB2YXJpYWJsZSBcXFwiXCIgKyB2YXJpYWJsZUlkICsgXCJcXFwiIHdhcyBub3QgcHJvdmlkZWQgdG8gdGhlIHN0cmluZyBcXFwiXCIgKyBvcmlnaW5hbE1lc3NhZ2UgKyBcIlxcXCJcIiwgXCJNSVNTSU5HX1ZBTFVFXCIgLyogTUlTU0lOR19WQUxVRSAqLywgb3JpZ2luYWxNZXNzYWdlKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gTWlzc2luZ1ZhbHVlRXJyb3I7XG59KEZvcm1hdEVycm9yKSk7XG5leHBvcnRzLk1pc3NpbmdWYWx1ZUVycm9yID0gTWlzc2luZ1ZhbHVlRXJyb3I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEgPSByZXF1aXJlKFwiaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlclwiKTtcbnZhciBlcnJvcl8xID0gcmVxdWlyZShcIi4vZXJyb3JcIik7XG52YXIgUEFSVF9UWVBFO1xuKGZ1bmN0aW9uIChQQVJUX1RZUEUpIHtcbiAgICBQQVJUX1RZUEVbUEFSVF9UWVBFW1wibGl0ZXJhbFwiXSA9IDBdID0gXCJsaXRlcmFsXCI7XG4gICAgUEFSVF9UWVBFW1BBUlRfVFlQRVtcIm9iamVjdFwiXSA9IDFdID0gXCJvYmplY3RcIjtcbn0pKFBBUlRfVFlQRSA9IGV4cG9ydHMuUEFSVF9UWVBFIHx8IChleHBvcnRzLlBBUlRfVFlQRSA9IHt9KSk7XG5mdW5jdGlvbiBtZXJnZUxpdGVyYWwocGFydHMpIHtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgcGFydCkge1xuICAgICAgICB2YXIgbGFzdFBhcnQgPSBhbGxbYWxsLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIWxhc3RQYXJ0IHx8XG4gICAgICAgICAgICBsYXN0UGFydC50eXBlICE9PSAwIC8qIGxpdGVyYWwgKi8gfHxcbiAgICAgICAgICAgIHBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovKSB7XG4gICAgICAgICAgICBhbGwucHVzaChwYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RQYXJ0LnZhbHVlICs9IHBhcnQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9LCBbXSk7XG59XG5mdW5jdGlvbiBpc0Zvcm1hdFhNTEVsZW1lbnRGbihlbCkge1xuICAgIHJldHVybiB0eXBlb2YgZWwgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRm9ybWF0WE1MRWxlbWVudEZuID0gaXNGb3JtYXRYTUxFbGVtZW50Rm47XG4vLyBUT0RPKHNrZWxldG9uKTogYWRkIHNrZWxldG9uIHN1cHBvcnRcbmZ1bmN0aW9uIGZvcm1hdFRvUGFydHMoZWxzLCBsb2NhbGVzLCBmb3JtYXR0ZXJzLCBmb3JtYXRzLCB2YWx1ZXMsIGN1cnJlbnRQbHVyYWxWYWx1ZSwgXG4vLyBGb3IgZGVidWdnaW5nXG5vcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAvLyBIb3QgcGF0aCBmb3Igc3RyYWlnaHQgc2ltcGxlIG1zZyB0cmFuc2xhdGlvbnNcbiAgICBpZiAoZWxzLmxlbmd0aCA9PT0gMSAmJiBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNMaXRlcmFsRWxlbWVudChlbHNbMF0pKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlbHNbMF0udmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwLCBlbHNfMSA9IGVsczsgX2kgPCBlbHNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGVsID0gZWxzXzFbX2ldO1xuICAgICAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmcgcGFydHMuXG4gICAgICAgIGlmIChpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNMaXRlcmFsRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVsLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyBwYXJ0IGJlIGxpdGVyYWwgdHlwZT9cbiAgICAgICAgLy8gUmVwbGFjZSBgI2AgaW4gcGx1cmFsIHJ1bGVzIHdpdGggdGhlIGFjdHVhbCBudW1lcmljIHZhbHVlLlxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzUG91bmRFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50UGx1cmFsVmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzLmdldE51bWJlckZvcm1hdChsb2NhbGVzKS5mb3JtYXQoY3VycmVudFBsdXJhbFZhbHVlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YXJOYW1lID0gZWwudmFsdWU7XG4gICAgICAgIC8vIEVuZm9yY2UgdGhhdCBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLlxuICAgICAgICBpZiAoISh2YWx1ZXMgJiYgdmFyTmFtZSBpbiB2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JfMS5NaXNzaW5nVmFsdWVFcnJvcih2YXJOYW1lLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1t2YXJOYW1lXTtcbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc0FyZ3VtZW50RWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gMCAvKiBsaXRlcmFsICovIDogMSAvKiBvYmplY3QgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBmb3JtYXQgcGx1cmFsIGFuZCBzZWxlY3QgcGFydHMnIG9wdGlvbiDigJQgd2hpY2ggY2FuIGJlIGFcbiAgICAgICAgLy8gbmVzdGVkIHBhdHRlcm4gc3RydWN0dXJlLiBUaGUgY2hvb3Npbmcgb2YgdGhlIG9wdGlvbiB0byB1c2UgaXNcbiAgICAgICAgLy8gYWJzdHJhY3RlZC1ieSBhbmQgZGVsZWdhdGVkLXRvIHRoZSBwYXJ0IGhlbHBlciBvYmplY3QuXG4gICAgICAgIGlmIChpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEuaXNEYXRlRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHR5cGVvZiBlbC5zdHlsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IGZvcm1hdHMuZGF0ZVtlbC5zdHlsZV1cbiAgICAgICAgICAgICAgICA6IGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLnBhcnNlRGF0ZVRpbWVTa2VsZXRvbihlbC5zdHlsZS5wYXR0ZXJuKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc1RpbWVFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgdmFyIHN0eWxlID0gdHlwZW9mIGVsLnN0eWxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gZm9ybWF0cy50aW1lW2VsLnN0eWxlXVxuICAgICAgICAgICAgICAgIDogaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzRGF0ZVRpbWVTa2VsZXRvbihlbC5zdHlsZSlcbiAgICAgICAgICAgICAgICAgICAgPyBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEucGFyc2VEYXRlVGltZVNrZWxldG9uKGVsLnN0eWxlLnBhdHRlcm4pXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVyc1xuICAgICAgICAgICAgICAgICAgICAuZ2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlcywgc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzTnVtYmVyRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHR5cGVvZiBlbC5zdHlsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IGZvcm1hdHMubnVtYmVyW2VsLnN0eWxlXVxuICAgICAgICAgICAgICAgIDogaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzTnVtYmVyU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmNvbnZlcnROdW1iZXJTa2VsZXRvblRvTnVtYmVyRm9ybWF0T3B0aW9ucyhlbC5zdHlsZS50b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVyc1xuICAgICAgICAgICAgICAgICAgICAuZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGxfbWVzc2FnZWZvcm1hdF9wYXJzZXJfMS5pc1RhZ0VsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbiwgdmFsdWVfMSA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgdmFyIGZvcm1hdEZuID0gdmFsdWVzW3ZhbHVlXzFdO1xuICAgICAgICAgICAgaWYgKCFpc0Zvcm1hdFhNTEVsZW1lbnRGbihmb3JtYXRGbikpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JfMS5JbnZhbGlkVmFsdWVUeXBlRXJyb3IodmFsdWVfMSwgJ2Z1bmN0aW9uJywgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwYXJ0cyA9IGZvcm1hdFRvUGFydHMoY2hpbGRyZW4sIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcywgY3VycmVudFBsdXJhbFZhbHVlKTtcbiAgICAgICAgICAgIHZhciBjaHVua3MgPSBmb3JtYXRGbihwYXJ0cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHAudmFsdWU7IH0pKTtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaHVua3MpKSB7XG4gICAgICAgICAgICAgICAgY2h1bmtzID0gW2NodW5rc107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaC5hcHBseShyZXN1bHQsIGNodW5rcy5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlb2YgYyA9PT0gJ3N0cmluZycgPyAwIC8qIGxpdGVyYWwgKi8gOiAxIC8qIG9iamVjdCAqLyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzU2VsZWN0RWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBvcHQgPSBlbC5vcHRpb25zW3ZhbHVlXSB8fCBlbC5vcHRpb25zLm90aGVyO1xuICAgICAgICAgICAgaWYgKCFvcHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JfMS5JbnZhbGlkVmFsdWVFcnJvcihlbC52YWx1ZSwgdmFsdWUsIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBmb3JtYXRUb1BhcnRzKG9wdC52YWx1ZSwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50bF9tZXNzYWdlZm9ybWF0X3BhcnNlcl8xLmlzUGx1cmFsRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBvcHQgPSBlbC5vcHRpb25zW1wiPVwiICsgdmFsdWVdO1xuICAgICAgICAgICAgaWYgKCFvcHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIUludGwuUGx1cmFsUnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGVycm9yXzEuRm9ybWF0RXJyb3IoXCJJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXBsdXJhbHJ1bGVzXFxcIlxcblwiLCBcIk1JU1NJTkdfSU5UTF9BUElcIiAvKiBNSVNTSU5HX0lOVExfQVBJICovLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcnVsZSA9IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldFBsdXJhbFJ1bGVzKGxvY2FsZXMsIHsgdHlwZTogZWwucGx1cmFsVHlwZSB9KVxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KHZhbHVlIC0gKGVsLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgb3B0ID0gZWwub3B0aW9uc1tydWxlXSB8fCBlbC5vcHRpb25zLm90aGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFvcHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JfMS5JbnZhbGlkVmFsdWVFcnJvcihlbC52YWx1ZSwgdmFsdWUsIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBmb3JtYXRUb1BhcnRzKG9wdC52YWx1ZSwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCB2YWx1ZSAtIChlbC5vZmZzZXQgfHwgMCkpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZUxpdGVyYWwocmVzdWx0KTtcbn1cbmV4cG9ydHMuZm9ybWF0VG9QYXJ0cyA9IGZvcm1hdFRvUGFydHM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheXMgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xuICAgIHJldHVybiByO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEgPSByZXF1aXJlKFwiaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlclwiKTtcbnZhciBtZW1vaXplID0gcmVxdWlyZShcImZhc3QtbWVtb2l6ZVwiKTtcbnZhciBmb3JtYXR0ZXJzXzEgPSByZXF1aXJlKFwiLi9mb3JtYXR0ZXJzXCIpO1xuLy8gLS0gTWVzc2FnZUZvcm1hdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbWVyZ2VDb25maWcoYzEsIGMyKSB7XG4gICAgaWYgKCFjMikge1xuICAgICAgICByZXR1cm4gYzE7XG4gICAgfVxuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgKGMxIHx8IHt9KSksIChjMiB8fCB7fSkpLCBPYmplY3Qua2V5cyhjMSkucmVkdWNlKGZ1bmN0aW9uIChhbGwsIGspIHtcbiAgICAgICAgYWxsW2tdID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGMxW2tdKSwgKGMyW2tdIHx8IHt9KSk7XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwge30pKTtcbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlncyhkZWZhdWx0Q29uZmlnLCBjb25maWdzKSB7XG4gICAgaWYgKCFjb25maWdzKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0Q29uZmlnO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdENvbmZpZykucmVkdWNlKGZ1bmN0aW9uIChhbGwsIGspIHtcbiAgICAgICAgYWxsW2tdID0gbWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZ1trXSwgY29uZmlnc1trXSk7XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwgX19hc3NpZ24oe30sIGRlZmF1bHRDb25maWcpKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoc3RvcmUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjcmVhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaGFzOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkgaW4gc3RvcmU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlW2tleV07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8gQHRzLWlnbm9yZSB0aGlzIGlzIHRvIGRlYWwgd2l0aCByb2xsdXAncyBkZWZhdWx0IGltcG9ydCBzaGVuYW5pZ2Fuc1xudmFyIF9tZW1vaXplSW50bCA9IG1lbW9pemUuZGVmYXVsdCB8fCBtZW1vaXplO1xudmFyIG1lbW9pemVJbnRsID0gX21lbW9pemVJbnRsO1xuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdEZvcm1hdHRlcnMoY2FjaGUpIHtcbiAgICBpZiAoY2FjaGUgPT09IHZvaWQgMCkgeyBjYWNoZSA9IHtcbiAgICAgICAgbnVtYmVyOiB7fSxcbiAgICAgICAgZGF0ZVRpbWU6IHt9LFxuICAgICAgICBwbHVyYWxSdWxlczoge30sXG4gICAgfTsgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGdldE51bWJlckZvcm1hdDogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5OdW1iZXJGb3JtYXQpLmJpbmQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXlzKFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLm51bWJlciksXG4gICAgICAgICAgICBzdHJhdGVneTogbWVtb2l6ZUludGwuc3RyYXRlZ2llcy52YXJpYWRpYyxcbiAgICAgICAgfSksXG4gICAgICAgIGdldERhdGVUaW1lRm9ybWF0OiBtZW1vaXplSW50bChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3ICgoX2EgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5kYXRlVGltZSksXG4gICAgICAgICAgICBzdHJhdGVneTogbWVtb2l6ZUludGwuc3RyYXRlZ2llcy52YXJpYWRpYyxcbiAgICAgICAgfSksXG4gICAgICAgIGdldFBsdXJhbFJ1bGVzOiBtZW1vaXplSW50bChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3ICgoX2EgPSBJbnRsLlBsdXJhbFJ1bGVzKS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5wbHVyYWxSdWxlcyksXG4gICAgICAgICAgICBzdHJhdGVneTogbWVtb2l6ZUludGwuc3RyYXRlZ2llcy52YXJpYWRpYyxcbiAgICAgICAgfSksXG4gICAgfTtcbn1cbnZhciBJbnRsTWVzc2FnZUZvcm1hdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBJbnRsTWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGVzLCBvdmVycmlkZUZvcm1hdHMsIG9wdHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGxvY2FsZXMgPT09IHZvaWQgMCkgeyBsb2NhbGVzID0gSW50bE1lc3NhZ2VGb3JtYXQuZGVmYXVsdExvY2FsZTsgfVxuICAgICAgICB0aGlzLmZvcm1hdHRlckNhY2hlID0ge1xuICAgICAgICAgICAgbnVtYmVyOiB7fSxcbiAgICAgICAgICAgIGRhdGVUaW1lOiB7fSxcbiAgICAgICAgICAgIHBsdXJhbFJ1bGVzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXQgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgICAgICAgICB2YXIgcGFydHMgPSBfdGhpcy5mb3JtYXRUb1BhcnRzKHZhbHVlcyk7XG4gICAgICAgICAgICAvLyBIb3QgcGF0aCBmb3Igc3RyYWlnaHQgc2ltcGxlIG1zZyB0cmFuc2xhdGlvbnNcbiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFydHNbMF0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gcGFydHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIHBhcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFsbC5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgcGFydC50eXBlICE9PSAwIC8qIGxpdGVyYWwgKi8gfHxcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGFsbFthbGwubGVuZ3RoIC0gMV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbC5wdXNoKHBhcnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsW2FsbC5sZW5ndGggLSAxXSArPSBwYXJ0LnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbMF0gfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZvcm1hdFRvUGFydHMgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyc18xLmZvcm1hdFRvUGFydHMoX3RoaXMuYXN0LCBfdGhpcy5sb2NhbGVzLCBfdGhpcy5mb3JtYXR0ZXJzLCBfdGhpcy5mb3JtYXRzLCB2YWx1ZXMsIHVuZGVmaW5lZCwgX3RoaXMubWVzc2FnZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzb2x2ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGxvY2FsZTogSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKF90aGlzLmxvY2FsZXMpWzBdLFxuICAgICAgICB9KTsgfTtcbiAgICAgICAgdGhpcy5nZXRBc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5hc3Q7IH07XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlIG11c3QgYmUgc2V0IHRvIHByb2Nlc3MgYG1lc3NhZ2VgIG9mIHR5cGUgYHN0cmluZ2AnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFBhcnNlIHN0cmluZyBtZXNzYWdlcyBpbnRvIGFuIEFTVC5cbiAgICAgICAgICAgIHRoaXMuYXN0ID0gSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZShtZXNzYWdlLCB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpZ25vcmVUYWc6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pZ25vcmVUYWcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXN0ID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5hc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIG1lc3NhZ2UgbXVzdCBiZSBwcm92aWRlZCBhcyBhIFN0cmluZyBvciBBU1QuJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ3JlYXRlcyBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGBmb3JtYXRzYCBtZXJnZWQgd2l0aCB0aGUgZGVmYXVsdFxuICAgICAgICAvLyBmb3JtYXRzLlxuICAgICAgICB0aGlzLmZvcm1hdHMgPSBtZXJnZUNvbmZpZ3MoSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cywgb3ZlcnJpZGVGb3JtYXRzKTtcbiAgICAgICAgLy8gRGVmaW5lZCBmaXJzdCBiZWNhdXNlIGl0J3MgdXNlZCB0byBidWlsZCB0aGUgZm9ybWF0IHBhdHRlcm4uXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IGxvY2FsZXM7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVycyA9XG4gICAgICAgICAgICAob3B0cyAmJiBvcHRzLmZvcm1hdHRlcnMpIHx8IGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzKHRoaXMuZm9ybWF0dGVyQ2FjaGUpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50bE1lc3NhZ2VGb3JtYXQsIFwiZGVmYXVsdExvY2FsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSW50bE1lc3NhZ2VGb3JtYXQubWVtb2l6ZWREZWZhdWx0TG9jYWxlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUgPSBudWxsO1xuICAgIEludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UgPSBpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEucGFyc2U7XG4gICAgLy8gRGVmYXVsdCBmb3JtYXQgb3B0aW9ucyB1c2VkIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIGBmb3JtYXRzYCBwcm92aWRlZCB0byB0aGVcbiAgICAvLyBjb25zdHJ1Y3Rvci4gVGhlc2UgYXJlIHVzZWQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGludGVybmFsIEludGwuTnVtYmVyRm9ybWF0XG4gICAgLy8gYW5kIEludGwuRGF0ZVRpbWVGb3JtYXQgaW5zdGFuY2VzLlxuICAgIEludGxNZXNzYWdlRm9ybWF0LmZvcm1hdHMgPSB7XG4gICAgICAgIG51bWJlcjoge1xuICAgICAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwZXJjZW50OiB7XG4gICAgICAgICAgICAgICAgc3R5bGU6ICdwZXJjZW50JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdWxsOiB7XG4gICAgICAgICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGltZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHNlY29uZDogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bGw6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBJbnRsTWVzc2FnZUZvcm1hdDtcbn0oKSk7XG5leHBvcnRzLkludGxNZXNzYWdlRm9ybWF0ID0gSW50bE1lc3NhZ2VGb3JtYXQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbmZ1bmN0aW9uIF9fZXhwb3J0KG0pIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmICghZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eShwKSkgZXhwb3J0c1twXSA9IG1bcF07XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgY29yZV8xID0gcmVxdWlyZShcIi4vc3JjL2NvcmVcIik7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvZm9ybWF0dGVyc1wiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvY29yZVwiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9zcmMvZXJyb3JcIikpO1xuZXhwb3J0cy5kZWZhdWx0ID0gY29yZV8xLkludGxNZXNzYWdlRm9ybWF0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE1TX1BFUl9TRUNPTkQgPSAxZTM7XG52YXIgU0VDU19QRVJfTUlOID0gNjA7XG52YXIgU0VDU19QRVJfSE9VUiA9IFNFQ1NfUEVSX01JTiAqIDYwO1xudmFyIFNFQ1NfUEVSX0RBWSA9IFNFQ1NfUEVSX0hPVVIgKiAyNDtcbnZhciBTRUNTX1BFUl9XRUVLID0gU0VDU19QRVJfREFZICogNztcbmZ1bmN0aW9uIHNlbGVjdFVuaXQoZnJvbSwgdG8sIHRocmVzaG9sZHMpIHtcbiAgICBpZiAodG8gPT09IHZvaWQgMCkgeyB0byA9IERhdGUubm93KCk7IH1cbiAgICBpZiAodGhyZXNob2xkcyA9PT0gdm9pZCAwKSB7IHRocmVzaG9sZHMgPSB7fTsgfVxuICAgIHZhciByZXNvbHZlZFRocmVzaG9sZHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXhwb3J0cy5ERUZBVUxUX1RIUkVTSE9MRFMpLCAodGhyZXNob2xkcyB8fCB7fSkpO1xuICAgIHZhciBzZWNzID0gKCtmcm9tIC0gK3RvKSAvIE1TX1BFUl9TRUNPTkQ7XG4gICAgaWYgKE1hdGguYWJzKHNlY3MpIDwgcmVzb2x2ZWRUaHJlc2hvbGRzLnNlY29uZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoc2VjcyksXG4gICAgICAgICAgICB1bml0OiAnc2Vjb25kJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIG1pbnMgPSBzZWNzIC8gU0VDU19QRVJfTUlOO1xuICAgIGlmIChNYXRoLmFicyhtaW5zKSA8IHJlc29sdmVkVGhyZXNob2xkcy5taW51dGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLnJvdW5kKG1pbnMpLFxuICAgICAgICAgICAgdW5pdDogJ21pbnV0ZScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciBob3VycyA9IHNlY3MgLyBTRUNTX1BFUl9IT1VSO1xuICAgIGlmIChNYXRoLmFicyhob3VycykgPCByZXNvbHZlZFRocmVzaG9sZHMuaG91cikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoaG91cnMpLFxuICAgICAgICAgICAgdW5pdDogJ2hvdXInLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgZGF5cyA9IHNlY3MgLyBTRUNTX1BFUl9EQVk7XG4gICAgaWYgKE1hdGguYWJzKGRheXMpIDwgcmVzb2x2ZWRUaHJlc2hvbGRzLmRheSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IE1hdGgucm91bmQoZGF5cyksXG4gICAgICAgICAgICB1bml0OiAnZGF5JyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIGZyb21EYXRlID0gbmV3IERhdGUoZnJvbSk7XG4gICAgdmFyIHRvRGF0ZSA9IG5ldyBEYXRlKHRvKTtcbiAgICB2YXIgeWVhcnMgPSBmcm9tRGF0ZS5nZXRGdWxsWWVhcigpIC0gdG9EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgaWYgKE1hdGgucm91bmQoTWF0aC5hYnMoeWVhcnMpKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBNYXRoLnJvdW5kKHllYXJzKSxcbiAgICAgICAgICAgIHVuaXQ6ICd5ZWFyJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIG1vbnRocyA9IHllYXJzICogMTIgKyBmcm9tRGF0ZS5nZXRNb250aCgpIC0gdG9EYXRlLmdldE1vbnRoKCk7XG4gICAgaWYgKE1hdGgucm91bmQoTWF0aC5hYnMobW9udGhzKSkgPiAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogTWF0aC5yb3VuZChtb250aHMpLFxuICAgICAgICAgICAgdW5pdDogJ21vbnRoJyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHdlZWtzID0gc2VjcyAvIFNFQ1NfUEVSX1dFRUs7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IE1hdGgucm91bmQod2Vla3MpLFxuICAgICAgICB1bml0OiAnd2VlaycsXG4gICAgfTtcbn1cbmV4cG9ydHMuc2VsZWN0VW5pdCA9IHNlbGVjdFVuaXQ7XG5leHBvcnRzLkRFRkFVTFRfVEhSRVNIT0xEUyA9IHtcbiAgICBzZWNvbmQ6IDQ1LFxuICAgIG1pbnV0ZTogNDUsXG4gICAgaG91cjogMjIsXG4gICAgZGF5OiA1LFxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSwgRXJyKSB7XG4gICAgaWYgKEVyciA9PT0gdm9pZCAwKSB7IEVyciA9IEVycm9yOyB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycihtZXNzYWdlKTtcbiAgICB9XG59XG5leHBvcnRzLmludmFyaWFudCA9IGludmFyaWFudDtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3NhbmN0aW9uZWRzaW1wbGV1bml0aWRlbnRpZmllclxuZXhwb3J0cy5TQU5DVElPTkVEX1VOSVRTID0gW1xuICAgICdhbmdsZS1kZWdyZWUnLFxuICAgICdhcmVhLWFjcmUnLFxuICAgICdhcmVhLWhlY3RhcmUnLFxuICAgICdjb25jZW50ci1wZXJjZW50JyxcbiAgICAnZGlnaXRhbC1iaXQnLFxuICAgICdkaWdpdGFsLWJ5dGUnLFxuICAgICdkaWdpdGFsLWdpZ2FiaXQnLFxuICAgICdkaWdpdGFsLWdpZ2FieXRlJyxcbiAgICAnZGlnaXRhbC1raWxvYml0JyxcbiAgICAnZGlnaXRhbC1raWxvYnl0ZScsXG4gICAgJ2RpZ2l0YWwtbWVnYWJpdCcsXG4gICAgJ2RpZ2l0YWwtbWVnYWJ5dGUnLFxuICAgICdkaWdpdGFsLXBldGFieXRlJyxcbiAgICAnZGlnaXRhbC10ZXJhYml0JyxcbiAgICAnZGlnaXRhbC10ZXJhYnl0ZScsXG4gICAgJ2R1cmF0aW9uLWRheScsXG4gICAgJ2R1cmF0aW9uLWhvdXInLFxuICAgICdkdXJhdGlvbi1taWxsaXNlY29uZCcsXG4gICAgJ2R1cmF0aW9uLW1pbnV0ZScsXG4gICAgJ2R1cmF0aW9uLW1vbnRoJyxcbiAgICAnZHVyYXRpb24tc2Vjb25kJyxcbiAgICAnZHVyYXRpb24td2VlaycsXG4gICAgJ2R1cmF0aW9uLXllYXInLFxuICAgICdsZW5ndGgtY2VudGltZXRlcicsXG4gICAgJ2xlbmd0aC1mb290JyxcbiAgICAnbGVuZ3RoLWluY2gnLFxuICAgICdsZW5ndGgta2lsb21ldGVyJyxcbiAgICAnbGVuZ3RoLW1ldGVyJyxcbiAgICAnbGVuZ3RoLW1pbGUtc2NhbmRpbmF2aWFuJyxcbiAgICAnbGVuZ3RoLW1pbGUnLFxuICAgICdsZW5ndGgtbWlsbGltZXRlcicsXG4gICAgJ2xlbmd0aC15YXJkJyxcbiAgICAnbWFzcy1ncmFtJyxcbiAgICAnbWFzcy1raWxvZ3JhbScsXG4gICAgJ21hc3Mtb3VuY2UnLFxuICAgICdtYXNzLXBvdW5kJyxcbiAgICAnbWFzcy1zdG9uZScsXG4gICAgJ3RlbXBlcmF0dXJlLWNlbHNpdXMnLFxuICAgICd0ZW1wZXJhdHVyZS1mYWhyZW5oZWl0JyxcbiAgICAndm9sdW1lLWZsdWlkLW91bmNlJyxcbiAgICAndm9sdW1lLWdhbGxvbicsXG4gICAgJ3ZvbHVtZS1saXRlcicsXG4gICAgJ3ZvbHVtZS1taWxsaWxpdGVyJyxcbl07XG4vLyBJbiBDTERSLCB0aGUgdW5pdCBuYW1lIGFsd2F5cyBmb2xsb3dzIHRoZSBmb3JtIGBuYW1lc3BhY2UtdW5pdGAgcGF0dGVybi5cbi8vIEZvciBleGFtcGxlOiBgZGlnaXRhbC1iaXRgIGluc3RlYWQgb2YgYGJpdGAuIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgbmFtZXNwYWNlIHByZWZpeC5cbmZ1bmN0aW9uIHJlbW92ZVVuaXROYW1lc3BhY2UodW5pdCkge1xuICAgIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59XG5leHBvcnRzLnJlbW92ZVVuaXROYW1lc3BhY2UgPSByZW1vdmVVbml0TmFtZXNwYWNlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaW52YXJpYW50XzEgPSByZXF1aXJlKFwiLi9pbnZhcmlhbnRcIik7XG52YXIgdW5pdHNfMSA9IHJlcXVpcmUoXCIuL3VuaXRzXCIpO1xuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkobywga2V5KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrZXkpO1xufVxuZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eSA9IGhhc093blByb3BlcnR5O1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG4gKiBAcGFyYW0gYXJnXG4gKi9cbmZ1bmN0aW9uIHRvT2JqZWN0KGFyZykge1xuICAgIGlmIChhcmcgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmRlZmluZWQvbnVsbCBjYW5ub3QgYmUgY29udmVydGVkIHRvIG9iamVjdCcpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0KGFyZyk7XG59XG5leHBvcnRzLnRvT2JqZWN0ID0gdG9PYmplY3Q7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9zdHJpbmdcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcobykge1xuICAgIC8vIE9ubHkgc3ltYm9sIGlzIGlycmVndWxhci4uLlxuICAgIGlmICh0eXBlb2YgbyA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG8pO1xufVxuZXhwb3J0cy50b1N0cmluZyA9IHRvU3RyaW5nO1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWdldG9wdGlvblxuICogQHBhcmFtIG9wdHNcbiAqIEBwYXJhbSBwcm9wXG4gKiBAcGFyYW0gdHlwZVxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIGZhbGxiYWNrXG4gKi9cbmZ1bmN0aW9uIGdldE9wdGlvbihvcHRzLCBwcm9wLCB0eXBlLCB2YWx1ZXMsIGZhbGxiYWNrKSB7XG4gICAgLy8gY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3B0cywgcHJvcCk7XG4gICAgdmFyIHZhbHVlID0gb3B0c1twcm9wXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZSAhPT0gJ2Jvb2xlYW4nICYmIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHR5cGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IEJvb2xlYW4odmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSB0b1N0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcyAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIHZhbCA9PSB2YWx1ZTsgfSkubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcih2YWx1ZSArIFwiIGlzIG5vdCB3aXRoaW4gXCIgKyB2YWx1ZXMuam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsbGJhY2s7XG59XG5leHBvcnRzLmdldE9wdGlvbiA9IGdldE9wdGlvbjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1kZWZhdWx0bnVtYmVyb3B0aW9uXG4gKiBAcGFyYW0gdmFsXG4gKiBAcGFyYW0gbWluXG4gKiBAcGFyYW0gbWF4XG4gKiBAcGFyYW0gZmFsbGJhY2tcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdE51bWJlck9wdGlvbih2YWwsIG1pbiwgbWF4LCBmYWxsYmFjaykge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWwgPSBOdW1iZXIodmFsKTtcbiAgICAgICAgaWYgKGlzTmFOKHZhbCkgfHwgdmFsIDwgbWluIHx8IHZhbCA+IG1heCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IodmFsICsgXCIgaXMgb3V0c2lkZSBvZiByYW5nZSBbXCIgKyBtaW4gKyBcIiwgXCIgKyBtYXggKyBcIl1cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xufVxuZXhwb3J0cy5kZWZhdWx0TnVtYmVyT3B0aW9uID0gZGVmYXVsdE51bWJlck9wdGlvbjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1nZXRudW1iZXJvcHRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcGFyYW0gcHJvcGVydHlcbiAqIEBwYXJhbSBtaW5cbiAqIEBwYXJhbSBtYXhcbiAqIEBwYXJhbSBmYWxsYmFja1xuICovXG5mdW5jdGlvbiBnZXROdW1iZXJPcHRpb24ob3B0aW9ucywgcHJvcGVydHksIG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSB7XG4gICAgdmFyIHZhbCA9IG9wdGlvbnNbcHJvcGVydHldO1xuICAgIHJldHVybiBkZWZhdWx0TnVtYmVyT3B0aW9uKHZhbCwgbWluaW11bSwgbWF4aW11bSwgZmFsbGJhY2spO1xufVxuZXhwb3J0cy5nZXROdW1iZXJPcHRpb24gPSBnZXROdW1iZXJPcHRpb247XG5mdW5jdGlvbiBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgZmllbGQsIHZhbHVlKSB7XG4gICAgaWYgKCFtYXAuZ2V0KHBsKSkge1xuICAgICAgICBtYXAuc2V0KHBsLCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgICB9XG4gICAgdmFyIHNsb3RzID0gbWFwLmdldChwbCk7XG4gICAgc2xvdHNbZmllbGRdID0gdmFsdWU7XG59XG5leHBvcnRzLnNldEludGVybmFsU2xvdCA9IHNldEludGVybmFsU2xvdDtcbmZ1bmN0aW9uIHNldE11bHRpSW50ZXJuYWxTbG90cyhtYXAsIHBsLCBwcm9wcykge1xuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhwcm9wcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBrID0gX2FbX2ldO1xuICAgICAgICBzZXRJbnRlcm5hbFNsb3QobWFwLCBwbCwgaywgcHJvcHNba10pO1xuICAgIH1cbn1cbmV4cG9ydHMuc2V0TXVsdGlJbnRlcm5hbFNsb3RzID0gc2V0TXVsdGlJbnRlcm5hbFNsb3RzO1xuZnVuY3Rpb24gZ2V0SW50ZXJuYWxTbG90KG1hcCwgcGwsIGZpZWxkKSB7XG4gICAgcmV0dXJuIGdldE11bHRpSW50ZXJuYWxTbG90cyhtYXAsIHBsLCBmaWVsZClbZmllbGRdO1xufVxuZXhwb3J0cy5nZXRJbnRlcm5hbFNsb3QgPSBnZXRJbnRlcm5hbFNsb3Q7XG5mdW5jdGlvbiBnZXRNdWx0aUludGVybmFsU2xvdHMobWFwLCBwbCkge1xuICAgIHZhciBmaWVsZHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBmaWVsZHNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciBzbG90cyA9IG1hcC5nZXQocGwpO1xuICAgIGlmICghc2xvdHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihwbCArIFwiIEludGVybmFsU2xvdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWRcIik7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIGYpIHtcbiAgICAgICAgYWxsW2ZdID0gc2xvdHNbZl07XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG5leHBvcnRzLmdldE11bHRpSW50ZXJuYWxTbG90cyA9IGdldE11bHRpSW50ZXJuYWxTbG90cztcbmZ1bmN0aW9uIGlzTGl0ZXJhbFBhcnQocGF0dGVyblBhcnQpIHtcbiAgICByZXR1cm4gcGF0dGVyblBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnO1xufVxuZXhwb3J0cy5pc0xpdGVyYWxQYXJ0ID0gaXNMaXRlcmFsUGFydDtcbmZ1bmN0aW9uIHBhcnRpdGlvblBhdHRlcm4ocGF0dGVybikge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgYmVnaW5JbmRleCA9IHBhdHRlcm4uaW5kZXhPZigneycpO1xuICAgIHZhciBlbmRJbmRleCA9IDA7XG4gICAgdmFyIG5leHRJbmRleCA9IDA7XG4gICAgdmFyIGxlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoO1xuICAgIHdoaWxlIChiZWdpbkluZGV4IDwgcGF0dGVybi5sZW5ndGggJiYgYmVnaW5JbmRleCA+IC0xKSB7XG4gICAgICAgIGVuZEluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd9JywgYmVnaW5JbmRleCk7XG4gICAgICAgIGludmFyaWFudF8xLmludmFyaWFudChlbmRJbmRleCA+IGJlZ2luSW5kZXgsIFwiSW52YWxpZCBwYXR0ZXJuIFwiICsgcGF0dGVybik7XG4gICAgICAgIGlmIChiZWdpbkluZGV4ID4gbmV4dEluZGV4KSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwYXR0ZXJuLnN1YnN0cmluZyhuZXh0SW5kZXgsIGJlZ2luSW5kZXgpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgdHlwZTogcGF0dGVybi5zdWJzdHJpbmcoYmVnaW5JbmRleCArIDEsIGVuZEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBuZXh0SW5kZXggPSBlbmRJbmRleCArIDE7XG4gICAgICAgIGJlZ2luSW5kZXggPSBwYXR0ZXJuLmluZGV4T2YoJ3snLCBuZXh0SW5kZXgpO1xuICAgIH1cbiAgICBpZiAobmV4dEluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdsaXRlcmFsJyxcbiAgICAgICAgICAgIHZhbHVlOiBwYXR0ZXJuLnN1YnN0cmluZyhuZXh0SW5kZXgsIGxlbmd0aCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5wYXJ0aXRpb25QYXR0ZXJuID0gcGFydGl0aW9uUGF0dGVybjtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zZXRuZmRpZ2l0b3B0aW9uc1xuICovXG5mdW5jdGlvbiBzZXROdW1iZXJGb3JtYXREaWdpdE9wdGlvbnMoaW50ZXJuYWxTbG90cywgb3B0cywgbW5mZERlZmF1bHQsIG14ZmREZWZhdWx0LCBub3RhdGlvbikge1xuICAgIHZhciBtbmlkID0gZ2V0TnVtYmVyT3B0aW9uKG9wdHMsICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsIDEsIDIxLCAxKTtcbiAgICB2YXIgbW5mZCA9IG9wdHMubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIHZhciBteGZkID0gb3B0cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHM7XG4gICAgdmFyIG1uc2QgPSBvcHRzLm1pbmltdW1TaWduaWZpY2FudERpZ2l0cztcbiAgICB2YXIgbXhzZCA9IG9wdHMubWF4aW11bVNpZ25pZmljYW50RGlnaXRzO1xuICAgIGludGVybmFsU2xvdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBtbmlkO1xuICAgIGlmIChtbnNkICE9PSB1bmRlZmluZWQgfHwgbXhzZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGludGVybmFsU2xvdHMucm91bmRpbmdUeXBlID0gJ3NpZ25pZmljYW50RGlnaXRzJztcbiAgICAgICAgbW5zZCA9IGRlZmF1bHROdW1iZXJPcHRpb24obW5zZCwgMSwgMjEsIDEpO1xuICAgICAgICBteHNkID0gZGVmYXVsdE51bWJlck9wdGlvbihteHNkLCBtbnNkLCAyMSwgMjEpO1xuICAgICAgICBpbnRlcm5hbFNsb3RzLm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IG1uc2Q7XG4gICAgICAgIGludGVybmFsU2xvdHMubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gbXhzZDtcbiAgICB9XG4gICAgZWxzZSBpZiAobW5mZCAhPT0gdW5kZWZpbmVkIHx8IG14ZmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbnRlcm5hbFNsb3RzLnJvdW5kaW5nVHlwZSA9ICdmcmFjdGlvbkRpZ2l0cyc7XG4gICAgICAgIG1uZmQgPSBkZWZhdWx0TnVtYmVyT3B0aW9uKG1uZmQsIDAsIDIwLCBtbmZkRGVmYXVsdCk7XG4gICAgICAgIHZhciBteGZkQWN0dWFsRGVmYXVsdCA9IE1hdGgubWF4KG1uZmQsIG14ZmREZWZhdWx0KTtcbiAgICAgICAgbXhmZCA9IGRlZmF1bHROdW1iZXJPcHRpb24obXhmZCwgbW5mZCwgMjAsIG14ZmRBY3R1YWxEZWZhdWx0KTtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtbmZkO1xuICAgICAgICBpbnRlcm5hbFNsb3RzLm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG14ZmQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vdGF0aW9uID09PSAnY29tcGFjdCcpIHtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5yb3VuZGluZ1R5cGUgPSAnY29tcGFjdFJvdW5kaW5nJztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGludGVybmFsU2xvdHMucm91bmRpbmdUeXBlID0gJ2ZyYWN0aW9uRGlnaXRzJztcbiAgICAgICAgaW50ZXJuYWxTbG90cy5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtbmZkRGVmYXVsdDtcbiAgICAgICAgaW50ZXJuYWxTbG90cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBteGZkRGVmYXVsdDtcbiAgICB9XG59XG5leHBvcnRzLnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyA9IHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucztcbmZ1bmN0aW9uIG9iamVjdElzKHgsIHkpIHtcbiAgICBpZiAoT2JqZWN0LmlzKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuaXMoeCwgeSk7XG4gICAgfVxuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH1cbiAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG59XG5leHBvcnRzLm9iamVjdElzID0gb2JqZWN0SXM7XG52YXIgTk9UX0FfWl9SRUdFWCA9IC9bXkEtWl0vO1xuLyoqXG4gKiBUaGlzIGZvbGxvd3MgaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYXNlLXNlbnNpdGl2aXR5LWFuZC1jYXNlLW1hcHBpbmdcbiAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGNvbnZlcnRcbiAqL1xuZnVuY3Rpb24gdG9VcHBlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pL2csIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjLnRvVXBwZXJDYXNlKCk7IH0pO1xufVxuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzd2VsbGZvcm1lZGN1cnJlbmN5Y29kZVxuICovXG5mdW5jdGlvbiBpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY3VycmVuY3kpIHtcbiAgICBjdXJyZW5jeSA9IHRvVXBwZXJDYXNlKGN1cnJlbmN5KTtcbiAgICBpZiAoY3VycmVuY3kubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKE5PVF9BX1pfUkVHRVgudGVzdChjdXJyZW5jeSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlID0gaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlO1xuLyoqXG4gKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWZvcm1hdG51bWJlcnN0cmluZ1xuICogVE9ETzogZGVkdXAgd2l0aCBpbnRsLXBsdXJhbHJ1bGVzXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdE51bWVyaWNUb1N0cmluZyhpbnRlcm5hbFNsb3RzLCB4KSB7XG4gICAgdmFyIGlzTmVnYXRpdmUgPSB4IDwgMCB8fCBvYmplY3RJcyh4LCAtMCk7XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgeCA9IC14O1xuICAgIH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIHZhciByb3VybmRpbmdUeXBlID0gaW50ZXJuYWxTbG90cy5yb3VuZGluZ1R5cGU7XG4gICAgc3dpdGNoIChyb3VybmRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3NpZ25pZmljYW50RGlnaXRzJzpcbiAgICAgICAgICAgIHJlc3VsdCA9IHRvUmF3UHJlY2lzaW9uKHgsIGludGVybmFsU2xvdHMubWluaW11bVNpZ25pZmljYW50RGlnaXRzLCBpbnRlcm5hbFNsb3RzLm1heGltdW1TaWduaWZpY2FudERpZ2l0cyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZnJhY3Rpb25EaWdpdHMnOlxuICAgICAgICAgICAgcmVzdWx0ID0gdG9SYXdGaXhlZCh4LCBpbnRlcm5hbFNsb3RzLm1pbmltdW1GcmFjdGlvbkRpZ2l0cywgaW50ZXJuYWxTbG90cy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXN1bHQgPSB0b1Jhd1ByZWNpc2lvbih4LCAxLCAyKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaW50ZWdlckRpZ2l0c0NvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvUmF3Rml4ZWQoeCwgMCwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgeCA9IHJlc3VsdC5yb3VuZGVkTnVtYmVyO1xuICAgIHZhciBzdHJpbmcgPSByZXN1bHQuZm9ybWF0dGVkU3RyaW5nO1xuICAgIHZhciBpbnQgPSByZXN1bHQuaW50ZWdlckRpZ2l0c0NvdW50O1xuICAgIHZhciBtaW5JbnRlZ2VyID0gaW50ZXJuYWxTbG90cy5taW5pbXVtSW50ZWdlckRpZ2l0cztcbiAgICBpZiAoaW50IDwgbWluSW50ZWdlcikge1xuICAgICAgICB2YXIgZm9yd2FyZFplcm9zID0gcmVwZWF0KCcwJywgbWluSW50ZWdlciAtIGludCk7XG4gICAgICAgIHN0cmluZyA9IGZvcndhcmRaZXJvcyArIHN0cmluZztcbiAgICB9XG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgICAgeCA9IC14O1xuICAgIH1cbiAgICByZXR1cm4geyByb3VuZGVkTnVtYmVyOiB4LCBmb3JtYXR0ZWRTdHJpbmc6IHN0cmluZyB9O1xufVxuZXhwb3J0cy5mb3JtYXROdW1lcmljVG9TdHJpbmcgPSBmb3JtYXROdW1lcmljVG9TdHJpbmc7XG4vKipcbiAqIFRPRE86IGRlZHVwIHdpdGggaW50bC1wbHVyYWxydWxlcyBhbmQgc3VwcG9ydCBCaWdJbnRcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdG9yYXdmaXhlZFxuICogQHBhcmFtIHggYSBmaW5pdGUgbm9uLW5lZ2F0aXZlIE51bWJlciBvciBCaWdJbnRcbiAqIEBwYXJhbSBtaW5GcmFjdGlvbiBhbmQgaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDIwXG4gKiBAcGFyYW0gbWF4RnJhY3Rpb24gYW5kIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyMFxuICovXG5mdW5jdGlvbiB0b1Jhd0ZpeGVkKHgsIG1pbkZyYWN0aW9uLCBtYXhGcmFjdGlvbikge1xuICAgIHZhciBmID0gbWF4RnJhY3Rpb247XG4gICAgdmFyIG4gPSBNYXRoLnJvdW5kKHggKiBNYXRoLnBvdygxMCwgZikpO1xuICAgIHZhciB4RmluYWwgPSBuIC8gTWF0aC5wb3coMTAsIGYpO1xuICAgIC8vIG4gaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBidXQgaXQgaXMgcG9zc2libGUgdG8gYmUgZ3JlYXRlciB0aGFuIDFlMjEuXG4gICAgLy8gSW4gc3VjaCBjYXNlIHdlIHdpbGwgZ28gdGhlIHNsb3cgcGF0aC5cbiAgICAvLyBTZWUgYWxzbzogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1lcmljLXR5cGVzLW51bWJlci10b3N0cmluZ1xuICAgIHZhciBtO1xuICAgIGlmIChuIDwgMWUyMSkge1xuICAgICAgICBtID0gbi50b1N0cmluZygpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbSA9IG4udG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIF9hID0gbS5zcGxpdCgnZScpLCBtYW50aXNzYSA9IF9hWzBdLCBleHBvbmVudCA9IF9hWzFdO1xuICAgICAgICBtID0gbWFudGlzc2EucmVwbGFjZSgnLicsICcnKTtcbiAgICAgICAgbSA9IG0gKyByZXBlYXQoJzAnLCBNYXRoLm1heCgrZXhwb25lbnQgLSBtLmxlbmd0aCArIDEsIDApKTtcbiAgICB9XG4gICAgdmFyIGludDtcbiAgICBpZiAoZiAhPT0gMCkge1xuICAgICAgICB2YXIgayA9IG0ubGVuZ3RoO1xuICAgICAgICBpZiAoayA8PSBmKSB7XG4gICAgICAgICAgICB2YXIgeiA9IHJlcGVhdCgnMCcsIGYgKyAxIC0gayk7XG4gICAgICAgICAgICBtID0geiArIG07XG4gICAgICAgICAgICBrID0gZiArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSBtLnNsaWNlKDAsIGsgLSBmKTtcbiAgICAgICAgdmFyIGIgPSBtLnNsaWNlKGsgLSBmKTtcbiAgICAgICAgbSA9IGEgKyBcIi5cIiArIGI7XG4gICAgICAgIGludCA9IGEubGVuZ3RoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaW50ID0gbS5sZW5ndGg7XG4gICAgfVxuICAgIHZhciBjdXQgPSBtYXhGcmFjdGlvbiAtIG1pbkZyYWN0aW9uO1xuICAgIHdoaWxlIChjdXQgPiAwICYmIG1bbS5sZW5ndGggLSAxXSA9PT0gJzAnKSB7XG4gICAgICAgIG0gPSBtLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY3V0LS07XG4gICAgfVxuICAgIGlmIChtW20ubGVuZ3RoIC0gMV0gPT09ICcuJykge1xuICAgICAgICBtID0gbS5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIHJldHVybiB7IGZvcm1hdHRlZFN0cmluZzogbSwgcm91bmRlZE51bWJlcjogeEZpbmFsLCBpbnRlZ2VyRGlnaXRzQ291bnQ6IGludCB9O1xufVxuZXhwb3J0cy50b1Jhd0ZpeGVkID0gdG9SYXdGaXhlZDtcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdG9yYXdwcmVjaXNpb25cbmZ1bmN0aW9uIHRvUmF3UHJlY2lzaW9uKHgsIG1pblByZWNpc2lvbiwgbWF4UHJlY2lzaW9uKSB7XG4gICAgdmFyIHAgPSBtYXhQcmVjaXNpb247XG4gICAgdmFyIG07XG4gICAgdmFyIGU7XG4gICAgdmFyIHhGaW5hbDtcbiAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgICBtID0gcmVwZWF0KCcwJywgcCk7XG4gICAgICAgIGUgPSAwO1xuICAgICAgICB4RmluYWwgPSAwO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHhUb1N0cmluZyA9IHgudG9TdHJpbmcoKTtcbiAgICAgICAgLy8gSWYgeFRvU3RyaW5nIGlzIGZvcm1hdHRlZCBhcyBzY2llbnRpZmljIG5vdGF0aW9uLCB0aGUgbnVtYmVyIGlzIGVpdGhlciB2ZXJ5IHNtYWxsIG9yIHZlcnlcbiAgICAgICAgLy8gbGFyZ2UuIElmIHRoZSBwcmVjaXNpb24gb2YgdGhlIGZvcm1hdHRlZCBzdHJpbmcgaXMgbG93ZXIgdGhhdCByZXF1ZXN0ZWQgbWF4IHByZWNpc2lvbiwgd2VcbiAgICAgICAgLy8gc2hvdWxkIHN0aWxsIGluZmVyIHRoZW0gZnJvbSB0aGUgZm9ybWF0dGVkIHN0cmluZywgb3RoZXJ3aXNlIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IG1pZ2h0IGhhdmVcbiAgICAgICAgLy8gcHJlY2lzaW9uIGxvc3MgKGUuZy4gMWU0MSB3aWxsIG5vdCBoYXZlIDAgaW4gZXZlcnkgdHJhaWxpbmcgZGlnaXRzKS5cbiAgICAgICAgdmFyIHhUb1N0cmluZ0V4cG9uZW50SW5kZXggPSB4VG9TdHJpbmcuaW5kZXhPZignZScpO1xuICAgICAgICB2YXIgX2EgPSB4VG9TdHJpbmcuc3BsaXQoJ2UnKSwgeFRvU3RyaW5nTWFudGlzc2EgPSBfYVswXSwgeFRvU3RyaW5nRXhwb25lbnQgPSBfYVsxXTtcbiAgICAgICAgdmFyIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludCA9IHhUb1N0cmluZ01hbnRpc3NhLnJlcGxhY2UoJy4nLCAnJyk7XG4gICAgICAgIGlmICh4VG9TdHJpbmdFeHBvbmVudEluZGV4ID49IDAgJiZcbiAgICAgICAgICAgIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludC5sZW5ndGggPD0gcCkge1xuICAgICAgICAgICAgZSA9ICt4VG9TdHJpbmdFeHBvbmVudDtcbiAgICAgICAgICAgIG0gPVxuICAgICAgICAgICAgICAgIHhUb1N0cmluZ01hbnRpc3NhV2l0aG91dERlY2ltYWxQb2ludCArXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdCgnMCcsIHAgLSB4VG9TdHJpbmdNYW50aXNzYVdpdGhvdXREZWNpbWFsUG9pbnQubGVuZ3RoKTtcbiAgICAgICAgICAgIHhGaW5hbCA9IHg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlID0gZ2V0TWFnbml0dWRlKHgpO1xuICAgICAgICAgICAgdmFyIGRlY2ltYWxQbGFjZU9mZnNldCA9IGUgLSBwICsgMTtcbiAgICAgICAgICAgIC8vIG4gaXMgdGhlIGludGVnZXIgY29udGFpbmluZyB0aGUgcmVxdWlyZWQgcHJlY2lzaW9uIGRpZ2l0cy4gVG8gZGVyaXZlIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLFxuICAgICAgICAgICAgLy8gd2Ugd2lsbCBhZGp1c3QgaXRzIGRlY2ltYWwgcGxhY2UgaW4gdGhlIGxvZ2ljIGJlbG93LlxuICAgICAgICAgICAgdmFyIG4gPSBNYXRoLnJvdW5kKGFkanVzdERlY2ltYWxQbGFjZSh4LCBkZWNpbWFsUGxhY2VPZmZzZXQpKTtcbiAgICAgICAgICAgIC8vIFRoZSByb3VuZGluZyBjYXVzZWQgdGhlIGNoYW5nZSBvZiBtYWduaXR1ZGUsIHNvIHdlIHNob3VsZCBpbmNyZW1lbnQgYGVgIGJ5IDEuXG4gICAgICAgICAgICBpZiAoYWRqdXN0RGVjaW1hbFBsYWNlKG4sIHAgLSAxKSA+PSAxMCkge1xuICAgICAgICAgICAgICAgIGUgPSBlICsgMTtcbiAgICAgICAgICAgICAgICAvLyBEaXZpZGUgbiBieSAxMCB0byBzd2FsbG93IG9uZSBwcmVjaXNpb24uXG4gICAgICAgICAgICAgICAgbiA9IE1hdGguZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG0gPSBuLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAvLyBFcXVpdmFsZW50IG9mIG4gKiAxMCAqKiAoZSAtIHAgKyAxKVxuICAgICAgICAgICAgeEZpbmFsID0gYWRqdXN0RGVjaW1hbFBsYWNlKG4sIHAgLSAxIC0gZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGludDtcbiAgICBpZiAoZSA+PSBwIC0gMSkge1xuICAgICAgICBtID0gbSArIHJlcGVhdCgnMCcsIGUgLSBwICsgMSk7XG4gICAgICAgIGludCA9IGUgKyAxO1xuICAgIH1cbiAgICBlbHNlIGlmIChlID49IDApIHtcbiAgICAgICAgbSA9IG0uc2xpY2UoMCwgZSArIDEpICsgXCIuXCIgKyBtLnNsaWNlKGUgKyAxKTtcbiAgICAgICAgaW50ID0gZSArIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBtID0gXCIwLlwiICsgcmVwZWF0KCcwJywgLWUgLSAxKSArIG07XG4gICAgICAgIGludCA9IDE7XG4gICAgfVxuICAgIGlmIChtLmluZGV4T2YoJy4nKSA+PSAwICYmIG1heFByZWNpc2lvbiA+IG1pblByZWNpc2lvbikge1xuICAgICAgICB2YXIgY3V0ID0gbWF4UHJlY2lzaW9uIC0gbWluUHJlY2lzaW9uO1xuICAgICAgICB3aGlsZSAoY3V0ID4gMCAmJiBtW20ubGVuZ3RoIC0gMV0gPT09ICcwJykge1xuICAgICAgICAgICAgbSA9IG0uc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgY3V0LS07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1bbS5sZW5ndGggLSAxXSA9PT0gJy4nKSB7XG4gICAgICAgICAgICBtID0gbS5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZm9ybWF0dGVkU3RyaW5nOiBtLCByb3VuZGVkTnVtYmVyOiB4RmluYWwsIGludGVnZXJEaWdpdHNDb3VudDogaW50IH07XG4gICAgLy8geCAvICgxMCAqKiBtYWduaXR1ZGUpLCBidXQgdHJ5IHRvIHByZXNlcnZlIGFzIG11Y2ggZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGFzIHBvc3NpYmxlLlxuICAgIGZ1bmN0aW9uIGFkanVzdERlY2ltYWxQbGFjZSh4LCBtYWduaXR1ZGUpIHtcbiAgICAgICAgcmV0dXJuIG1hZ25pdHVkZSA8IDAgPyB4ICogTWF0aC5wb3coMTAsIC1tYWduaXR1ZGUpIDogeCAvIE1hdGgucG93KDEwLCBtYWduaXR1ZGUpO1xuICAgIH1cbn1cbmV4cG9ydHMudG9SYXdQcmVjaXNpb24gPSB0b1Jhd1ByZWNpc2lvbjtcbmZ1bmN0aW9uIHJlcGVhdChzLCB0aW1lcykge1xuICAgIGlmICh0eXBlb2Ygcy5yZXBlYXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHMucmVwZWF0KHRpbWVzKTtcbiAgICB9XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheSh0aW1lcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJyW2ldID0gcztcbiAgICB9XG4gICAgcmV0dXJuIGFyci5qb2luKCcnKTtcbn1cbmV4cG9ydHMucmVwZWF0ID0gcmVwZWF0O1xuLyoqXG4gKiBDYW5ub3QgZG8gTWF0aC5sb2coeCkgLyBNYXRoLmxvZygxMCkgYmMgaWYgSUVFRSBmbG9hdGluZyBwb2ludCBpc3N1ZVxuICogQHBhcmFtIHggbnVtYmVyXG4gKi9cbmZ1bmN0aW9uIGdldE1hZ25pdHVkZSh4KSB7XG4gICAgLy8gQ2Fubm90IGNvdW50IHN0cmluZyBsZW5ndGggdmlhIE51bWJlci50b1N0cmluZyBiZWNhdXNlIGl0IG1heSB1c2Ugc2NpZW50aWZpYyBub3RhdGlvblxuICAgIC8vIGZvciB2ZXJ5IHNtYWxsIG9yIHZlcnkgbGFyZ2UgbnVtYmVycy5cbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZyh4KSAqIE1hdGguTE9HMTBFKTtcbn1cbmV4cG9ydHMuZ2V0TWFnbml0dWRlID0gZ2V0TWFnbml0dWRlO1xuLyoqXG4gKiBUaGlzIGZvbGxvd3MgaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYXNlLXNlbnNpdGl2aXR5LWFuZC1jYXNlLW1hcHBpbmdcbiAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGNvbnZlcnRcbiAqL1xuZnVuY3Rpb24gdG9Mb3dlckNhc2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjLnRvTG93ZXJDYXNlKCk7IH0pO1xufVxudmFyIFNIT1JURU5FRF9TQUNUSU9OX1VOSVRTID0gdW5pdHNfMS5TQU5DVElPTkVEX1VOSVRTLm1hcChmdW5jdGlvbiAodW5pdCkge1xuICAgIHJldHVybiB1bml0LnJlcGxhY2UoL14oLio/KS0vLCAnJyk7XG59KTtcbi8qKlxuICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pc3dlbGxmb3JtZWR1bml0aWRlbnRpZmllclxuICogQHBhcmFtIHVuaXRcbiAqL1xuZnVuY3Rpb24gaXNXZWxsRm9ybWVkVW5pdElkZW50aWZpZXIodW5pdCkge1xuICAgIHVuaXQgPSB0b0xvd2VyQ2FzZSh1bml0KTtcbiAgICBpZiAoU0hPUlRFTkVEX1NBQ1RJT05fVU5JVFMuaW5kZXhPZih1bml0KSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgdW5pdHMgPSB1bml0LnNwbGl0KCctcGVyLScpO1xuICAgIGlmICh1bml0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoU0hPUlRFTkVEX1NBQ1RJT05fVU5JVFMuaW5kZXhPZih1bml0c1swXSkgPCAwIHx8XG4gICAgICAgIFNIT1JURU5FRF9TQUNUSU9OX1VOSVRTLmluZGV4T2YodW5pdHNbMV0pIDwgMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy5pc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllciA9IGlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyO1xuLypcbiAgMTcgRUNNQVNjcmlwdCBTdGFuZGFyZCBCdWlsdC1pbiBPYmplY3RzOlxuICAgIEV2ZXJ5IGJ1aWx0LWluIEZ1bmN0aW9uIG9iamVjdCwgaW5jbHVkaW5nIGNvbnN0cnVjdG9ycywgdGhhdCBpcyBub3RcbiAgICBpZGVudGlmaWVkIGFzIGFuIGFub255bW91cyBmdW5jdGlvbiBoYXMgYSBuYW1lIHByb3BlcnR5IHdob3NlIHZhbHVlXG4gICAgaXMgYSBTdHJpbmcuXG5cbiAgICBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgdGhlIG5hbWUgcHJvcGVydHkgb2YgYSBidWlsdC1pbiBGdW5jdGlvblxuICAgIG9iamVjdCwgaWYgaXQgZXhpc3RzLCBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLFxuICAgIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LlxuKi9cbmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwgX2EpIHtcbiAgICB2YXIgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG59XG5leHBvcnRzLmRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBpbnZhcmlhbnRfMSA9IHJlcXVpcmUoXCIuL2ludmFyaWFudFwiKTtcbnZhciBwb2x5ZmlsbF91dGlsc18xID0gcmVxdWlyZShcIi4vcG9seWZpbGwtdXRpbHNcIik7XG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlTG9jYWxlKGdldERlZmF1bHRMb2NhbGUpIHtcbiAgICB2YXIgbG9va3VwTWF0Y2hlciA9IGNyZWF0ZUxvb2t1cE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSk7XG4gICAgdmFyIGJlc3RGaXRNYXRjaGVyID0gY3JlYXRlQmVzdEZpdE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSk7XG4gICAgLyoqXG4gICAgICogaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1yZXNvbHZlbG9jYWxlXG4gICAgICovXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9ucywgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBsb2NhbGVEYXRhKSB7XG4gICAgICAgIHZhciBtYXRjaGVyID0gb3B0aW9ucy5sb2NhbGVNYXRjaGVyO1xuICAgICAgICB2YXIgcjtcbiAgICAgICAgaWYgKG1hdGNoZXIgPT09ICdsb29rdXAnKSB7XG4gICAgICAgICAgICByID0gbG9va3VwTWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHIgPSBiZXN0Rml0TWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm91bmRMb2NhbGUgPSByLmxvY2FsZTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHsgbG9jYWxlOiAnJywgZGF0YUxvY2FsZTogZm91bmRMb2NhbGUgfTtcbiAgICAgICAgdmFyIHN1cHBvcnRlZEV4dGVuc2lvbiA9ICctdSc7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzXzEgPSByZWxldmFudEV4dGVuc2lvbktleXM7IF9pIDwgcmVsZXZhbnRFeHRlbnNpb25LZXlzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gcmVsZXZhbnRFeHRlbnNpb25LZXlzXzFbX2ldO1xuICAgICAgICAgICAgdmFyIGZvdW5kTG9jYWxlRGF0YSA9IGxvY2FsZURhdGFbZm91bmRMb2NhbGVdO1xuICAgICAgICAgICAgaW52YXJpYW50XzEuaW52YXJpYW50KHR5cGVvZiBmb3VuZExvY2FsZURhdGEgPT09ICdvYmplY3QnICYmIGZvdW5kTG9jYWxlRGF0YSAhPT0gbnVsbCwgXCJsb2NhbGUgZGF0YSBcIiArIGtleSArIFwiIG11c3QgYmUgYW4gb2JqZWN0XCIpO1xuICAgICAgICAgICAgdmFyIGtleUxvY2FsZURhdGEgPSBmb3VuZExvY2FsZURhdGFba2V5XTtcbiAgICAgICAgICAgIGludmFyaWFudF8xLmludmFyaWFudChBcnJheS5pc0FycmF5KGtleUxvY2FsZURhdGEpLCBcImtleUxvY2FsZURhdGEgZm9yIFwiICsga2V5ICsgXCIgbXVzdCBiZSBhbiBhcnJheVwiKTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGtleUxvY2FsZURhdGFbMF07XG4gICAgICAgICAgICBpbnZhcmlhbnRfMS5pbnZhcmlhbnQodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSA9PT0gbnVsbCwgXCJ2YWx1ZSBtdXN0IGJlIHN0cmluZyBvciBudWxsIGJ1dCBnb3QgXCIgKyB0eXBlb2YgdmFsdWUgKyBcIiBpbiBrZXkgXCIgKyBrZXkpO1xuICAgICAgICAgICAgdmFyIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9uID0gJyc7XG4gICAgICAgICAgICBpZiAoci5leHRlbnNpb24pIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVxdWVzdGVkVmFsdWUgPSB1bmljb2RlRXh0ZW5zaW9uVmFsdWUoci5leHRlbnNpb24sIGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RlZFZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKH5rZXlMb2NhbGVEYXRhLmluZGV4T2YocmVxdWVzdGVkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXF1ZXN0ZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9IFwiLVwiICsga2V5ICsgXCItXCIgKyB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh+cmVxdWVzdGVkVmFsdWUuaW5kZXhPZigndHJ1ZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICd0cnVlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9uID0gXCItXCIgKyBrZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoa2V5IGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3B0aW9uc1ZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgICAgICAgICAgICAgIGludmFyaWFudF8xLmludmFyaWFudCh0eXBlb2Ygb3B0aW9uc1ZhbHVlID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygb3B0aW9uc1ZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zVmFsdWUgPT09IG51bGwsICdvcHRpb25zVmFsdWUgbXVzdCBiZSBTdHJpbmcsIFVuZGVmaW5lZCBvciBOdWxsJyk7XG4gICAgICAgICAgICAgICAgaWYgKH5rZXlMb2NhbGVEYXRhLmluZGV4T2Yob3B0aW9uc1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uc1ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb25zVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbiArPSBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9uLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHZhciBwcml2YXRlSW5kZXggPSBmb3VuZExvY2FsZS5pbmRleE9mKCcteC0nKTtcbiAgICAgICAgICAgIGlmIChwcml2YXRlSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgZm91bmRMb2NhbGUgPSBmb3VuZExvY2FsZSArIHN1cHBvcnRlZEV4dGVuc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBwcmVFeHRlbnNpb24gPSBmb3VuZExvY2FsZS5zbGljZSgwLCBwcml2YXRlSW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciBwb3N0RXh0ZW5zaW9uID0gZm91bmRMb2NhbGUuc2xpY2UocHJpdmF0ZUluZGV4LCBmb3VuZExvY2FsZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGZvdW5kTG9jYWxlID0gcHJlRXh0ZW5zaW9uICsgc3VwcG9ydGVkRXh0ZW5zaW9uICsgcG9zdEV4dGVuc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvdW5kTG9jYWxlID0gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKGZvdW5kTG9jYWxlKVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQubG9jYWxlID0gZm91bmRMb2NhbGU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbn1cbmV4cG9ydHMuY3JlYXRlUmVzb2x2ZUxvY2FsZSA9IGNyZWF0ZVJlc29sdmVMb2NhbGU7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnZhbHVlXG4gKiBAcGFyYW0gZXh0ZW5zaW9uXG4gKiBAcGFyYW0ga2V5XG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVFeHRlbnNpb25WYWx1ZShleHRlbnNpb24sIGtleSkge1xuICAgIGludmFyaWFudF8xLmludmFyaWFudChrZXkubGVuZ3RoID09PSAyLCAna2V5IG11c3QgaGF2ZSAyIGVsZW1lbnRzJyk7XG4gICAgdmFyIHNpemUgPSBleHRlbnNpb24ubGVuZ3RoO1xuICAgIHZhciBzZWFyY2hWYWx1ZSA9IFwiLVwiICsga2V5ICsgXCItXCI7XG4gICAgdmFyIHBvcyA9IGV4dGVuc2lvbi5pbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgICBpZiAocG9zICE9PSAtMSkge1xuICAgICAgICB2YXIgc3RhcnQgPSBwb3MgKyA0O1xuICAgICAgICB2YXIgZW5kID0gc3RhcnQ7XG4gICAgICAgIHZhciBrID0gc3RhcnQ7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgdmFyIGUgPSBleHRlbnNpb24uaW5kZXhPZignLScsIGspO1xuICAgICAgICAgICAgdmFyIGxlbiA9IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChlID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGxlbiA9IHNpemUgLSBrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuID0gZSAtIGs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuID09PSAyKSB7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHNpemU7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBlO1xuICAgICAgICAgICAgICAgIGsgPSBlICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICBzZWFyY2hWYWx1ZSA9IFwiLVwiICsga2V5O1xuICAgIHBvcyA9IGV4dGVuc2lvbi5pbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgICBpZiAocG9zICE9PSAtMSAmJiBwb3MgKyAzID09PSBzaXplKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbnZhciBVTklDT0RFX0VYVEVOU0lPTl9TRVFVRU5DRV9SRUdFWCA9IC8tdSg/Oi1bMC05YS16XXsyLDh9KSsvZ2k7XG4vKipcbiAqIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtYmVzdGF2YWlsYWJsZWxvY2FsZVxuICogQHBhcmFtIGF2YWlsYWJsZUxvY2FsZXNcbiAqIEBwYXJhbSBsb2NhbGVcbiAqL1xuZnVuY3Rpb24gYmVzdEF2YWlsYWJsZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCBsb2NhbGUpIHtcbiAgICB2YXIgY2FuZGlkYXRlID0gbG9jYWxlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmICh+YXZhaWxhYmxlTG9jYWxlcy5pbmRleE9mKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvcyA9IGNhbmRpZGF0ZS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgICBpZiAoIX5wb3MpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvcyA+PSAyICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBwb3MgLT0gMjtcbiAgICAgICAgfVxuICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc2xpY2UoMCwgcG9zKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVMb29rdXBNYXRjaGVyKGdldERlZmF1bHRMb2NhbGUpIHtcbiAgICAvKipcbiAgICAgKiBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWxvb2t1cG1hdGNoZXJcbiAgICAgKi9cbiAgICByZXR1cm4gZnVuY3Rpb24gbG9va3VwTWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7IGxvY2FsZTogJycgfTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzEgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSByZXF1ZXN0ZWRMb2NhbGVzXzFbX2ldO1xuICAgICAgICAgICAgdmFyIG5vRXh0ZW5zaW9uTG9jYWxlID0gbG9jYWxlLnJlcGxhY2UoVU5JQ09ERV9FWFRFTlNJT05fU0VRVUVOQ0VfUkVHRVgsICcnKTtcbiAgICAgICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQubG9jYWxlID0gYXZhaWxhYmxlTG9jYWxlO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT09IG5vRXh0ZW5zaW9uTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbnNpb24gPSBsb2NhbGUuc2xpY2Uobm9FeHRlbnNpb25Mb2NhbGUubGVuZ3RoICsgMSwgbG9jYWxlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LmxvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlQmVzdEZpdE1hdGNoZXIoZ2V0RGVmYXVsdExvY2FsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBiZXN0Rml0TWF0Y2hlcihhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7IGxvY2FsZTogJycgfTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzIgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBsb2NhbGUgPSByZXF1ZXN0ZWRMb2NhbGVzXzJbX2ldO1xuICAgICAgICAgICAgdmFyIG5vRXh0ZW5zaW9uTG9jYWxlID0gbG9jYWxlLnJlcGxhY2UoVU5JQ09ERV9FWFRFTlNJT05fU0VRVUVOQ0VfUkVHRVgsICcnKTtcbiAgICAgICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQubG9jYWxlID0gYXZhaWxhYmxlTG9jYWxlO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgIT09IG5vRXh0ZW5zaW9uTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5leHRlbnNpb24gPSBsb2NhbGUuc2xpY2Uobm9FeHRlbnNpb25Mb2NhbGUubGVuZ3RoICsgMSwgbG9jYWxlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LmxvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0TG9jYWxlSGllcmFyY2h5KGxvY2FsZSkge1xuICAgIHZhciByZXN1bHRzID0gW2xvY2FsZV07XG4gICAgdmFyIGxvY2FsZVBhcnRzID0gbG9jYWxlLnNwbGl0KCctJyk7XG4gICAgZm9yICh2YXIgaSA9IGxvY2FsZVBhcnRzLmxlbmd0aDsgaSA+IDE7IGktLSkge1xuICAgICAgICByZXN1bHRzLnB1c2gobG9jYWxlUGFydHMuc2xpY2UoMCwgaSAtIDEpLmpvaW4oJy0nKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuZXhwb3J0cy5nZXRMb2NhbGVIaWVyYXJjaHkgPSBnZXRMb2NhbGVIaWVyYXJjaHk7XG5mdW5jdGlvbiBsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpIHtcbiAgICB2YXIgc3Vic2V0ID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwLCByZXF1ZXN0ZWRMb2NhbGVzXzMgPSByZXF1ZXN0ZWRMb2NhbGVzOyBfaSA8IHJlcXVlc3RlZExvY2FsZXNfMy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IHJlcXVlc3RlZExvY2FsZXNfM1tfaV07XG4gICAgICAgIHZhciBub0V4dGVuc2lvbkxvY2FsZSA9IGxvY2FsZS5yZXBsYWNlKFVOSUNPREVfRVhURU5TSU9OX1NFUVVFTkNFX1JFR0VYLCAnJyk7XG4gICAgICAgIHZhciBhdmFpbGFibGVMb2NhbGUgPSBiZXN0QXZhaWxhYmxlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIG5vRXh0ZW5zaW9uTG9jYWxlKTtcbiAgICAgICAgaWYgKGF2YWlsYWJsZUxvY2FsZSkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goYXZhaWxhYmxlTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuZnVuY3Rpb24gc3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKSB7XG4gICAgdmFyIG1hdGNoZXIgPSAnYmVzdCBmaXQnO1xuICAgIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0aW9ucyA9IHBvbHlmaWxsX3V0aWxzXzEudG9PYmplY3Qob3B0aW9ucyk7XG4gICAgICAgIG1hdGNoZXIgPSBwb2x5ZmlsbF91dGlsc18xLmdldE9wdGlvbihvcHRpb25zLCAnbG9jYWxlTWF0Y2hlcicsICdzdHJpbmcnLCBbJ2xvb2t1cCcsICdiZXN0IGZpdCddLCAnYmVzdCBmaXQnKTtcbiAgICB9XG4gICAgaWYgKG1hdGNoZXIgPT09ICdiZXN0IGZpdCcpIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcyk7XG4gICAgfVxuICAgIHJldHVybiBsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpO1xufVxuZXhwb3J0cy5zdXBwb3J0ZWRMb2NhbGVzID0gc3VwcG9ydGVkTG9jYWxlcztcbnZhciBNaXNzaW5nTG9jYWxlRGF0YUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nTG9jYWxlRGF0YUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdMb2NhbGVEYXRhRXJyb3IoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ01JU1NJTkdfTE9DQUxFX0RBVEEnO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBNaXNzaW5nTG9jYWxlRGF0YUVycm9yO1xufShFcnJvcikpO1xuZnVuY3Rpb24gaXNNaXNzaW5nTG9jYWxlRGF0YUVycm9yKGUpIHtcbiAgICByZXR1cm4gZS50eXBlID09PSAnTUlTU0lOR19MT0NBTEVfREFUQSc7XG59XG5leHBvcnRzLmlzTWlzc2luZ0xvY2FsZURhdGFFcnJvciA9IGlzTWlzc2luZ0xvY2FsZURhdGFFcnJvcjtcbmZ1bmN0aW9uIHVucGFja0RhdGEobG9jYWxlLCBsb2NhbGVEYXRhLCBcbi8qKiBCeSBkZWZhdWx0IHNoYWxsb3cgbWVyZ2UgdGhlIGRpY3Rpb25hcmllcy4gKi9cbnJlZHVjZXIpIHtcbiAgICBpZiAocmVkdWNlciA9PT0gdm9pZCAwKSB7IHJlZHVjZXIgPSBmdW5jdGlvbiAoYWxsLCBkKSB7IHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oe30sIGFsbCksIGQpKTsgfTsgfVxuICAgIHZhciBsb2NhbGVIaWVyYXJjaHkgPSBnZXRMb2NhbGVIaWVyYXJjaHkobG9jYWxlKTtcbiAgICB2YXIgZGF0YVRvTWVyZ2UgPSBsb2NhbGVIaWVyYXJjaHlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAobCkgeyByZXR1cm4gbG9jYWxlRGF0YS5kYXRhW2xdOyB9KVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGlmICghZGF0YVRvTWVyZ2UubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBNaXNzaW5nTG9jYWxlRGF0YUVycm9yKFwiTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgXFxcIlwiICsgbG9jYWxlICsgXCJcXFwiLCBsb29rdXAgaGllcmFyY2h5OiBcIiArIGxvY2FsZUhpZXJhcmNoeS5qb2luKCcsICcpKTtcbiAgICB9XG4gICAgZGF0YVRvTWVyZ2UucmV2ZXJzZSgpO1xuICAgIHJldHVybiBkYXRhVG9NZXJnZS5yZWR1Y2UocmVkdWNlciwge30pO1xufVxuZXhwb3J0cy51bnBhY2tEYXRhID0gdW5wYWNrRGF0YTtcbiIsIlwidXNlIHN0cmljdFwiO1xuZnVuY3Rpb24gX19leHBvcnQobSkge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBkaWZmXzEgPSByZXF1aXJlKFwiLi9zcmMvZGlmZlwiKTtcbmV4cG9ydHMuc2VsZWN0VW5pdCA9IGRpZmZfMS5zZWxlY3RVbml0O1xudmFyIHBvbHlmaWxsX3V0aWxzXzEgPSByZXF1aXJlKFwiLi9zcmMvcG9seWZpbGwtdXRpbHNcIik7XG5leHBvcnRzLmRlZmF1bHROdW1iZXJPcHRpb24gPSBwb2x5ZmlsbF91dGlsc18xLmRlZmF1bHROdW1iZXJPcHRpb247XG5leHBvcnRzLmdldEludGVybmFsU2xvdCA9IHBvbHlmaWxsX3V0aWxzXzEuZ2V0SW50ZXJuYWxTbG90O1xuZXhwb3J0cy5nZXRNdWx0aUludGVybmFsU2xvdHMgPSBwb2x5ZmlsbF91dGlsc18xLmdldE11bHRpSW50ZXJuYWxTbG90cztcbmV4cG9ydHMuZ2V0TnVtYmVyT3B0aW9uID0gcG9seWZpbGxfdXRpbHNfMS5nZXROdW1iZXJPcHRpb247XG5leHBvcnRzLmdldE9wdGlvbiA9IHBvbHlmaWxsX3V0aWxzXzEuZ2V0T3B0aW9uO1xuZXhwb3J0cy5pc0xpdGVyYWxQYXJ0ID0gcG9seWZpbGxfdXRpbHNfMS5pc0xpdGVyYWxQYXJ0O1xuZXhwb3J0cy5wYXJ0aXRpb25QYXR0ZXJuID0gcG9seWZpbGxfdXRpbHNfMS5wYXJ0aXRpb25QYXR0ZXJuO1xuZXhwb3J0cy5zZXRJbnRlcm5hbFNsb3QgPSBwb2x5ZmlsbF91dGlsc18xLnNldEludGVybmFsU2xvdDtcbmV4cG9ydHMuc2V0TXVsdGlJbnRlcm5hbFNsb3RzID0gcG9seWZpbGxfdXRpbHNfMS5zZXRNdWx0aUludGVybmFsU2xvdHM7XG5leHBvcnRzLnNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyA9IHBvbHlmaWxsX3V0aWxzXzEuc2V0TnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zO1xuZXhwb3J0cy50b09iamVjdCA9IHBvbHlmaWxsX3V0aWxzXzEudG9PYmplY3Q7XG5leHBvcnRzLm9iamVjdElzID0gcG9seWZpbGxfdXRpbHNfMS5vYmplY3RJcztcbmV4cG9ydHMuaXNXZWxsRm9ybWVkQ3VycmVuY3lDb2RlID0gcG9seWZpbGxfdXRpbHNfMS5pc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGU7XG5leHBvcnRzLnRvU3RyaW5nID0gcG9seWZpbGxfdXRpbHNfMS50b1N0cmluZztcbmV4cG9ydHMuZm9ybWF0TnVtZXJpY1RvU3RyaW5nID0gcG9seWZpbGxfdXRpbHNfMS5mb3JtYXROdW1lcmljVG9TdHJpbmc7XG5leHBvcnRzLnRvUmF3Rml4ZWQgPSBwb2x5ZmlsbF91dGlsc18xLnRvUmF3Rml4ZWQ7XG5leHBvcnRzLnRvUmF3UHJlY2lzaW9uID0gcG9seWZpbGxfdXRpbHNfMS50b1Jhd1ByZWNpc2lvbjtcbmV4cG9ydHMuZ2V0TWFnbml0dWRlID0gcG9seWZpbGxfdXRpbHNfMS5nZXRNYWduaXR1ZGU7XG5leHBvcnRzLnJlcGVhdCA9IHBvbHlmaWxsX3V0aWxzXzEucmVwZWF0O1xuZXhwb3J0cy5oYXNPd25Qcm9wZXJ0eSA9IHBvbHlmaWxsX3V0aWxzXzEuaGFzT3duUHJvcGVydHk7XG5leHBvcnRzLmlzV2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyID0gcG9seWZpbGxfdXRpbHNfMS5pc1dlbGxGb3JtZWRVbml0SWRlbnRpZmllcjtcbmV4cG9ydHMuZGVmaW5lUHJvcGVydHkgPSBwb2x5ZmlsbF91dGlsc18xLmRlZmluZVByb3BlcnR5O1xudmFyIHJlc29sdmVfbG9jYWxlXzEgPSByZXF1aXJlKFwiLi9zcmMvcmVzb2x2ZS1sb2NhbGVcIik7XG5leHBvcnRzLmNyZWF0ZVJlc29sdmVMb2NhbGUgPSByZXNvbHZlX2xvY2FsZV8xLmNyZWF0ZVJlc29sdmVMb2NhbGU7XG5leHBvcnRzLmdldExvY2FsZUhpZXJhcmNoeSA9IHJlc29sdmVfbG9jYWxlXzEuZ2V0TG9jYWxlSGllcmFyY2h5O1xuZXhwb3J0cy5zdXBwb3J0ZWRMb2NhbGVzID0gcmVzb2x2ZV9sb2NhbGVfMS5zdXBwb3J0ZWRMb2NhbGVzO1xuZXhwb3J0cy51bnBhY2tEYXRhID0gcmVzb2x2ZV9sb2NhbGVfMS51bnBhY2tEYXRhO1xuZXhwb3J0cy5pc01pc3NpbmdMb2NhbGVEYXRhRXJyb3IgPSByZXNvbHZlX2xvY2FsZV8xLmlzTWlzc2luZ0xvY2FsZURhdGFFcnJvcjtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL3NyYy91bml0c1wiKSk7XG52YXIgaW52YXJpYW50XzEgPSByZXF1aXJlKFwiLi9zcmMvaW52YXJpYW50XCIpO1xuZXhwb3J0cy5pbnZhcmlhbnQgPSBpbnZhcmlhbnRfMS5pbnZhcmlhbnQ7XG4iLCJ2YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbmV4cG9ydCB2YXIgUmVhY3RJbnRsRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChSZWFjdEludGxFcnJvckNvZGUpIHtcbiAgICBSZWFjdEludGxFcnJvckNvZGVbXCJGT1JNQVRfRVJST1JcIl0gPSBcIkZPUk1BVF9FUlJPUlwiO1xuICAgIFJlYWN0SW50bEVycm9yQ29kZVtcIlVOU1VQUE9SVEVEX0ZPUk1BVFRFUlwiXSA9IFwiVU5TVVBQT1JURURfRk9STUFUVEVSXCI7XG4gICAgUmVhY3RJbnRsRXJyb3JDb2RlW1wiSU5WQUxJRF9DT05GSUdcIl0gPSBcIklOVkFMSURfQ09ORklHXCI7XG4gICAgUmVhY3RJbnRsRXJyb3JDb2RlW1wiTUlTU0lOR19EQVRBXCJdID0gXCJNSVNTSU5HX0RBVEFcIjtcbiAgICBSZWFjdEludGxFcnJvckNvZGVbXCJNSVNTSU5HX1RSQU5TTEFUSU9OXCJdID0gXCJNSVNTSU5HX1RSQU5TTEFUSU9OXCI7XG59KShSZWFjdEludGxFcnJvckNvZGUgfHwgKFJlYWN0SW50bEVycm9yQ29kZSA9IHt9KSk7XG52YXIgUmVhY3RJbnRsRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlYWN0SW50bEVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJlYWN0SW50bEVycm9yKGNvZGUsIG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBcIltSZWFjdCBJbnRsIEVycm9yIFwiICsgY29kZSArIFwiXSBcIiArIG1lc3NhZ2UgKyBcIiBcXG5cIiArIChleGNlcHRpb24gPyBcIlxcblwiICsgZXhjZXB0aW9uLm1lc3NhZ2UgKyBcIlxcblwiICsgZXhjZXB0aW9uLnN0YWNrIDogJycpKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX3RoaXMsIFJlYWN0SW50bEVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdEludGxFcnJvcjtcbn0oRXJyb3IpKTtcbmV4cG9ydCB7IFJlYWN0SW50bEVycm9yIH07XG52YXIgVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVW5zdXBwb3J0ZWRGb3JtYXR0ZXJFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBVbnN1cHBvcnRlZEZvcm1hdHRlckVycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJVTlNVUFBPUlRFRF9GT1JNQVRURVJcIiAvKiBVTlNVUFBPUlRFRF9GT1JNQVRURVIgKi8sIG1lc3NhZ2UsIGV4Y2VwdGlvbikgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3I7XG59KFJlYWN0SW50bEVycm9yKSk7XG5leHBvcnQgeyBVbnN1cHBvcnRlZEZvcm1hdHRlckVycm9yIH07XG52YXIgSW52YWxpZENvbmZpZ0Vycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkQ29uZmlnRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW52YWxpZENvbmZpZ0Vycm9yKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJJTlZBTElEX0NPTkZJR1wiIC8qIElOVkFMSURfQ09ORklHICovLCBtZXNzYWdlLCBleGNlcHRpb24pIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBJbnZhbGlkQ29uZmlnRXJyb3I7XG59KFJlYWN0SW50bEVycm9yKSk7XG5leHBvcnQgeyBJbnZhbGlkQ29uZmlnRXJyb3IgfTtcbnZhciBNaXNzaW5nRGF0YUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nRGF0YUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdEYXRhRXJyb3IobWVzc2FnZSwgZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBcIk1JU1NJTkdfREFUQVwiIC8qIE1JU1NJTkdfREFUQSAqLywgbWVzc2FnZSwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gTWlzc2luZ0RhdGFFcnJvcjtcbn0oUmVhY3RJbnRsRXJyb3IpKTtcbmV4cG9ydCB7IE1pc3NpbmdEYXRhRXJyb3IgfTtcbnZhciBNZXNzYWdlRm9ybWF0RXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1lc3NhZ2VGb3JtYXRFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNZXNzYWdlRm9ybWF0RXJyb3IobWVzc2FnZSwgbG9jYWxlLCBkZXNjcmlwdG9yLCBleGNlcHRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sIG1lc3NhZ2UgKyBcIiBcXG5Mb2NhbGU6IFwiICsgbG9jYWxlICsgXCJcXG5NZXNzYWdlSUQ6IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5pZCkgKyBcIlxcbkRlZmF1bHQgTWVzc2FnZTogXCIgKyAoZGVzY3JpcHRvciA9PT0gbnVsbCB8fCBkZXNjcmlwdG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXNjcmlwdG9yLmRlZmF1bHRNZXNzYWdlKSArIFwiXFxuRGVzY3JpcHRpb246IFwiICsgKGRlc2NyaXB0b3IgPT09IG51bGwgfHwgZGVzY3JpcHRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVzY3JpcHRvci5kZXNjcmlwdGlvbikgKyBcIiBcXG5cIiwgZXhjZXB0aW9uKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gTWVzc2FnZUZvcm1hdEVycm9yO1xufShSZWFjdEludGxFcnJvcikpO1xuZXhwb3J0IHsgTWVzc2FnZUZvcm1hdEVycm9yIH07XG52YXIgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yKGRlc2NyaXB0b3IsIGxvY2FsZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBcIk1JU1NJTkdfVFJBTlNMQVRJT05cIiAvKiBNSVNTSU5HX1RSQU5TTEFUSU9OICovLCBcIk1pc3NpbmcgbWVzc2FnZTogXFxcIlwiICsgZGVzY3JpcHRvci5pZCArIFwiXFxcIiBmb3IgbG9jYWxlIFxcXCJcIiArIGxvY2FsZSArIFwiXFxcIiwgdXNpbmcgXCIgKyAoZGVzY3JpcHRvci5kZWZhdWx0TWVzc2FnZSA/ICdkZWZhdWx0IG1lc3NhZ2UnIDogJ2lkJykgKyBcIiBhcyBmYWxsYmFjay5cIikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIE1pc3NpbmdUcmFuc2xhdGlvbkVycm9yO1xufShSZWFjdEludGxFcnJvcikpO1xuZXhwb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IgfTtcbiIsIi8qXG5IVE1MIGVzY2FwaW5nIGlzIHRoZSBzYW1lIGFzIFJlYWN0J3NcbihvbiBwdXJwb3NlLikgVGhlcmVmb3JlLCBpdCBoYXMgdGhlIGZvbGxvd2luZyBDb3B5cmlnaHQgYW5kIExpY2Vuc2luZzpcblxuQ29weXJpZ2h0IDIwMTMtMjAxNCwgRmFjZWJvb2ssIEluYy5cbkFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZSBMSUNFTlNFXG5maWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiBSZWFjdCdzIHNvdXJjZSB0cmVlLlxuKi9cbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheXMgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xuICAgIHJldHVybiByO1xufTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEludGxNZXNzYWdlRm9ybWF0IH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0JztcbmltcG9ydCAqIGFzIG1lbW9pemUgZnJvbSAnZmFzdC1tZW1vaXplJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJ0Bmb3JtYXRqcy9pbnRsLXV0aWxzJztcbmltcG9ydCB7IFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IgfSBmcm9tICcuL2Vycm9yJztcbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJQcm9wcyhwcm9wcywgd2hpdGVsaXN0LCBkZWZhdWx0cykge1xuICAgIGlmIChkZWZhdWx0cyA9PT0gdm9pZCAwKSB7IGRlZmF1bHRzID0ge307IH1cbiAgICByZXR1cm4gd2hpdGVsaXN0LnJlZHVjZShmdW5jdGlvbiAoZmlsdGVyZWQsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW25hbWVdID0gcHJvcHNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobmFtZSBpbiBkZWZhdWx0cykge1xuICAgICAgICAgICAgZmlsdGVyZWRbbmFtZV0gPSBkZWZhdWx0c1tuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGludmFyaWFudEludGxDb250ZXh0KGludGwpIHtcbiAgICBpbnZhcmlhbnQoaW50bCwgJ1tSZWFjdCBJbnRsXSBDb3VsZCBub3QgZmluZCByZXF1aXJlZCBgaW50bGAgb2JqZWN0LiAnICtcbiAgICAgICAgJzxJbnRsUHJvdmlkZXI+IG5lZWRzIHRvIGV4aXN0IGluIHRoZSBjb21wb25lbnQgYW5jZXN0cnkuJyk7XG59XG5leHBvcnQgdmFyIGRlZmF1bHRFcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG59O1xuZXhwb3J0IHZhciBERUZBVUxUX0lOVExfQ09ORklHID0ge1xuICAgIGZvcm1hdHM6IHt9LFxuICAgIG1lc3NhZ2VzOiB7fSxcbiAgICB0aW1lWm9uZTogdW5kZWZpbmVkLFxuICAgIHRleHRDb21wb25lbnQ6IFJlYWN0LkZyYWdtZW50LFxuICAgIGRlZmF1bHRMb2NhbGU6ICdlbicsXG4gICAgZGVmYXVsdEZvcm1hdHM6IHt9LFxuICAgIG9uRXJyb3I6IGRlZmF1bHRFcnJvckhhbmRsZXIsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGxDYWNoZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkYXRlVGltZToge30sXG4gICAgICAgIG51bWJlcjoge30sXG4gICAgICAgIG1lc3NhZ2U6IHt9LFxuICAgICAgICByZWxhdGl2ZVRpbWU6IHt9LFxuICAgICAgICBwbHVyYWxSdWxlczoge30sXG4gICAgICAgIGxpc3Q6IHt9LFxuICAgICAgICBkaXNwbGF5TmFtZXM6IHt9LFxuICAgIH07XG59XG5mdW5jdGlvbiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKHN0b3JlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5IGluIHN0b3JlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZVtrZXldO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIEB0cy1pZ25vcmUgdGhpcyBpcyB0byBkZWFsIHdpdGggcm9sbHVwJ3MgZGVmYXVsdCBpbXBvcnQgc2hlbmFuaWdhbnNcbnZhciBfbWVtb2l6ZUludGwgPSBtZW1vaXplLmRlZmF1bHQgfHwgbWVtb2l6ZTtcbnZhciBtZW1vaXplSW50bCA9IF9tZW1vaXplSW50bDtcbi8qKlxuICogQ3JlYXRlIGludGwgZm9ybWF0dGVycyBhbmQgcG9wdWxhdGUgY2FjaGVcbiAqIEBwYXJhbSBjYWNoZSBleHBsaWNpdCBjYWNoZSB0byBwcmV2ZW50IGxlYWtpbmcgbWVtb3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtYXR0ZXJzKGNhY2hlKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSBjcmVhdGVJbnRsQ2FjaGUoKTsgfVxuICAgIHZhciBSZWxhdGl2ZVRpbWVGb3JtYXQgPSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDtcbiAgICB2YXIgTGlzdEZvcm1hdCA9IEludGwuTGlzdEZvcm1hdDtcbiAgICB2YXIgRGlzcGxheU5hbWVzID0gSW50bC5EaXNwbGF5TmFtZXM7XG4gICAgdmFyIGdldERhdGVUaW1lRm9ybWF0ID0gbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5EYXRlVGltZUZvcm1hdCkuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICB9LCB7XG4gICAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLmRhdGVUaW1lKSxcbiAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgfSk7XG4gICAgdmFyIGdldE51bWJlckZvcm1hdCA9IG1lbW9pemVJbnRsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgIH0sIHtcbiAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUubnVtYmVyKSxcbiAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgfSk7XG4gICAgdmFyIGdldFBsdXJhbFJ1bGVzID0gbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5QbHVyYWxSdWxlcykuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICB9LCB7XG4gICAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLnBsdXJhbFJ1bGVzKSxcbiAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0RGF0ZVRpbWVGb3JtYXQ6IGdldERhdGVUaW1lRm9ybWF0LFxuICAgICAgICBnZXROdW1iZXJGb3JtYXQ6IGdldE51bWJlckZvcm1hdCxcbiAgICAgICAgZ2V0TWVzc2FnZUZvcm1hdDogbWVtb2l6ZUludGwoZnVuY3Rpb24gKG1lc3NhZ2UsIGxvY2FsZXMsIG92ZXJyaWRlRm9ybWF0cywgb3B0cykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRsTWVzc2FnZUZvcm1hdChtZXNzYWdlLCBsb2NhbGVzLCBvdmVycmlkZUZvcm1hdHMsIF9fYXNzaWduKHsgZm9ybWF0dGVyczoge1xuICAgICAgICAgICAgICAgICAgICBnZXROdW1iZXJGb3JtYXQ6IGdldE51bWJlckZvcm1hdCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0RGF0ZVRpbWVGb3JtYXQ6IGdldERhdGVUaW1lRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgICBnZXRQbHVyYWxSdWxlczogZ2V0UGx1cmFsUnVsZXMsXG4gICAgICAgICAgICAgICAgfSB9LCAob3B0cyB8fCB7fSkpKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUubWVzc2FnZSksXG4gICAgICAgICAgICBzdHJhdGVneTogbWVtb2l6ZUludGwuc3RyYXRlZ2llcy52YXJpYWRpYyxcbiAgICAgICAgfSksXG4gICAgICAgIGdldFJlbGF0aXZlVGltZUZvcm1hdDogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoUmVsYXRpdmVUaW1lRm9ybWF0LmJpbmQuYXBwbHkoUmVsYXRpdmVUaW1lRm9ybWF0LCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5yZWxhdGl2ZVRpbWUpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgICAgICBnZXRQbHVyYWxSdWxlczogZ2V0UGx1cmFsUnVsZXMsXG4gICAgICAgIGdldExpc3RGb3JtYXQ6IG1lbW9pemVJbnRsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgKExpc3RGb3JtYXQuYmluZC5hcHBseShMaXN0Rm9ybWF0LCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5saXN0KSxcbiAgICAgICAgICAgIHN0cmF0ZWd5OiBtZW1vaXplSW50bC5zdHJhdGVnaWVzLnZhcmlhZGljLFxuICAgICAgICB9KSxcbiAgICAgICAgZ2V0RGlzcGxheU5hbWVzOiBtZW1vaXplSW50bChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IChEaXNwbGF5TmFtZXMuYmluZC5hcHBseShEaXNwbGF5TmFtZXMsIF9fc3ByZWFkQXJyYXlzKFt2b2lkIDBdLCBhcmdzKSkpKCk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGNhY2hlOiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKGNhY2hlLmRpc3BsYXlOYW1lcyksXG4gICAgICAgICAgICBzdHJhdGVneTogbWVtb2l6ZUludGwuc3RyYXRlZ2llcy52YXJpYWRpYyxcbiAgICAgICAgfSksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCB0eXBlLCBuYW1lLCBvbkVycm9yKSB7XG4gICAgdmFyIGZvcm1hdFR5cGUgPSBmb3JtYXRzICYmIGZvcm1hdHNbdHlwZV07XG4gICAgdmFyIGZvcm1hdDtcbiAgICBpZiAoZm9ybWF0VHlwZSkge1xuICAgICAgICBmb3JtYXQgPSBmb3JtYXRUeXBlW25hbWVdO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgfVxuICAgIG9uRXJyb3IobmV3IFVuc3VwcG9ydGVkRm9ybWF0dGVyRXJyb3IoXCJObyBcIiArIHR5cGUgKyBcIiBmb3JtYXQgbmFtZWQ6IFwiICsgbmFtZSkpO1xufVxuLyoqXG4gKiBUYWtlcyBhIGBmb3JtYXRYTUxFbGVtZW50Rm5gLCBhbmQgY29tcG9zZXMgaXQgaW4gZnVuY3Rpb24sIHdoaWNoIHBhc3Nlc1xuICogYXJndW1lbnQgYHBhcnRzYCB0aHJvdWdoLCBhc3NpZ25pbmcgdW5pcXVlIGtleSB0byBlYWNoIHBhcnQsIHRvIHByZXZlbnRcbiAqIFwiRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIlwiIFJlYWN0IGVycm9yLlxuICogQHBhcmFtIGZvcm1hdFhNTEVsZW1lbnRGblxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduVW5pcXVlS2V5c1RvUGFydHMoZm9ybWF0WE1MRWxlbWVudEZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJ0cykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXG4gICAgICAgIHJldHVybiBmb3JtYXRYTUxFbGVtZW50Rm4oUmVhY3QuQ2hpbGRyZW4udG9BcnJheShwYXJ0cykpO1xuICAgIH07XG59XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBob2lzdE5vblJlYWN0U3RhdGljc18gZnJvbSAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuLy8gU2luY2Ugcm9sbHVwIGNhbm5vdCBkZWFsIHdpdGggbmFtZXNwYWNlIGJlaW5nIGEgZnVuY3Rpb24sXG4vLyB0aGlzIGlzIHRvIGludGVyb3Agd2l0aCBUeXBlU2NyaXB0IHNpbmNlIGBpbnZhcmlhbnRgXG4vLyBkb2VzIG5vdCBleHBvcnQgYSBkZWZhdWx0XG4vLyBodHRwczovL2dpdGh1Yi5jb20vcm9sbHVwL3JvbGx1cC9pc3N1ZXMvMTI2N1xudmFyIGhvaXN0Tm9uUmVhY3RTdGF0aWNzID0gaG9pc3ROb25SZWFjdFN0YXRpY3NfLmRlZmF1bHQgfHwgaG9pc3ROb25SZWFjdFN0YXRpY3NfO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5mdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xufVxuLy8gVE9ETzogV2Ugc2hvdWxkIHByb3ZpZGUgaW5pdGlhbCB2YWx1ZSBoZXJlXG52YXIgSW50bENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xudmFyIEludGxDb25zdW1lciA9IEludGxDb250ZXh0LkNvbnN1bWVyLCBJbnRsUHJvdmlkZXIgPSBJbnRsQ29udGV4dC5Qcm92aWRlcjtcbmV4cG9ydCB2YXIgUHJvdmlkZXIgPSBJbnRsUHJvdmlkZXI7XG5leHBvcnQgdmFyIENvbnRleHQgPSBJbnRsQ29udGV4dDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluamVjdEludGwoV3JhcHBlZENvbXBvbmVudCwgb3B0aW9ucykge1xuICAgIHZhciBfYSA9IG9wdGlvbnMgfHwge30sIF9iID0gX2EuaW50bFByb3BOYW1lLCBpbnRsUHJvcE5hbWUgPSBfYiA9PT0gdm9pZCAwID8gJ2ludGwnIDogX2IsIF9jID0gX2EuZm9yd2FyZFJlZiwgZm9yd2FyZFJlZiA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLCBfZCA9IF9hLmVuZm9yY2VDb250ZXh0LCBlbmZvcmNlQ29udGV4dCA9IF9kID09PSB2b2lkIDAgPyB0cnVlIDogX2Q7XG4gICAgdmFyIFdpdGhJbnRsID0gZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbnRsQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChpbnRsKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGVuZm9yY2VDb250ZXh0KSB7XG4gICAgICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW50bFByb3AgPSAoX2EgPSB7fSwgX2FbaW50bFByb3BOYW1lXSA9IGludGwsIF9hKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwcm9wcywgaW50bFByb3AsIHsgcmVmOiBmb3J3YXJkUmVmID8gcHJvcHMuZm9yd2FyZGVkUmVmIDogbnVsbCB9KSkpO1xuICAgIH0pKTsgfTtcbiAgICBXaXRoSW50bC5kaXNwbGF5TmFtZSA9IFwiaW5qZWN0SW50bChcIiArIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpICsgXCIpXCI7XG4gICAgV2l0aEludGwuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgaWYgKGZvcndhcmRSZWYpIHtcbiAgICAgICAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFdpdGhJbnRsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgZm9yd2FyZGVkUmVmOiByZWYgfSkpKTsgfSksIFdyYXBwZWRDb21wb25lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aEludGwsIFdyYXBwZWRDb21wb25lbnQpO1xufVxuIiwidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9pbmplY3RJbnRsJztcbnZhciBEaXNwbGF5TmFtZTtcbihmdW5jdGlvbiAoRGlzcGxheU5hbWUpIHtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdERhdGVcIl0gPSBcIkZvcm1hdHRlZERhdGVcIjtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdFRpbWVcIl0gPSBcIkZvcm1hdHRlZFRpbWVcIjtcbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdE51bWJlclwiXSA9IFwiRm9ybWF0dGVkTnVtYmVyXCI7XG4gICAgRGlzcGxheU5hbWVbXCJmb3JtYXRMaXN0XCJdID0gXCJGb3JtYXR0ZWRMaXN0XCI7XG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgRGlzcGxheU5hbWUgaXMgdGhlIGxvY2FsZSBkaXNwbGF5IG5hbWUsIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoXG4gICAgLy8gdGhlIG5hbWUgb2YgdGhlIGVudW0sIHdoaWNoIGlzIGZvciBSZWFjdCBjb21wb25lbnQgZGlzcGxheSBuYW1lIGluIGRldiB0b29scy5cbiAgICBEaXNwbGF5TmFtZVtcImZvcm1hdERpc3BsYXlOYW1lXCJdID0gXCJGb3JtYXR0ZWREaXNwbGF5TmFtZVwiO1xufSkoRGlzcGxheU5hbWUgfHwgKERpc3BsYXlOYW1lID0ge30pKTtcbnZhciBEaXNwbGF5TmFtZVBhcnRzO1xuKGZ1bmN0aW9uIChEaXNwbGF5TmFtZVBhcnRzKSB7XG4gICAgRGlzcGxheU5hbWVQYXJ0c1tcImZvcm1hdERhdGVcIl0gPSBcIkZvcm1hdHRlZERhdGVQYXJ0c1wiO1xuICAgIERpc3BsYXlOYW1lUGFydHNbXCJmb3JtYXRUaW1lXCJdID0gXCJGb3JtYXR0ZWRUaW1lUGFydHNcIjtcbiAgICBEaXNwbGF5TmFtZVBhcnRzW1wiZm9ybWF0TnVtYmVyXCJdID0gXCJGb3JtYXR0ZWROdW1iZXJQYXJ0c1wiO1xuICAgIERpc3BsYXlOYW1lUGFydHNbXCJmb3JtYXRMaXN0XCJdID0gXCJGb3JtYXR0ZWRMaXN0UGFydHNcIjtcbn0pKERpc3BsYXlOYW1lUGFydHMgfHwgKERpc3BsYXlOYW1lUGFydHMgPSB7fSkpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWROdW1iZXJQYXJ0cyA9IGZ1bmN0aW9uIChwcm9wcykgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICB2YXIgdmFsdWUgPSBwcm9wcy52YWx1ZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgZm9ybWF0UHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwiY2hpbGRyZW5cIl0pO1xuICAgIHJldHVybiBjaGlsZHJlbihpbnRsLmZvcm1hdE51bWJlclRvUGFydHModmFsdWUsIGZvcm1hdFByb3BzKSk7XG59KSk7IH07XG5Gb3JtYXR0ZWROdW1iZXJQYXJ0cy5kaXNwbGF5TmFtZSA9ICdGb3JtYXR0ZWROdW1iZXJQYXJ0cyc7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVkRGF0ZVRpbWVQYXJ0c0NvbXBvbmVudChuYW1lKSB7XG4gICAgdmFyIENvbXBvbmVudFBhcnRzID0gZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAoaW50bCkge1xuICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGZvcm1hdFByb3BzID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImNoaWxkcmVuXCJdKTtcbiAgICAgICAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcbiAgICAgICAgdmFyIGZvcm1hdHRlZFBhcnRzID0gbmFtZSA9PT0gJ2Zvcm1hdERhdGUnXG4gICAgICAgICAgICA/IGludGwuZm9ybWF0RGF0ZVRvUGFydHMoZGF0ZSwgZm9ybWF0UHJvcHMpXG4gICAgICAgICAgICA6IGludGwuZm9ybWF0VGltZVRvUGFydHMoZGF0ZSwgZm9ybWF0UHJvcHMpO1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkUGFydHMpO1xuICAgIH0pKTsgfTtcbiAgICBDb21wb25lbnRQYXJ0cy5kaXNwbGF5TmFtZSA9IERpc3BsYXlOYW1lUGFydHNbbmFtZV07XG4gICAgcmV0dXJuIENvbXBvbmVudFBhcnRzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudChuYW1lKSB7XG4gICAgdmFyIENvbXBvbmVudCA9IGZ1bmN0aW9uIChwcm9wcykgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICAgICAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBmb3JtYXRQcm9wcyA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiXSk7XG4gICAgICAgIC8vIFRPRE86IGZpeCBUUyB0eXBlIGRlZmluaXRpb24gZm9yIGxvY2FsZU1hdGNoZXIgdXBzdHJlYW1cbiAgICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gaW50bFtuYW1lXSh2YWx1ZSwgZm9ybWF0UHJvcHMpO1xuICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4oZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBUZXh0ID0gaW50bC50ZXh0Q29tcG9uZW50IHx8IFJlYWN0LkZyYWdtZW50O1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBudWxsLCBmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfSkpOyB9O1xuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IERpc3BsYXlOYW1lW25hbWVdO1xuICAgIHJldHVybiBDb21wb25lbnQ7XG59XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9pbmplY3RJbnRsJztcbmltcG9ydCB7IGludmFyaWFudEludGxDb250ZXh0IH0gZnJvbSAnLi4vdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSW50bCgpIHtcbiAgICB2YXIgaW50bCA9IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgaW52YXJpYW50SW50bENvbnRleHQoaW50bCk7XG4gICAgcmV0dXJuIGludGw7XG59XG4iLCJpbXBvcnQgeyBnZXROYW1lZEZvcm1hdCwgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBSZWFjdEludGxFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbnZhciBOVU1CRVJfRk9STUFUX09QVElPTlMgPSBbXG4gICAgJ2xvY2FsZU1hdGNoZXInLFxuICAgICdzdHlsZScsXG4gICAgJ2N1cnJlbmN5JyxcbiAgICAnY3VycmVuY3lEaXNwbGF5JyxcbiAgICAndW5pdCcsXG4gICAgJ3VuaXREaXNwbGF5JyxcbiAgICAndXNlR3JvdXBpbmcnLFxuICAgICdtaW5pbXVtSW50ZWdlckRpZ2l0cycsXG4gICAgJ21pbmltdW1GcmFjdGlvbkRpZ2l0cycsXG4gICAgJ21heGltdW1GcmFjdGlvbkRpZ2l0cycsXG4gICAgJ21pbmltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICAgJ21heGltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICAgLy8gRVMyMDIwIE51bWJlckZvcm1hdFxuICAgICdjb21wYWN0RGlzcGxheScsXG4gICAgJ2N1cnJlbmN5RGlzcGxheScsXG4gICAgJ2N1cnJlbmN5U2lnbicsXG4gICAgJ25vdGF0aW9uJyxcbiAgICAnc2lnbkRpc3BsYXknLFxuICAgICd1bml0JyxcbiAgICAndW5pdERpc3BsYXknLFxuXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZXIoX2EsIGdldE51bWJlckZvcm1hdCwgb3B0aW9ucykge1xuICAgIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsIGZvcm1hdHMgPSBfYS5mb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvcjtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICB2YXIgZGVmYXVsdHMgPSAoKGZvcm1hdCAmJlxuICAgICAgICBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCAnbnVtYmVyJywgZm9ybWF0LCBvbkVycm9yKSkgfHxcbiAgICAgICAge30pO1xuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBOVU1CRVJfRk9STUFUX09QVElPTlMsIGRlZmF1bHRzKTtcbiAgICByZXR1cm4gZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZSwgZmlsdGVyZWRPcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQodmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25maWcub25FcnJvcihuZXcgUmVhY3RJbnRsRXJyb3IoXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sICdFcnJvciBmb3JtYXR0aW5nIG51bWJlci4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlclRvUGFydHMoY29uZmlnLCBnZXROdW1iZXJGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0TnVtYmVyRm9ybWF0LCBvcHRpb25zKS5mb3JtYXRUb1BhcnRzKHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBudW1iZXIuJywgZSkpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG59XG4iLCJpbXBvcnQgeyBnZXROYW1lZEZvcm1hdCwgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtYXRFcnJvciB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBNZXNzYWdlRm9ybWF0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG52YXIgUkVMQVRJVkVfVElNRV9GT1JNQVRfT1BUSU9OUyA9IFsnbnVtZXJpYycsICdzdHlsZSddO1xuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKF9hLCBnZXRSZWxhdGl2ZVRpbWVGb3JtYXQsIG9wdGlvbnMpIHtcbiAgICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLCBmb3JtYXRzID0gX2EuZm9ybWF0cywgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQ7XG4gICAgdmFyIGRlZmF1bHRzID0gKCEhZm9ybWF0ICYmIGdldE5hbWVkRm9ybWF0KGZvcm1hdHMsICdyZWxhdGl2ZScsIGZvcm1hdCwgb25FcnJvcikpIHx8IHt9O1xuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBSRUxBVElWRV9USU1FX0ZPUk1BVF9PUFRJT05TLCBkZWZhdWx0cyk7XG4gICAgcmV0dXJuIGdldFJlbGF0aXZlVGltZUZvcm1hdChsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKGNvbmZpZywgZ2V0UmVsYXRpdmVUaW1lRm9ybWF0LCB2YWx1ZSwgdW5pdCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgaWYgKCF1bml0KSB7XG4gICAgICAgIHVuaXQgPSAnc2Vjb25kJztcbiAgICB9XG4gICAgdmFyIFJlbGF0aXZlVGltZUZvcm1hdCA9IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0O1xuICAgIGlmICghUmVsYXRpdmVUaW1lRm9ybWF0KSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBGb3JtYXRFcnJvcihcIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdFxcXCJcXG5cIiwgXCJNSVNTSU5HX0lOVExfQVBJXCIgLyogTUlTU0lOR19JTlRMX0FQSSAqLykpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgZ2V0UmVsYXRpdmVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQodmFsdWUsIHVuaXQpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25maWcub25FcnJvcihuZXcgTWVzc2FnZUZvcm1hdEVycm9yKCdFcnJvciBmb3JtYXR0aW5nIHJlbGF0aXZlIHRpbWUuJywgZSkpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGZpbHRlclByb3BzLCBnZXROYW1lZEZvcm1hdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFJlYWN0SW50bEVycm9yIH0gZnJvbSAnLi4vZXJyb3InO1xudmFyIERBVEVfVElNRV9GT1JNQVRfT1BUSU9OUyA9IFtcbiAgICAnbG9jYWxlTWF0Y2hlcicsXG4gICAgJ2Zvcm1hdE1hdGNoZXInLFxuICAgICd0aW1lWm9uZScsXG4gICAgJ2hvdXIxMicsXG4gICAgJ3dlZWtkYXknLFxuICAgICdlcmEnLFxuICAgICd5ZWFyJyxcbiAgICAnbW9udGgnLFxuICAgICdkYXknLFxuICAgICdob3VyJyxcbiAgICAnbWludXRlJyxcbiAgICAnc2Vjb25kJyxcbiAgICAndGltZVpvbmVOYW1lJyxcbiAgICAnaG91ckN5Y2xlJyxcbiAgICAnZGF0ZVN0eWxlJyxcbiAgICAndGltZVN0eWxlJyxcbiAgICAnZnJhY3Rpb25hbFNlY29uZERpZ2l0cycsXG4gICAgJ2NhbGVuZGFyJyxcbiAgICAvLyAnZGF5UGVyaW9kJyxcbiAgICAnbnVtYmVyaW5nU3lzdGVtJyxcbl07XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKF9hLCB0eXBlLCBnZXREYXRlVGltZUZvcm1hdCwgb3B0aW9ucykge1xuICAgIHZhciBsb2NhbGUgPSBfYS5sb2NhbGUsIGZvcm1hdHMgPSBfYS5mb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvciwgdGltZVpvbmUgPSBfYS50aW1lWm9uZTtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdDtcbiAgICB2YXIgZGVmYXVsdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgKHRpbWVab25lICYmIHsgdGltZVpvbmU6IHRpbWVab25lIH0pKSwgKGZvcm1hdCAmJiBnZXROYW1lZEZvcm1hdChmb3JtYXRzLCB0eXBlLCBmb3JtYXQsIG9uRXJyb3IpKSk7XG4gICAgdmFyIGZpbHRlcmVkT3B0aW9ucyA9IGZpbHRlclByb3BzKG9wdGlvbnMsIERBVEVfVElNRV9GT1JNQVRfT1BUSU9OUywgZGVmYXVsdHMpO1xuICAgIGlmICh0eXBlID09PSAndGltZScgJiZcbiAgICAgICAgIWZpbHRlcmVkT3B0aW9ucy5ob3VyICYmXG4gICAgICAgICFmaWx0ZXJlZE9wdGlvbnMubWludXRlICYmXG4gICAgICAgICFmaWx0ZXJlZE9wdGlvbnMuc2Vjb25kKSB7XG4gICAgICAgIC8vIEFkZCBkZWZhdWx0IGZvcm1hdHRpbmcgb3B0aW9ucyBpZiBob3VyLCBtaW51dGUsIG9yIHNlY29uZCBpc24ndCBkZWZpbmVkLlxuICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZmlsdGVyZWRPcHRpb25zKSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJ251bWVyaWMnIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlIHx8IDApIDogdmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICdkYXRlJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdChkYXRlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyBkYXRlLicsIGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhkYXRlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lKGNvbmZpZywgZ2V0RGF0ZVRpbWVGb3JtYXQsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgZGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZSh2YWx1ZSB8fCAwKSA6IHZhbHVlO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXRGb3JtYXR0ZXIoY29uZmlnLCAndGltZScsIGdldERhdGVUaW1lRm9ybWF0LCBvcHRpb25zKS5mb3JtYXQoZGF0ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBSZWFjdEludGxFcnJvcihcIkZPUk1BVF9FUlJPUlwiIC8qIEZPUk1BVF9FUlJPUiAqLywgJ0Vycm9yIGZvcm1hdHRpbmcgdGltZS4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcoZGF0ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZVRvUGFydHMoY29uZmlnLCBnZXREYXRlVGltZUZvcm1hdCwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBkYXRlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IG5ldyBEYXRlKHZhbHVlIHx8IDApIDogdmFsdWU7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGdldEZvcm1hdHRlcihjb25maWcsICdkYXRlJywgZ2V0RGF0ZVRpbWVGb3JtYXQsIG9wdGlvbnMpLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbmZpZy5vbkVycm9yKG5ldyBSZWFjdEludGxFcnJvcihcIkZPUk1BVF9FUlJPUlwiIC8qIEZPUk1BVF9FUlJPUiAqLywgJ0Vycm9yIGZvcm1hdHRpbmcgZGF0ZS4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lVG9QYXJ0cyhjb25maWcsIGdldERhdGVUaW1lRm9ybWF0LCB2YWx1ZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIGRhdGUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUodmFsdWUgfHwgMCkgOiB2YWx1ZTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZ2V0Rm9ybWF0dGVyKGNvbmZpZywgJ3RpbWUnLCBnZXREYXRlVGltZUZvcm1hdCwgb3B0aW9ucykuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uZmlnLm9uRXJyb3IobmV3IFJlYWN0SW50bEVycm9yKFwiRk9STUFUX0VSUk9SXCIgLyogRk9STUFUX0VSUk9SICovLCAnRXJyb3IgZm9ybWF0dGluZyB0aW1lLicsIGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuIiwiaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlRm9ybWF0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG5pbXBvcnQgeyBGb3JtYXRFcnJvciB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG52YXIgUExVUkFMX0ZPUk1BVF9PUFRJT05TID0gW1xuICAgICdsb2NhbGVNYXRjaGVyJyxcbiAgICAndHlwZScsXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBsdXJhbChfYSwgZ2V0UGx1cmFsUnVsZXMsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICBpZiAoIUludGwuUGx1cmFsUnVsZXMpIHtcbiAgICAgICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLXBsdXJhbHJ1bGVzXFxcIlxcblwiLCBcIk1JU1NJTkdfSU5UTF9BUElcIiAvKiBNSVNTSU5HX0lOVExfQVBJICovKSk7XG4gICAgfVxuICAgIHZhciBmaWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJQcm9wcyhvcHRpb25zLCBQTFVSQUxfRk9STUFUX09QVElPTlMpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXRQbHVyYWxSdWxlcyhsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucykuc2VsZWN0KHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihuZXcgTWVzc2FnZUZvcm1hdEVycm9yKCdFcnJvciBmb3JtYXR0aW5nIHBsdXJhbC4nLCBlKSk7XG4gICAgfVxuICAgIHJldHVybiAnb3RoZXInO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG4gKiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fc3ByZWFkQXJyYXlzID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5cykgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcbiAgICByZXR1cm4gcjtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICdAZm9ybWF0anMvaW50bC11dGlscyc7XG5pbXBvcnQgeyBhc3NpZ25VbmlxdWVLZXlzVG9QYXJ0cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEludGxNZXNzYWdlRm9ybWF0LCBpc0Zvcm1hdFhNTEVsZW1lbnRGbiwgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uRXJyb3IsIE1lc3NhZ2VGb3JtYXRFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyJztcbmZ1bmN0aW9uIHNldFRpbWVab25lSW5PcHRpb25zKG9wdHMsIHRpbWVab25lKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9wdHMpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKHsgdGltZVpvbmU6IHRpbWVab25lIH0sIG9wdHNba10pO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZU9wdGlvbnMob3B0czEsIG9wdHMyKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0czEpLCBvcHRzMikpO1xuICAgIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCAob3B0czFba10gfHwge30pKSwgKG9wdHMyW2tdIHx8IHt9KSk7XG4gICAgICAgIHJldHVybiBhbGw7XG4gICAgfSwge30pO1xufVxuZnVuY3Rpb24gZGVlcE1lcmdlRm9ybWF0c0FuZFNldFRpbWVab25lKGYxLCB0aW1lWm9uZSkge1xuICAgIGlmICghdGltZVpvbmUpIHtcbiAgICAgICAgcmV0dXJuIGYxO1xuICAgIH1cbiAgICB2YXIgbWZGb3JtYXRzID0gSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cztcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIG1mRm9ybWF0cyksIGYxKSwgeyBkYXRlOiBkZWVwTWVyZ2VPcHRpb25zKHNldFRpbWVab25lSW5PcHRpb25zKG1mRm9ybWF0cy5kYXRlLCB0aW1lWm9uZSksIHNldFRpbWVab25lSW5PcHRpb25zKGYxLmRhdGUgfHwge30sIHRpbWVab25lKSksIHRpbWU6IGRlZXBNZXJnZU9wdGlvbnMoc2V0VGltZVpvbmVJbk9wdGlvbnMobWZGb3JtYXRzLnRpbWUsIHRpbWVab25lKSwgc2V0VGltZVpvbmVJbk9wdGlvbnMoZjEudGltZSB8fCB7fSwgdGltZVpvbmUpKSB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25VbmlxdWVLZXlzVG9Gb3JtYXRYTUxFbGVtZW50Rm5Bcmd1bWVudCh2YWx1ZXMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWVzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xuICAgICAgICB2YXIgdiA9IHZhbHVlc1trXTtcbiAgICAgICAgYWNjW2tdID0gaXNGb3JtYXRYTUxFbGVtZW50Rm4odilcbiAgICAgICAgICAgID8gYXNzaWduVW5pcXVlS2V5c1RvUGFydHModilcbiAgICAgICAgICAgIDogdjtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG59XG5mdW5jdGlvbiBwcmVwYXJlSW50bE1lc3NhZ2VGb3JtYXRIdG1sT3V0cHV0KGNodW5rcywgc2hvdWxkV3JhcCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNodW5rcykgJiYgc2hvdWxkV3JhcFxuICAgICAgICA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkoUmVhY3QsIF9fc3ByZWFkQXJyYXlzKFtSZWFjdC5GcmFnbWVudCwgbnVsbF0sIGNodW5rcykpIDogY2h1bmtzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UoX2EsIHN0YXRlLCBtZXNzYWdlRGVzY3JpcHRvciwgdmFsdWVzKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgZm9ybWF0cyA9IF9hLmZvcm1hdHMsIG1lc3NhZ2VzID0gX2EubWVzc2FnZXMsIGRlZmF1bHRMb2NhbGUgPSBfYS5kZWZhdWx0TG9jYWxlLCBkZWZhdWx0Rm9ybWF0cyA9IF9hLmRlZmF1bHRGb3JtYXRzLCBvbkVycm9yID0gX2Eub25FcnJvciwgdGltZVpvbmUgPSBfYS50aW1lWm9uZSwgd3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCA9IF9hLndyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQ7XG4gICAgaWYgKG1lc3NhZ2VEZXNjcmlwdG9yID09PSB2b2lkIDApIHsgbWVzc2FnZURlc2NyaXB0b3IgPSB7IGlkOiAnJyB9OyB9XG4gICAgdmFyIG1zZ0lkID0gbWVzc2FnZURlc2NyaXB0b3IuaWQsIGRlZmF1bHRNZXNzYWdlID0gbWVzc2FnZURlc2NyaXB0b3IuZGVmYXVsdE1lc3NhZ2U7XG4gICAgLy8gYGlkYCBpcyBhIHJlcXVpcmVkIGZpZWxkIG9mIGEgTWVzc2FnZSBEZXNjcmlwdG9yLlxuICAgIGludmFyaWFudCghIW1zZ0lkLCAnW1JlYWN0IEludGxdIEFuIGBpZGAgbXVzdCBiZSBwcm92aWRlZCB0byBmb3JtYXQgYSBtZXNzYWdlLicpO1xuICAgIHZhciBpZCA9IFN0cmluZyhtc2dJZCk7XG4gICAgdmFyIG1lc3NhZ2UgPSBtZXNzYWdlcyAmJiBtZXNzYWdlcy5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgbWVzc2FnZXNbaWRdO1xuICAgIC8vIElNUE9SVEFOVDogSG90IHBhdGggaWYgYG1lc3NhZ2VgIGlzIEFTVCB3aXRoIGEgc2luZ2xlIGxpdGVyYWwgbm9kZVxuICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpICYmXG4gICAgICAgIG1lc3NhZ2UubGVuZ3RoID09PSAxICYmXG4gICAgICAgIG1lc3NhZ2VbMF0udHlwZSA9PT0gVFlQRS5saXRlcmFsKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlWzBdLnZhbHVlO1xuICAgIH1cbiAgICAvLyBJTVBPUlRBTlQ6IEhvdCBwYXRoIHN0cmFpZ2h0IGxvb2t1cCBmb3IgcGVyZm9ybWFuY2VcbiAgICBpZiAoIXZhbHVlcyAmJiBtZXNzYWdlICYmIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC8nXFx7KC4qPylcXH0nL2dpLCBcInskMX1cIik7XG4gICAgfVxuICAgIHZhciBwYXRjaGVkVmFsdWVzID0gdmFsdWVzICYmIGFzc2lnblVuaXF1ZUtleXNUb0Zvcm1hdFhNTEVsZW1lbnRGbkFyZ3VtZW50KHZhbHVlcyk7XG4gICAgZm9ybWF0cyA9IGRlZXBNZXJnZUZvcm1hdHNBbmRTZXRUaW1lWm9uZShmb3JtYXRzLCB0aW1lWm9uZSk7XG4gICAgZGVmYXVsdEZvcm1hdHMgPSBkZWVwTWVyZ2VGb3JtYXRzQW5kU2V0VGltZVpvbmUoZGVmYXVsdEZvcm1hdHMsIHRpbWVab25lKTtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFkZWZhdWx0TWVzc2FnZSB8fFxuICAgICAgICAgICAgKGxvY2FsZSAmJiBsb2NhbGUudG9Mb3dlckNhc2UoKSAhPT0gZGVmYXVsdExvY2FsZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyB3YXJuaW5ncyBmcm9tIGxpdHRlcmluZyB0aGUgY29uc29sZSBpbiBkZXZlbG9wbWVudFxuICAgICAgICAgICAgLy8gd2hlbiBubyBgbWVzc2FnZXNgIGFyZSBwYXNzZWQgaW50byB0aGUgPEludGxQcm92aWRlcj4gZm9yIHRoZVxuICAgICAgICAgICAgLy8gZGVmYXVsdCBsb2NhbGUuXG4gICAgICAgICAgICBvbkVycm9yKG5ldyBNaXNzaW5nVHJhbnNsYXRpb25FcnJvcihtZXNzYWdlRGVzY3JpcHRvciwgbG9jYWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmF1bHRNZXNzYWdlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBzdGF0ZS5nZXRNZXNzYWdlRm9ybWF0KGRlZmF1bHRNZXNzYWdlLCBkZWZhdWx0TG9jYWxlLCBkZWZhdWx0Rm9ybWF0cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXBhcmVJbnRsTWVzc2FnZUZvcm1hdEh0bWxPdXRwdXQoZm9ybWF0dGVyLmZvcm1hdChwYXRjaGVkVmFsdWVzKSwgd3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IobmV3IE1lc3NhZ2VGb3JtYXRFcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgZGVmYXVsdCBtZXNzYWdlIGZvcjogXFxcIlwiICsgaWQgKyBcIlxcXCIsIHJlbmRlcmluZyBkZWZhdWx0IG1lc3NhZ2UgdmVyYmF0aW1cIiwgbG9jYWxlLCBtZXNzYWdlRGVzY3JpcHRvciwgZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICAgIC8vIFdlIGhhdmUgdGhlIHRyYW5zbGF0ZWQgbWVzc2FnZVxuICAgIHRyeSB7XG4gICAgICAgIHZhciBmb3JtYXR0ZXIgPSBzdGF0ZS5nZXRNZXNzYWdlRm9ybWF0KG1lc3NhZ2UsIGxvY2FsZSwgZm9ybWF0cywge1xuICAgICAgICAgICAgZm9ybWF0dGVyczogc3RhdGUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJlcGFyZUludGxNZXNzYWdlRm9ybWF0SHRtbE91dHB1dChmb3JtYXR0ZXIuZm9ybWF0KHBhdGNoZWRWYWx1ZXMpLCB3cmFwUmljaFRleHRDaHVua3NJbkZyYWdtZW50KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihuZXcgTWVzc2FnZUZvcm1hdEVycm9yKFwiRXJyb3IgZm9ybWF0dGluZyBtZXNzYWdlOiBcXFwiXCIgKyBpZCArIFwiXFxcIiwgdXNpbmcgXCIgKyAoZGVmYXVsdE1lc3NhZ2UgPyAnZGVmYXVsdCBtZXNzYWdlJyA6ICdpZCcpICsgXCIgYXMgZmFsbGJhY2suXCIsIGxvY2FsZSwgbWVzc2FnZURlc2NyaXB0b3IsIGUpKTtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRNZXNzYWdlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZm9ybWF0dGVyID0gc3RhdGUuZ2V0TWVzc2FnZUZvcm1hdChkZWZhdWx0TWVzc2FnZSwgZGVmYXVsdExvY2FsZSwgZGVmYXVsdEZvcm1hdHMpO1xuICAgICAgICAgICAgcmV0dXJuIHByZXBhcmVJbnRsTWVzc2FnZUZvcm1hdEh0bWxPdXRwdXQoZm9ybWF0dGVyLmZvcm1hdChwYXRjaGVkVmFsdWVzKSwgd3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIG9uRXJyb3IobmV3IE1lc3NhZ2VGb3JtYXRFcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgdGhlIGRlZmF1bHQgbWVzc2FnZSBmb3I6IFxcXCJcIiArIGlkICsgXCJcXFwiLCByZW5kZXJpbmcgbWVzc2FnZSB2ZXJiYXRpbVwiLCBsb2NhbGUsIG1lc3NhZ2VEZXNjcmlwdG9yLCBlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2UgfHwgZGVmYXVsdE1lc3NhZ2UgfHwgaWQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIHNoYWxsb3dFcXVhbE9iamVjdHMob2JqQSwgb2JqQikge1xuICBpZiAob2JqQSA9PT0gb2JqQikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFvYmpBIHx8ICFvYmpCKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGFLZXlzID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKG9iakIpO1xuICB2YXIgbGVuID0gYUtleXMubGVuZ3RoO1xuXG4gIGlmIChiS2V5cy5sZW5ndGggIT09IGxlbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIga2V5ID0gYUtleXNbaV07XG5cbiAgICBpZiAob2JqQVtrZXldICE9PSBvYmpCW2tleV0gfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsT2JqZWN0cztcbiIsImltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybWF0RXJyb3IgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQnO1xuaW1wb3J0IHsgUmVhY3RJbnRsRXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG52YXIgTElTVF9GT1JNQVRfT1BUSU9OUyA9IFtcbiAgICAnbG9jYWxlTWF0Y2hlcicsXG4gICAgJ3R5cGUnLFxuICAgICdzdHlsZScsXG5dO1xudmFyIG5vdyA9IERhdGUubm93KCk7XG5mdW5jdGlvbiBnZW5lcmF0ZVRva2VuKGkpIHtcbiAgICByZXR1cm4gbm93ICsgXCJfXCIgKyBpICsgXCJfXCIgKyBub3c7XG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TGlzdChfYSwgZ2V0TGlzdEZvcm1hdCwgdmFsdWVzLCBvcHRpb25zKSB7XG4gICAgdmFyIGxvY2FsZSA9IF9hLmxvY2FsZSwgb25FcnJvciA9IF9hLm9uRXJyb3I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgTGlzdEZvcm1hdCA9IEludGwuTGlzdEZvcm1hdDtcbiAgICBpZiAoIUxpc3RGb3JtYXQpIHtcbiAgICAgICAgb25FcnJvcihuZXcgRm9ybWF0RXJyb3IoXCJJbnRsLkxpc3RGb3JtYXQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LlxcblRyeSBwb2x5ZmlsbGluZyBpdCB1c2luZyBcXFwiQGZvcm1hdGpzL2ludGwtbGlzdGZvcm1hdFxcXCJcXG5cIiwgXCJNSVNTSU5HX0lOVExfQVBJXCIgLyogTUlTU0lOR19JTlRMX0FQSSAqLykpO1xuICAgIH1cbiAgICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgTElTVF9GT1JNQVRfT1BUSU9OUyk7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHJpY2hWYWx1ZXNfMSA9IHt9O1xuICAgICAgICB2YXIgc2VyaWFsaXplZFZhbHVlcyA9IHZhbHVlcy5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBnZW5lcmF0ZVRva2VuKGkpO1xuICAgICAgICAgICAgICAgIHJpY2hWYWx1ZXNfMVtpZF0gPSB2O1xuICAgICAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHJpY2hWYWx1ZXNfMSkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TGlzdEZvcm1hdChsb2NhbGUsIGZpbHRlcmVkT3B0aW9ucykuZm9ybWF0KHNlcmlhbGl6ZWRWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYXJ0cyA9IGdldExpc3RGb3JtYXQobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpLmZvcm1hdFRvUGFydHMoc2VyaWFsaXplZFZhbHVlcyk7XG4gICAgICAgIHJldHVybiBwYXJ0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgZWwpIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgIGlmIChyaWNoVmFsdWVzXzFbdmFsXSkge1xuICAgICAgICAgICAgICAgIGFsbC5wdXNoKHJpY2hWYWx1ZXNfMVt2YWxdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhbGxbYWxsLmxlbmd0aCAtIDFdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGFsbFthbGwubGVuZ3RoIC0gMV0gKz0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxsLnB1c2godmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhbGw7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihuZXcgUmVhY3RJbnRsRXJyb3IoXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sICdFcnJvciBmb3JtYXR0aW5nIGxpc3QuJywgZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xufVxuIiwiaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGb3JtYXRFcnJvciB9IGZyb20gJ2ludGwtbWVzc2FnZWZvcm1hdCc7XG5pbXBvcnQgeyBSZWFjdEludGxFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbnZhciBESVNQTEFZX05BTUVTX09QVE9OUyA9IFtcbiAgICAnbG9jYWxlTWF0Y2hlcicsXG4gICAgJ3N0eWxlJyxcbiAgICAndHlwZScsXG4gICAgJ2ZhbGxiYWNrJyxcbl07XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlzcGxheU5hbWUoX2EsIGdldERpc3BsYXlOYW1lcywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICB2YXIgbG9jYWxlID0gX2EubG9jYWxlLCBvbkVycm9yID0gX2Eub25FcnJvcjtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBEaXNwbGF5TmFtZXMgPSBJbnRsLkRpc3BsYXlOYW1lcztcbiAgICBpZiAoIURpc3BsYXlOYW1lcykge1xuICAgICAgICBvbkVycm9yKG5ldyBGb3JtYXRFcnJvcihcIkludGwuRGlzcGxheU5hbWVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXFxcIkBmb3JtYXRqcy9pbnRsLWRpc3BsYXluYW1lc1xcXCJcXG5cIiwgXCJNSVNTSU5HX0lOVExfQVBJXCIgLyogTUlTU0lOR19JTlRMX0FQSSAqLykpO1xuICAgIH1cbiAgICB2YXIgZmlsdGVyZWRPcHRpb25zID0gZmlsdGVyUHJvcHMob3B0aW9ucywgRElTUExBWV9OQU1FU19PUFRPTlMpO1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZXMobG9jYWxlLCBmaWx0ZXJlZE9wdGlvbnMpLm9mKHZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgb25FcnJvcihuZXcgUmVhY3RJbnRsRXJyb3IoXCJGT1JNQVRfRVJST1JcIiAvKiBGT1JNQVRfRVJST1IgKi8sICdFcnJvciBmb3JtYXR0aW5nIGRpc3BsYXkgbmFtZS4nLCBlKSk7XG4gICAgfVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG4gKiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJy4vaW5qZWN0SW50bCc7XG5pbXBvcnQgeyBERUZBVUxUX0lOVExfQ09ORklHLCBjcmVhdGVGb3JtYXR0ZXJzLCBpbnZhcmlhbnRJbnRsQ29udGV4dCwgY3JlYXRlSW50bENhY2hlLCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0TnVtYmVyVG9QYXJ0cyB9IGZyb20gJy4uL2Zvcm1hdHRlcnMvbnVtYmVyJztcbmltcG9ydCB7IGZvcm1hdFJlbGF0aXZlVGltZSB9IGZyb20gJy4uL2Zvcm1hdHRlcnMvcmVsYXRpdmVUaW1lJztcbmltcG9ydCB7IGZvcm1hdERhdGUsIGZvcm1hdFRpbWUsIGZvcm1hdERhdGVUb1BhcnRzLCBmb3JtYXRUaW1lVG9QYXJ0cywgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL2RhdGVUaW1lJztcbmltcG9ydCB7IGZvcm1hdFBsdXJhbCB9IGZyb20gJy4uL2Zvcm1hdHRlcnMvcGx1cmFsJztcbmltcG9ydCB7IGZvcm1hdE1lc3NhZ2UgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL21lc3NhZ2UnO1xuaW1wb3J0ICogYXMgc2hhbGxvd0VxdWFsc18gZnJvbSAnc2hhbGxvdy1lcXVhbC9vYmplY3RzJztcbmltcG9ydCB7IGZvcm1hdExpc3QgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL2xpc3QnO1xuaW1wb3J0IHsgZm9ybWF0RGlzcGxheU5hbWUgfSBmcm9tICcuLi9mb3JtYXR0ZXJzL2Rpc3BsYXlOYW1lJztcbmltcG9ydCB7IEludmFsaWRDb25maWdFcnJvciwgTWlzc2luZ0RhdGFFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcbnZhciBzaGFsbG93RXF1YWxzID0gc2hhbGxvd0VxdWFsc18uZGVmYXVsdCB8fCBzaGFsbG93RXF1YWxzXztcbmZ1bmN0aW9uIHByb2Nlc3NJbnRsQ29uZmlnKGNvbmZpZykge1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2FsZTogY29uZmlnLmxvY2FsZSxcbiAgICAgICAgdGltZVpvbmU6IGNvbmZpZy50aW1lWm9uZSxcbiAgICAgICAgZm9ybWF0czogY29uZmlnLmZvcm1hdHMsXG4gICAgICAgIHRleHRDb21wb25lbnQ6IGNvbmZpZy50ZXh0Q29tcG9uZW50LFxuICAgICAgICBtZXNzYWdlczogY29uZmlnLm1lc3NhZ2VzLFxuICAgICAgICBkZWZhdWx0TG9jYWxlOiBjb25maWcuZGVmYXVsdExvY2FsZSxcbiAgICAgICAgZGVmYXVsdEZvcm1hdHM6IGNvbmZpZy5kZWZhdWx0Rm9ybWF0cyxcbiAgICAgICAgb25FcnJvcjogY29uZmlnLm9uRXJyb3IsXG4gICAgICAgIHdyYXBSaWNoVGV4dENodW5rc0luRnJhZ21lbnQ6IGNvbmZpZy53cmFwUmljaFRleHRDaHVua3NJbkZyYWdtZW50LFxuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZSBpbnRsIG9iamVjdFxuICogQHBhcmFtIGNvbmZpZyBpbnRsIGNvbmZpZ1xuICogQHBhcmFtIGNhY2hlIGNhY2hlIGZvciBmb3JtYXR0ZXIgaW5zdGFuY2VzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGwoY29uZmlnLCBjYWNoZSkge1xuICAgIHZhciBmb3JtYXR0ZXJzID0gY3JlYXRlRm9ybWF0dGVycyhjYWNoZSk7XG4gICAgdmFyIHJlc29sdmVkQ29uZmlnID0gX19hc3NpZ24oX19hc3NpZ24oe30sIERFRkFVTFRfSU5UTF9DT05GSUcpLCBjb25maWcpO1xuICAgIHZhciBsb2NhbGUgPSByZXNvbHZlZENvbmZpZy5sb2NhbGUsIGRlZmF1bHRMb2NhbGUgPSByZXNvbHZlZENvbmZpZy5kZWZhdWx0TG9jYWxlLCBvbkVycm9yID0gcmVzb2x2ZWRDb25maWcub25FcnJvcjtcbiAgICBpZiAoIWxvY2FsZSkge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcihuZXcgSW52YWxpZENvbmZpZ0Vycm9yKFwiXFxcImxvY2FsZVxcXCIgd2FzIG5vdCBjb25maWd1cmVkLCB1c2luZyBcXFwiXCIgKyBkZWZhdWx0TG9jYWxlICsgXCJcXFwiIGFzIGZhbGxiYWNrLiBTZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3JlYWN0LWludGwvYXBpI2ludGxzaGFwZSBmb3IgbW9yZSBkZXRhaWxzXCIpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaW5jZSB0aGVyZSdzIG5vIHJlZ2lzdGVyZWQgbG9jYWxlIGRhdGEgZm9yIGBsb2NhbGVgLCB0aGlzIHdpbGxcbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gdGhlIGBkZWZhdWx0TG9jYWxlYCB0byBtYWtlIHN1cmUgdGhpbmdzIGNhbiByZW5kZXIuXG4gICAgICAgIC8vIFRoZSBgbWVzc2FnZXNgIGFyZSBvdmVycmlkZGVuIHRvIHRoZSBgZGVmYXVsdFByb3BzYCBlbXB0eSBvYmplY3RcbiAgICAgICAgLy8gdG8gbWFpbnRhaW4gcmVmZXJlbnRpYWwgZXF1YWxpdHkgYWNyb3NzIHJlLXJlbmRlcnMuIEl0J3MgYXNzdW1lZFxuICAgICAgICAvLyBlYWNoIDxGb3JtYXR0ZWRNZXNzYWdlPiBjb250YWlucyBhIGBkZWZhdWx0TWVzc2FnZWAgcHJvcC5cbiAgICAgICAgcmVzb2x2ZWRDb25maWcubG9jYWxlID0gcmVzb2x2ZWRDb25maWcuZGVmYXVsdExvY2FsZSB8fCAnZW4nO1xuICAgIH1cbiAgICBlbHNlIGlmICghSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoICYmIG9uRXJyb3IpIHtcbiAgICAgICAgb25FcnJvcihuZXcgTWlzc2luZ0RhdGFFcnJvcihcIk1pc3NpbmcgbG9jYWxlIGRhdGEgZm9yIGxvY2FsZTogXFxcIlwiICsgbG9jYWxlICsgXCJcXFwiIGluIEludGwuTnVtYmVyRm9ybWF0LiBVc2luZyBkZWZhdWx0IGxvY2FsZTogXFxcIlwiICsgZGVmYXVsdExvY2FsZSArIFwiXFxcIiBhcyBmYWxsYmFjay4gU2VlIGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy9yZWFjdC1pbnRsI3J1bnRpbWUtcmVxdWlyZW1lbnRzIGZvciBtb3JlIGRldGFpbHNcIikpO1xuICAgIH1cbiAgICBlbHNlIGlmICghSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlKS5sZW5ndGggJiZcbiAgICAgICAgb25FcnJvcikge1xuICAgICAgICBvbkVycm9yKG5ldyBNaXNzaW5nRGF0YUVycm9yKFwiTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgbG9jYWxlOiBcXFwiXCIgKyBsb2NhbGUgKyBcIlxcXCIgaW4gSW50bC5EYXRlVGltZUZvcm1hdC4gVXNpbmcgZGVmYXVsdCBsb2NhbGU6IFxcXCJcIiArIGRlZmF1bHRMb2NhbGUgKyBcIlxcXCIgYXMgZmFsbGJhY2suIFNlZSBodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvcmVhY3QtaW50bCNydW50aW1lLXJlcXVpcmVtZW50cyBmb3IgbW9yZSBkZXRhaWxzXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXNvbHZlZENvbmZpZyksIHsgZm9ybWF0dGVyczogZm9ybWF0dGVycywgZm9ybWF0TnVtYmVyOiBmb3JtYXROdW1iZXIuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXROdW1iZXJGb3JtYXQpLCBmb3JtYXROdW1iZXJUb1BhcnRzOiBmb3JtYXROdW1iZXJUb1BhcnRzLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KSwgZm9ybWF0UmVsYXRpdmVUaW1lOiBmb3JtYXRSZWxhdGl2ZVRpbWUuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXRSZWxhdGl2ZVRpbWVGb3JtYXQpLCBmb3JtYXREYXRlOiBmb3JtYXREYXRlLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0RGF0ZVRpbWVGb3JtYXQpLCBmb3JtYXREYXRlVG9QYXJ0czogZm9ybWF0RGF0ZVRvUGFydHMuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXREYXRlVGltZUZvcm1hdCksIGZvcm1hdFRpbWU6IGZvcm1hdFRpbWUuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXREYXRlVGltZUZvcm1hdCksIGZvcm1hdFRpbWVUb1BhcnRzOiBmb3JtYXRUaW1lVG9QYXJ0cy5iaW5kKG51bGwsIHJlc29sdmVkQ29uZmlnLCBmb3JtYXR0ZXJzLmdldERhdGVUaW1lRm9ybWF0KSwgZm9ybWF0UGx1cmFsOiBmb3JtYXRQbHVyYWwuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXRQbHVyYWxSdWxlcyksIGZvcm1hdE1lc3NhZ2U6IGZvcm1hdE1lc3NhZ2UuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycyksIGZvcm1hdExpc3Q6IGZvcm1hdExpc3QuYmluZChudWxsLCByZXNvbHZlZENvbmZpZywgZm9ybWF0dGVycy5nZXRMaXN0Rm9ybWF0KSwgZm9ybWF0RGlzcGxheU5hbWU6IGZvcm1hdERpc3BsYXlOYW1lLmJpbmQobnVsbCwgcmVzb2x2ZWRDb25maWcsIGZvcm1hdHRlcnMuZ2V0RGlzcGxheU5hbWVzKSB9KTtcbn1cbnZhciBJbnRsUHJvdmlkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEludGxQcm92aWRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbnRsUHJvdmlkZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jYWNoZSA9IGNyZWF0ZUludGxDYWNoZSgpO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGNhY2hlOiBfdGhpcy5jYWNoZSxcbiAgICAgICAgICAgIGludGw6IGNyZWF0ZUludGwocHJvY2Vzc0ludGxDb25maWcoX3RoaXMucHJvcHMpLCBfdGhpcy5jYWNoZSksXG4gICAgICAgICAgICBwcmV2Q29uZmlnOiBwcm9jZXNzSW50bENvbmZpZyhfdGhpcy5wcm9wcyksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgSW50bFByb3ZpZGVyLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIChwcm9wcywgX2EpIHtcbiAgICAgICAgdmFyIHByZXZDb25maWcgPSBfYS5wcmV2Q29uZmlnLCBjYWNoZSA9IF9hLmNhY2hlO1xuICAgICAgICB2YXIgY29uZmlnID0gcHJvY2Vzc0ludGxDb25maWcocHJvcHMpO1xuICAgICAgICBpZiAoIXNoYWxsb3dFcXVhbHMocHJldkNvbmZpZywgY29uZmlnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbnRsOiBjcmVhdGVJbnRsKGNvbmZpZywgY2FjaGUpLFxuICAgICAgICAgICAgICAgIHByZXZDb25maWc6IGNvbmZpZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBJbnRsUHJvdmlkZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW52YXJpYW50SW50bENvbnRleHQodGhpcy5zdGF0ZS5pbnRsKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJvdmlkZXIsIHsgdmFsdWU6IHRoaXMuc3RhdGUuaW50bCB9LCB0aGlzLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9O1xuICAgIEludGxQcm92aWRlci5kaXNwbGF5TmFtZSA9ICdJbnRsUHJvdmlkZXInO1xuICAgIEludGxQcm92aWRlci5kZWZhdWx0UHJvcHMgPSBERUZBVUxUX0lOVExfQ09ORklHO1xuICAgIHJldHVybiBJbnRsUHJvdmlkZXI7XG59KFJlYWN0LlB1cmVDb21wb25lbnQpKTtcbmV4cG9ydCBkZWZhdWx0IEludGxQcm92aWRlcjtcbiIsInZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vaW5qZWN0SW50bCc7XG5pbXBvcnQgeyBpbnZhcmlhbnRJbnRsQ29udGV4dCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJ0Bmb3JtYXRqcy9pbnRsLXV0aWxzJztcbnZhciBNSU5VVEUgPSA2MDtcbnZhciBIT1VSID0gNjAgKiA2MDtcbnZhciBEQVkgPSA2MCAqIDYwICogMjQ7XG5mdW5jdGlvbiBzZWxlY3RVbml0KHNlY29uZHMpIHtcbiAgICB2YXIgYWJzVmFsdWUgPSBNYXRoLmFicyhzZWNvbmRzKTtcbiAgICBpZiAoYWJzVmFsdWUgPCBNSU5VVEUpIHtcbiAgICAgICAgcmV0dXJuICdzZWNvbmQnO1xuICAgIH1cbiAgICBpZiAoYWJzVmFsdWUgPCBIT1VSKSB7XG4gICAgICAgIHJldHVybiAnbWludXRlJztcbiAgICB9XG4gICAgaWYgKGFic1ZhbHVlIDwgREFZKSB7XG4gICAgICAgIHJldHVybiAnaG91cic7XG4gICAgfVxuICAgIHJldHVybiAnZGF5Jztcbn1cbmZ1bmN0aW9uIGdldER1cmF0aW9uSW5TZWNvbmRzKHVuaXQpIHtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICAgICAgcmV0dXJuIE1JTlVURTtcbiAgICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgICAgICByZXR1cm4gSE9VUjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBEQVk7XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsdWVUb1NlY29uZHModmFsdWUsIHVuaXQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAqIE1JTlVURTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAqIEhPVVI7XG4gICAgfVxufVxudmFyIElOQ1JFTUVOVEFCTEVfVU5JVFMgPSBbJ3NlY29uZCcsICdtaW51dGUnLCAnaG91ciddO1xuZnVuY3Rpb24gY2FuSW5jcmVtZW50KHVuaXQpIHtcbiAgICBpZiAodW5pdCA9PT0gdm9pZCAwKSB7IHVuaXQgPSAnc2Vjb25kJzsgfVxuICAgIHJldHVybiBJTkNSRU1FTlRBQkxFX1VOSVRTLmluY2x1ZGVzKHVuaXQpO1xufVxudmFyIEZvcm1hdHRlZFJlbGF0aXZlVGltZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRm9ybWF0dGVkUmVsYXRpdmVUaW1lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEZvcm1hdHRlZFJlbGF0aXZlVGltZShwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgLy8gUHVibGljIGZvciB0ZXN0aW5nXG4gICAgICAgIF90aGlzLl91cGRhdGVUaW1lciA9IG51bGw7XG4gICAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcHJldlVuaXQ6IF90aGlzLnByb3BzLnVuaXQsXG4gICAgICAgICAgICBwcmV2VmFsdWU6IF90aGlzLnByb3BzLnZhbHVlLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlSW5TZWNvbmRzOiBjYW5JbmNyZW1lbnQoX3RoaXMucHJvcHMudW5pdClcbiAgICAgICAgICAgICAgICA/IHZhbHVlVG9TZWNvbmRzKF90aGlzLnByb3BzLnZhbHVlLCBfdGhpcy5wcm9wcy51bml0KVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgfTtcbiAgICAgICAgaW52YXJpYW50KCFwcm9wcy51cGRhdGVJbnRlcnZhbEluU2Vjb25kcyB8fFxuICAgICAgICAgICAgISEocHJvcHMudXBkYXRlSW50ZXJ2YWxJblNlY29uZHMgJiYgY2FuSW5jcmVtZW50KHByb3BzLnVuaXQpKSwgJ0Nhbm5vdCBzY2hlZHVsZSB1cGRhdGUgd2l0aCB1bml0IGxvbmdlciB0aGFuIGhvdXInKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUucHJvdG90eXBlLnNjaGVkdWxlTmV4dFVwZGF0ZSA9IGZ1bmN0aW9uIChfYSwgX2IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHVwZGF0ZUludGVydmFsSW5TZWNvbmRzID0gX2EudXBkYXRlSW50ZXJ2YWxJblNlY29uZHMsIHVuaXQgPSBfYS51bml0O1xuICAgICAgICB2YXIgY3VycmVudFZhbHVlSW5TZWNvbmRzID0gX2IuY3VycmVudFZhbHVlSW5TZWNvbmRzO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlVGltZXIpO1xuICAgICAgICB0aGlzLl91cGRhdGVUaW1lciA9IG51bGw7XG4gICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gaW50ZXJ2YWwgYW5kIHdlIGNhbm5vdCBpbmNyZW1lbnQgdGhpcyB1bml0LCBkbyBub3RoaW5nXG4gICAgICAgIGlmICghdXBkYXRlSW50ZXJ2YWxJblNlY29uZHMgfHwgIWNhbkluY3JlbWVudCh1bml0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIG5leHQgaW50ZXJlc3RpbmcgdGltZVxuICAgICAgICB2YXIgbmV4dFZhbHVlSW5TZWNvbmRzID0gY3VycmVudFZhbHVlSW5TZWNvbmRzIC0gdXBkYXRlSW50ZXJ2YWxJblNlY29uZHM7XG4gICAgICAgIHZhciBuZXh0VW5pdCA9IHNlbGVjdFVuaXQobmV4dFZhbHVlSW5TZWNvbmRzKTtcbiAgICAgICAgLy8gV2UndmUgcmVhY2hlZCB0aGUgbWF4IGF1dG8gaW5jcmVtZW50YWJsZSB1bml0LCBkb24ndCBzY2hlZHVsZSBhbm90aGVyIHVwZGF0ZVxuICAgICAgICBpZiAobmV4dFVuaXQgPT09ICdkYXknKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHVuaXREdXJhdGlvbiA9IGdldER1cmF0aW9uSW5TZWNvbmRzKG5leHRVbml0KTtcbiAgICAgICAgdmFyIHJlbWFpbmRlciA9IG5leHRWYWx1ZUluU2Vjb25kcyAlIHVuaXREdXJhdGlvbjtcbiAgICAgICAgdmFyIHByZXZJbnRlcmVzdGluZ1ZhbHVlSW5TZWNvbmRzID0gbmV4dFZhbHVlSW5TZWNvbmRzIC0gcmVtYWluZGVyO1xuICAgICAgICB2YXIgbmV4dEludGVyZXN0aW5nVmFsdWVJblNlY29uZHMgPSBwcmV2SW50ZXJlc3RpbmdWYWx1ZUluU2Vjb25kcyA+PSBjdXJyZW50VmFsdWVJblNlY29uZHNcbiAgICAgICAgICAgID8gcHJldkludGVyZXN0aW5nVmFsdWVJblNlY29uZHMgLSB1bml0RHVyYXRpb25cbiAgICAgICAgICAgIDogcHJldkludGVyZXN0aW5nVmFsdWVJblNlY29uZHM7XG4gICAgICAgIHZhciBkZWxheUluU2Vjb25kcyA9IE1hdGguYWJzKG5leHRJbnRlcmVzdGluZ1ZhbHVlSW5TZWNvbmRzIC0gY3VycmVudFZhbHVlSW5TZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlSW5TZWNvbmRzOiBuZXh0SW50ZXJlc3RpbmdWYWx1ZUluU2Vjb25kcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBkZWxheUluU2Vjb25kcyAqIDFlMyk7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlTmV4dFVwZGF0ZSh0aGlzLnByb3BzLCB0aGlzLnN0YXRlKTtcbiAgICB9O1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlTmV4dFVwZGF0ZSh0aGlzLnByb3BzLCB0aGlzLnN0YXRlKTtcbiAgICB9O1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lcik7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWVyID0gbnVsbDtcbiAgICB9O1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiAocHJvcHMsIHN0YXRlKSB7XG4gICAgICAgIGlmIChwcm9wcy51bml0ICE9PSBzdGF0ZS5wcmV2VW5pdCB8fCBwcm9wcy52YWx1ZSAhPT0gc3RhdGUucHJldlZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXZWYWx1ZTogcHJvcHMudmFsdWUsXG4gICAgICAgICAgICAgICAgcHJldlVuaXQ6IHByb3BzLnVuaXQsXG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlSW5TZWNvbmRzOiBjYW5JbmNyZW1lbnQocHJvcHMudW5pdClcbiAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZVRvU2Vjb25kcyhwcm9wcy52YWx1ZSwgcHJvcHMudW5pdClcbiAgICAgICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIEZvcm1hdHRlZFJlbGF0aXZlVGltZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGludGwpIHtcbiAgICAgICAgICAgIGludmFyaWFudEludGxDb250ZXh0KGludGwpO1xuICAgICAgICAgICAgdmFyIGZvcm1hdFJlbGF0aXZlVGltZSA9IGludGwuZm9ybWF0UmVsYXRpdmVUaW1lLCBUZXh0ID0gaW50bC50ZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIHZhbHVlID0gX2EudmFsdWUsIHVuaXQgPSBfYS51bml0LCB1cGRhdGVJbnRlcnZhbEluU2Vjb25kcyA9IF9hLnVwZGF0ZUludGVydmFsSW5TZWNvbmRzO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZUluU2Vjb25kcyA9IF90aGlzLnN0YXRlLmN1cnJlbnRWYWx1ZUluU2Vjb25kcztcbiAgICAgICAgICAgIHZhciBjdXJyZW50VmFsdWUgPSB2YWx1ZSB8fCAwO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRVbml0ID0gdW5pdDtcbiAgICAgICAgICAgIGlmIChjYW5JbmNyZW1lbnQodW5pdCkgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgY3VycmVudFZhbHVlSW5TZWNvbmRzID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgIHVwZGF0ZUludGVydmFsSW5TZWNvbmRzKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBzZWxlY3RVbml0KGN1cnJlbnRWYWx1ZUluU2Vjb25kcyk7XG4gICAgICAgICAgICAgICAgdmFyIHVuaXREdXJhdGlvbiA9IGdldER1cmF0aW9uSW5TZWNvbmRzKGN1cnJlbnRVbml0KTtcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBNYXRoLnJvdW5kKGN1cnJlbnRWYWx1ZUluU2Vjb25kcyAvIHVuaXREdXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZm9ybWF0dGVkUmVsYXRpdmVUaW1lID0gZm9ybWF0UmVsYXRpdmVUaW1lKGN1cnJlbnRWYWx1ZSwgY3VycmVudFVuaXQsIF9fYXNzaWduKHt9LCBfdGhpcy5wcm9wcykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbihmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFRleHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBudWxsLCBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFJlbGF0aXZlVGltZTtcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRm9ybWF0dGVkUmVsYXRpdmVUaW1lLmRpc3BsYXlOYW1lID0gJ0Zvcm1hdHRlZFJlbGF0aXZlVGltZSc7XG4gICAgRm9ybWF0dGVkUmVsYXRpdmVUaW1lLmRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgIHVuaXQ6ICdzZWNvbmQnLFxuICAgIH07XG4gICAgcmV0dXJuIEZvcm1hdHRlZFJlbGF0aXZlVGltZTtcbn0oUmVhY3QuUHVyZUNvbXBvbmVudCkpO1xuZXhwb3J0IHsgRm9ybWF0dGVkUmVsYXRpdmVUaW1lIH07XG5leHBvcnQgZGVmYXVsdCBGb3JtYXR0ZWRSZWxhdGl2ZVRpbWU7XG4iLCIvKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS5cbiAqIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB3aXRoSW50bCBmcm9tICcuL2luamVjdEludGwnO1xudmFyIEZvcm1hdHRlZFBsdXJhbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB2YWx1ZSA9IHByb3BzLnZhbHVlLCBvdGhlciA9IHByb3BzLm90aGVyLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBfYSA9IHByb3BzLmludGwsIGZvcm1hdFBsdXJhbCA9IF9hLmZvcm1hdFBsdXJhbCwgVGV4dCA9IF9hLnRleHRDb21wb25lbnQ7XG4gICAgdmFyIHBsdXJhbENhdGVnb3J5ID0gZm9ybWF0UGx1cmFsKHZhbHVlLCBwcm9wcyk7XG4gICAgdmFyIGZvcm1hdHRlZFBsdXJhbCA9IHByb3BzW3BsdXJhbENhdGVnb3J5XSB8fCBvdGhlcjtcbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbihmb3JtYXR0ZWRQbHVyYWwpO1xuICAgIH1cbiAgICBpZiAoVGV4dCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBudWxsLCBmb3JtYXR0ZWRQbHVyYWwpO1xuICAgIH1cbiAgICAvLyBXb3JrIGFyb3VuZCBAdHlwZXMvcmVhY3Qgd2hlcmUgUmVhY3QuRkMgY2Fubm90IHJldHVybiBzdHJpbmdcbiAgICByZXR1cm4gZm9ybWF0dGVkUGx1cmFsO1xufTtcbkZvcm1hdHRlZFBsdXJhbC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgdHlwZTogJ2NhcmRpbmFsJyxcbn07XG5Gb3JtYXR0ZWRQbHVyYWwuZGlzcGxheU5hbWUgPSAnRm9ybWF0dGVkUGx1cmFsJztcbi8vIEV4cGxpY2l0bHkgYW5ub3RhdGUgdHlwZSBoZXJlIHRvIHdvcmthcm91bmQgQVBJIGV4dHJhY3RvcidzIGluYWJpbGl0eSB0byBoYW5kbGUgYGltcG9ydCgnLi9zb21lTW9kdWxlJylgXG4vLyB0eXBlIGFubm90YXRpb25zIHdoZW4gcm9sbGluZyB1cCBEVFMgZmlsZS5cbnZhciBGb3JtYXR0ZWRQbHVyYWxXaXRoSW50bCA9IHdpdGhJbnRsKEZvcm1hdHRlZFBsdXJhbCk7XG5leHBvcnQgZGVmYXVsdCBGb3JtYXR0ZWRQbHVyYWxXaXRoSW50bDtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28gSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLlxuICogU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG52YXIgX19zcHJlYWRBcnJheXMgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXlzKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xuICAgIHJldHVybiByO1xufTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2luamVjdEludGwnO1xuaW1wb3J0IHsgaW52YXJpYW50SW50bENvbnRleHQgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgKiBhcyBzaGFsbG93RXF1YWxzXyBmcm9tICdzaGFsbG93LWVxdWFsL29iamVjdHMnO1xudmFyIHNoYWxsb3dFcXVhbHMgPSBzaGFsbG93RXF1YWxzXy5kZWZhdWx0IHx8IHNoYWxsb3dFcXVhbHNfO1xudmFyIEZvcm1hdHRlZE1lc3NhZ2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZvcm1hdHRlZE1lc3NhZ2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRm9ybWF0dGVkTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBGb3JtYXR0ZWRNZXNzYWdlLnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiAobmV4dFByb3BzKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIHZhbHVlcyA9IF9hLnZhbHVlcywgb3RoZXJQcm9wcyA9IF9fcmVzdChfYSwgW1widmFsdWVzXCJdKTtcbiAgICAgICAgdmFyIG5leHRWYWx1ZXMgPSBuZXh0UHJvcHMudmFsdWVzLCBuZXh0T3RoZXJQcm9wcyA9IF9fcmVzdChuZXh0UHJvcHMsIFtcInZhbHVlc1wiXSk7XG4gICAgICAgIHJldHVybiAoIXNoYWxsb3dFcXVhbHMobmV4dFZhbHVlcywgdmFsdWVzKSB8fFxuICAgICAgICAgICAgIXNoYWxsb3dFcXVhbHMob3RoZXJQcm9wcywgbmV4dE90aGVyUHJvcHMpKTtcbiAgICB9O1xuICAgIEZvcm1hdHRlZE1lc3NhZ2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChpbnRsKSB7XG4gICAgICAgICAgICBpbnZhcmlhbnRJbnRsQ29udGV4dChpbnRsKTtcbiAgICAgICAgICAgIHZhciBmb3JtYXRNZXNzYWdlID0gaW50bC5mb3JtYXRNZXNzYWdlLCBfYSA9IGludGwudGV4dENvbXBvbmVudCwgVGV4dCA9IF9hID09PSB2b2lkIDAgPyBSZWFjdC5GcmFnbWVudCA6IF9hO1xuICAgICAgICAgICAgdmFyIF9iID0gX3RoaXMucHJvcHMsIGlkID0gX2IuaWQsIGRlc2NyaXB0aW9uID0gX2IuZGVzY3JpcHRpb24sIGRlZmF1bHRNZXNzYWdlID0gX2IuZGVmYXVsdE1lc3NhZ2UsIHZhbHVlcyA9IF9iLnZhbHVlcywgY2hpbGRyZW4gPSBfYi5jaGlsZHJlbiwgX2MgPSBfYi50YWdOYW1lLCBDb21wb25lbnQgPSBfYyA9PT0gdm9pZCAwID8gVGV4dCA6IF9jO1xuICAgICAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSB7IGlkOiBpZCwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBkZWZhdWx0TWVzc2FnZTogZGVmYXVsdE1lc3NhZ2UgfTtcbiAgICAgICAgICAgIHZhciBub2RlcyA9IGZvcm1hdE1lc3NhZ2UoZGVzY3JpcHRvciwgdmFsdWVzKTtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlcykpIHtcbiAgICAgICAgICAgICAgICBub2RlcyA9IFtub2Rlc107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuKG5vZGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBOZWVkcyB0byB1c2UgYGNyZWF0ZUVsZW1lbnQoKWAgaW5zdGVhZCBvZiBKU1gsIG90aGVyd2lzZSBSZWFjdCB3aWxsXG4gICAgICAgICAgICAgICAgLy8gd2FybiBhYm91dCBhIG1pc3NpbmcgYGtleWAgcHJvcCB3aXRoIHJpY2gtdGV4dCBtZXNzYWdlIGZvcm1hdHRpbmcuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkoUmVhY3QsIF9fc3ByZWFkQXJyYXlzKFtDb21wb25lbnQsIG51bGxdLCBub2RlcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBGb3JtYXR0ZWRNZXNzYWdlLmRpc3BsYXlOYW1lID0gJ0Zvcm1hdHRlZE1lc3NhZ2UnO1xuICAgIHJldHVybiBGb3JtYXR0ZWRNZXNzYWdlO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCBkZWZhdWx0IEZvcm1hdHRlZE1lc3NhZ2U7XG4iLCJpbXBvcnQgeyBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQsIGNyZWF0ZUZvcm1hdHRlZERhdGVUaW1lUGFydHNDb21wb25lbnQsIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9jcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQnO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZU1lc3NhZ2VzKG1zZ3MpIHtcbiAgICByZXR1cm4gbXNncztcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVNZXNzYWdlKG1zZykge1xuICAgIHJldHVybiBtc2c7XG59XG5leHBvcnQgeyBkZWZhdWx0IGFzIGluamVjdEludGwsIFByb3ZpZGVyIGFzIFJhd0ludGxQcm92aWRlciwgQ29udGV4dCBhcyBJbnRsQ29udGV4dCwgfSBmcm9tICcuL3NyYy9jb21wb25lbnRzL2luamVjdEludGwnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJbnRsIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy91c2VJbnRsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW50bFByb3ZpZGVyLCBjcmVhdGVJbnRsIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9wcm92aWRlcic7XG4vLyBJTVBPUlRBTlQ6IEV4cGxpY2l0IGhlcmUgdG8gcHJldmVudCBhcGktZXh0cmFjdG9yIGZyb20gb3V0cHV0aW5nIGBpbXBvcnQoJy4vc3JjL3R5cGVzJykuQ3VzdG9tRm9ybWF0Q29uZmlnYFxuZXhwb3J0IHZhciBGb3JtYXR0ZWREYXRlID0gY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50KCdmb3JtYXREYXRlJyk7XG5leHBvcnQgdmFyIEZvcm1hdHRlZFRpbWUgPSBjcmVhdGVGb3JtYXR0ZWRDb21wb25lbnQoJ2Zvcm1hdFRpbWUnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkTnVtYmVyID0gY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50KCdmb3JtYXROdW1iZXInKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkTGlzdCA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0TGlzdCcpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWREaXNwbGF5TmFtZSA9IGNyZWF0ZUZvcm1hdHRlZENvbXBvbmVudCgnZm9ybWF0RGlzcGxheU5hbWUnKTtcbmV4cG9ydCB2YXIgRm9ybWF0dGVkRGF0ZVBhcnRzID0gY3JlYXRlRm9ybWF0dGVkRGF0ZVRpbWVQYXJ0c0NvbXBvbmVudCgnZm9ybWF0RGF0ZScpO1xuZXhwb3J0IHZhciBGb3JtYXR0ZWRUaW1lUGFydHMgPSBjcmVhdGVGb3JtYXR0ZWREYXRlVGltZVBhcnRzQ29tcG9uZW50KCdmb3JtYXRUaW1lJyk7XG5leHBvcnQgeyBGb3JtYXR0ZWROdW1iZXJQYXJ0cyB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvY3JlYXRlRm9ybWF0dGVkQ29tcG9uZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9ybWF0dGVkUmVsYXRpdmVUaW1lIH0gZnJvbSAnLi9zcmMvY29tcG9uZW50cy9yZWxhdGl2ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEZvcm1hdHRlZFBsdXJhbCB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvcGx1cmFsJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRm9ybWF0dGVkTWVzc2FnZSB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvbWVzc2FnZSc7XG5leHBvcnQgeyBjcmVhdGVJbnRsQ2FjaGUgfSBmcm9tICcuL3NyYy91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9lcnJvcic7XG4iXSwibmFtZXMiOlsidGhpcyIsInR5cGVzXzEiLCJwYXJzZXJfMSIsInJlcXVpcmUkJDAiLCJyZXF1aXJlJCQxIiwibm9ybWFsaXplXzEiLCJpbnRsX21lc3NhZ2Vmb3JtYXRfcGFyc2VyXzEiLCJlcnJvcl8xIiwibWVtb2l6ZSIsImZvcm1hdHRlcnNfMSIsImNvcmVfMSIsInVuaXRzXzEiLCJwb2x5ZmlsbF91dGlsc18xIiwiZGlmZl8xIiwicmVzb2x2ZV9sb2NhbGVfMSIsIlJlYWN0SW50bEVycm9yQ29kZSIsImludmFyaWFudCIsIlJlYWN0LkZyYWdtZW50IiwibWVtb2l6ZS5kZWZhdWx0IiwiSW50bE1lc3NhZ2VGb3JtYXQiLCJSZWFjdC5DaGlsZHJlbiIsIl9fYXNzaWduIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJob2lzdE5vblJlYWN0U3RhdGljc18uZGVmYXVsdCIsIlJlYWN0LmNyZWF0ZUNvbnRleHQiLCJSZWFjdC5jcmVhdGVFbGVtZW50IiwiUmVhY3QuZm9yd2FyZFJlZiIsIlJlYWN0LnVzZUNvbnRleHQiLCJnZXRGb3JtYXR0ZXIiLCJGb3JtYXRFcnJvciIsIl9fc3ByZWFkQXJyYXlzIiwiaXNGb3JtYXRYTUxFbGVtZW50Rm4iLCJUWVBFIiwiX19leHRlbmRzIiwic2hhbGxvd0VxdWFsc18uZGVmYXVsdCIsIkludGxQcm92aWRlciIsIlJlYWN0LlB1cmVDb21wb25lbnQiLCJ3aXRoSW50bCIsIl9fcmVzdCIsInNoYWxsb3dFcXVhbHMiLCJSZWFjdC5Db21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Q0FDOUQsSUFBSSxJQUFJLENBQUM7Q0FDVCxDQUFDLFVBQVUsSUFBSSxFQUFFO0NBQ2pCO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Q0FDMUM7Q0FDQTtDQUNBO0NBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztDQUM1QztDQUNBO0NBQ0E7Q0FDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0NBQ3hDO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxN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QUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0NBQzVLLElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztDQUN6RCxJQUFJLElBQUksT0FBTyxHQUFHLHlPQUF5TyxDQUFDO0NBQzVQLElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUs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QUMsQ0FBQyxDQUFDO0NBQzVDLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3JDO0NBQ0E7Q0FDQTtDQUNBLElBQUksSUFBSSxDQUFDLENBQUM7Q0FDVixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRTtDQUNsQixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDekIsS0FBSztDQUNMLFNBQVM7Q0FDVCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Q0FDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNsRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztDQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbkUsS0FBSztDQUNMLElBQUksSUFBSSxHQUFHLENBQUM7Q0FDWixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtDQUNqQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Q0FDcEIsWUFBWSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN0QixZQUFZ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
|