util-helpers 4.0.4 → 4.0.8
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/dist/util-helpers.js +120 -76
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/divide.js +17 -8
- package/esm/formatBankCard.js +1 -1
- package/esm/formatMoney.js +7 -5
- package/esm/isBusinessLicense.js +2 -2
- package/esm/isSocialCreditCode.js +2 -2
- package/esm/minus.js +17 -8
- package/esm/parseIdCard.js +2 -2
- package/esm/plus.js +17 -8
- package/esm/replaceChar.js +9 -11
- package/esm/times.js +17 -8
- package/esm/utils/convertToString.js +2 -11
- package/esm/utils/math.util.js +4 -5
- package/lib/divide.js +29 -8
- package/lib/formatBankCard.js +1 -1
- package/lib/formatMoney.js +6 -5
- package/lib/isBusinessLicense.js +2 -2
- package/lib/isSocialCreditCode.js +2 -2
- package/lib/minus.js +29 -8
- package/lib/parseIdCard.js +2 -2
- package/lib/plus.js +29 -8
- package/lib/replaceChar.js +9 -11
- package/lib/times.js +29 -8
- package/lib/utils/convertToString.js +2 -12
- package/lib/utils/math.util.js +4 -3
- package/package.json +2 -2
- package/types/divide.d.ts +2 -4
- package/types/minus.d.ts +2 -4
- package/types/parseIdCard.d.ts +15 -2
- package/types/plus.d.ts +2 -4
- package/types/replaceChar.d.ts +3 -3
- package/types/times.d.ts +2 -4
- package/types/utils/convertToString.d.ts +2 -2
- package/types/utils/math.util.d.ts +7 -0
package/dist/util-helpers.js
CHANGED
|
@@ -39,36 +39,14 @@
|
|
|
39
39
|
return isType(value, 'String');
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
const config = {
|
|
43
|
-
// 禁用warning提示
|
|
44
|
-
disableWarning: true
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 设置禁止warning提示
|
|
49
|
-
* @static
|
|
50
|
-
* @alias module:Debug.formatBankCard
|
|
51
|
-
* @since 3.6.1
|
|
52
|
-
* @param {boolean} bool 是否禁止warning提示
|
|
53
|
-
*/
|
|
54
|
-
function setDisableWarning(bool) {
|
|
55
|
-
config.disableWarning = !!bool;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
42
|
/**
|
|
59
43
|
* 转换为字符串
|
|
60
44
|
*
|
|
61
45
|
* @param {*} value 值
|
|
62
|
-
* @returns 字符串
|
|
46
|
+
* @returns {string} 字符串
|
|
63
47
|
*/
|
|
64
48
|
function convertToString(value) {
|
|
65
|
-
|
|
66
|
-
if (!config.disableWarning) {
|
|
67
|
-
console.warn(`[validatePassword] value must be a string.`);
|
|
68
|
-
}
|
|
69
|
-
return String(value);
|
|
70
|
-
}
|
|
71
|
-
return value;
|
|
49
|
+
return isString(value) ? value : String(value);
|
|
72
50
|
}
|
|
73
51
|
|
|
74
52
|
// 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字
|
|
@@ -470,15 +448,31 @@
|
|
|
470
448
|
}
|
|
471
449
|
|
|
472
450
|
// 前17位
|
|
473
|
-
const preCode = valueStr.
|
|
451
|
+
const preCode = valueStr.substring(0, 17);
|
|
474
452
|
// 校验码
|
|
475
|
-
const lastCode = valueStr.
|
|
453
|
+
const lastCode = valueStr.substring(valueStr.length - 1);
|
|
476
454
|
// 计算校验码
|
|
477
455
|
const checkCode = sumCheckCode$1(preCode);
|
|
478
456
|
|
|
479
457
|
return lastCode === checkCode;
|
|
480
458
|
}
|
|
481
459
|
|
|
460
|
+
const config = {
|
|
461
|
+
// 禁用warning提示
|
|
462
|
+
disableWarning: true
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* 设置禁止warning提示
|
|
467
|
+
* @static
|
|
468
|
+
* @alias module:Debug.formatBankCard
|
|
469
|
+
* @since 3.6.1
|
|
470
|
+
* @param {boolean} bool 是否禁止warning提示
|
|
471
|
+
*/
|
|
472
|
+
function setDisableWarning(bool) {
|
|
473
|
+
config.disableWarning = !!bool;
|
|
474
|
+
}
|
|
475
|
+
|
|
482
476
|
const regNumber = /[\d]/;
|
|
483
477
|
const regLowerCaseLetter = /[a-z]/;
|
|
484
478
|
const regUpperCaseLetter = /[A-Z]/;
|
|
@@ -1063,9 +1057,9 @@
|
|
|
1063
1057
|
}
|
|
1064
1058
|
|
|
1065
1059
|
// 前14位
|
|
1066
|
-
const preCode = valueStr.
|
|
1060
|
+
const preCode = valueStr.substring(0, 14);
|
|
1067
1061
|
// 校验码
|
|
1068
|
-
const lastCode = valueStr.
|
|
1062
|
+
const lastCode = valueStr.substring(valueStr.length - 1);
|
|
1069
1063
|
// 计算校验码
|
|
1070
1064
|
const checkCode = sumCheckCode(preCode);
|
|
1071
1065
|
|
|
@@ -1214,14 +1208,14 @@
|
|
|
1214
1208
|
* @returns {string}
|
|
1215
1209
|
*/
|
|
1216
1210
|
function trimLeftZero(num) {
|
|
1217
|
-
const reg = /^([+-])?(0+)([
|
|
1211
|
+
const reg = /^([+-])?(0+)([0-9\.]+)$/;
|
|
1218
1212
|
const result = reg.exec(num);
|
|
1219
1213
|
|
|
1220
1214
|
let sign;
|
|
1221
1215
|
|
|
1222
1216
|
if (result) {
|
|
1223
1217
|
sign = result[1] || '';
|
|
1224
|
-
return sign + result[3];
|
|
1218
|
+
return sign + (result[3][0] === '.' ? '0' + result[3] : result[3]);
|
|
1225
1219
|
}
|
|
1226
1220
|
|
|
1227
1221
|
return num;
|
|
@@ -1257,7 +1251,7 @@
|
|
|
1257
1251
|
|
|
1258
1252
|
//如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数
|
|
1259
1253
|
if (l - dec.length < 0) {
|
|
1260
|
-
num = trimLeftZero(coeff_array[0] + dec.
|
|
1254
|
+
num = trimLeftZero(coeff_array[0] + dec.substring(0, l)) + '.' + dec.substring(l);
|
|
1261
1255
|
} else {
|
|
1262
1256
|
//拼接字符串,如果是整数,不需要拼接小数点
|
|
1263
1257
|
num = coeff_array.join('') + new Array(l - dec.length + 1).join(zero);
|
|
@@ -1295,7 +1289,7 @@
|
|
|
1295
1289
|
*
|
|
1296
1290
|
* @private
|
|
1297
1291
|
* @param {string} num
|
|
1298
|
-
* @returns
|
|
1292
|
+
* @returns 是否为数字
|
|
1299
1293
|
*/
|
|
1300
1294
|
function checkNumber(num) {
|
|
1301
1295
|
if (!(reg.test(num) || isScientificNumber(num)) || _isNaN(num) || (typeof num !== 'number' && typeof num !== 'string') || num === '') {
|
|
@@ -1325,9 +1319,10 @@
|
|
|
1325
1319
|
*/
|
|
1326
1320
|
function formatInt(intStr, thousand) {
|
|
1327
1321
|
let txt = '';
|
|
1328
|
-
intStr = intStr
|
|
1322
|
+
intStr = trimLeftZero(intStr);
|
|
1323
|
+
intStr = intStr[0] === '+' ? intStr.substring(1) : intStr; // 去掉+符号
|
|
1329
1324
|
const negativeSymbol = Number(intStr) < 0 ? '-' : '';
|
|
1330
|
-
const reArr = negativeSymbol ? intStr.
|
|
1325
|
+
const reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
|
|
1331
1326
|
|
|
1332
1327
|
for (let i = 0; i < reArr.length; i++) {
|
|
1333
1328
|
txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');
|
|
@@ -1355,9 +1350,9 @@
|
|
|
1355
1350
|
|
|
1356
1351
|
if (decStr && Number(decStr) > 0) {
|
|
1357
1352
|
let tmpNum = parseFloat('0.' + decStr);
|
|
1358
|
-
ret = tmpNum.toFixed(precision).
|
|
1353
|
+
ret = tmpNum.toFixed(precision).substring(2);
|
|
1359
1354
|
} else {
|
|
1360
|
-
ret = zero.toFixed(precision).
|
|
1355
|
+
ret = zero.toFixed(precision).substring(2);
|
|
1361
1356
|
}
|
|
1362
1357
|
|
|
1363
1358
|
return decimal + ret;
|
|
@@ -1471,7 +1466,7 @@
|
|
|
1471
1466
|
|
|
1472
1467
|
const str = realValue.replace(reg, `$1${char}`);
|
|
1473
1468
|
|
|
1474
|
-
return needRemoveLastChar ? str.
|
|
1469
|
+
return needRemoveLastChar ? str.substring(0, str.length - 1) : str;
|
|
1475
1470
|
}
|
|
1476
1471
|
|
|
1477
1472
|
/**
|
|
@@ -1512,11 +1507,11 @@
|
|
|
1512
1507
|
* // => 6228 **** **** **** 018
|
|
1513
1508
|
*
|
|
1514
1509
|
* // 用户名
|
|
1515
|
-
* replaceChar('林某某', {start: 1, end:
|
|
1510
|
+
* replaceChar('林某某', {start: 1, end: Infinity, repeat: 2});
|
|
1516
1511
|
* // => 林**
|
|
1517
|
-
* replaceChar('林某', {start: 1, end:
|
|
1512
|
+
* replaceChar('林某', {start: 1, end: Infinity, repeat: 2});
|
|
1518
1513
|
* // => 林**
|
|
1519
|
-
* replaceChar('林某某某', {start: 1, end:
|
|
1514
|
+
* replaceChar('林某某某', {start: 1, end: Infinity, repeat: 2});
|
|
1520
1515
|
* // => 林**
|
|
1521
1516
|
*
|
|
1522
1517
|
*/
|
|
@@ -1528,28 +1523,25 @@
|
|
|
1528
1523
|
return str;
|
|
1529
1524
|
}
|
|
1530
1525
|
|
|
1531
|
-
start = start >= 0 ?
|
|
1532
|
-
end = end >= 0 ?
|
|
1526
|
+
start = start >= 0 ? start : strLen + start;
|
|
1527
|
+
end = end >= 0 ? end : strLen + end;
|
|
1533
1528
|
|
|
1534
1529
|
// 开始位置大于结束位置
|
|
1535
1530
|
if (start >= end) {
|
|
1536
1531
|
return str;
|
|
1537
1532
|
}
|
|
1538
1533
|
|
|
1539
|
-
let middleStr =
|
|
1534
|
+
let middleStr = str.substring(start, end);
|
|
1540
1535
|
|
|
1541
1536
|
if (exclude) {
|
|
1542
|
-
repeat = Math.round(end - start);
|
|
1543
|
-
|
|
1544
|
-
const maskStr = str.substr(start, repeat);
|
|
1545
1537
|
const reg = new RegExp(`[^${exclude}]`, 'g');
|
|
1546
|
-
middleStr =
|
|
1538
|
+
middleStr = middleStr.replace(reg, char);
|
|
1547
1539
|
} else {
|
|
1548
|
-
repeat = typeof repeat === 'number' && repeat >= 0 ? repeat :
|
|
1540
|
+
repeat = typeof repeat === 'number' && repeat >= 0 ? repeat : middleStr.length;
|
|
1549
1541
|
middleStr = char.repeat(repeat);
|
|
1550
1542
|
}
|
|
1551
1543
|
|
|
1552
|
-
return str.
|
|
1544
|
+
return str.substring(0, start) + middleStr + str.substring(end);
|
|
1553
1545
|
}
|
|
1554
1546
|
|
|
1555
1547
|
// 简体
|
|
@@ -1907,7 +1899,7 @@
|
|
|
1907
1899
|
* @since 4.0.0
|
|
1908
1900
|
* @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
|
|
1909
1901
|
* @param {string} id 身份证号码,支持15位
|
|
1910
|
-
* @returns
|
|
1902
|
+
* @returns null 或 省份、生日、性别,省/市/区/年/月/日/性别编码
|
|
1911
1903
|
* @example
|
|
1912
1904
|
* parseIdCard('123456789123456');
|
|
1913
1905
|
* // => null
|
|
@@ -1980,7 +1972,7 @@
|
|
|
1980
1972
|
|
|
1981
1973
|
const birthday = `${origin.year}-${origin.month}-${origin.day}`;
|
|
1982
1974
|
const gender = Number(origin.gender) % 2 === 0 ? '女' : '男';
|
|
1983
|
-
// const region = Regions.find(item => item[0] === origin.province?.
|
|
1975
|
+
// const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));
|
|
1984
1976
|
|
|
1985
1977
|
return {
|
|
1986
1978
|
// region,
|
|
@@ -1991,15 +1983,42 @@
|
|
|
1991
1983
|
};
|
|
1992
1984
|
}
|
|
1993
1985
|
|
|
1986
|
+
/**
|
|
1987
|
+
* 检查值是否为Number
|
|
1988
|
+
*
|
|
1989
|
+
* @static
|
|
1990
|
+
* @alias module:Type.isNumber
|
|
1991
|
+
* @since 1.1.0
|
|
1992
|
+
* @param {*} value 检查值
|
|
1993
|
+
* @returns {boolean} 是否为Number
|
|
1994
|
+
* @example
|
|
1995
|
+
*
|
|
1996
|
+
* isNumber(1)
|
|
1997
|
+
* // => true
|
|
1998
|
+
*
|
|
1999
|
+
* isNumber(Number.MIN_VALUE)
|
|
2000
|
+
* // => true
|
|
2001
|
+
*
|
|
2002
|
+
* isNumber(Infinity)
|
|
2003
|
+
* // => true
|
|
2004
|
+
*
|
|
2005
|
+
* isNumber(NaN)
|
|
2006
|
+
* // => true
|
|
2007
|
+
*
|
|
2008
|
+
* isNumber('1')
|
|
2009
|
+
* // => false
|
|
2010
|
+
*/
|
|
2011
|
+
function isNumber(value) {
|
|
2012
|
+
return isType(value, 'Number');
|
|
2013
|
+
}
|
|
2014
|
+
|
|
1994
2015
|
/**
|
|
1995
2016
|
* 精确乘法,支持多个数相乘
|
|
1996
2017
|
*
|
|
1997
2018
|
* @static
|
|
1998
2019
|
* @alias module:Math.times
|
|
1999
2020
|
* @since 3.1.0
|
|
2000
|
-
* @param {number|string}
|
|
2001
|
-
* @param {number|string} num2 相乘的第二个数
|
|
2002
|
-
* @param {...number|string} others 相乘的其余数
|
|
2021
|
+
* @param {...number|string} nums 相乘的数
|
|
2003
2022
|
* @returns {number} 乘积
|
|
2004
2023
|
* @example
|
|
2005
2024
|
*
|
|
@@ -2012,11 +2031,18 @@
|
|
|
2012
2031
|
* times(3, 0.6, 2, 10);
|
|
2013
2032
|
* // => 36
|
|
2014
2033
|
*/
|
|
2015
|
-
function times(
|
|
2016
|
-
|
|
2034
|
+
function times(...nums) {
|
|
2035
|
+
const [num1, num2, ...rest] = nums;
|
|
2036
|
+
if (rest.length > 0) {
|
|
2037
|
+
return times(times(num1, num2), ...rest);
|
|
2038
|
+
}
|
|
2039
|
+
|
|
2040
|
+
// 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
|
|
2041
|
+
if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
|
|
2017
2042
|
// @ts-ignore
|
|
2018
|
-
return
|
|
2043
|
+
return num1;
|
|
2019
2044
|
}
|
|
2045
|
+
|
|
2020
2046
|
const num1Changed = float2Fixed(num1);
|
|
2021
2047
|
const num2Changed = float2Fixed(num2);
|
|
2022
2048
|
const baseNum = digitLength(num1) + digitLength(num2);
|
|
@@ -2033,9 +2059,7 @@
|
|
|
2033
2059
|
* @static
|
|
2034
2060
|
* @alias module:Math.plus
|
|
2035
2061
|
* @since 3.1.0
|
|
2036
|
-
* @param {number|string}
|
|
2037
|
-
* @param {number|string} num2 相加的第二个数
|
|
2038
|
-
* @param {...number|string} others 相加的其余数
|
|
2062
|
+
* @param {...number|string} nums 相加的数
|
|
2039
2063
|
* @returns {number} 总和
|
|
2040
2064
|
* @example
|
|
2041
2065
|
*
|
|
@@ -2048,11 +2072,19 @@
|
|
|
2048
2072
|
* plus(0.1, 0.2, 0.3, 0.4);
|
|
2049
2073
|
* // => 1
|
|
2050
2074
|
*/
|
|
2051
|
-
function plus(
|
|
2052
|
-
|
|
2075
|
+
function plus(...nums) {
|
|
2076
|
+
const [num1, num2, ...rest] = nums;
|
|
2077
|
+
|
|
2078
|
+
if (rest.length > 0) {
|
|
2079
|
+
return plus(plus(num1, num2), ...rest);
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
// 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
|
|
2083
|
+
if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
|
|
2053
2084
|
// @ts-ignore
|
|
2054
|
-
return
|
|
2085
|
+
return num1;
|
|
2055
2086
|
}
|
|
2087
|
+
|
|
2056
2088
|
const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
|
|
2057
2089
|
return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
|
|
2058
2090
|
}
|
|
@@ -2063,9 +2095,7 @@
|
|
|
2063
2095
|
* @static
|
|
2064
2096
|
* @alias module:Math.minus
|
|
2065
2097
|
* @since 3.1.0
|
|
2066
|
-
* @param {number|string}
|
|
2067
|
-
* @param {number|string} num2 相减的第二个数
|
|
2068
|
-
* @param {...number|string} others 相减的第其余数
|
|
2098
|
+
* @param {...number|string} nums 相减的数
|
|
2069
2099
|
* @returns {number} 差
|
|
2070
2100
|
* @example
|
|
2071
2101
|
*
|
|
@@ -2078,11 +2108,19 @@
|
|
|
2078
2108
|
* minus(1, 0.9, 0.02, 0.08);
|
|
2079
2109
|
* // => 0
|
|
2080
2110
|
*/
|
|
2081
|
-
function minus(
|
|
2082
|
-
|
|
2111
|
+
function minus(...nums) {
|
|
2112
|
+
const [num1, num2, ...rest] = nums;
|
|
2113
|
+
|
|
2114
|
+
if (rest.length > 0) {
|
|
2115
|
+
return minus(minus(num1, num2), ...rest);
|
|
2116
|
+
}
|
|
2117
|
+
|
|
2118
|
+
// 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
|
|
2119
|
+
if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
|
|
2083
2120
|
// @ts-ignore
|
|
2084
|
-
return
|
|
2121
|
+
return num1;
|
|
2085
2122
|
}
|
|
2123
|
+
|
|
2086
2124
|
const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
|
|
2087
2125
|
return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
|
|
2088
2126
|
}
|
|
@@ -2093,9 +2131,7 @@
|
|
|
2093
2131
|
* @static
|
|
2094
2132
|
* @alias module:Math.divide
|
|
2095
2133
|
* @since 3.1.0
|
|
2096
|
-
* @param {number|string}
|
|
2097
|
-
* @param {number|string} num2 被除数
|
|
2098
|
-
* @param {...number|string} others 其余被除数
|
|
2134
|
+
* @param {...number|string} nums 除数和被除数
|
|
2099
2135
|
* @returns {number} 商数
|
|
2100
2136
|
* @example
|
|
2101
2137
|
*
|
|
@@ -2108,11 +2144,19 @@
|
|
|
2108
2144
|
* divide(1000, 10, 10, 10);
|
|
2109
2145
|
* // => 1
|
|
2110
2146
|
*/
|
|
2111
|
-
function divide(
|
|
2112
|
-
|
|
2147
|
+
function divide(...nums) {
|
|
2148
|
+
const [num1, num2, ...rest] = nums;
|
|
2149
|
+
|
|
2150
|
+
if (rest.length > 0) {
|
|
2151
|
+
return divide(divide(num1, num2), ...rest);
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
// 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
|
|
2155
|
+
if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
|
|
2113
2156
|
// @ts-ignore
|
|
2114
|
-
return
|
|
2157
|
+
return num1;
|
|
2115
2158
|
}
|
|
2159
|
+
|
|
2116
2160
|
const num1Changed = float2Fixed(num1);
|
|
2117
2161
|
const num2Changed = float2Fixed(num2);
|
|
2118
2162
|
checkBoundary(num1Changed);
|
|
@@ -2183,4 +2227,4 @@
|
|
|
2183
2227
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2184
2228
|
|
|
2185
2229
|
})));
|
|
2186
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb25maWcuanMiLCIuLi9zcmMvdXRpbHMvY29udmVydFRvU3RyaW5nLmpzIiwiLi4vc3JjL2lzTW9iaWxlLmpzIiwiLi4vc3JjL2lzVGVsZXBob25lLmpzIiwiLi4vc3JjL2lzUG9zdGNvZGUuanMiLCIuLi9zcmMvaXNJZENhcmQuanMiLCIuLi9zcmMvaXNFbWFpbC5qcyIsIi4uL3NyYy9pc1FRLmpzIiwiLi4vc3JjL2lzV1guanMiLCIuLi9zcmMvaXNWZWhpY2xlLmpzIiwiLi4vc3JjL2lzQmFua0NhcmQuanMiLCIuLi9zcmMvaXNTb2NpYWxDcmVkaXRDb2RlLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL2Zvcm1hdEJhbmtDYXJkLmpzIiwiLi4vc3JjL3JlcGxhY2VDaGFyLmpzIiwiLi4vc3JjL251bWJlclRvQ2hpbmVzZS5qcyIsIi4uL3NyYy9ieXRlc1RvU2l6ZS5qcyIsIi4uL3NyYy9wYXJzZUlkQ2FyZC5qcyIsIi4uL3NyYy90aW1lcy5qcyIsIi4uL3NyYy9wbHVzLmpzIiwiLi4vc3JjL21pbnVzLmpzIiwiLi4vc3JjL2RpdmlkZS5qcyIsIi4uL3NyYy9yb3VuZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICog5qOA5rWL5YC855qEIGB0b1N0cmluZ2Ag57G75Z6LXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlbmFtZSDnsbvlnovlkI3np7BcbiAqIEByZXR1cm5zIHtib29sZWFufSDov5Tlm57lgLznmoQgYHRvU3RyaW5nYCDnsbvlnovmmK/lkKbljLnphY1cbiAqL1xuZnVuY3Rpb24gaXNUeXBlKHZhbHVlLCB0eXBlbmFtZSkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IGBbb2JqZWN0ICR7dHlwZW5hbWV9XWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZTtcbiIsImltcG9ydCBpc1R5cGUgZnJvbSAnLi9pc1R5cGUnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4ulN0cmluZ1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VHlwZS5pc1N0cmluZ1xuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4ulN0cmluZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1N0cmluZygnYWJjJylcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1N0cmluZygxKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ1N0cmluZycpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N0cmluZztcbiIsImNvbnN0IGNvbmZpZyA9IHtcbiAgLy8g56aB55Sod2FybmluZ+aPkOekulxuICBkaXNhYmxlV2FybmluZzogdHJ1ZVxufTtcblxuLyoqXG4gKiDorr7nva7npoHmraJ3YXJuaW5n5o+Q56S6XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOkRlYnVnLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMy42LjFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9vbCDmmK/lkKbnpoHmraJ3YXJuaW5n5o+Q56S6XG4gKi9cbmZ1bmN0aW9uIHNldERpc2FibGVXYXJuaW5nKGJvb2wpIHtcbiAgY29uZmlnLmRpc2FibGVXYXJuaW5nID0gISFib29sO1xufVxuXG5leHBvcnQgeyBjb25maWcsIHNldERpc2FibGVXYXJuaW5nIH07XG4iLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi90eXBlL2lzU3RyaW5nJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuLyoqXG4gKiDovazmjaLkuLrlrZfnrKbkuLJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIOWAvFxuICogQHJldHVybnMg5a2X56ym5LiyXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyh2YWx1ZSkge1xuICBpZiAoIWlzU3RyaW5nKHZhbHVlKSkge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt2YWxpZGF0ZVBhc3N3b3JkXSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLmApO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbnZlcnRUb1N0cmluZztcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDmiYvmnLrlj7fnoIEgMTHkvY3mlbDlrZfvvIzku6Ux5byA5aS077yM56ys5LqM5L2N5pivMzQ1Njc4OeWFtuS4reS4gOS4qu+8jOWQjumdouWGjeWKoDnkuKrmlbDlrZdcbmNvbnN0IHJlZyA9IC9eMVszNDU2Nzg5XVxcZHs5fSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuaJi+acuuWPt+eggVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzTW9iaWxlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65omL5py65Y+356CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzTW9iaWxlKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTW9iaWxlKCcxMzAwMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzTW9iaWxlKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNNb2JpbGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5Zu65a6a55S16K+dIOaUr+aMgeWMuuWPt+WSjOWIhuacuuWPtyAz772eNOS9jeWMuuWPt++8jOS7pTDlvIDlpLTvvJs3772eOOS9jeebtOaSreWPt++8jOS7pTLvvZ455byA5aS077ybMe+9njbkvY3liIbmnLrlj7dcbmNvbnN0IHJlZyA9IC9eKDBcXGR7MiwzfVxcLSk/KFsyLTldXFxkezYsN30pKFxcLVxcZHsxLDZ9KT8kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrlm7rlrprnlLXor51cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1RlbGVwaG9uZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuWbuuWumueUteivnVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1RlbGVwaG9uZSgnMjIwMzMyMTInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1RlbGVwaG9uZSgnMDIxLTIyMDMzMjEyJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzAyMS0yMjAzMzIxMi0xMjMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1RlbGVwaG9uZSgnMTMwMDAwMDAwMDAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1RlbGVwaG9uZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVGVsZXBob25lO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmCruaUv+e8lueggVxuY29uc3QgcmVnID0gL15cXGR7Nn0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrpgq7mlL/nvJbnoIHvvIw25L2N5pWw5a2XXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQb3N0Y29kZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uumCruaUv+e8lueggVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1Bvc3Rjb2RlKCcxMDExMTEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1Bvc3Rjb2RlKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1Bvc3Rjb2RlKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQb3N0Y29kZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDouqvku73or4Hlj7fmraPliJlcbmNvbnN0IHJlZ0lkQ2FyZCA9IC9eWzEtOV1cXGR7NX0oMTl8MjApP1xcZHsyfSgoMFsxLTldKXwoMVswMTJdKSkoKFswLTJdWzEtOV0pfDEwfDIwfDMwfDMxKVxcZHszfShcXGR8WCk/JC9pO1xuXG4vKipcbiAqIOagoemqjOeggeiuoeeul1xuICpcbiAqIEBwcml2YXRlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95YWs5rCR6Lqr5Lu95Y+356CBfOS4reWNjuS6uuawkeWFseWSjOWbveWFrOawkei6q+S7veWPt+eggX1cbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL+Wxheawkei6q+S7veivgeWPt+eggXzlsYXmsJHouqvku73or4Hlj7fnoIF9XG4gKiBAcGFyYW0ge3N0cmluZ30gaWQg6Lqr5Lu96K+B5Y+356CBXG4gKiBAcmV0dXJucyDmoKHpqoznoIHmmK/lkKbmraPnoa5cbiAqL1xuZnVuY3Rpb24gY2hlY2soaWQpIHtcbiAgbGV0IGluZGV4LCBzdW0sIG51bTtcbiAgZm9yIChzdW0gPSBpbmRleCA9IDA7IGluZGV4IDwgMTc7IGluZGV4KyspIHtcbiAgICBzdW0gKz0gKE1hdGgucG93KDIsIDE3IC0gaW5kZXgpICUgMTEpICogTnVtYmVyKGlkW2luZGV4XSk7XG4gIH1cbiAgbnVtID0gKDEyIC0gKHN1bSAlIDExKSkgJSAxMTtcbiAgaWYgKG51bSA8IDEwKSB7XG4gICAgcmV0dXJuIG51bSA9PT0gTnVtYmVyKGlkWzE3XSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlkWzE3XSA9PSAnWCc7XG4gIH1cbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLoxOOS9jei6q+S7veivgeWPt+eggeOAgjxici8+5a695p2+5qih5byP5LiL77yM5pSv5oyBMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0lkQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j++8jOaUr+aMgTE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoZWNrQ29kZT10cnVlXSDmmK/lkKbmoKHpqozmnIDlkI7kuIDkvY3moKHpqoznoIHvvIzku4XmlK/mjIExOOS9jei6q+S7veivgeWPt+eggVxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uui6q+S7veivgeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0lkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjg4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4WCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjhYJywgeyBjaGVja0NvZGU6IGZhbHNlIH0pOyAvLyDkuI3moKHpqozmoKHpqoznoIFcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lkQ2FyZCgnMzIwMzExNzcwNzA2MDAxJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzSWRDYXJkKCczMjAzMTE3NzA3MDYwMDEnLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNJZENhcmQodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSwgY2hlY2tDb2RlID0gdHJ1ZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICBpZiAodmFsdWVTdHIubGVuZ3RoID09PSAxNSAmJiBsb29zZSkge1xuICAgIHJldHVybiByZWdJZENhcmQudGVzdCh2YWx1ZVN0cik7XG4gIH1cblxuICBpZiAodmFsdWVTdHIubGVuZ3RoID09PSAxOCAmJiByZWdJZENhcmQudGVzdCh2YWx1ZVN0cikpIHtcbiAgICBpZiAoY2hlY2tDb2RlKSB7XG4gICAgICByZXR1cm4gY2hlY2sodmFsdWVTdHIpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJZENhcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6YKu566xXG5jb25zdCByZWcgPSAvXltcXGRhLXpdKyhbXFwtXFwuXFxfXT9bXFxkYS16XSspKkBbXFxkYS16XSsoW1xcLVxcLl0/W1xcZGEtel0rKSooXFwuW2Etel17Mix9KSskL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6RW1haWxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0VtYWlsXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6RW1haWxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNFbWFpbCgnMTIzMkBxcS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0VtYWlsKCcxMjNAJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNFbWFpbCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRW1haWw7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gUVHlj7fmraPliJlcbmNvbnN0IHJlZyA9IC9eWzEtOV1cXGR7NCwxMH0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLpRUeWPt++8jOmdnjDlvIDlpLTvvIw16IezMTHkvY3mlbDlrZdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1FRXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6UVHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNRUSgnMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1FRKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1FRKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNRUTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlvq7kv6Hlj7cgNuiHszIw5L2N77yM5Lul5a2X5q+N5byA5aS077yM5a2X5q+N77yM5pWw5a2X77yM5YeP5Y+377yI6L+e5o6l56ym77yJ77yM5LiL5YiS57q/XG5jb25zdCByZWcgPSAvXlthLXpdKFstX2EtejAtOV17NSwxOX0pKyQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrlvq7kv6Hlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1dYXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65b6u5L+h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzV1goJ2ExMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzV1goJzEyMycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzV1godmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1dYO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOi9pueJjOWPt+ato+WImVxuY29uc3QgcmVnID0gL15b5Lqs5rSl5rKq5rid5YaA6LGr5LqR6L696buR5rmY55qW6bKB5paw6IuP5rWZ6LWj6YSC5qGC55SY5pmL6JKZ6ZmV5ZCJ6Ze96LS157Kk6Z2S6JeP5bed5a6B55C85L2/6aKGQS1aXXsxfVtBLVpdezF9KChbQS1aMC05XXs0fVtBLVowLTnmjILlraborabmuK/mvrNdezF9KXwoW0EtWjAtOV17NX1bREZdKXwoW0RGXVtBLVowLTldezV9KSkkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrovabniYzlj7fvvIzmlK/mjIHmlrDog73mupDlkozpnZ7mlrDog73mupDovabniYxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1ZlaGljbGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL+i9pueJjOWPt3zovabniYzlj7d9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66L2m54mM5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVmVoaWNsZSgn5LqsTDEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCRDEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCRjEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCMTIzNDVEJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCMTIzNDVGJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc1ZlaGljbGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1ZlaGljbGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6Z2eMOW8gOWktO+8jDEwfjIx5L2N5pWw5a2XXG5jb25zdCByZWcgPSAvXlsxLTldXFxkezksMjB9JC87XG5cbi8vIDh+MzDkvY3mlbDlrZdcbmNvbnN0IHJlZ0xvb3NlID0gL15cXGR7OCwzMH0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrpk7booYzljaHlj7fjgILmraPluLjmqKHlvI/vvIjpnZ4w5byA5aS077yMMTB+MjHkvY3mlbDlrZfvvInlrr3mnb7mqKHlvI/vvIg4fjMw5L2N5pWw5a2X77yJXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNCYW5rQ2FyZFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8va2YucXEuY29tL2ZhcS8xNzAxMTJBQm5tNmIxNzAxMTJGdnF1QW4uaHRtbHzluLjnlKjpk7booYzotKblj7fkvY3mlbDlj4LogIN9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP77yMOH4zMOS9jeaVsOWtl1xuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uumTtuihjOWNoeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0JhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwMDE4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQmFua0NhcmQoJzEyMzQ1Njc4OScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0JhbmtDYXJkKCcxMjM0NTY3ODknLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNCYW5rQ2FyZCh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmV0dXJuIHJlZ0xvb3NlLnRlc3QodmFsdWVTdHIpO1xuICB9XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQmFua0NhcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5Z+656GA6KeE5YiZ77yM55SxMTjkvY3mlbDlrZflkozlpKflhpnlrZfmr43nu4TmiJDvvIzkuI3kvb/nlKhJ44CBT+OAgVrjgIFT44CBVuOAglxuY29uc3QgYmFzZVJlZyA9IC9eW1xcZEEtSEotTlBRUlRVV1hZXXsyfVxcZHs2fVtcXGRBLUhKLU5QUVJUVVdYWV17MTB9JC87XG5cbi8vIOWfuuehgOWtl+espue7hOaIkFxuY29uc3QgYmFzZUNvZGVBcnIgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJUVVdYWScuc3BsaXQoJycpO1xuXG4vL+WKoOadg+WboOWtkFxuY29uc3Qgd2VpZ2h0RmFjdG9yID0gWzEsIDMsIDksIDI3LCAxOSwgMjYsIDE2LCAxNywgMjAsIDI5LCAyNSwgMTMsIDgsIDI0LCAxMCwgMzAsIDI4XTtcblxuLyoqXG4gKiDojrflj5blrZfnrKbkvY3nva5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGNvZGUg5a2X56ymXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlrZfnrKbmiYDlnKjln7rnoYDlrZfnrKbnmoTkvY3nva5cbiAqL1xuZnVuY3Rpb24gZ2V0QmFzZUNvZGVJbmRleChjb2RlKSB7XG4gIGxldCByZXQ7XG5cbiAgYmFzZUNvZGVBcnIuc29tZSgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaXRlbSA9PT0gY29kZSkge1xuICAgICAgcmV0ID0gaW5kZXg7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog6K6h566X5qCh6aqM56CBXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IHByZUNvZGUg57uf5LiA5Luj56CB5YmNMTfkvY1cbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagoemqjOeggVxuICovXG5mdW5jdGlvbiBzdW1DaGVja0NvZGUocHJlQ29kZSkge1xuICAvLyBjb25zdCBwcmVDb2RlQXJyID0gcHJlQ29kZS5zcGxpdCgnJyk7XG5cbiAgbGV0IHRvdGFsID0gMDtcblxuICAvLyDorqHnrpflrZfnrKbkvY3nva7lr7nlupTluo/lj7flkozliqDmnYPlm6DlrZDnmoTkuZjnp6/vvIzmgLvlkoxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNzsgaSsrKSB7XG4gICAgLy8g5a2X56ym5L2N572u5a+55bqU55qE5Z+656GA57yW56CB5bqP5Y+3XG4gICAgY29uc3QgaW5kZXggPSBnZXRCYXNlQ29kZUluZGV4KHByZUNvZGVbaV0pO1xuICAgIC8vIOWKoOadg+WboOWtkFxuICAgIGNvbnN0IHdmID0gd2VpZ2h0RmFjdG9yW2ldO1xuICAgIC8vIOiuoeeul+W6j+WPt+WSjOWKoOadg+WboOWtkOeahOS5mOenr++8jOW5tuiuoeeul+e6p+aVsOS5i+WSjFxuICAgIHRvdGFsICs9IGluZGV4ICogd2Y7XG4gIH1cblxuICAvLyDorqHnrpfmlbTmlbDmsYLkvZnlh73mlbBNT0RcbiAgY29uc3QgcmVtYWluZGVyID0gdG90YWwgJSAzMTtcbiAgLy8g5qCh6aqM56CB5a2X56ym5YC85bqP5Y+3XG4gIGNvbnN0IGNoZWNrQ29kZUluZGV4ID0gMzEgLSByZW1haW5kZXI7XG5cbiAgcmV0dXJuIGJhc2VDb2RlQXJyW2NoZWNrQ29kZUluZGV4XTtcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIHvvIzkuZ/lj6vkuInor4HlkIjkuIDnu4Tnu4fku6PnoIHjgILnlLExOOS9jeaVsOWtl+WSjOWkp+WGmeWtl+avjee7hOaIkO+8jOS4jeS9v+eUqEnjgIFP44CBWuOAgVPjgIFW44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNTb2NpYWxDcmVkaXRDb2RlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpc291cmNlLm9yZy96aC1oYW5zL0dCXzMyMTAwLTIwMTVf5rOV5Lq65ZKM5YW25LuW57uE57uH57uf5LiA56S+5Lya5L+h55So5Luj56CB57yW56CB6KeE5YiZfEdCIDMyMTAwLTIwMTUg5rOV5Lq65ZKM5YW25LuW57uE57uH57uf5LiA56S+5Lya5L+h55So5Luj56CB57yW56CB6KeE5YiZfVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j+OAguWmguaenOS4unRydWXvvIzkuI3moKHpqozmoKHpqozkvY3jgIJcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNDMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0QScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiAvLyDlrr3mnb7mqKHlvI/vvIzkuI3moKHpqozmoKHpqozkvY3jgILmiYDku6XkuZ/lj6/ku6XpgJrov4dcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTRBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc1NvY2lhbENyZWRpdENvZGUodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHBhc3NCYXNlUnVsZSA9IGJhc2VSZWcudGVzdCh2YWx1ZVN0cik7XG5cbiAgLy8g5a695p2+5qih5byPIOaIliDln7rnoYDop4TliJnkuI3pgJrov4fnm7TmjqXov5Tlm55cbiAgaWYgKGxvb3NlIHx8ICFwYXNzQmFzZVJ1bGUpIHtcbiAgICByZXR1cm4gcGFzc0Jhc2VSdWxlO1xuICB9XG5cbiAgLy8g5YmNMTfkvY1cbiAgY29uc3QgcHJlQ29kZSA9IHZhbHVlU3RyLnN1YnN0cigwLCAxNyk7XG4gIC8vIOagoemqjOeggVxuICBjb25zdCBsYXN0Q29kZSA9IHZhbHVlU3RyLnN1YnN0cigtMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBjaGVja0NvZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU29jaWFsQ3JlZGl0Q29kZTtcbiIsImltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnTnVtYmVyID0gL1tcXGRdLztcbmNvbnN0IHJlZ0xvd2VyQ2FzZUxldHRlciA9IC9bYS16XS87XG5jb25zdCByZWdVcHBlckNhc2VMZXR0ZXIgPSAvW0EtWl0vO1xuY29uc3QgcmVnQWxsTnVtYmVyQW5kTGV0dGVyID0gL1tcXGR8YS16XS9naTtcblxuLyoqXG4gKiDmmK/lkKbljIXlkKvmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4Dmn6XnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvmlbDlrZdcbiAqL1xuZnVuY3Rpb24gaGFzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gcmVnTnVtYmVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzTG93ZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnTG93ZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnVXBwZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqL1xuZnVuY3Rpb24gaGFzSGV4KHZhbCkge1xuICByZXR1cm4gdmFsLmluZGV4T2YoJ1xcXFx4JykgPiAtMSB8fCB2YWwuaW5kZXhPZignXFxcXHUnKSA+IC0xO1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyc10g54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr54m55q6K5a2X56ymXG4gKi9cbmZ1bmN0aW9uIGhhc1NwZWNpYWxDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzcGVjaWFsQ2hhcnMgPSB2YWwucmVwbGFjZShyZWdBbGxOdW1iZXJBbmRMZXR0ZXIsICcnKTtcbiAgY29uc3QgcmVnQ2hhcnMgPSBoYXNIZXgoY2hhcnMpID8gbmV3IFJlZ0V4cChgWyR7Y2hhcnN9XWApIDogbnVsbDtcblxuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG5cbiAgbGV0IHJldCA9IGZhbHNlO1xuICBzcGVjaWFsQ2hhcnMuc3BsaXQoJycpLnNvbWUoKGNoYXJJdGVtKSA9PiB7XG4gICAgaWYgKGNoYXJzLmluZGV4T2YoY2hhckl0ZW0pID4gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJzIOmdnuazleWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICovXG5mdW5jdGlvbiBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWwsIGNoYXJzID0gJycpIHtcbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG5cbiAgaWYgKCFjaGFycyAmJiBzcGVjaWFsQ2hhcnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFteJHtjaGFyc31dYCkgOiBudWxsO1xuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA9PT0gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOmqjOivgeWvhuegge+8iOaVsOWtl+OAgeWkp+Wwj+WGmeWtl+avjeOAgeeJueauiuWtl+espuOAgemdnuazleWtl+espu+8iVxuICpcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL0FTQ0lJIzN8QVNDSUl9XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci52YWxpZGF0ZVBhc3N3b3JkXG4gKiBAc2luY2UgMy43LjBcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGV2ZWw9Ml0g5a+G56CB5by65bqmIDEt5YyF5ZCr5LiA56eN5a2X56ymIDIt5YyF5ZCr5Lik56eN5a2X56ymIDMt5YyF5ZCr5LiJ56eN5a2X56ym44CC77yI5aSn5YaZ5a2X5q+N44CB5bCP5YaZ5a2X5q+N44CB5pWw5a2X44CB54m55q6K5a2X56ym77yJXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmlnbm9yZUNhc2U9ZmFsc2VdIOaYr+WQpuW/veeVpeWkp+Wwj+WGme+8jOS4uiB0dXJlIOaXtu+8jOWkp+Wwj+WGmeWtl+avjeinhuS4uuS4gOenjeWtl+esplxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNwZWNpYWw9XCIhQCMkJV4mKigpLT1fK1tdXFx8e30sLi8/PD5+XCJdIOaUr+aMgeeahOeJueauiuWtl+esplxuICogQHJldHVybnMg6aqM6K+B57uT5p6cXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhbGlkYXRlUGFzc3dvcmQoJ2ExMjM0NTY3OCcpO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiB0cnVlLCAvLyDpqozor4Hnu5PmnpzvvIzmoLnmja7lr4bnoIHlvLrluqbjgIHmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKblvpflh7pcbiAqICAgbGV2ZWw6IDIsIC8vIOW8uuW6pue6p+WIq1xuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsIC8vIOWMheWQq+aVsOWtl1xuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSwgLy8g5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiBmYWxzZSwgLy8g5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogZmFsc2UsIC8vIOWMheWQq+eJueauiuWtl+esplxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBmYWxzZSAvLyDljIXlkKvpnZ7ms5XlrZfnrKZcbiAqICAgfVxuICogfVxuICpcbiAqIHZhbGlkYXRlUGFzc3dvcmQoJ2ExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiBmYWxzZSxcbiAqICAgbGV2ZWw6IDIsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiBmYWxzZSxcbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBmYWxzZSxcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2VcbiAqICAgfVxuICogfVxuICpcbiAqIHZhbGlkYXRlUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IGZhbHNlLFxuICogICBsZXZlbDogMyxcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogdHJ1ZSxcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogdHJ1ZVxuICogICB9XG4gKiB9XG4gKlxuICogLy8g6Ieq5a6a5LmJ54m55q6K5a2X56ymXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZSwgc3BlY2lhbDogJ1/kuIDkuozkuIknfSk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IHRydWUsXG4gKiAgIGxldmVsOiAzLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiB0cnVlLFxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBmYWxzZVxuICogICB9XG4gKiB9XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGFzc3dvcmQodmFsdWUsIHsgbGV2ZWwgPSAyLCBpZ25vcmVDYXNlID0gZmFsc2UsIHNwZWNpYWwgPSAnXFxcXHgyMS1cXFxceDJGXFxcXHgzQS1cXFxceDQwXFxcXHg1Qi1cXFxceDYwXFxcXHg3Qi1cXFxceDdFJyB9ID0ge30pIHtcbiAgbGV0IHZhbFN0ciA9IHZhbHVlO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW3ZhbGlkYXRlUGFzc3dvcmRdIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcuYCk7XG4gICAgfVxuICAgIHZhbFN0ciA9ICcnO1xuICB9XG5cbiAgbGV0IGN1cnJlbnRMZXZlbCA9IDA7XG5cbiAgLy8g5YyF5ZCr5pWw5a2XXG4gIGNvbnN0IGNvbnRhaW5lc051bWJlciA9IGhhc051bWJlcih2YWxTdHIpO1xuICAvLyDljIXlkKvlsI/lhpnlrZfmr41cbiAgY29uc3QgY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyID0gaGFzTG93ZXJDYXNlTGV0dGVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+Wkp+WGmeWtl+avjVxuICBjb25zdCBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIgPSBoYXNVcHBlckNhc2VMZXR0ZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr54m55q6K5a2X56ymXG4gIGNvbnN0IGNvbnRhaW5lc1NwZWNpYWxDaGFyYWN0ZXIgPSBoYXNTcGVjaWFsQ2hhcmFjdGVyKHZhbFN0ciwgc3BlY2lhbCk7XG4gIC8vIOWMheWQq+mdnuazleWtl+esplxuICBjb25zdCBjb250YWluZXNVbmFsbG93YWJsZUNoYXJhY3RlciA9IGhhc1VuYWxsb3dhYmxlQ2hhcmFjdGVyKHZhbFN0ciwgc3BlY2lhbCk7XG5cbiAgaWYgKGNvbnRhaW5lc051bWJlcikge1xuICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICB9XG5cbiAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAvLyDkuI3ljLrliIblpKflsI/lhplcbiAgICBpZiAoY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyIHx8IGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIOWMuuWIhuWkp+Wwj+WGmVxuICAgIGlmIChjb250YWluZXNMb3dlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgICBpZiAoY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gIH1cblxuICBpZiAoY29udGFpbmVzU3BlY2lhbENoYXJhY3Rlcikge1xuICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICB9XG5cbiAgLy8g6aqM6K+B57uT5p6cXG4gIGNvbnN0IHZhbGlkYXRlZCA9IGN1cnJlbnRMZXZlbCA+PSBsZXZlbCAmJiAhY29udGFpbmVzVW5hbGxvd2FibGVDaGFyYWN0ZXI7XG5cbiAgcmV0dXJuIHtcbiAgICB2YWxpZGF0ZWQsXG4gICAgbGV2ZWw6IGN1cnJlbnRMZXZlbCxcbiAgICBjb250YWluZXM6IHtcbiAgICAgIG51bWJlcjogY29udGFpbmVzTnVtYmVyLFxuICAgICAgbG93ZXJDYXNlTGV0dGVyOiBjb250YWluZXNMb3dlckNhc2VMZXR0ZXIsXG4gICAgICB1cHBlckNhc2VMZXR0ZXI6IGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlcixcbiAgICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGNvbnRhaW5lc1NwZWNpYWxDaGFyYWN0ZXIsXG4gICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogY29udGFpbmVzVW5hbGxvd2FibGVDaGFyYWN0ZXJcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZhbGlkYXRlUGFzc3dvcmQ7XG4iLCJpbXBvcnQgdmFsaWRhdGVQYXNzd29yZCBmcm9tICcuL3ZhbGlkYXRlUGFzc3dvcmQnO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuespuWQiOWvhueggeW8uuW6plxuICogPHA+PHN0cm9uZz7ms6jmhI/vvJror6XmoKHpqozlj6rmoKHpqozmmK/lkKblrZjlnKjkuI3lkIzlrZfnrKYo5aSn5bCP5YaZ5a2X5q+N44CB5pWw5a2X44CB54m55q6K56ym5Y+3Ke+8jOS4jeWIpOaWremVv+W6puOAgjwvc3Ryb25nPjwvcD5cbiAqIDxwPjxpPuWmguaenOmcgOimgeabtOe7huiHtOeahOmqjOivge+8jOivt+S9v+eUqCA8YSBocmVmPVwiIy52YWxpZGF0ZVBhc3N3b3JkXCI+dmFsaWRhdGVQYXNzd29yZDwvYT48L2k+PC9wPlxuICpcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL0FTQ0lJIzN8QVNDSUl9XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Bhc3N3b3JkXG4gKiBAc2luY2UgMS4xLjBcbiAqIEByZXF1aXJlcyBtb2R1bGU6VmFsaWRhdG9yLnZhbGlkYXRlUGFzc3dvcmRcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbnrKblkIjlr4bnoIHlvLrluqZcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQYXNzd29yZCgnYTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzd29yZCgnYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzUGFzc3dvcmQoJ0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1Bhc3N3b3JkKCdBYTEyMzQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzUGFzc3dvcmQoJ19BYTEyMzQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogLy8g5LuF5pSv5oyBIOaVsOWtl+OAgeWtl+avjeOAgeeJueauiuWtl+espu+8jOWFtuS7luWtl+espuWmguS4reaWh+Wtl+espuaYr+agoemqjOS4jemAmui/h+eahFxuICogaXNQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNQYXNzd29yZCgnIF9BYTEyMzQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1Bhc3N3b3JkKHZhbHVlLCB7IGxldmVsID0gMiwgaWdub3JlQ2FzZSA9IGZhbHNlLCBzcGVjaWFsID0gJ1xcXFx4MjEtXFxcXHgyRlxcXFx4M0EtXFxcXHg0MFxcXFx4NUItXFxcXHg2MFxcXFx4N0ItXFxcXHg3RScgfSA9IHt9KSB7XG4gIHJldHVybiB2YWxpZGF0ZVBhc3N3b3JkKHZhbHVlLCB7IGxldmVsLCBpZ25vcmVDYXNlLCBzcGVjaWFsIH0pLnZhbGlkYXRlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQYXNzd29yZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDmiqTnhaflj7cgOeS9je+8jOWMheaLrOmmluWtl+avjeWSjOaVsOWtl++8m+aUr+aMgSDmma7pgJrmiqTnhacoRSop44CB5aSW5Lqk5oqk54WnKERFKeOAgeWFrOWKoeaKpOeFpyhTRSnjgIHlhazliqHmma7pgJrmiqTnhacoUEUp44CB6aaZ5riv54m55Yy65oqk54WnKEsvS0op44CB5r6z6Zeo54m55Yy65oqk54WnKE1BKVxuY29uc3QgcmVnID0gL14oKGVbXFxkYS16XSl8KGRlKXwoc2UpfChwZSl8KGtbXFxkYS16XSl8KGtqKXwobWEpKVtcXGRhLXpdezd9JC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuaKpOeFp+WPt1xuICog5pSv5oyB5pmu6YCa5oqk54WnKEUqKeOAgeWkluS6pOaKpOeFpyhERSnjgIHlhazliqHmiqTnhacoU0Up44CB5YWs5Yqh5pmu6YCa5oqk54WnKFBFKeOAgemmmea4r+eJueWMuuaKpOeFpyhLL0tKKeOAgea+s+mXqOeJueWMuuaKpOeFpyhNQSlcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Bhc3Nwb3J0XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95oqk54WnI+S4quS6uui1hOaWmemhtXzkuK3ljY7kurrmsJHlhbHlkozlm73miqTnhacj5Liq5Lq66LWE5paZ6aG1fVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuaKpOeFp+WPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1Bhc3Nwb3J0KCdFMTIzNDU2NzgnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1Bhc3Nwb3J0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1Bhc3Nwb3J0KHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQYXNzcG9ydDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG5jb25zdCBjaGluZXNlRGljdGlvbmFyeSA9IHtcbiAgLy8g5Z+65pys5rGJ5a2XXG4gIGNoaW5lc2VCYXNpYzogJ1tcXHU0ZTAwLVxcdTlmYTVdJyxcblxuICAvLyDln7rmnKzmsYnlrZfooaXlhYVcbiAgY2hpbmVzZUV4dGVuZDogJ1tcXHU5ZWE2LVxcdTlmZWZdJyxcblxuICAvLyDmsYnlrZfmianlsZVBXG4gIGNoaW5lc2VFeHRlbmRBOiAnW1xcdTM0MDAtXFx1NERCNV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUJcbiAgY2hpbmVzZUV4dGVuZEI6ICdbXFx1ezIwMDAwfS1cXHV7MkE2RDZ9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQ1xuICBjaGluZXNlRXh0ZW5kQzogJ1tcXHV7MkE3MDB9LVxcdXsyQjczNH1dJyxcblxuICAvLyDmsYnlrZfmianlsZVEXG4gIGNoaW5lc2VFeHRlbmREOiAnW1xcdXsyQjc0MH0tXFx1ezJCODFEfV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUVcbiAgY2hpbmVzZUV4dGVuZEU6ICdbXFx1ezJCODIwfS1cXHV7MkNFQTF9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRlxuICBjaGluZXNlRXh0ZW5kRjogJ1tcXHV7MkNFQjB9LVxcdXsyRUJFMH1dJ1xufTtcblxubGV0IGxvb3NlQ2hpbmVzZVJlZ0V4cCA9IGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICcrJztcblxubGV0IGNoaW5lc2VSZWdFeHAgPSAnXicgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnKyQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5jb25zdCBzdXBwb3J0UmVnRXhwVW5pY29kZSA9IFJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ3VuaWNvZGUnKTtcblxuaWYgKHN1cHBvcnRSZWdFeHBVbmljb2RlKSB7XG4gIGxvb3NlQ2hpbmVzZVJlZ0V4cCA9ICcoPzonICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRBICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEIgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmREICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEUgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRiArICcpKyc7XG4gIGNoaW5lc2VSZWdFeHAgPSAnXig/OicgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEEgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQiArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRDICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRGICsgJykrJCc7XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65Lit5paHXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNDaGluZXNlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzOC8jQmxvY2tMaXN0aW5nfDQuNCBMaXN0aW5nIG9mIENoYXJhY3RlcnMgQ292ZXJlZCBieSB0aGUgVW5paGFuIERhdGFiYXNlfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5Y+q6KaB5YyF5ZCr5Lit5paH5Y2z5Li6dHJ1ZVxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuS4reaWh1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0NoaW5lc2UoJ+ael+afkOafkCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQ2hpbmVzZSgn5p6XQScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiAvLyDlrr3mnb7mqKHlvI/vvIzlj6ropoHljIXlkKvkuK3mlofljbPkuLp0cnVlXG4gKiBpc0NoaW5lc2UoJ+ael0EnLCB7bG9vc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0NoaW5lc2UoJ0HmnpdBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc0NoaW5lc2UodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGxvb3NlID8gbG9vc2VDaGluZXNlUmVnRXhwIDogY2hpbmVzZVJlZ0V4cCwgc3VwcG9ydFJlZ0V4cFVuaWNvZGUgPyAndScgOiB1bmRlZmluZWQpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0NoaW5lc2U7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gaXB2NOato+WImVxuY29uc3QgcmVnID0gL14oKFxcZHsxLDJ9fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNV0pXFwuKXszfShcXGR7MSwyfXwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4umlwdjRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0lQdjRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLppcHY0XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzSVB2NCgnMTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjQoJzI1NS4yNTUuMjU1LjI1NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NCgnMjU2LjI1Ni4yNTYuMjU2Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzSVB2NCgnMC4wJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNJUHY0KHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJUHY0O1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIGlwdjbmraPliJlcbmNvbnN0IHJlZyA9IC9eKCgoWzAtOUEtRl17MSw0fTopezd9KFswLTlBLUZdezEsNH18OikpfCgoWzAtOUEtRl17MSw0fTopezZ9KDpbMC05QS1GXXsxLDR9fCgoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSl8OikpfCgoWzAtOUEtRl17MSw0fTopezV9KCgoOlswLTlBLUZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pfDopKXwoKFswLTlBLUZdezEsNH06KXs0fSgoKDpbMC05QS1GXXsxLDR9KXsxLDN9KXwoKDpbMC05QS1GXXsxLDR9KT86KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KSl8OikpfCgoWzAtOUEtRl17MSw0fTopezN9KCgoOlswLTlBLUZdezEsNH0pezEsNH0pfCgoOlswLTlBLUZdezEsNH0pezAsMn06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KSl8OikpfCgoWzAtOUEtRl17MSw0fTopezJ9KCgoOlswLTlBLUZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KSl8OikpfCgoWzAtOUEtRl17MSw0fTopezF9KCgoOlswLTlBLUZdezEsNH0pezEsNn0pfCgoOlswLTlBLUZdezEsNH0pezAsNH06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KSl8OikpfCg6KCgoOlswLTlBLUZdezEsNH0pezEsN30pfCgoOlswLTlBLUZdezEsNH0pezAsNX06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KSl8OikpKSglLispPyQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLppcHY2XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJUHY2XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6aXB2NlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDlhpLliIbljYHlha3ov5vliLbooajnpLrms5VcbiAqIGlzSVB2NignMjAwMTowREI4OjAwMDA6MDAyMzowMDA4OjA4MDA6MjAwQzo0MTdBJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogLy8g5YmN5a+8MOecgeeVpVxuICogaXNJUHY2KCcyMDAxOkRCODowOjIzOjg6ODAwOjIwMEM6NDE3QScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignRkYwMTowOjA6MDowOjA6MDoxMTAxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogLy8gMOS9jeWOi+e8qeihqOekuuazlVxuICogaXNJUHY2KCdGRjAxOjoxMTAxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCcwOjA6MDowOjA6MDowOjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzA6MDowOjA6MDowOjA6MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOWGheW1jElQdjTlnLDlnYDooajnpLrms5VcbiAqIGlzSVB2NignOjoxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjpGRkZGOjE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCcxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSVB2Nih2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSVB2NjtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyB1cmzmraPliJlcbmNvbnN0IHJlZyA9IC8oKCheaHR0cHM/Oig/OlxcL1xcLyk/KSg/OlstOzomPVxcK1xcJCxcXHddK0ApP1tBLVphLXowLTkuLV0rKD86OlxcZCspP3woPzp3d3cufFstOzomPVxcK1xcJCxcXHddK0ApW0EtWmEtejAtOS4tXSspKCg/OlxcL1tcXCt+JVxcLy5cXHctX10qKT9cXD8/KD86Wy1cXCs9JjslQC5cXHdfXSopIz8oPzpbXFx3XSopKT8pJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6dXJsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNVcmxcbiAqIEBzaW5jZSAzLjQuMFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+e7n+S4gOi1hOa6kOWumuS9jeespnznu5/kuIDotYTmupDlrprkvY3nrKZ9XG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4unVybFxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1VybCgnJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzVXJsKCc4LjguOC44Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzVXJsKCdleGFtcGxlLmNvbScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vZXhhbXBsZS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cHM6Ly9leGFtcGxlLmNvbTo4MDgwJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdC8xMjMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0LzEyMz9mb289YmFyJyk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzVXJsKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNVcmw7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5Z+656GA6KeE5YiZ77yM55SxMTTkvY3mlbDlrZfmnKzkvZPnoIHlkowx5L2N5pWw5a2X5qCh6aqM56CB57uE5oiQ77yM5YW25Lit5pys5L2T56CB5LuO5bem6Iez5Y+z5L6d5qyh5Li677yaNuS9jemmluasoeeZu+iusOacuuWFs+eggeOAgTjkvY3pobrluo/noIHjgIJcbmNvbnN0IGJhc2VSZWcgPSAvXlxcZHsxNX0kLztcblxuLyoqXG4gKiDorqHnrpfmoKHpqoznoIFcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNpbmNlIDMuNS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlQ29kZSDokKXkuJrmiafnhafliY0xNOS9jVxuICogQHJldHVybnMge251bWJlcn0g5qCh6aqM56CBXG4gKi9cbmZ1bmN0aW9uIHN1bUNoZWNrQ29kZShwcmVDb2RlKSB7XG4gIGxldCByZXROdW07IC8vIOagoemqjOS9jeaVsOWtl1xuXG4gIGxldCBwaiA9IDEwOyAvLyBQaisxIDEx77yM5Yid5aeL5Li6MTBcblxuICBmb3IgKGxldCBqID0gMDsgaiA8IDE0OyBqKyspIHtcbiAgICBjb25zdCBzaiA9IHBqICsgTnVtYmVyKHByZUNvZGVbal0pO1xuICAgIGxldCBzajEwID0gc2ogJSAxMDtcbiAgICBzajEwID0gc2oxMCA9PT0gMCA/IDEwIDogc2oxMDtcbiAgICBjb25zdCBwajEgPSBzajEwICogMjtcbiAgICBwaiA9IHBqMSAlIDExO1xuICB9XG5cbiAgLy8g5Y+N5qihMTDorqHnrpdcbiAgaWYgKHBqID09PSAxMCB8fCBwaiA9PT0gMSkge1xuICAgIHJldE51bSA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0TnVtID0gMTEgLSBwajtcbiAgfVxuXG4gIHJldHVybiByZXROdW07XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66JCl5Lia5omn54Wn5Y+377yM5Lmf5Y+r5bel5ZWG5rOo5YaM5Y+344CC55SxMTTkvY3mlbDlrZfmnKzkvZPnoIHlkowx5L2N5pWw5a2X5qCh6aqM56CB57uE5oiQ77yM5YW25Lit5pys5L2T56CB5LuO5bem6Iez5Y+z5L6d5qyh5Li677yaNuS9jemmluasoeeZu+iusOacuuWFs+eggeOAgTjkvY3pobrluo/noIHjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0J1c2luZXNzTGljZW5zZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vd2Vua3UuYmFpZHUuY29tL3ZpZXcvMTk4NzM3MDRjYzE3NTUyNzA3MjIwODdjLmh0bWx8R1MxNeKAlDIwMDYg5bel5ZWG6KGM5pS/566h55CG5biC5Zy65Li75L2T5rOo5YaM5Y+357yW5Yi26KeE5YiZfVxuICogQHNpbmNlIDMuNS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j+OAguWmguaenOS4unRydWXvvIzkuI3moKHpqozmoKHpqozkvY3jgIJcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrokKXkuJrmiafnhaflj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDk4NTUzMycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5JywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDk4NTUzNScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOTg1NTM1JywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNCdXNpbmVzc0xpY2Vuc2UodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHBhc3NCYXNlUnVsZSA9IGJhc2VSZWcudGVzdCh2YWx1ZVN0cik7XG5cbiAgLy8g5a695p2+5qih5byPIOaIliDln7rnoYDop4TliJnkuI3pgJrov4fnm7TmjqXov5Tlm55cbiAgaWYgKGxvb3NlIHx8ICFwYXNzQmFzZVJ1bGUpIHtcbiAgICByZXR1cm4gcGFzc0Jhc2VSdWxlO1xuICB9XG5cbiAgLy8g5YmNMTTkvY1cbiAgY29uc3QgcHJlQ29kZSA9IHZhbHVlU3RyLnN1YnN0cigwLCAxNCk7XG4gIC8vIOagoemqjOeggVxuICBjb25zdCBsYXN0Q29kZSA9IHZhbHVlU3RyLnN1YnN0cigtMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBTdHJpbmcoY2hlY2tDb2RlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNCdXNpbmVzc0xpY2Vuc2U7XG4iLCIvKipcbiAqIOajgOa1i+WAvOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Byb21pc2VMaWtlXG4gKiBAc2luY2UgMy44LjBcbiAqIEBwYXJhbSB7Kn0gb2JqIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuexu+S8vFByb21pc2Xlr7nosaFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQcm9taXNlTGlrZShbXSk7XG4gKiA9PiBmYWxzZVxuICpcbiAqIGlzUHJvbWlzZUxpa2Uoe3RoZW46KCk9Pnt9fSk7XG4gKiA9PiB0cnVlXG4gKlxuICogaXNQcm9taXNlTGlrZShQcm9taXNlLnJlc29sdmUoKSk7XG4gKiA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUHJvbWlzZUxpa2Uob2JqKSB7XG4gIHJldHVybiBvYmogIT09IG51bGwgJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQcm9taXNlTGlrZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4HmraPliJlcbmNvbnN0IHJlZ0hNQ2FyZCA9IC9eW2htXXsxfShbMC05XXsxMH18WzAtOV17OH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uua4r+a+s+WxheawkeadpeW+gOWGheWcsOmAmuihjOivge+8jOS/l+ensOWbnuS5oeivgeaIluWbnuS5oeWNoeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSE1DYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4F85riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNITUNhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnSE1DYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0hNQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HmraPliJnvvIzmlK/mjIHkuIDmrKHmgKfnn63mnJ/lj7Dog57or4FcbmNvbnN0IHJlZ1RXQ2FyZCA9IC9eKFxcZHs4fXxbXFxkYS16XXsxMH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivge+8jOS/l+ensOWPsOiDnuivgeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVFdDYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/lj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4F85Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4FcbiAqL1xuZnVuY3Rpb24gaXNUV0NhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnVFdDYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RXQ2FyZDtcbiIsIi8vIOacgOWkp+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuLy8g5pyA5bCP5a6J5YWo5pWw5a2XXG5leHBvcnQgY29uc3QgTUlOX1NBRkVfSU5URUdFUiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIHx8IC05MDA3MTk5MjU0NzQwOTkxO1xuIiwiLyoqXG4gKiDlj4LogIM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZWZlL251bWJlci1wcmVjaXNpb24vYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gKlxuICog6Kej5Yaz5rWu5Yqo6L+Q566X6Zeu6aKY77yM6YG/5YWN5bCP5pWw54K55ZCO5Lqn55Sf5aSa5L2N5pWw5ZKM6K6h566X57K+5bqm5o2f5aSx44CCXG4gKiDpl67popjnpLrkvovvvJoyLjMgKyAyLjQgPSA0LjY5OTk5OTk5OTk5OTk5Oe+8jDEuMCAtIDAuOSA9IDAuMDk5OTk5OTk5OTk5OTk5OThcbiAqL1xuXG5pbXBvcnQgeyBNQVhfU0FGRV9JTlRFR0VSLCBNSU5fU0FGRV9JTlRFR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOaYr+WQpuS4uuenkeWtpuiuoeaVsOazleaVsOWtl1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NpZW50aWZpY051bWJlcihudW0pIHtcbiAgcmV0dXJuIC9cXGQrXFwuP1xcZCplW1xcK1xcLV0qXFxkKy9pLnRlc3QobnVtKTtcbn1cblxuLyoqXG4gKiDmiorplJnor6/nmoTmlbDmja7ovazmraNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MTJdIOWwj+aVsOeCueeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleGFtcGxlXG4gKlxuICogIHN0cmlwKDAuMDk5OTk5OTk5OTk5OTk5OTgpPTAuMVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAobnVtLCBwcmVjaXNpb24gPSAxMikge1xuICByZXR1cm4gK3BhcnNlRmxvYXQobnVtLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xufVxuXG4vKipcbiAqIOiuoeeul+aVsOWtl+eahOWwj+aVsOeCuemVv+W6pu+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn0g5bCP5pWw54K56ZW/5bqmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdExlbmd0aChudW0pIHtcbiAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gIGNvbnN0IGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9lL2kpO1xuICBjb25zdCBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICByZXR1cm4gbGVuID4gMCA/IGxlbiA6IDA7XG59XG5cbi8qKlxuICog5oqK5bCP5pWw6L2s5oiQ5pW05pWw77yM5pSv5oyB56eR5a2m6K6h5pWw5rOV44CC5aaC5p6c5piv5bCP5pWw5YiZ5pS+5aSn5oiQ5pW05pWwXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQyRml4ZWQobnVtKSB7XG4gIGlmICghaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIHJldHVybiBOdW1iZXIobnVtLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKSk7XG4gIH1cbiAgY29uc3QgZExlbiA9IGRpZ2l0TGVuZ3RoKG51bSk7XG4gIHJldHVybiBkTGVuID4gMCA/IHN0cmlwKCtudW0gKiBNYXRoLnBvdygxMCwgZExlbikpIDogK251bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvmlbDlrZfmmK/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRyaW1MZWZ0WmVybyhudW0pIHtcbiAgY29uc3QgcmVnID0gL14oWystXSk/KDArKShbMS05XFwuXSspJC87XG4gIGNvbnN0IHJlc3VsdCA9IHJlZy5leGVjKG51bSk7XG5cbiAgbGV0IHNpZ247XG5cbiAgaWYgKHJlc3VsdCkge1xuICAgIHNpZ24gPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgcmV0dXJuIHNpZ24gKyByZXN1bHRbM107XG4gIH1cblxuICByZXR1cm4gbnVtO1xufVxuXG4vKipcbiAqIOenkeWtpuiuoeaVsOazlei9rOaNouaIkOaZrumAmuaVsOWtl1xuICpcbiAqIEphdmFTY3JpcHTlnKjku6XkuIvmg4Xmma/kvJroh6rliqjlsIbmlbDlgLzovazmjaLkuLrnp5HlraborqHmlbDms5XvvJpcbiAqICAxLuWwj+aVsOeCueWJjeeahOaVsOWtl+S4quaVsOWkp+S6juetieS6jjIy5L2NXG4gKiAgMi7lsI/mlbDngrnliY3ovrnmmK8w77yM5bCP5pWw54K55ZCO5Y2B5YiG5L2N77yI5YyF5ZCr5Y2B5YiG5L2N77yJ5LmL5ZCO6L+e57ut6Zu255qE5Liq5pWw5aSn5LqO562J5LqONuS4qlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g56eR5a2m6K6h5pWw5rOV5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDovazmjaLlkI7nmoTmlbDlrZflrZfnrKbkuLJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjaWVudGlmaWNUb051bWJlcihudW0pIHtcbiAgaWYgKGlzU2NpZW50aWZpY051bWJlcihudW0udG9TdHJpbmcoKSkpIHtcbiAgICBjb25zdCB6ZXJvID0gJzAnO1xuICAgIGNvbnN0IHBhcnRzID0gU3RyaW5nKG51bSkudG9Mb3dlckNhc2UoKS5zcGxpdCgnZScpO1xuICAgIGNvbnN0IGUgPSBwYXJ0cy5wb3AoKTsgLy8g5a2Y5YKo5oyH5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGwgPSBNYXRoLmFicyhlKTsgLy8g5Y+W57ud5a+55YC877yMbC0x5bCx5pivMOeahOS4quaVsFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBzaWduID0gZSAvIGw7IC8v5Yik5pat5q2j6LSfXG4gICAgY29uc3QgY29lZmZfYXJyYXkgPSBwYXJ0c1swXS5zcGxpdCgnLicpOyAvLyDlsIbns7vmlbDmjInnhaflsI/mlbDngrnmi4bliIZcblxuICAgIC8v5aaC5p6c5piv5bCP5pWwXG4gICAgaWYgKHNpZ24gPT09IC0xKSB7XG4gICAgICAvL+aLvOaOpeWtl+espuS4su+8jOWmguaenOaYr+Wwj+aVsO+8jOaLvOaOpTDlkozlsI/mlbDngrlcbiAgICAgIG51bSA9IHplcm8gKyAnLicgKyBuZXcgQXJyYXkobCkuam9pbih6ZXJvKSArIGNvZWZmX2FycmF5LmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZWMgPSBjb2VmZl9hcnJheVsxXTtcblxuICAgICAgLy/lpoLmnpzmmK/mlbTmlbDvvIzlsIbmlbTmlbDpmaTnrKzkuIDkvY3kuYvlpJbnmoTpnZ7pm7bmlbDlrZforqHlhaXkvY3mlbDvvIznm7jlupTnmoTlh4/lsJEw55qE5Liq5pWwXG4gICAgICBpZiAobCAtIGRlYy5sZW5ndGggPCAwKSB7XG4gICAgICAgIG51bSA9IHRyaW1MZWZ0WmVybyhjb2VmZl9hcnJheVswXSArIGRlYy5zdWJzdHIoMCwgbCkpICsgJy4nICsgZGVjLnN1YnN0cihsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5pW05pWw77yM5LiN6ZyA6KaB5ou85o6l5bCP5pWw54K5XG4gICAgICAgIG51bSA9IGNvZWZmX2FycmF5LmpvaW4oJycpICsgbmV3IEFycmF5KGwgLSBkZWMubGVuZ3RoICsgMSkuam9pbih6ZXJvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbnVtO1xufVxuIiwiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzVHlwZSc7XG5cbi8qKlxuICog5qOA5p+l5YC85piv5ZCm5Li6TmFOXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTmFOXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li6TmFOXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzTmFOKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc05hTigxKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gX2lzTmFOKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdOdW1iZXInKSAmJiBpc05hTih2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IF9pc05hTjtcbiIsImltcG9ydCB7IGNoZWNrQm91bmRhcnksIHNjaWVudGlmaWNUb051bWJlciwgaXNTY2llbnRpZmljTnVtYmVyIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IGlzTmFOIGZyb20gJy4vdXRpbHMvdHlwZS9pc05hTic7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5cbmNvbnN0IHJlZyA9IC9eWystXT9cXGQqXFwuP1xcZCokLztcblxuLyoqXG4gKiDmo4Dmn6XmlbDlrZfmiJbmlbDlrZflrZfnrKbkuLJcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IG51bVxuICogQHJldHVybnMgXGLmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gaW50U3RyWzBdID09PSAnKycgPyBpbnRTdHIuc3Vic3RyKDEpIDogaW50U3RyOyAvLyDljrvmjokr56ym5Y+3XG4gIGNvbnN0IG5lZ2F0aXZlU3ltYm9sID0gTnVtYmVyKGludFN0cikgPCAwID8gJy0nIDogJyc7XG4gIGNvbnN0IHJlQXJyID0gbmVnYXRpdmVTeW1ib2wgPyBpbnRTdHIuc3Vic3RyKDEpLnNwbGl0KCcnKS5yZXZlcnNlKCkgOiBpbnRTdHIuc3BsaXQoJycpLnJldmVyc2UoKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgdHh0ICs9IHJlQXJyW2ldICsgKChpICsgMSkgJSAzID09PSAwICYmIGkgKyAxICE9PSByZUFyci5sZW5ndGggPyB0aG91c2FuZCA6ICcnKTtcbiAgfVxuXG4gIHJldHVybiBuZWdhdGl2ZVN5bWJvbCArIHR4dC5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluWwj+aVsOmDqOWIhu+8jOWmguaenOS9v+eUqCB0b0ZpeGVk77yM6LaF5aSn6aKd5pWw5a2X5Lya6Ieq5Yqo6KKr5oiq5patXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNTdHIg5bCP5pWw54K56YOo5YiG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge251bWJlcn0gcHJlY2lzaW9uIOS/neeVmeS9jeaVsFxuICogQHBhcmFtIHtzdHJpbmd9IGRlY2ltYWwg5bCP5pWw54K556ym5Y+3XG4gKiBAcmV0dXJucyDmoLzlvI/ljJblkI7nmoTlgLxcbiAqL1xuZnVuY3Rpb24gZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKSB7XG4gIGlmIChwcmVjaXNpb24gPT09IDApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCB6ZXJvID0gMDtcbiAgbGV0IHJldCA9ICcnO1xuXG4gIGlmIChkZWNTdHIgJiYgTnVtYmVyKGRlY1N0cikgPiAwKSB7XG4gICAgbGV0IHRtcE51bSA9IHBhcnNlRmxvYXQoJzAuJyArIGRlY1N0cik7XG4gICAgcmV0ID0gdG1wTnVtLnRvRml4ZWQocHJlY2lzaW9uKS5zdWJzdHIoMik7XG4gIH0gZWxzZSB7XG4gICAgcmV0ID0gemVyby50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyKDIpO1xuICB9XG5cbiAgcmV0dXJuIGRlY2ltYWwgKyByZXQ7XG59XG5cbi8qKlxuICog5qC85byP5YyW6YeR6aKdXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuZm9ybWF0TW9uZXlcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDpnIDovazmjaLph5Hpop0gKOacgOWkp++8mjkwMDcxOTkyNTQ3NDA5OTEg5pyA5bCP77yaIC05MDA3MTk5MjU0NzQwOTkxKVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIOmHkemineagvOW8j+WMlumFjee9rlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IFtvcHRpb25zLnByZWNpc2lvbj0yXSAtIOS/neeVmeS9jeaVsCDvvIjmnIDpq5jvvJoxMOS9je+8iVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN5bWJvbF0gLSDotKfluIHnrKblj7dcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50aG91c2FuZD1cIixcIl0gLSDljYPliIbkvY3nrKblj7dcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWNpbWFsPVwiLlwiXSAtIOWwj+aVsOS9jeespuWPt1xuICogQHJldHVybnMge3N0cmluZ30g5qC85byP5YyW55qE6YeR6aKdXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIOaVtOaVsFxuICogZm9ybWF0TW9uZXkoJzEwMDAnKTtcbiAqIC8vID0+IDEsMDAwLjAwXG4gKlxuICogLy8g5bCP5pWw77yI6buY6K6k5L+d55WZMuS9jeWwj+aVsO+8iVxuICogZm9ybWF0TW9uZXkoJzMwMDAuMDMnKTtcbiAqIC8vID0+IDMsMDAwLjAzXG4gKlxuICogLy8g5L+d55WZNOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzMwMDAuMDMwMCcsIHsgcHJlY2lzaW9uOiA0IH0pO1xuICogLy8gPT4gMywwMDAuMDMwMFxuICpcbiAqIC8vIOS/neeVmTEw5L2N5bCP5pWwXG4gKiBmb3JtYXRNb25leSgnMTUwMC4yJywgeyBwcmVjaXNpb246IDEwIH0pO1xuICogLy8gPT4gMSw1MDAuMjAwMDAwMDAwMFxuICpcbiAqIC8vIOiHquWumuS5ieWNleS9jeespuWPt1xuICogZm9ybWF0TW9uZXkoMTAwMC4wMCwgeyBzeW1ib2w6ICckJyB9KTtcbiAqIC8vID0+ICQxLDAwMC4wMFxuICpcbiAqIC8vIOiHquWumuS5ieWNg+S9jeWIhuWJsuespu+8iOm7mOiupCcsJ++8iVxuICogZm9ybWF0TW9uZXkoMTAwMC4wMCwgeyB0aG91c2FuZDogJ3wnIH0pO1xuICogLy8gPT4gMXwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnlsI/mlbDkvY3liIblibLnrKYo6buY6K6kJy4nKVxuICogZm9ybWF0TW9uZXkoMTAwMC4wMCwgeyBkZWNpbWFsOiAnJicgfSk7XG4gKiAvLyA9PiAxLDAwMCYwMFxuICovXG5jb25zdCBmb3JtYXRNb25leSA9IChudW0sIHsgcHJlY2lzaW9uID0gMiwgc3ltYm9sLCB0aG91c2FuZCA9ICcsJywgZGVjaW1hbCA9ICcuJyB9ID0ge30pID0+IHtcbiAgLy8g5pWw5a2X5Y+C5pWw5LiN5q2j56Gu77yM6L+U5Zue56m65a2X56ym5LiyXG4gIC8vIEB0cy1pZ25vcmVcbiAgaWYgKCFjaGVja051bWJlcihudW0pKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8g5Y+C5pWw6KeE5pW05YyWXG4gIGlmICh0eXBlb2YgcHJlY2lzaW9uICE9PSAnbnVtYmVyJyB8fCBpc05hTihwcmVjaXNpb24pIHx8IHByZWNpc2lvbiA8IDApIHtcbiAgICBwcmVjaXNpb24gPSAyO1xuICB9IGVsc2UgaWYgKHByZWNpc2lvbiA+IDEwKSB7XG4gICAgcHJlY2lzaW9uID0gMTA7XG4gIH1cbiAgc3ltYm9sID0gdHlwZW9mIHN5bWJvbCA9PT0gJ3N0cmluZycgPyBzeW1ib2wgOiAnJztcbiAgdGhvdXNhbmQgPSB0eXBlb2YgdGhvdXNhbmQgPT09ICdzdHJpbmcnID8gdGhvdXNhbmQgOiAnLCc7XG4gIGRlY2ltYWwgPSB0eXBlb2YgZGVjaW1hbCA9PT0gJ3N0cmluZycgPyBkZWNpbWFsIDogJy4nO1xuXG4gIC8vIOi9rOaNouaVsOWtl+Wtl+espuS4su+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICBjb25zdCBudW1TdHIgPSBzY2llbnRpZmljVG9OdW1iZXIobnVtKSArICcnO1xuICAvLyDmlbTmlbDlkozlsI/mlbDpg6jliIZcbiAgY29uc3QgW2ludFN0ciwgZGVjU3RyXSA9IG51bVN0ci5zcGxpdCgnLicpO1xuXG4gIHJldHVybiBzeW1ib2wgKyBmb3JtYXRJbnQoaW50U3RyLCB0aG91c2FuZCkgKyBmb3JtYXREZWMoZGVjU3RyLCBwcmVjaXNpb24sIGRlY2ltYWwpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0TW9uZXk7XG4iLCIvKipcbiAqIOagvOW8j+WMlumTtuihjOWNoeWPt1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYW5rQ2FyZE5vIOimgeWkhOeQhueahOWtl+espuS4slxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jaGFyPVwiIFwiXSDpl7TpmpTlrZfnrKZcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9NF0g6Ze06ZqU6ZW/5bqmXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoLzlvI/ljJbnmoTpk7booYzljaHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gMTnkvY3pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwMDE4Jyk7XG4gKiAvLyA9PiA2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MFxuICpcbiAqIC8vIOiEseaVj+mTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjgqKioqKioqKjg5MCcpO1xuICogLy8gPT4gNjIyOCAqKioqICoqKiogODkwXG4gKlxuICogLy8gMTbkvY3pk7booYzljaHvvIxcIi1cIumXtOmalFxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnLCB7Y2hhcjogJy0nfSk7XG4gKiAvLyA9PiA2MjI4LTQ4MDQtMDI1Ni00ODkwXG4gKlxuICovXG5mdW5jdGlvbiBmb3JtYXRCYW5rQ2FyZChiYW5rQ2FyZE5vID0gJycsIHsgY2hhciA9ICcgJywgbGVuZ3RoID0gNCB9ID0ge30pIHtcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgKC57JHtsZW5ndGh9fSlgLCAnZycpO1xuICBjb25zdCByZWdDaGFyID0gbmV3IFJlZ0V4cChgJHtjaGFyfWAsICdnJyk7XG5cbiAgY29uc3QgcmVhbFZhbHVlID0gYmFua0NhcmROby5yZXBsYWNlKHJlZ0NoYXIsICcnKTtcblxuICBjb25zdCBuZWVkUmVtb3ZlTGFzdENoYXIgPSByZWFsVmFsdWUubGVuZ3RoICUgbGVuZ3RoID09PSAwO1xuXG4gIGNvbnN0IHN0ciA9IHJlYWxWYWx1ZS5yZXBsYWNlKHJlZywgYCQxJHtjaGFyfWApO1xuXG4gIHJldHVybiBuZWVkUmVtb3ZlTGFzdENoYXIgPyBzdHIuc3Vic3RyKDAsIHN0ci5sZW5ndGggLSAxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QmFua0NhcmQ7XG4iLCIvKipcbiAqIOabv+aNouWtl+espu+8jOW6lOeUqOWcuuaZr+Wmgu+8muiEseaVj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnJlcGxhY2VDaGFyXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIg6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnN0YXJ0PTNdIOW8gOWni+S9jee9rlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVuZD0tNF0g57uT5p2f5L2N572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIipcIl0g5pu/5o2i5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucmVwZWF0XSDmm7/mjaLlrZfnrKbnmoTph43lpI3mrKHmlbDvvIzpu5jorqTkuLrmm7/mjaLlhoXlrrnplb/luqbvvIzlj6/orr7nva7kuLrlm7rlrprlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5leGNsdWRlXSDmjpLpmaTlrZfnrKbvvIzlpoLmnpzmjIflrprmjpLpmaTpobnvvIxyZXBlYXTorr7nva7ml6DmlYhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWkhOeQhuWQjueahOWtl+esplxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmiYvmnLrlj7dcbiAqIHJlcGxhY2VDaGFyKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gMTMwKioqKjAwMDBcbiAqXG4gKiAvLyDouqvku73or4FcbiAqIHJlcGxhY2VDaGFyKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IDEzMCoqKioqKioqKioqMjI4OFxuICpcbiAqIC8vIOmCrueusVxuICogY29uc3QgZW1haWwgPSAnMTIzNDVAcXEuY29tJ1xuICogcmVwbGFjZUNoYXIoZW1haWwsIHtzdGFydDogMiwgZW5kOiBlbWFpbC5pbmRleE9mKCdAJyksIHJlcGVhdDogNH0pO1xuICogLy8gPT4gMTIqKioqQHFxLmNvbVxuICpcbiAqIC8vIOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnLCB7c3RhcnQ6IDAsIGVuZDogLTQsIHJlcGVhdDogNH0pO1xuICogLy8gPT4gKioqKjAwMThcbiAqXG4gKiAvLyDluKbmoLzlvI/nmoTpk7booYzljaHlj7dcbiAqIHJlcGxhY2VDaGFyKCc2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOCcsIHtzdGFydDogNCwgZW5kOiAtNCwgZXhjbHVkZTogJyAnfSk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiAqKioqIDAxOFxuICpcbiAqIC8vIOeUqOaIt+WQjVxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkCcsIHtzdGFydDogMSwgZW5kOiAxMCwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkCcsIHtzdGFydDogMSwgZW5kOiAxMCwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkOafkCcsIHtzdGFydDogMSwgZW5kOiAxMCwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUNoYXIoc3RyID0gJycsIHsgc3RhcnQgPSAzLCBlbmQgPSAtNCwgY2hhciA9ICcqJywgcmVwZWF0LCBleGNsdWRlIH0gPSB7fSkge1xuICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuXG4gIC8vIOW8gOWni+S9jee9rui2hei/h3N0cumVv+W6plxuICBpZiAoTWF0aC5hYnMoc3RhcnQpID49IHN0ckxlbikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID49IDAgPyAoc3RhcnQgPiBzdHJMZW4gPyBzdHJMZW4gOiBzdGFydCkgOiBzdHJMZW4gKyBzdGFydDtcbiAgZW5kID0gZW5kID49IDAgPyAoZW5kID4gc3RyTGVuID8gc3RyTGVuIDogZW5kKSA6IHN0ckxlbiArIGVuZDtcblxuICAvLyDlvIDlp4vkvY3nva7lpKfkuo7nu5PmnZ/kvY3nva5cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBsZXQgbWlkZGxlU3RyID0gJyc7XG5cbiAgaWYgKGV4Y2x1ZGUpIHtcbiAgICByZXBlYXQgPSBNYXRoLnJvdW5kKGVuZCAtIHN0YXJ0KTtcblxuICAgIGNvbnN0IG1hc2tTdHIgPSBzdHIuc3Vic3RyKHN0YXJ0LCByZXBlYXQpO1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFteJHtleGNsdWRlfV1gLCAnZycpO1xuICAgIG1pZGRsZVN0ciA9IG1hc2tTdHIucmVwbGFjZShyZWcsIGNoYXIpO1xuICB9IGVsc2Uge1xuICAgIHJlcGVhdCA9IHR5cGVvZiByZXBlYXQgPT09ICdudW1iZXInICYmIHJlcGVhdCA+PSAwID8gcmVwZWF0IDogTWF0aC5yb3VuZChlbmQgLSBzdGFydCk7XG4gICAgbWlkZGxlU3RyID0gY2hhci5yZXBlYXQocmVwZWF0KTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc3Vic3RyKDAsIHN0YXJ0KSArIG1pZGRsZVN0ciArIHN0ci5zdWJzdHIoZW5kKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVwbGFjZUNoYXI7XG4iLCJpbXBvcnQgeyBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcnO1xuXG4vLyDnroDkvZNcbmNvbnN0IGNobk51bWJlckNoYXIgPSBbJ+mbticsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nSddO1xuY29uc3QgY2huVW5pdENoYXIgPSBbJycsICfljYEnLCAn55m+JywgJ+WNgyddO1xuXG4vLyDnuYHkvZNcbmNvbnN0IGJpZzVOdW1iZXJDaGFyID0gWyfpm7YnLCAn5aO5JywgJ+i0sCcsICflj4EnLCAn6IKGJywgJ+S8jScsICfpmYYnLCAn5p+SJywgJ+aNjCcsICfnjpYnXTtcbmNvbnN0IGJpZzVVbml0Q2hhciA9IFsnJywgJ+aLvicsICfkvbAnLCAn5LufJ107XG5cbi8vIOaVsOWtl+Wtl+espuOAgeiuoeaVsOWNleS9jVxuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCBudW1iZXJDaGFyO1xuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCB1bml0Q2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdFNlY3Rpb247XG5cbi8qKlxuICog5q+P5Liq5bCP6IqC55qE5YaF6YOo6L+b6KGM6L2s5YyWXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWN0aW9uIOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L2s5YyW55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbikge1xuICBsZXQgc3RyID0gJycsXG4gICAgY2huc3RyID0gJycsXG4gICAgemVybyA9IGZhbHNlLCAvL3plcm/kuLrmmK/lkKbov5vooYzooaXpm7bvvIwg56ys5LiA5qyh6L+b6KGM5Y+W5L2Z55Sx5LqO5Li65Liq5L2N5pWw77yM6buY6K6k5LiN6KGl6Zu2XG4gICAgdW5pdFBvcyA9IDA7XG5cbiAgd2hpbGUgKHNlY3Rpb24gPiAwKSB7XG4gICAgLy8g5a+55pWw5a2X5Y+W5L2ZMTDvvIzlvpfliLDnmoTmlbDljbPkuLrkuKrkvY3mlbBcbiAgICBsZXQgdiA9IHNlY3Rpb24gJSAxMDtcblxuICAgIC8v5aaC5p6c5pWw5a2X5Li66Zu277yM5YiZ5a+55a2X56ym5Liy6L+b6KGM6KGl6Zu2XG4gICAgaWYgKHYgPT0gMCkge1xuICAgICAgaWYgKHplcm8pIHtcbiAgICAgICAgLy/lpoLmnpzpgYfliLDov57nu63lpJrmrKHlj5bkvZnpg73mmK8w77yM6YKj5LmI5Y+q6ZyA6KGl5LiA5Liq6Zu25Y2z5Y+vXG4gICAgICAgIHplcm8gPSBmYWxzZTtcbiAgICAgICAgY2huc3RyID0gbnVtYmVyQ2hhclt2XSArIGNobnN0cjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy/nrKzkuIDmrKHlj5bkvZnkuYvlkI7vvIzlpoLmnpzlho3mrKHlj5bkvZnkuLrpm7bvvIzliJnpnIDopoHooaXpm7ZcbiAgICAgIHplcm8gPSB0cnVlO1xuICAgICAgc3RyID0gbnVtYmVyQ2hhclt2XTtcbiAgICAgIHN0ciArPSB1bml0Q2hhclt1bml0UG9zXTtcbiAgICAgIGNobnN0ciA9IHN0ciArIGNobnN0cjtcbiAgICB9XG4gICAgdW5pdFBvcysrO1xuICAgIHNlY3Rpb24gPSBNYXRoLmZsb29yKHNlY3Rpb24gLyAxMCk7XG4gIH1cbiAgcmV0dXJuIGNobnN0cjtcbn1cblxuLyoqXG4gKiDovazmjaLmlbTmlbBcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHovazmjaLnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOS4reaWh+aVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0SW50ZWdlcihudW0pIHtcbiAgbnVtID0gTWF0aC5mbG9vcihudW0pO1xuXG4gIGxldCB1bml0UG9zID0gMDtcbiAgbGV0IHN0cklucyA9ICcnLFxuICAgIGNoblN0ciA9ICcnO1xuICBsZXQgbmVlZFplcm8gPSBmYWxzZTtcblxuICBpZiAobnVtID09PSAwKSB7XG4gICAgcmV0dXJuIG51bWJlckNoYXJbMF07XG4gIH1cbiAgd2hpbGUgKG51bSA+IDApIHtcbiAgICB2YXIgc2VjdGlvbiA9IG51bSAlIDEwMDAwO1xuICAgIGlmIChuZWVkWmVybykge1xuICAgICAgY2huU3RyID0gbnVtYmVyQ2hhclswXSArIGNoblN0cjtcbiAgICB9XG4gICAgc3RySW5zID0gc2VjdGlvblRvQ2hpbmVzZShzZWN0aW9uKTtcbiAgICBzdHJJbnMgKz0gc2VjdGlvbiAhPT0gMCA/IHVuaXRTZWN0aW9uW3VuaXRQb3NdIDogdW5pdFNlY3Rpb25bMF07XG4gICAgY2huU3RyID0gc3RySW5zICsgY2huU3RyO1xuICAgIG5lZWRaZXJvID0gc2VjdGlvbiA8IDEwMDAgJiYgc2VjdGlvbiA+IDA7XG4gICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAxMDAwMCk7XG4gICAgdW5pdFBvcysrO1xuICB9XG4gIHJldHVybiBjaG5TdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5bCP5pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnREZWNpbWFsKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgY29uc3QgaW5kZXggPSBudW1TdHIuaW5kZXhPZignLicpO1xuXG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoaW5kZXggPiAtMSkge1xuICAgIGxldCBkZWNpbWFsU3RyID0gbnVtU3RyLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgcmV0ID0gbWFwTnVtYmVyQ2hhcihwYXJzZUludChkZWNpbWFsU3RyKSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYoOWwhOS4uuS4reaWh+aVsOWtl1xuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgeWkhOeQhueahOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L+U5Zue5Lit5paH5pWw5a2X55qE5pig5bCEXG4gKi9cbmZ1bmN0aW9uIG1hcE51bWJlckNoYXIobnVtKSB7XG4gIGNvbnN0IG51bVN0ciA9IG51bSArICcnO1xuICBsZXQgcmV0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG51bVN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHJldCArPSBudW1iZXJDaGFyW3BhcnNlSW50KG51bVN0cltpXSldO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmlbDlrZfovazkuK3mlofmlbDlrZdcbiAqIOS4jeWcqOWuieWFqOaVsOWtlyAtOTAwNzE5OTI1NDc0MDk5Me+9njkwMDcxOTkyNTQ3NDA5OTEg5YaF77yM5aSE55CG5Lya5pyJ5byC5bi4XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IubnVtYmVyVG9DaGluZXNlXG4gKiBAc2luY2UgMS4yLjBcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g5pWw5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5iaWc1PWZhbHNlXSDnuYHkvZNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudW5pdD10cnVlXSDorqHmlbDljZXkvY1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWNpbWFsPVwi54K5XCJdIOS4reaWh+Wwj+aVsOeCuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnplcm89XCLpm7ZcIl0g6K6+572uMOOAguW4uOeUqOmFjee9riDjgIdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5uZWdhdGl2ZT1cIui0n1wiXSDotJ/mlbDliY3pnaLnmoTlrZdcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy51bml0Q29uZmlnXSDoioLngrnljZXkvY3phY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnc9XCLkuIdcIl0g6K6+572u6K6h5pWw5Y2V5L2N5LiH44CC5bi455So6YWN572uIOiQrFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnVuaXRDb25maWcueT1cIuS6v1wiXSDorr7nva7orqHmlbDljZXkvY3kur/jgILluLjnlKjphY3nva4g5YSEXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqIEBleGFtcGxlXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMCk7XG4gKiAvLyA9PiDkuIDnmb5cbiAqXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLjMpO1xuICogLy8gPT4g5LiA55m+54K55LiJXG4gKlxuICogLy8g57mB5L2TXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2wXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2w54K55Y+BXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEyMzQ1Njc4OTAsIHtiaWc1OiB0cnVlfSk7XG4gKiAvLyA9PiDlo7nmi77otLDkur/lj4Hku5/ogobkvbDkvI3mi77pmYbkuIfmn5Lku5/mjYzkvbDnjpbmi75cbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY1cbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2V9KTtcbiAqIC8vID0+IOS4gOS5neS5nembtlxuICpcbiAqIC8vIOS4jeW4puiuoeaVsOWNleS9je+8jOS/ruaUuTBcbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2UsIHplcm86J+OAhyd9KTtcbiAqIC8vID0+IOS4gOS5neS5neOAh1xuICpcbiAqL1xuZnVuY3Rpb24gbnVtYmVyVG9DaGluZXNlKFxuICBudW0sXG4gIHtcbiAgICBiaWc1ID0gZmFsc2UsXG4gICAgdW5pdCA9IHRydWUsXG4gICAgZGVjaW1hbCA9ICfngrknLFxuICAgIHplcm8gPSAnJyxcbiAgICBuZWdhdGl2ZSA9ICfotJ8nLFxuICAgIHVuaXRDb25maWcgPSB7XG4gICAgICB3OiAn5LiHJywgLy8gJ+iQrCdcbiAgICAgIHk6ICfkur8nIC8vICflhIQnXG4gICAgfVxuICB9ID0ge31cbikge1xuICAvLyDpnZ7mlbDlrZcg5oiWIE5hTiDkuI3lpITnkIZcbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInIHx8IGlzTmFOKG51bSkpIHtcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlV2FybmluZykge1xuICAgICAgY29uc29sZS53YXJuKGDlj4LmlbDplJnor68gJHtudW1977yM6K+35Lyg5YWl5pWw5a2XYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8g6LaF6L+H5a6J5YWo5pWw5a2X5o+Q56S6XG4gIGNoZWNrQm91bmRhcnkobnVtKTtcblxuICAvLyDorr7nva7mlbDlrZflrZfnrKblkozorqHmlbDljZXkvY1cbiAgaWYgKGJpZzUpIHtcbiAgICBudW1iZXJDaGFyID0gYmlnNU51bWJlckNoYXIuc2xpY2UoKTtcbiAgICB1bml0Q2hhciA9IGJpZzVVbml0Q2hhci5zbGljZSgpO1xuICB9IGVsc2Uge1xuICAgIG51bWJlckNoYXIgPSBjaG5OdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBjaG5Vbml0Q2hhci5zbGljZSgpO1xuICB9XG5cbiAgLy8g6K6+572u6IqC54K56K6h5pWw5Y2V5L2N77yM5LiH44CB5Lq/44CB5LiH5Lq/XG4gIGNvbnN0IGRlZmF1bHRVbml0V2FuID0gJ+S4hyc7XG4gIGNvbnN0IGRlZmF1bHRVbml0WWkgPSAn5Lq/JztcbiAgdW5pdFNlY3Rpb24gPSBbJycsIHVuaXRDb25maWcudyB8fCBkZWZhdWx0VW5pdFdhbiwgdW5pdENvbmZpZy55IHx8IGRlZmF1bHRVbml0WWksIHVuaXRDb25maWcudyAmJiB1bml0Q29uZmlnLnkgPyB1bml0Q29uZmlnLncgKyB1bml0Q29uZmlnLnkgOiBkZWZhdWx0VW5pdFdhbiArIGRlZmF1bHRVbml0WWldO1xuXG4gIC8vIOiuvue9rjBcbiAgaWYgKHplcm8pIHtcbiAgICBudW1iZXJDaGFyWzBdID0gemVybztcbiAgfVxuXG4gIC8vIOWJjee9ruWtl+espu+8jOi0n+aVsOWkhOeQhlxuICBjb25zdCBwcmVTdHIgPSBudW0gPCAwID8gbmVnYXRpdmUgOiAnJztcblxuICAvLyDmlbTmlbDlkozlsI/mlbBcbiAgbGV0IGNobkludGVnZXIsIGNobkRlY2ltYWw7XG5cbiAgLy8g5aSE55CG5pW05pWwXG4gIGlmICh1bml0KSB7XG4gICAgY2huSW50ZWdlciA9IGNvbnZlcnRJbnRlZ2VyKG51bSk7XG4gIH0gZWxzZSB7XG4gICAgY2huSW50ZWdlciA9IG1hcE51bWJlckNoYXIoTWF0aC5mbG9vcihudW0pKTtcbiAgfVxuXG4gIC8vIOWkhOeQhuWwj+aVsFxuICBjaG5EZWNpbWFsID0gY29udmVydERlY2ltYWwobnVtKTtcblxuICByZXR1cm4gY2huRGVjaW1hbCA/IGAke3ByZVN0cn0ke2NobkludGVnZXJ9JHtkZWNpbWFsfSR7Y2huRGVjaW1hbH1gIDogYCR7cHJlU3RyfSR7Y2huSW50ZWdlcn1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBudW1iZXJUb0NoaW5lc2U7XG4iLCIvKipcbiAqIOWtl+iKgui9rOaNouWtmOWCqOWNleS9je+8jOS/neeVmTLkvY3lsI/mlbDngrlcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5ieXRlc1RvU2l6ZVxuICogQHNpbmNlIDMuOC4wXG4gKiBAcGFyYW0ge251bWJlcn0gYnl0ZXMg5a2X6IqC5aSn5bCPXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDlrZjlgqjljZXkvY3lgLxcbiAqIEBleGFtcGxlXG4gKlxuICogYnl0ZXNUb1NpemUoMCk7XG4gKiAvLyA9PiAwIEJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KTtcbiAqIC8vID0+IDEgS0JcbiAqXG4gKiBieXRlc1RvU2l6ZSgzLjIxMzI0MyoxMDI0KjEwMjQpO1xuICogLy8gPT4gMy4yMSBNQlxuICpcbiAqIGJ5dGVzVG9TaXplKDEwMjQqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDEgR0JcbiAqL1xuZnVuY3Rpb24gYnl0ZXNUb1NpemUoYnl0ZXMpIHtcbiAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQic7XG4gIGNvbnN0IGsgPSAxMDI0O1xuICAvLyDlrZjlgqjljZXkvY1cbiAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcbiAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuXG4gIHJldHVybiBzaXplc1tpXSA/IGAke051bWJlcigoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSl9ICR7c2l6ZXNbaV19YCA6IGJ5dGVzICsgJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ5dGVzVG9TaXplO1xuIiwiaW1wb3J0IGlzSWRDYXJkIGZyb20gJy4vaXNJZENhcmQnO1xuXG5jb25zdCByZWdJZENhcmQgPSAvXig/PHByb3ZpbmNlPlxcZHsyfSkoPzxjaXR5PlxcZHsyfSkoPzxhcmVhPlxcZHsyfSkoPzx5ZWFyPig/OlxcZHsyfSk/XFxkezJ9KSg/PG1vbnRoPlxcZHsyfSkoPzxkYXk+XFxkezJ9KVxcZHsyfSg/PGdlbmRlcj5cXGQpKD86XFxkfFgpPyQvaTtcblxuY29uc3QgUHJvdmluY2VzID0gW1xuICAvLyDljY7ljJflnLDljLrvvJrljJfkuqzluIJ8MTEwMDAw77yM5aSp5rSl5biCfDEyMDAwMO+8jOays+WMl+ecgXwxMzAwMDDvvIzlsbHopb/nnIF8MTQwMDAw77yM5YaF6JKZ5Y+k6Ieq5rK75Yy6fDE1MDAwMFxuICBbJzExJywgJ+WMl+S6rOW4giddLFxuICBbJzEyJywgJ+Wkqea0peW4giddLFxuICBbJzEzJywgJ+ays+WMl+ecgSddLFxuICBbJzE0JywgJ+Wxseilv+ecgSddLFxuICBbJzE1JywgJ+WGheiSmeWPpOiHquayu+WMuiddLFxuXG4gIC8vIOS4nOWMl+WcsOWMuu+8miDovr3lroHnnIF8MjEwMDAw77yM5ZCJ5p6X55yBfDIyMDAwMO+8jOm7kem+meaxn+ecgXwyMzAwMDBcbiAgWycyMScsICfovr3lroHnnIEnXSxcbiAgWycyMicsICflkInmnpfnnIEnXSxcbiAgWycyMycsICfpu5HpvpnmsZ/nnIEnXSxcblxuICAvLyDljY7kuJzlnLDljLrvvJog5LiK5rW35biCfDMxMDAwMO+8jOaxn+iLj+ecgXwzMjAwMDDvvIzmtZnmsZ/nnIF8MzMwMDAw77yM5a6J5b6955yBfDM0MDAwMO+8jOemj+W7uuecgXwzNTAwMDDvvIzmsZ/opb/nnIF8MzYwMDAw77yM5bGx5Lic55yBfDM3MDAwMFxuICBbJzMxJywgJ+S4iua1t+W4giddLFxuICBbJzMyJywgJ+axn+iLj+ecgSddLFxuICBbJzMzJywgJ+a1meaxn+ecgSddLFxuICBbJzM0JywgJ+WuieW+veecgSddLFxuICBbJzM1JywgJ+emj+W7uuecgSddLFxuICBbJzM2JywgJ+axn+ilv+ecgSddLFxuICBbJzM3JywgJ+WxseS4nOecgSddLFxuXG4gIC8vIOWNjuS4reWcsOWMuu+8miDmsrPljZfnnIF8NDEwMDAw77yM5rmW5YyX55yBfDQyMDAwMO+8jOa5luWNl+ecgXw0MzAwMDBcbiAgWyc0MScsICfmsrPljZfnnIEnXSxcbiAgWyc0MicsICfmuZbljJfnnIEnXSxcbiAgWyc0MycsICfmuZbljZfnnIEnXSxcblxuICAvLyDljY7ljZflnLDljLrvvJrlub/kuJznnIF8NDQwMDAw77yM5bm/6KW/5aOu5peP6Ieq5rK75Yy6fDQ1MDAwMO+8jOa1t+WNl+ecgXw0NjAwMDBcbiAgWyc0NCcsICflub/kuJznnIEnXSxcbiAgWyc0NScsICflub/opb/lo67ml4/oh6rmsrvljLonXSxcbiAgWyc0NicsICfmtbfljZfnnIEnXSxcblxuICAvLyDopb/ljZflnLDljLrvvJrph43luobluIJ8NTAwMDAw77yM5Zub5bed55yBfDUxMDAwMO+8jOi0teW3nuecgXw1MjAwMDDvvIzkupHljZfnnIF8NTMwMDAw77yM6KW/6JeP6Ieq5rK75Yy6fDU0MDAwMFxuICBbJzUwJywgJ+mHjeW6huW4giddLFxuICBbJzUxJywgJ+Wbm+W3neecgSddLFxuICBbJzUyJywgJ+i0teW3nuecgSddLFxuICBbJzUzJywgJ+S6keWNl+ecgSddLFxuICBbJzU0JywgJ+ilv+iXj+iHquayu+WMuiddLFxuXG4gIC8vIOilv+WMl+WcsOWMuu+8miDpmZXopb/nnIF8NjEwMDAw77yM55SY6IKD55yBfDYyMDAwMO+8jOmdkua1t+ecgXw2MzAwMDDvvIzlroHlpI/lm57ml4/oh6rmsrvljLp8NjQwMDAw77yM5paw55aG57u05ZC+5bCU6Ieq5rK75Yy6fDY1MDAwMFxuICBbJzYxJywgJ+mZleilv+ecgSddLFxuICBbJzYyJywgJ+eUmOiCg+ecgSddLFxuICBbJzYzJywgJ+mdkua1t+ecgSddLFxuICBbJzY0JywgJ+WugeWkj+WbnuaXj+iHquayu+WMuiddLFxuICBbJzY1JywgJ+aWsOeWhue7tOWQvuWwlOiHquayu+WMuiddLFxuXG4gIC8vIOWPsOa5vuWcsOWMuu+8muWPsOa5vuecgXw3MTAwMDBcbiAgLy8g5Y+w5rm+5bGF5rCR5YWs5rCR6Lqr5Lu95Y+356CB5Zyw5Z2A56CB5Li6ODMwMDAw77yM5Y+C6ICDIGh0dHA6Ly93d3cud2Fud2VpYmFpa2UuY29tL3dpa2kt5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu96KGM5pS/5Yy65YiS5Luj56CBXyg35Yy6KeOAgWh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+a4r+a+s+WPsOWxheawkeWxheS9j+ivgVxuICBbJzcxJywgJ+WPsOa5vuecgSddLFxuICBbJzgzJywgJ+WPsOa5vuecgSddLFxuXG4gIC8vIOa4r+a+s+WcsOWMuu+8mummmea4r+eJueWIq+ihjOaUv+WMunw4MTAwMDDvvIzmvrPpl6jnibnliKvooYzmlL/ljLp8ODIwMDAwXG4gIFsnODEnLCAn6aaZ5riv54m55Yir6KGM5pS/5Yy6J10sXG4gIFsnODInLCAn5r6z6Zeo54m55Yir6KGM5pS/5Yy6J11cbl07XG5cbi8vIOesrOS4gOS9jeaVsOWtl+aYr+S7peWJjeeahOWkp+WMuuWItuS7o+eggeOAguesrOS6jOS9jeaYr+Wkp+WMuuaJgOWcqOecgeW4gue8lueggeOAguWFqOWbveWFseWIhuS4ujjkuKrlpKfljLrvvJrljY7ljJfvvIgx77yJ44CB5Lic5YyX77yIMu+8ieOAgeWNjuS4nO+8iDPvvInjgIHkuK3ljZfvvIg077yJ44CB6KW/5Y2X77yINe+8ieOAgeilv+WMl++8iDbvvInjgIHlj7Dmub7vvIg377yJ5ZKM5riv5r6z77yIOO+8ieOAglxuLy8gY29uc3QgUmVnaW9ucyA9IFtcbi8vICAgWycxJywgJ+WNjuWMl+WcsOWMuiddLFxuLy8gICBbJzInLCAn5Lic5YyX5Zyw5Yy6J10sXG4vLyAgIFsnMycsICfljY7kuJzlnLDljLonXSxcbi8vICAgWyc0JywgJ+S4reWNl+WcsOWMuiddLFxuLy8gICBbJzUnLCAn6KW/5Y2X5Zyw5Yy6J10sXG4vLyAgIFsnNicsICfopb/ljJflnLDljLonXSxcbi8vICAgWyc3JywgJ+WPsOa5vuWcsOWMuiddLFxuLy8gICBbJzgnLCAn5riv5r6z5Zyw5Yy6J11cbi8vIF07XG5cbi8qKlxuICog6Kej5p6Q6Lqr5Lu96K+B5Y+356CB77yM5pSv5oyBMTXjgIExOOS9jei6q+S7veivgeWPt+eggVxuICogXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5wYXJzZUlkQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE15L2NXG4gKiBAcmV0dXJucyB7bnVsbCB8IE9iamVjdH0g55yB5Lu944CB55Sf5pel44CB5oCn5Yir77yM55yBL+W4gi/ljLov5bm0L+aciC/ml6Uv5oCn5Yir57yW56CBXG4gKiBAZXhhbXBsZVxuICogcGFyc2VJZENhcmQoJzEyMzQ1Njc4OTEyMzQ1NicpO1xuICogLy8gPT4gbnVsbFxuICogXG4gKiAvLyAxOOS9jei6q+S7veivgeWPt+eggVxuICogcGFyc2VJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpXG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCIxOTkzLTEwLTMwXCIsXG4gIGdlbmRlcjogXCLlpbNcIixcbiAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjE5OTNcIiwgbW9udGg6IFwiMTBcIiwgZGF5OiBcIjMwXCIsIGdlbmRlcjogXCI4XCIgfSxcbiAgcHJvdmluY2U6IFwi5rKz5YyX55yBXCJcbn1cbiAqIC8vIDE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBwYXJzZUlkQ2FyZCgnMTMwNzAxOTMxMDMwMjI4Jyk7XG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCI5My0xMC0zMFwiLFxuICBnZW5kZXI6IFwi5aWzXCIsXG4gIG9yaWdpbjogeyBwcm92aW5jZTogXCIxM1wiLCBjaXR5OiBcIjA3XCIsIGFyZWE6IFwiMDFcIiwgeWVhcjogXCI5M1wiLCBtb250aDogXCIxMFwiLCBkYXk6IFwiMzBcIiwgZ2VuZGVyOiBcIjhcIiB9LFxuICBwcm92aW5jZTogXCLmsrPljJfnnIFcIlxufVxuICogXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSWRDYXJkKGlkKSB7XG4gIGlmICghaXNJZENhcmQoaWQsIHsgbG9vc2U6IHRydWUgfSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGluZm8gPSByZWdJZENhcmQuZXhlYyhpZCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHR5cGUge3sgcHJvdmluY2U6IHN0cmluZywgY2l0eTogc3RyaW5nLCBhcmVhOiBzdHJpbmcsIHllYXI6IHN0cmluZywgbW9udGg6IHN0cmluZywgZGF5OiBzdHJpbmcsIGdlbmRlcjogc3RyaW5nIH19XG4gICAqXG4gICAqL1xuICBsZXQgb3JpZ2luID0ge1xuICAgIHByb3ZpbmNlOiAnJyxcbiAgICBjaXR5OiAnJyxcbiAgICBhcmVhOiAnJyxcbiAgICB5ZWFyOiAnJyxcbiAgICBtb250aDogJycsXG4gICAgZGF5OiAnJyxcbiAgICBnZW5kZXI6ICcnXG4gIH07XG5cbiAgaWYgKGluZm8uZ3JvdXBzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbiA9IGluZm8uZ3JvdXBzO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbiA9IHtcbiAgICAgIHByb3ZpbmNlOiBpbmZvWzFdLFxuICAgICAgY2l0eTogaW5mb1syXSxcbiAgICAgIGFyZWE6IGluZm9bM10sXG4gICAgICB5ZWFyOiBpbmZvWzRdLFxuICAgICAgbW9udGg6IGluZm9bNV0sXG4gICAgICBkYXk6IGluZm9bNl0sXG4gICAgICBnZW5kZXI6IGluZm9bN11cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHJvdmluY2UgPSBQcm92aW5jZXMuZmluZCgoaXRlbSkgPT4gaXRlbVswXSA9PT0gb3JpZ2luLnByb3ZpbmNlKTtcblxuICBpZiAoIXByb3ZpbmNlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBiaXJ0aGRheSA9IGAke29yaWdpbi55ZWFyfS0ke29yaWdpbi5tb250aH0tJHtvcmlnaW4uZGF5fWA7XG4gIGNvbnN0IGdlbmRlciA9IE51bWJlcihvcmlnaW4uZ2VuZGVyKSAlIDIgPT09IDAgPyAn5aWzJyA6ICfnlLcnO1xuICAvLyBjb25zdCByZWdpb24gPSBSZWdpb25zLmZpbmQoaXRlbSA9PiBpdGVtWzBdID09PSBvcmlnaW4ucHJvdmluY2U/LnN1YnN0cigwLCAxKSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyByZWdpb24sXG4gICAgcHJvdmluY2U6IHByb3ZpbmNlWzFdLFxuICAgIGJpcnRoZGF5LFxuICAgIGdlbmRlcixcbiAgICBvcmlnaW5cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJZENhcmQ7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCwgZmxvYXQyRml4ZWQsIGNoZWNrQm91bmRhcnkgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5cbi8qKlxuICog57K+56Gu5LmY5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45LmYXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnRpbWVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtMSDnm7jkuZjnmoTnrKzkuIDkuKrmlbBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtMiDnm7jkuZjnmoTnrKzkuozkuKrmlbBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gb3RoZXJzIOebuOS5mOeahOWFtuS9meaVsFxuICogQHJldHVybnMge251bWJlcn0g5LmY56evXG4gKiBAZXhhbXBsZVxuICpcbiAqIHRpbWVzKDMsIDAuNik7XG4gKiAvLyA9PiAxLjhcbiAqXG4gKiB0aW1lcygzLCAwLjYsIDIpO1xuICogLy8gPT4gMy42XG4gKlxuICogdGltZXMoMywgMC42LCAyLCAxMCk7XG4gKiAvLyA9PiAzNlxuICovXG5mdW5jdGlvbiB0aW1lcyhudW0xLCBudW0yLCAuLi5vdGhlcnMpIHtcbiAgaWYgKG90aGVycy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aW1lcyh0aW1lcyhudW0xLCBudW0yKSwgLi4ub3RoZXJzKTtcbiAgfVxuICBjb25zdCBudW0xQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTEpO1xuICBjb25zdCBudW0yQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTIpO1xuICBjb25zdCBiYXNlTnVtID0gZGlnaXRMZW5ndGgobnVtMSkgKyBkaWdpdExlbmd0aChudW0yKTtcbiAgY29uc3QgbGVmdFZhbHVlID0gbnVtMUNoYW5nZWQgKiBudW0yQ2hhbmdlZDtcblxuICBjaGVja0JvdW5kYXJ5KGxlZnRWYWx1ZSk7XG5cbiAgcmV0dXJuIGxlZnRWYWx1ZSAvIE1hdGgucG93KDEwLCBiYXNlTnVtKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGltZXM7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcblxuLyoqXG4gKiDnsr7noa7liqDms5XvvIzmlK/mjIHlpJrkuKrmlbDnm7jliqBcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgucGx1c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bTEg55u45Yqg55qE56ys5LiA5Liq5pWwXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bTIg55u45Yqg55qE56ys5LqM5Liq5pWwXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG90aGVycyDnm7jliqDnmoTlhbbkvZnmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOaAu+WSjFxuICogQGV4YW1wbGVcbiAqXG4gKiBwbHVzKDAuMSwgMC4yKTtcbiAqIC8vID0+IDAuM1xuICpcbiAqIHBsdXMoMC4xLCAwLjIsIDAuMyk7XG4gKiAvLyA9PiAwLjZcbiAqXG4gKiBwbHVzKDAuMSwgMC4yLCAwLjMsIDAuNCk7XG4gKiAvLyA9PiAxXG4gKi9cbmZ1bmN0aW9uIHBsdXMobnVtMSwgbnVtMiwgLi4ub3RoZXJzKSB7XG4gIGlmIChvdGhlcnMubGVuZ3RoID4gMCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcGx1cyhwbHVzKG51bTEsIG51bTIpLCAuLi5vdGhlcnMpO1xuICB9XG4gIGNvbnN0IGJhc2VOdW0gPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgoZGlnaXRMZW5ndGgobnVtMSksIGRpZ2l0TGVuZ3RoKG51bTIpKSk7XG4gIHJldHVybiAodGltZXMobnVtMSwgYmFzZU51bSkgKyB0aW1lcyhudW0yLCBiYXNlTnVtKSkgLyBiYXNlTnVtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwbHVzO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGggfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5cbi8qKlxuICog57K+56Gu5YeP5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YePXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLm1pbnVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtMSDnm7jlh4/nmoTnrKzkuIDkuKrmlbBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtMiDnm7jlh4/nmoTnrKzkuozkuKrmlbBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gb3RoZXJzIOebuOWHj+eahOesrOWFtuS9meaVsFxuICogQHJldHVybnMge251bWJlcn0g5beuXG4gKiBAZXhhbXBsZVxuICpcbiAqIG1pbnVzKDEsIDAuOSk7XG4gKiAvLyA9PiAwLjFcbiAqXG4gKiBtaW51cygxLCAwLjksIDAuMDIpO1xuICogLy8gPT4gMC4wOFxuICpcbiAqIG1pbnVzKDEsIDAuOSwgMC4wMiwgMC4wOCk7XG4gKiAvLyA9PiAwXG4gKi9cbmZ1bmN0aW9uIG1pbnVzKG51bTEsIG51bTIsIC4uLm90aGVycykge1xuICBpZiAob3RoZXJzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG1pbnVzKG1pbnVzKG51bTEsIG51bTIpLCAuLi5vdGhlcnMpO1xuICB9XG4gIGNvbnN0IGJhc2VOdW0gPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgoZGlnaXRMZW5ndGgobnVtMSksIGRpZ2l0TGVuZ3RoKG51bTIpKSk7XG4gIHJldHVybiAodGltZXMobnVtMSwgYmFzZU51bSkgLSB0aW1lcyhudW0yLCBiYXNlTnVtKSkgLyBiYXNlTnVtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtaW51cztcbiIsImltcG9ydCB7IHN0cmlwLCBkaWdpdExlbmd0aCwgZmxvYXQyRml4ZWQsIGNoZWNrQm91bmRhcnkgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5cbi8qKlxuICog57K+56Gu6Zmk5rOV77yM5pSv5oyB5aSa5Liq5pWw55u46ZmkXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLmRpdmlkZVxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bTEg6Zmk5pWwXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bTIg6KKr6Zmk5pWwXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG90aGVycyDlhbbkvZnooqvpmaTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOWVhuaVsFxuICogQGV4YW1wbGVcbiAqXG4gKiBkaXZpZGUoMS4yMSwgMS4xKTtcbiAqIC8vID0+IDEuMVxuICpcbiAqIGRpdmlkZSgxMDAwLCAxMCwgMTApO1xuICogLy8gPT4gMTBcbiAqXG4gKiBkaXZpZGUoMTAwMCwgMTAsIDEwLCAxMCk7XG4gKiAvLyA9PiAxXG4gKi9cbmZ1bmN0aW9uIGRpdmlkZShudW0xLCBudW0yLCAuLi5vdGhlcnMpIHtcbiAgaWYgKG90aGVycy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBkaXZpZGUoZGl2aWRlKG51bTEsIG51bTIpLCAuLi5vdGhlcnMpO1xuICB9XG4gIGNvbnN0IG51bTFDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMSk7XG4gIGNvbnN0IG51bTJDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMik7XG4gIGNoZWNrQm91bmRhcnkobnVtMUNoYW5nZWQpO1xuICBjaGVja0JvdW5kYXJ5KG51bTJDaGFuZ2VkKTtcbiAgLy8gZml4OiDnsbvkvLwgMTAgKiogLTQg5Li6IDAuMDAwMDk5OTk5OTk5OTk5OTk5OTnvvIxzdHJpcCDkv67mraNcbiAgcmV0dXJuIHRpbWVzKG51bTFDaGFuZ2VkIC8gbnVtMkNoYW5nZWQsIHN0cmlwKE1hdGgucG93KDEwLCBkaWdpdExlbmd0aChudW0yKSAtIGRpZ2l0TGVuZ3RoKG51bTEpKSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBkaXZpZGU7XG4iLCJpbXBvcnQgZGl2aWRlIGZyb20gJy4vZGl2aWRlJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcblxuLyoqXG4gKiDlm5voiI3kupTlhaXvvIzmlK/mjIHorr7nva7nsr7luqZcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgucm91bmRcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6KaB5Zub6IiN5LqU5YWl55qE5pWw5a2XXG4gKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSDlm5voiI3kupTlhaXnmoTnsr7luqZcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOWbm+iIjeS6lOWFpeeahOaVsOWtl1xuICogQGV4YW1wbGVcbiAqXG4gKiByb3VuZCg0LjAwNik7XG4gKiAvLyA9PiA0XG4gKlxuICogcm91bmQoNC4wMDYsIDIpO1xuICogLy8gPT4gNC4wMVxuICpcbiAqIHJvdW5kKDQwNjAsIC0yKTtcbiAqIC8vID0+IDQxMDBcbiAqL1xuZnVuY3Rpb24gcm91bmQobnVtLCBwcmVjaXNpb24gPSAwKSB7XG4gIGNvbnN0IGJhc2UgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcbiAgcmV0dXJuIGRpdmlkZShNYXRoLnJvdW5kKHRpbWVzKG51bSwgYmFzZSkpLCBiYXNlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcm91bmQ7XG4iXSwibmFtZXMiOlsicmVnIiwicmVnSWRDYXJkIiwiYmFzZVJlZyIsInN1bUNoZWNrQ29kZSIsImlzTmFOIl0sIm1hcHBpbmdzIjoiOzs7Ozs7RUFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUMzQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7RUFDakMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3pEOztFQ1hBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDOztFQ3BCQSxNQUFNLE1BQU0sR0FBRztFQUNmO0VBQ0EsRUFBRSxjQUFjLEVBQUUsSUFBSTtFQUN0QixDQUFDLENBQUM7QUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7RUFDakMsRUFBRSxNQUFNLENBQUMsY0FBYyxHQUFH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T0FBTyxNQUFNLEtBQUssUUFBUSxHQUFHLE1BQU0sR0FBRyxFQUFFLENBQUM7RUFDcEQsRUFBRSxRQUFRLEdBQUcsT0FBTyxRQUFRLEtBQUssUUFBUSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7RUFDM0QsRUFBRSxPQUFPLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDeEQ7RUFDQTtFQUNBLEVBQUUsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0VBQzlDO0VBQ0EsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0M7RUFDQSxFQUFFLE9BQU8sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFDdEY7O0VDakpBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDaEQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQ7RUFDQSxFQUFFLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdEO0VBQ0EsRUFBRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7RUFDQSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDbEU7O0VDekNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUMxRixFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDNUI7RUFDQTtFQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sRUFBRTtFQUNqQyxJQUFJLE9BQU8sR0FBRyxDQUFDO0VBQ2YsR0FBRztBQUNIO0VBQ0EsRUFBRSxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxLQUFLLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztFQUMxRSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ2hFO0VBQ0E7RUFDQSxFQUFFLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRTtFQUNwQixJQUFJLE9BQU8sR0FBRyxDQUFDO0VBQ2YsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDckI7RUFDQSxFQUFFLElBQUksT0FBTyxFQUFFO0VBQ2YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDckM7RUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0VBQzlDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0VBQ2pELElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQzNDLEdBQUcsTUFBTTtFQUNULElBQUksTUFBTSxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztFQUMxRixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQ3BDLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFL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Q0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ2pCO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztBQUNwQjtFQUNBO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBQ25CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBQ25CLENBQUMsQ0FBQztBQUNGO0VBQ0E7RUFDQTtFQUNB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
|
|
2230
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL2Zvcm1hdEJhbmtDYXJkLmpzIiwiLi4vc3JjL3JlcGxhY2VDaGFyLmpzIiwiLi4vc3JjL251bWJlclRvQ2hpbmVzZS5qcyIsIi4uL3NyYy9ieXRlc1RvU2l6ZS5qcyIsIi4uL3NyYy9wYXJzZUlkQ2FyZC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTnVtYmVyLmpzIiwiLi4vc3JjL3RpbWVzLmpzIiwiLi4vc3JjL3BsdXMuanMiLCIuLi9zcmMvbWludXMuanMiLCIuLi9zcmMvZGl2aWRlLmpzIiwiLi4vc3JjL3JvdW5kLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiDmo4DmtYvlgLznmoQgYHRvU3RyaW5nYCDnsbvlnotcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lIOexu+Wei+WQjeensFxuICogQHJldHVybnMge2Jvb2xlYW59IOi/lOWbnuWAvOeahCBgdG9TdHJpbmdgIOexu+Wei+aYr+WQpuWMuemFjVxuICovXG5mdW5jdGlvbiBpc1R5cGUodmFsdWUsIHR5cGVuYW1lKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gYFtvYmplY3QgJHt0eXBlbmFtZX1dYDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlO1xuIiwiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzVHlwZSc7XG5cbi8qKlxuICog5qOA5p+l5YC85piv5ZCm5Li6U3RyaW5nXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzU3RyaW5nXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li6U3RyaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzU3RyaW5nKCdhYmMnKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzU3RyaW5nKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnU3RyaW5nJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3RyaW5nO1xuIiwiaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vdHlwZS9pc1N0cmluZyc7XG5cbi8qKlxuICog6L2s5o2i5Li65a2X56ym5LiyXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSDlgLxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWtl+espuS4slxuICovXG5mdW5jdGlvbiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29udmVydFRvU3RyaW5nO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOaJi+acuuWPt+eggSAxMeS9jeaVsOWtl++8jOS7pTHlvIDlpLTvvIznrKzkuozkvY3mmK8zNDU2Nzg55YW25Lit5LiA5Liq77yM5ZCO6Z2i5YaN5YqgOeS4quaVsOWtl1xuY29uc3QgcmVnID0gL14xWzM0NTY3ODldXFxkezl9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65omL5py65Y+356CBXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNNb2JpbGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrmiYvmnLrlj7fnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNNb2JpbGUoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNNb2JpbGUoJzEzMDAwJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01vYmlsZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlm7rlrprnlLXor50g5pSv5oyB5Yy65Y+35ZKM5YiG5py65Y+3IDPvvZ405L2N5Yy65Y+377yM5LulMOW8gOWktO+8mzfvvZ445L2N55u05pKt5Y+377yM5LulMu+9njnlvIDlpLTvvJsx772eNuS9jeWIhuacuuWPt1xuY29uc3QgcmVnID0gL14oMFxcZHsyLDN9XFwtKT8oWzItOV1cXGR7Niw3fSkoXFwtXFxkezEsNn0pPyQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWbuuWumueUteivnVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVGVsZXBob25lXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65Zu65a6a55S16K+dXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVGVsZXBob25lKCcyMjAzMzIxMicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcwMjEtMjIwMzMyMTInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1RlbGVwaG9uZSgnMDIxLTIyMDMzMjEyLTEyMycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzVGVsZXBob25lKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNUZWxlcGhvbmU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6YKu5pS/57yW56CBXG5jb25zdCByZWcgPSAvXlxcZHs2fSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uumCruaUv+e8luegge+8jDbkvY3mlbDlrZdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Bvc3Rjb2RlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66YKu5pS/57yW56CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUG9zdGNvZGUoJzEwMTExMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUG9zdGNvZGUoJzEyMycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzUG9zdGNvZGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bvc3Rjb2RlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOi6q+S7veivgeWPt+ato+WImVxuY29uc3QgcmVnSWRDYXJkID0gL15bMS05XVxcZHs1fSgxOXwyMCk/XFxkezJ9KCgwWzEtOV0pfCgxWzAxMl0pKSgoWzAtMl1bMS05XSl8MTB8MjB8MzB8MzEpXFxkezN9KFxcZHxYKT8kL2k7XG5cbi8qKlxuICog5qCh6aqM56CB6K6h566XXG4gKlxuICogQHByaXZhdGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/kuK3ljY7kurrmsJHlhbHlkozlm73lhazmsJHouqvku73lj7fnoIF85Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95YWs5rCR6Lqr5Lu95Y+356CBfVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0v5bGF5rCR6Lqr5Lu96K+B5Y+356CBfOWxheawkei6q+S7veivgeWPt+eggX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCDouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIOagoemqjOeggeaYr+WQpuato+ehrlxuICovXG5mdW5jdGlvbiBjaGVjayhpZCkge1xuICBsZXQgaW5kZXgsIHN1bSwgbnVtO1xuICBmb3IgKHN1bSA9IGluZGV4ID0gMDsgaW5kZXggPCAxNzsgaW5kZXgrKykge1xuICAgIHN1bSArPSAoTWF0aC5wb3coMiwgMTcgLSBpbmRleCkgJSAxMSkgKiBOdW1iZXIoaWRbaW5kZXhdKTtcbiAgfVxuICBudW0gPSAoMTIgLSAoc3VtICUgMTEpKSAlIDExO1xuICBpZiAobnVtIDwgMTApIHtcbiAgICByZXR1cm4gbnVtID09PSBOdW1iZXIoaWRbMTddKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaWRbMTddID09ICdYJztcbiAgfVxufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4ujE45L2N6Lqr5Lu96K+B5Y+356CB44CCPGJyLz7lrr3mnb7mqKHlvI/kuIvvvIzmlK/mjIExNeS9jei6q+S7veivgeWPt+eggVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSWRDYXJkXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP77yM5pSv5oyBMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hlY2tDb2RlPXRydWVdIOaYr+WQpuagoemqjOacgOWQjuS4gOS9jeagoemqjOegge+8jOS7heaUr+aMgTE45L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66Lqr5Lu96K+B5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjhYJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyOFgnLCB7IGNoZWNrQ29kZTogZmFsc2UgfSk7IC8vIOS4jeagoemqjOagoemqjOeggVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSWRDYXJkKCczMjAzMTE3NzA3MDYwMDEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJZENhcmQoJzMyMDMxMTc3MDcwNjAwMScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lkQ2FyZCh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlLCBjaGVja0NvZGUgPSB0cnVlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIGlmICh2YWx1ZVN0ci5sZW5ndGggPT09IDE1ICYmIGxvb3NlKSB7XG4gICAgcmV0dXJuIHJlZ0lkQ2FyZC50ZXN0KHZhbHVlU3RyKTtcbiAgfVxuXG4gIGlmICh2YWx1ZVN0ci5sZW5ndGggPT09IDE4ICYmIHJlZ0lkQ2FyZC50ZXN0KHZhbHVlU3RyKSkge1xuICAgIGlmIChjaGVja0NvZGUpIHtcbiAgICAgIHJldHVybiBjaGVjayh2YWx1ZVN0cik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lkQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDpgq7nrrFcbmNvbnN0IHJlZyA9IC9eW1xcZGEtel0rKFtcXC1cXC5cXF9dP1tcXGRhLXpdKykqQFtcXGRhLXpdKyhbXFwtXFwuXT9bXFxkYS16XSspKihcXC5bYS16XXsyLH0pKyQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLpFbWFpbFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzRW1haWxcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLpFbWFpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBpc0VtYWlsKCcxMjMyQHFxLmNvbScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzRW1haWwoJzEyM0AnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0VtYWlsKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFbWFpbDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBRUeWPt+ato+WImVxuY29uc3QgcmVnID0gL15bMS05XVxcZHs0LDEwfSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4ulFR5Y+377yM6Z2eMOW8gOWktO+8jDXoh7MxMeS9jeaVsOWtl1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUVFcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLpRUeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1FRKCcxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUVEoJzEyMycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzUVEodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1FRO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOW+ruS/oeWPtyA26IezMjDkvY3vvIzku6XlrZfmr43lvIDlpLTvvIzlrZfmr43vvIzmlbDlrZfvvIzlh4/lj7fvvIjov57mjqXnrKbvvInvvIzkuIvliJLnur9cbmNvbnN0IHJlZyA9IC9eW2Etel0oWy1fYS16MC05XXs1LDE5fSkrJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuW+ruS/oeWPt1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzV1hcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrlvq7kv6Hlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNXWCgnYTEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNXWCgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNXWCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzV1g7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6L2m54mM5Y+35q2j5YiZXG5jb25zdCByZWcgPSAvXlvkuqzmtKXmsqrmuJ3lhoDosavkupHovr3pu5HmuZjnmpbpsoHmlrDoi4/mtZnotaPphILmoYLnlJjmmYvokpnpmZXlkInpl73otLXnsqTpnZLol4/lt53lroHnkLzkvb/pooZBLVpdezF9W0EtWl17MX0oKFtBLVowLTldezR9W0EtWjAtOeaMguWtpuitpua4r+a+s117MX0pfChbQS1aMC05XXs1fVtERl0pfChbREZdW0EtWjAtOV17NX0pKSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uui9pueJjOWPt++8jOaUr+aMgeaWsOiDvea6kOWSjOmdnuaWsOiDvea6kOi9pueJjFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVmVoaWNsZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0v6L2m54mM5Y+3fOi9pueJjOWPt31cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrovabniYzlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNWZWhpY2xlKCfkuqxMMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1ZlaGljbGUoJ+eypEJEMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1ZlaGljbGUoJ+eypEJGMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1ZlaGljbGUoJ+eypEIxMjM0NUQnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1ZlaGljbGUoJ+eypEIxMjM0NUYnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzVmVoaWNsZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVmVoaWNsZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDpnZ4w5byA5aS077yMMTB+MjHkvY3mlbDlrZdcbmNvbnN0IHJlZyA9IC9eWzEtOV1cXGR7OSwyMH0kLztcblxuLy8gOH4zMOS9jeaVsOWtl1xuY29uc3QgcmVnTG9vc2UgPSAvXlxcZHs4LDMwfSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uumTtuihjOWNoeWPt+OAguato+W4uOaooeW8j++8iOmdnjDlvIDlpLTvvIwxMH4yMeS9jeaVsOWtl++8ieWuveadvuaooeW8j++8iDh+MzDkvY3mlbDlrZfvvIlcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0JhbmtDYXJkXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9rZi5xcS5jb20vZmFxLzE3MDExMkFCbm02YjE3MDExMkZ2cXVBbi5odG1sfOW4uOeUqOmTtuihjOi0puWPt+S9jeaVsOWPguiAg31cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/vvIw4fjMw5L2N5pWw5a2XXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66ZO26KGM5Y2h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0JhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNCYW5rQ2FyZCgnMTIzNDU2Nzg5Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQmFua0NhcmQoJzEyMzQ1Njc4OScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc0JhbmtDYXJkKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBpZiAobG9vc2UpIHtcbiAgICByZXR1cm4gcmVnTG9vc2UudGVzdCh2YWx1ZVN0cik7XG4gIH1cbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNCYW5rQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDln7rnoYDop4TliJnvvIznlLExOOS9jeaVsOWtl+WSjOWkp+WGmeWtl+avjee7hOaIkO+8jOS4jeS9v+eUqEnjgIFP44CBWuOAgVPjgIFW44CCXG5jb25zdCBiYXNlUmVnID0gL15bXFxkQS1ISi1OUFFSVFVXWFldezJ9XFxkezZ9W1xcZEEtSEotTlBRUlRVV1hZXXsxMH0kLztcblxuLy8g5Z+656GA5a2X56ym57uE5oiQXG5jb25zdCBiYXNlQ29kZUFyciA9ICcwMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlRVV1hZJy5zcGxpdCgnJyk7XG5cbi8v5Yqg5p2D5Zug5a2QXG5jb25zdCB3ZWlnaHRGYWN0b3IgPSBbMSwgMywgOSwgMjcsIDE5LCAyNiwgMTYsIDE3LCAyMCwgMjksIDI1LCAxMywgOCwgMjQsIDEwLCAzMCwgMjhdO1xuXG4vKipcbiAqIOiOt+WPluWtl+espuS9jee9rlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gY29kZSDlrZfnrKZcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOWtl+espuaJgOWcqOWfuuehgOWtl+espueahOS9jee9rlxuICovXG5mdW5jdGlvbiBnZXRCYXNlQ29kZUluZGV4KGNvZGUpIHtcbiAgbGV0IHJldDtcblxuICBiYXNlQ29kZUFyci5zb21lKChpdGVtLCBpbmRleCkgPT4ge1xuICAgIGlmIChpdGVtID09PSBjb2RlKSB7XG4gICAgICByZXQgPSBpbmRleDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDorqHnrpfmoKHpqoznoIFcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlQ29kZSDnu5/kuIDku6PnoIHliY0xN+S9jVxuICogQHJldHVybnMge3N0cmluZ30g5qCh6aqM56CBXG4gKi9cbmZ1bmN0aW9uIHN1bUNoZWNrQ29kZShwcmVDb2RlKSB7XG4gIC8vIGNvbnN0IHByZUNvZGVBcnIgPSBwcmVDb2RlLnNwbGl0KCcnKTtcblxuICBsZXQgdG90YWwgPSAwO1xuXG4gIC8vIOiuoeeul+Wtl+espuS9jee9ruWvueW6lOW6j+WPt+WSjOWKoOadg+WboOWtkOeahOS5mOenr++8jOaAu+WSjFxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE3OyBpKyspIHtcbiAgICAvLyDlrZfnrKbkvY3nva7lr7nlupTnmoTln7rnoYDnvJbnoIHluo/lj7dcbiAgICBjb25zdCBpbmRleCA9IGdldEJhc2VDb2RlSW5kZXgocHJlQ29kZVtpXSk7XG4gICAgLy8g5Yqg5p2D5Zug5a2QXG4gICAgY29uc3Qgd2YgPSB3ZWlnaHRGYWN0b3JbaV07XG4gICAgLy8g6K6h566X5bqP5Y+35ZKM5Yqg5p2D5Zug5a2Q55qE5LmY56ev77yM5bm26K6h566X57qn5pWw5LmL5ZKMXG4gICAgdG90YWwgKz0gaW5kZXggKiB3ZjtcbiAgfVxuXG4gIC8vIOiuoeeul+aVtOaVsOaxguS9meWHveaVsE1PRFxuICBjb25zdCByZW1haW5kZXIgPSB0b3RhbCAlIDMxO1xuICAvLyDmoKHpqoznoIHlrZfnrKblgLzluo/lj7dcbiAgY29uc3QgY2hlY2tDb2RlSW5kZXggPSAzMSAtIHJlbWFpbmRlcjtcblxuICByZXR1cm4gYmFzZUNvZGVBcnJbY2hlY2tDb2RlSW5kZXhdO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uue7n+S4gOekvuS8muS/oeeUqOS7o+egge+8jOS5n+WPq+S4ieivgeWQiOS4gOe7hOe7h+S7o+eggeOAgueUsTE45L2N5pWw5a2X5ZKM5aSn5YaZ5a2X5q+N57uE5oiQ77yM5LiN5L2/55SoSeOAgU/jgIFa44CBU+OAgVbjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1NvY2lhbENyZWRpdENvZGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lzb3VyY2Uub3JnL3poLWhhbnMvR0JfMzIxMDAtMjAxNV/ms5Xkurrlkozlhbbku5bnu4Tnu4fnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIHnvJbnoIHop4TliJl8R0IgMzIxMDAtMjAxNSDms5Xkurrlkozlhbbku5bnu4Tnu4fnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIHnvJbnoIHop4TliJl9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOS4jeagoemqjOagoemqjOS9jeOAglxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uue7n+S4gOekvuS8muS/oeeUqOS7o+eggVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0MycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTRBJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIC8vIOWuveadvuaooeW8j++8jOS4jeagoemqjOagoemqjOS9jeOAguaJgOS7peS5n+WPr+S7pemAmui/h1xuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNEEnLCB7bG9vc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzU29jaWFsQ3JlZGl0Q29kZSh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFzc0Jhc2VSdWxlID0gYmFzZVJlZy50ZXN0KHZhbHVlU3RyKTtcblxuICAvLyDlrr3mnb7mqKHlvI8g5oiWIOWfuuehgOinhOWImeS4jemAmui/h+ebtOaOpei/lOWbnlxuICBpZiAobG9vc2UgfHwgIXBhc3NCYXNlUnVsZSkge1xuICAgIHJldHVybiBwYXNzQmFzZVJ1bGU7XG4gIH1cblxuICAvLyDliY0xN+S9jVxuICBjb25zdCBwcmVDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKDAsIDE3KTtcbiAgLy8g5qCh6aqM56CBXG4gIGNvbnN0IGxhc3RDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKHZhbHVlU3RyLmxlbmd0aCAtIDEpO1xuICAvLyDorqHnrpfmoKHpqoznoIFcbiAgY29uc3QgY2hlY2tDb2RlID0gc3VtQ2hlY2tDb2RlKHByZUNvZGUpO1xuXG4gIHJldHVybiBsYXN0Q29kZSA9PT0gY2hlY2tDb2RlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1NvY2lhbENyZWRpdENvZGU7XG4iLCJjb25zdCBjb25maWcgPSB7XG4gIC8vIOemgeeUqHdhcm5pbmfmj5DnpLpcbiAgZGlzYWJsZVdhcm5pbmc6IHRydWVcbn07XG5cbi8qKlxuICog6K6+572u56aB5q2id2FybmluZ+aPkOekulxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpEZWJ1Zy5mb3JtYXRCYW5rQ2FyZFxuICogQHNpbmNlIDMuNi4xXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJvb2wg5piv5ZCm56aB5q2id2FybmluZ+aPkOekulxuICovXG5mdW5jdGlvbiBzZXREaXNhYmxlV2FybmluZyhib29sKSB7XG4gIGNvbmZpZy5kaXNhYmxlV2FybmluZyA9ICEhYm9vbDtcbn1cblxuZXhwb3J0IHsgY29uZmlnLCBzZXREaXNhYmxlV2FybmluZyB9O1xuIiwiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcnO1xuXG5jb25zdCByZWdOdW1iZXIgPSAvW1xcZF0vO1xuY29uc3QgcmVnTG93ZXJDYXNlTGV0dGVyID0gL1thLXpdLztcbmNvbnN0IHJlZ1VwcGVyQ2FzZUxldHRlciA9IC9bQS1aXS87XG5jb25zdCByZWdBbGxOdW1iZXJBbmRMZXR0ZXIgPSAvW1xcZHxhLXpdL2dpO1xuXG4vKipcbiAqIOaYr+WQpuWMheWQq+aVsOWtl1xuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOafpeeahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+aVsOWtl1xuICovXG5mdW5jdGlvbiBoYXNOdW1iZXIodmFsKSB7XG4gIHJldHVybiByZWdOdW1iZXIudGVzdCh2YWwpO1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+Wwj+WGmeWtl+avjVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+Wwj+WGmeWtl+avjVxuICovXG5mdW5jdGlvbiBoYXNMb3dlckNhc2VMZXR0ZXIodmFsKSB7XG4gIHJldHVybiByZWdMb3dlckNhc2VMZXR0ZXIudGVzdCh2YWwpO1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+Wkp+WGmeWtl+avjVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+Wkp+WGmeWtl+avjVxuICovXG5mdW5jdGlvbiBoYXNVcHBlckNhc2VMZXR0ZXIodmFsKSB7XG4gIHJldHVybiByZWdVcHBlckNhc2VMZXR0ZXIudGVzdCh2YWwpO1xufVxuXG4vKipcbiAqIOaYr+WQpuS4uuWNgeWFrei/m+WItlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uuWNgeWFrei/m+WItlxuICovXG5mdW5jdGlvbiBoYXNIZXgodmFsKSB7XG4gIHJldHVybiB2YWwuaW5kZXhPZignXFxcXHgnKSA+IC0xIHx8IHZhbC5pbmRleE9mKCdcXFxcdScpID4gLTE7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr54m55q6K5a2X56ymXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzXSDnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvnibnmrorlrZfnrKZcbiAqL1xuZnVuY3Rpb24gaGFzU3BlY2lhbENoYXJhY3Rlcih2YWwsIGNoYXJzID0gJycpIHtcbiAgaWYgKCFjaGFycykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbC5yZXBsYWNlKHJlZ0FsbE51bWJlckFuZExldHRlciwgJycpO1xuICBjb25zdCByZWdDaGFycyA9IGhhc0hleChjaGFycykgPyBuZXcgUmVnRXhwKGBbJHtjaGFyc31dYCkgOiBudWxsO1xuXG4gIGlmIChyZWdDaGFycykge1xuICAgIHJldHVybiByZWdDaGFycy50ZXN0KHNwZWNpYWxDaGFycyk7XG4gIH1cblxuICBsZXQgcmV0ID0gZmFsc2U7XG4gIHNwZWNpYWxDaGFycy5zcGxpdCgnJykuc29tZSgoY2hhckl0ZW0pID0+IHtcbiAgICBpZiAoY2hhcnMuaW5kZXhPZihjaGFySXRlbSkgPiAtMSkge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ymXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge3N0cmluZ30gY2hhcnMg6Z2e5rOV5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ymXG4gKi9cbmZ1bmN0aW9uIGhhc1VuYWxsb3dhYmxlQ2hhcmFjdGVyKHZhbCwgY2hhcnMgPSAnJykge1xuICBjb25zdCBzcGVjaWFsQ2hhcnMgPSB2YWwucmVwbGFjZShyZWdBbGxOdW1iZXJBbmRMZXR0ZXIsICcnKTtcblxuICBpZiAoIWNoYXJzICYmIHNwZWNpYWxDaGFycykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgcmVnQ2hhcnMgPSBoYXNIZXgoY2hhcnMpID8gbmV3IFJlZ0V4cChgW14ke2NoYXJzfV1gKSA6IG51bGw7XG4gIGlmIChyZWdDaGFycykge1xuICAgIHJldHVybiByZWdDaGFycy50ZXN0KHNwZWNpYWxDaGFycyk7XG4gIH1cbiAgbGV0IHJldCA9IGZhbHNlO1xuICBzcGVjaWFsQ2hhcnMuc3BsaXQoJycpLnNvbWUoKGNoYXJJdGVtKSA9PiB7XG4gICAgaWYgKGNoYXJzLmluZGV4T2YoY2hhckl0ZW0pID09PSAtMSkge1xuICAgICAgcmV0ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog6aqM6K+B5a+G56CB77yI5pWw5a2X44CB5aSn5bCP5YaZ5a2X5q+N44CB54m55q6K5a2X56ym44CB6Z2e5rOV5a2X56ym77yJXG4gKlxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0vQVNDSUkjM3xBU0NJSX1cbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLnZhbGlkYXRlUGFzc3dvcmRcbiAqIEBzaW5jZSAzLjcuMFxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZXZlbD0yXSDlr4bnoIHlvLrluqYgMS3ljIXlkKvkuIDnp43lrZfnrKYgMi3ljIXlkKvkuKTnp43lrZfnrKYgMy3ljIXlkKvkuInnp43lrZfnrKbjgILvvIjlpKflhpnlrZfmr43jgIHlsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrorlrZfnrKbvvIlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWdub3JlQ2FzZT1mYWxzZV0g5piv5ZCm5b+955Wl5aSn5bCP5YaZ77yM5Li6IHR1cmUg5pe277yM5aSn5bCP5YaZ5a2X5q+N6KeG5Li65LiA56eN5a2X56ymXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3BlY2lhbD1cIiFAIyQlXiYqKCktPV8rW11cXHx7fSwuLz88Pn5cIl0g5pSv5oyB55qE54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyDpqozor4Hnu5PmnpxcbiAqIEBleGFtcGxlXG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnYTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IHRydWUsIC8vIOmqjOivgee7k+aenO+8jOagueaNruWvhueggeW8uuW6puOAgeaYr+WQpuWMheWQq+mdnuazleWtl+espuW+l+WHulxuICogICBsZXZlbDogMiwgLy8g5by65bqm57qn5YirXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSwgLy8g5YyF5ZCr5pWw5a2XXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLCAvLyDljIXlkKvlsI/lhpnlrZfmr41cbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IGZhbHNlLCAvLyDljIXlkKvlpKflhpnlrZfmr41cbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBmYWxzZSwgLy8g5YyF5ZCr54m55q6K5a2X56ymXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlIC8vIOWMheWQq+mdnuazleWtl+esplxuICogICB9XG4gKiB9XG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IGZhbHNlLFxuICogICBsZXZlbDogMixcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IGZhbHNlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGZhbHNlLFxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBmYWxzZVxuICogICB9XG4gKiB9XG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogZmFsc2UsXG4gKiAgIGxldmVsOiAzLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiB0cnVlLFxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiB0cnVlXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyDoh6rlrprkuYnnibnmrorlrZfnrKZcbiAqIHZhbGlkYXRlUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlLCBzcGVjaWFsOiAnX+S4gOS6jOS4iSd9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogdHJ1ZSxcbiAqICAgbGV2ZWw6IDMsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlXG4gKiAgIH1cbiAqIH1cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCA9IDIsIGlnbm9yZUNhc2UgPSBmYWxzZSwgc3BlY2lhbCA9ICdcXFxceDIxLVxcXFx4MkZcXFxceDNBLVxcXFx4NDBcXFxceDVCLVxcXFx4NjBcXFxceDdCLVxcXFx4N0UnIH0gPSB7fSkge1xuICBsZXQgdmFsU3RyID0gdmFsdWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlV2FybmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBbdmFsaWRhdGVQYXNzd29yZF0gdmFsdWUgbXVzdCBiZSBhIHN0cmluZy5gKTtcbiAgICB9XG4gICAgdmFsU3RyID0gJyc7XG4gIH1cblxuICBsZXQgY3VycmVudExldmVsID0gMDtcblxuICAvLyDljIXlkKvmlbDlrZdcbiAgY29uc3QgY29udGFpbmVzTnVtYmVyID0gaGFzTnVtYmVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+Wwj+WGmeWtl+avjVxuICBjb25zdCBjb250YWluZXNMb3dlckNhc2VMZXR0ZXIgPSBoYXNMb3dlckNhc2VMZXR0ZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gIGNvbnN0IGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlciA9IGhhc1VwcGVyQ2FzZUxldHRlcih2YWxTdHIpO1xuICAvLyDljIXlkKvnibnmrorlrZfnrKZcbiAgY29uc3QgY29udGFpbmVzU3BlY2lhbENoYXJhY3RlciA9IGhhc1NwZWNpYWxDaGFyYWN0ZXIodmFsU3RyLCBzcGVjaWFsKTtcbiAgLy8g5YyF5ZCr6Z2e5rOV5a2X56ymXG4gIGNvbnN0IGNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyID0gaGFzVW5hbGxvd2FibGVDaGFyYWN0ZXIodmFsU3RyLCBzcGVjaWFsKTtcblxuICBpZiAoY29udGFpbmVzTnVtYmVyKSB7XG4gICAgY3VycmVudExldmVsICs9IDE7XG4gIH1cblxuICBpZiAoaWdub3JlQ2FzZSkge1xuICAgIC8vIOS4jeWMuuWIhuWkp+Wwj+WGmVxuICAgIGlmIChjb250YWluZXNMb3dlckNhc2VMZXR0ZXIgfHwgY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8g5Yy65YiG5aSn5bCP5YaZXG4gICAgaWYgKGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICAgIGlmIChjb250YWluZXNVcHBlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyKSB7XG4gICAgY3VycmVudExldmVsICs9IDE7XG4gIH1cblxuICAvLyDpqozor4Hnu5PmnpxcbiAgY29uc3QgdmFsaWRhdGVkID0gY3VycmVudExldmVsID49IGxldmVsICYmICFjb250YWluZXNVbmFsbG93YWJsZUNoYXJhY3RlcjtcblxuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlZCxcbiAgICBsZXZlbDogY3VycmVudExldmVsLFxuICAgIGNvbnRhaW5lczoge1xuICAgICAgbnVtYmVyOiBjb250YWluZXNOdW1iZXIsXG4gICAgICBsb3dlckNhc2VMZXR0ZXI6IGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlcixcbiAgICAgIHVwcGVyQ2FzZUxldHRlcjogY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyLFxuICAgICAgc3BlY2lhbENoYXJhY3RlcjogY29udGFpbmVzU3BlY2lhbENoYXJhY3RlcixcbiAgICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBjb250YWluZXNVbmFsbG93YWJsZUNoYXJhY3RlclxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGVQYXNzd29yZDtcbiIsImltcG9ydCB2YWxpZGF0ZVBhc3N3b3JkIGZyb20gJy4vdmFsaWRhdGVQYXNzd29yZCc7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm56ym5ZCI5a+G56CB5by65bqmXG4gKiA8cD48c3Ryb25nPuazqOaEj++8muivpeagoemqjOWPquagoemqjOaYr+WQpuWtmOWcqOS4jeWQjOWtl+espijlpKflsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrornrKblj7cp77yM5LiN5Yik5pat6ZW/5bqm44CCPC9zdHJvbmc+PC9wPlxuICogPHA+PGk+5aaC5p6c6ZyA6KaB5pu057uG6Ie055qE6aqM6K+B77yM6K+35L2/55SoIDxhIGhyZWY9XCIjLnZhbGlkYXRlUGFzc3dvcmRcIj52YWxpZGF0ZVBhc3N3b3JkPC9hPjwvaT48L3A+XG4gKlxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0vQVNDSUkjM3xBU0NJSX1cbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUGFzc3dvcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHJlcXVpcmVzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGV2ZWw9Ml0g5a+G56CB5by65bqmIDEt5YyF5ZCr5LiA56eN5a2X56ymIDIt5YyF5ZCr5Lik56eN5a2X56ymIDMt5YyF5ZCr5LiJ56eN5a2X56ym44CC77yI5aSn5YaZ5a2X5q+N44CB5bCP5YaZ5a2X5q+N44CB5pWw5a2X44CB54m55q6K5a2X56ym77yJXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmlnbm9yZUNhc2U9ZmFsc2VdIOaYr+WQpuW/veeVpeWkp+Wwj+WGme+8jOS4uiB0dXJlIOaXtu+8jOWkp+Wwj+WGmeWtl+avjeinhuS4uuS4gOenjeWtl+esplxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNwZWNpYWw9XCIhQCMkJV4mKigpLT1fK1tdXFx8e30sLi8/PD5+XCJdIOaUr+aMgeeahOeJueauiuWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuespuWQiOWvhueggeW8uuW6plxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1Bhc3N3b3JkKCdhMTIzNDU2NzgnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1Bhc3N3b3JkKCdhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNQYXNzd29yZCgnQWExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3dvcmQoJ0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNQYXNzd29yZCgnX0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDku4XmlK/mjIEg5pWw5a2X44CB5a2X5q+N44CB54m55q6K5a2X56ym77yM5YW25LuW5a2X56ym5aaC5Lit5paH5a2X56ym5piv5qCh6aqM5LiN6YCa6L+H55qEXG4gKiBpc1Bhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCcgX0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGFzc3dvcmQodmFsdWUsIHsgbGV2ZWwgPSAyLCBpZ25vcmVDYXNlID0gZmFsc2UsIHNwZWNpYWwgPSAnXFxcXHgyMS1cXFxceDJGXFxcXHgzQS1cXFxceDQwXFxcXHg1Qi1cXFxceDYwXFxcXHg3Qi1cXFxceDdFJyB9ID0ge30pIHtcbiAgcmV0dXJuIHZhbGlkYXRlUGFzc3dvcmQodmFsdWUsIHsgbGV2ZWwsIGlnbm9yZUNhc2UsIHNwZWNpYWwgfSkudmFsaWRhdGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bhc3N3b3JkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOaKpOeFp+WPtyA55L2N77yM5YyF5ous6aaW5a2X5q+N5ZKM5pWw5a2X77yb5pSv5oyBIOaZrumAmuaKpOeFpyhFKinjgIHlpJbkuqTmiqTnhacoREUp44CB5YWs5Yqh5oqk54WnKFNFKeOAgeWFrOWKoeaZrumAmuaKpOeFpyhQRSnjgIHpppnmuK/nibnljLrmiqTnhacoSy9LSinjgIHmvrPpl6jnibnljLrmiqTnhacoTUEpXG5jb25zdCByZWcgPSAvXigoZVtcXGRhLXpdKXwoZGUpfChzZSl8KHBlKXwoa1tcXGRhLXpdKXwoa2opfChtYSkpW1xcZGEtel17N30kL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65oqk54Wn5Y+3XG4gKiDmlK/mjIHmma7pgJrmiqTnhacoRSop44CB5aSW5Lqk5oqk54WnKERFKeOAgeWFrOWKoeaKpOeFpyhTRSnjgIHlhazliqHmma7pgJrmiqTnhacoUEUp44CB6aaZ5riv54m55Yy65oqk54WnKEsvS0op44CB5r6z6Zeo54m55Yy65oqk54WnKE1BKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUGFzc3BvcnRcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/kuK3ljY7kurrmsJHlhbHlkozlm73miqTnhacj5Liq5Lq66LWE5paZ6aG1fOS4reWNjuS6uuawkeWFseWSjOWbveaKpOeFpyPkuKrkurrotYTmlpnpobV9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65oqk54Wn5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUGFzc3BvcnQoJ0UxMjM0NTY3OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3BvcnQoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzUGFzc3BvcnQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bhc3Nwb3J0O1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbmNvbnN0IGNoaW5lc2VEaWN0aW9uYXJ5ID0ge1xuICAvLyDln7rmnKzmsYnlrZdcbiAgY2hpbmVzZUJhc2ljOiAnW1xcdTRlMDAtXFx1OWZhNV0nLFxuXG4gIC8vIOWfuuacrOaxieWtl+ihpeWFhVxuICBjaGluZXNlRXh0ZW5kOiAnW1xcdTllYTYtXFx1OWZlZl0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUFcbiAgY2hpbmVzZUV4dGVuZEE6ICdbXFx1MzQwMC1cXHU0REI1XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQlxuICBjaGluZXNlRXh0ZW5kQjogJ1tcXHV7MjAwMDB9LVxcdXsyQTZENn1dJyxcblxuICAvLyDmsYnlrZfmianlsZVDXG4gIGNoaW5lc2VFeHRlbmRDOiAnW1xcdXsyQTcwMH0tXFx1ezJCNzM0fV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlURcbiAgY2hpbmVzZUV4dGVuZEQ6ICdbXFx1ezJCNzQwfS1cXHV7MkI4MUR9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRVxuICBjaGluZXNlRXh0ZW5kRTogJ1tcXHV7MkI4MjB9LVxcdXsyQ0VBMX1dJyxcblxuICAvLyDmsYnlrZfmianlsZVGXG4gIGNoaW5lc2VFeHRlbmRGOiAnW1xcdXsyQ0VCMH0tXFx1ezJFQkUwfV0nXG59O1xuXG5sZXQgbG9vc2VDaGluZXNlUmVnRXhwID0gY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJysnO1xuXG5sZXQgY2hpbmVzZVJlZ0V4cCA9ICdeJyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICcrJCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbmNvbnN0IHN1cHBvcnRSZWdFeHBVbmljb2RlID0gUmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgndW5pY29kZScpO1xuXG5pZiAoc3VwcG9ydFJlZ0V4cFVuaWNvZGUpIHtcbiAgbG9vc2VDaGluZXNlUmVnRXhwID0gJyg/OicgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEEgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQiArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRDICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRGICsgJykrJztcbiAgY2hpbmVzZVJlZ0V4cCA9ICdeKD86JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRCICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRFICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEYgKyAnKSskJztcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrkuK3mlodcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0NoaW5lc2VcbiAqIEBzaW5jZSAxLjEuMFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM4LyNCbG9ja0xpc3Rpbmd8NC40IExpc3Rpbmcgb2YgQ2hhcmFjdGVycyBDb3ZlcmVkIGJ5IHRoZSBVbmloYW4gRGF0YWJhc2V9XG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j+OAguWmguaenOS4unRydWXvvIzlj6ropoHljIXlkKvkuK3mlofljbPkuLp0cnVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65Lit5paHXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQ2hpbmVzZSgn5p6X5p+Q5p+QJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNDaGluZXNlKCfmnpdBJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIC8vIOWuveadvuaooeW8j++8jOWPquimgeWMheWQq+S4reaWh+WNs+S4unRydWVcbiAqIGlzQ2hpbmVzZSgn5p6XQScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQ2hpbmVzZSgnQeael0EnLCB7bG9vc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzQ2hpbmVzZSh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAobG9vc2UgPyBsb29zZUNoaW5lc2VSZWdFeHAgOiBjaGluZXNlUmVnRXhwLCBzdXBwb3J0UmVnRXhwVW5pY29kZSA/ICd1JyA6IHVuZGVmaW5lZCk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQ2hpbmVzZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBpcHY05q2j5YiZXG5jb25zdCByZWcgPSAvXigoXFxkezEsMn18MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSlcXC4pezN9KFxcZHsxLDJ9fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNV0pJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6aXB2NFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSVB2NFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4umlwdjRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNJUHY0KCcxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NCgnMjU1LjI1NS4yNTUuMjU1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY0KCcyNTYuMjU2LjI1Ni4yNTYnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJUHY0KCcwLjAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lQdjQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lQdjQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gaXB2Nuato+WImVxuY29uc3QgcmVnID0gL14oKChbMC05QS1GXXsxLDR9Oil7N30oWzAtOUEtRl17MSw0fXw6KSl8KChbMC05QS1GXXsxLDR9Oil7Nn0oOlswLTlBLUZdezEsNH18KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KXw6KSl8KChbMC05QS1GXXsxLDR9Oil7NX0oKCg6WzAtOUEtRl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSl8OikpfCgoWzAtOUEtRl17MSw0fTopezR9KCgoOlswLTlBLUZdezEsNH0pezEsM30pfCgoOlswLTlBLUZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7M30oKCg6WzAtOUEtRl17MSw0fSl7MSw0fSl8KCg6WzAtOUEtRl17MSw0fSl7MCwyfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7Mn0oKCg6WzAtOUEtRl17MSw0fSl7MSw1fSl8KCg6WzAtOUEtRl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7MX0oKCg6WzAtOUEtRl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KDooKCg6WzAtOUEtRl17MSw0fSl7MSw3fSl8KCg6WzAtOUEtRl17MSw0fSl7MCw1fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSkpKCUuKyk/JC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4umlwdjZcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0lQdjZcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLppcHY2XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIOWGkuWIhuWNgeWFrei/m+WItuihqOekuuazlVxuICogaXNJUHY2KCcyMDAxOjBEQjg6MDAwMDowMDIzOjAwMDg6MDgwMDoyMDBDOjQxN0EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDliY3lr7ww55yB55WlXG4gKiBpc0lQdjYoJzIwMDE6REI4OjA6MjM6ODo4MDA6MjAwQzo0MTdBJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCdGRjAxOjA6MDowOjA6MDowOjExMDEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyAw5L2N5Y6L57yp6KGo56S65rOVXG4gKiBpc0lQdjYoJ0ZGMDE6OjExMDEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6MScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjonKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzA6MDowOjA6MDowOjA6MScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMDowOjA6MDowOjA6MDowJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogLy8g5YaF5bWMSVB2NOWcsOWdgOihqOekuuazlVxuICogaXNJUHY2KCc6OjE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OkZGRkY6MTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNJUHY2KHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJUHY2O1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIHVybOato+WImVxuY29uc3QgcmVnID0gLygoKF5odHRwcz86KD86XFwvXFwvKT8pKD86Wy07OiY9XFwrXFwkLFxcd10rQCk/W0EtWmEtejAtOS4tXSsoPzo6XFxkKyk/fCg/Ond3dy58Wy07OiY9XFwrXFwkLFxcd10rQClbQS1aYS16MC05Li1dKykoKD86XFwvW1xcK34lXFwvLlxcdy1fXSopP1xcPz8oPzpbLVxcKz0mOyVALlxcd19dKikjPyg/OltcXHddKikpPykkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLp1cmxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1VybFxuICogQHNpbmNlIDMuNC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv57uf5LiA6LWE5rqQ5a6a5L2N56ymfOe7n+S4gOi1hOa6kOWumuS9jeespn1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6dXJsXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVXJsKCcnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNVcmwoJzguOC44LjgnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNVcmwoJ2V4YW1wbGUuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly9leGFtcGxlLmNvbScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwczovL2V4YW1wbGUuY29tOjgwODAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0LzEyMycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QvMTIzP2Zvbz1iYXInKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNVcmwodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1VybDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDln7rnoYDop4TliJnvvIznlLExNOS9jeaVsOWtl+acrOS9k+eggeWSjDHkvY3mlbDlrZfmoKHpqoznoIHnu4TmiJDvvIzlhbbkuK3mnKzkvZPnoIHku47lt6boh7Plj7Pkvp3mrKHkuLrvvJo25L2N6aaW5qyh55m76K6w5py65YWz56CB44CBOOS9jemhuuW6j+eggeOAglxuY29uc3QgYmFzZVJlZyA9IC9eXFxkezE1fSQvO1xuXG4vKipcbiAqIOiuoeeul+agoemqjOeggVxuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMy41LjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVDb2RlIOiQpeS4muaJp+eFp+WJjTE05L2NXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDmoKHpqoznoIFcbiAqL1xuZnVuY3Rpb24gc3VtQ2hlY2tDb2RlKHByZUNvZGUpIHtcbiAgbGV0IHJldE51bTsgLy8g5qCh6aqM5L2N5pWw5a2XXG5cbiAgbGV0IHBqID0gMTA7IC8vIFBqKzEgMTHvvIzliJ3lp4vkuLoxMFxuXG4gIGZvciAobGV0IGogPSAwOyBqIDwgMTQ7IGorKykge1xuICAgIGNvbnN0IHNqID0gcGogKyBOdW1iZXIocHJlQ29kZVtqXSk7XG4gICAgbGV0IHNqMTAgPSBzaiAlIDEwO1xuICAgIHNqMTAgPSBzajEwID09PSAwID8gMTAgOiBzajEwO1xuICAgIGNvbnN0IHBqMSA9IHNqMTAgKiAyO1xuICAgIHBqID0gcGoxICUgMTE7XG4gIH1cblxuICAvLyDlj43mqKExMOiuoeeul1xuICBpZiAocGogPT09IDEwIHx8IHBqID09PSAxKSB7XG4gICAgcmV0TnVtID0gMTtcbiAgfSBlbHNlIHtcbiAgICByZXROdW0gPSAxMSAtIHBqO1xuICB9XG5cbiAgcmV0dXJuIHJldE51bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrokKXkuJrmiafnhaflj7fvvIzkuZ/lj6vlt6XllYbms6jlhozlj7fjgILnlLExNOS9jeaVsOWtl+acrOS9k+eggeWSjDHkvY3mlbDlrZfmoKHpqoznoIHnu4TmiJDvvIzlhbbkuK3mnKzkvZPnoIHku47lt6boh7Plj7Pkvp3mrKHkuLrvvJo25L2N6aaW5qyh55m76K6w5py65YWz56CB44CBOOS9jemhuuW6j+eggeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQnVzaW5lc3NMaWNlbnNlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly93ZW5rdS5iYWlkdS5jb20vdmlldy8xOTg3MzcwNGNjMTc1NTI3MDcyMjA4N2MuaHRtbHxHUzE14oCUMjAwNiDlt6XllYbooYzmlL/nrqHnkIbluILlnLrkuLvkvZPms6jlhozlj7fnvJbliLbop4TliJl9XG4gKiBAc2luY2UgMy41LjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOS4jeagoemqjOagoemqjOS9jeOAglxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuiQpeS4muaJp+eFp+WPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOTg1NTMzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDknKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDknLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOTg1NTM1Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzUnLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0J1c2luZXNzTGljZW5zZSh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFzc0Jhc2VSdWxlID0gYmFzZVJlZy50ZXN0KHZhbHVlU3RyKTtcblxuICAvLyDlrr3mnb7mqKHlvI8g5oiWIOWfuuehgOinhOWImeS4jemAmui/h+ebtOaOpei/lOWbnlxuICBpZiAobG9vc2UgfHwgIXBhc3NCYXNlUnVsZSkge1xuICAgIHJldHVybiBwYXNzQmFzZVJ1bGU7XG4gIH1cblxuICAvLyDliY0xNOS9jVxuICBjb25zdCBwcmVDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKDAsIDE0KTtcbiAgLy8g5qCh6aqM56CBXG4gIGNvbnN0IGxhc3RDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKHZhbHVlU3RyLmxlbmd0aCAtIDEpO1xuICAvLyDorqHnrpfmoKHpqoznoIFcbiAgY29uc3QgY2hlY2tDb2RlID0gc3VtQ2hlY2tDb2RlKHByZUNvZGUpO1xuXG4gIHJldHVybiBsYXN0Q29kZSA9PT0gU3RyaW5nKGNoZWNrQ29kZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQnVzaW5lc3NMaWNlbnNlO1xuIiwiLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbnsbvkvLxQcm9taXNl5a+56LGhXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQcm9taXNlTGlrZVxuICogQHNpbmNlIDMuOC4wXG4gKiBAcGFyYW0geyp9IG9iaiDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbnsbvkvLxQcm9taXNl5a+56LGhXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUHJvbWlzZUxpa2UoW10pO1xuICogPT4gZmFsc2VcbiAqXG4gKiBpc1Byb21pc2VMaWtlKHt0aGVuOigpPT57fX0pO1xuICogPT4gdHJ1ZVxuICpcbiAqIGlzUHJvbWlzZUxpa2UoUHJvbWlzZS5yZXNvbHZlKCkpO1xuICogPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1Byb21pc2VMaWtlKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvbWlzZUxpa2U7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+B5q2j5YiZXG5jb25zdCByZWdITUNhcmQgPSAvXltobV17MX0oWzAtOV17MTB9fFswLTldezh9KSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4HvvIzkv5fnp7Dlm57kuaHor4HmiJblm57kuaHljaHjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0hNQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv5riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BfOa4r+a+s+WxheawkeadpeW+gOWGheWcsOmAmuihjOivgX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BXG4gKi9cbmZ1bmN0aW9uIGlzSE1DYXJkKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZ0hNQ2FyZC50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNITUNhcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+B5q2j5YiZ77yM5pSv5oyB5LiA5qyh5oCn55+t5pyf5Y+w6IOe6K+BXG5jb25zdCByZWdUV0NhcmQgPSAvXihcXGR7OH18W1xcZGEtel17MTB9KSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HvvIzkv5fnp7Dlj7Dog57or4HjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1RXQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv5Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfOWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivgX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BXG4gKi9cbmZ1bmN0aW9uIGlzVFdDYXJkKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZ1RXQ2FyZC50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNUV0NhcmQ7XG4iLCIvLyDmnIDlpKflronlhajmlbDlrZdcbmV4cG9ydCBjb25zdCBNQVhfU0FGRV9JTlRFR0VSID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfHwgOTAwNzE5OTI1NDc0MDk5MTtcbi8vIOacgOWwj+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1JTl9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiB8fCAtOTAwNzE5OTI1NDc0MDk5MTtcbiIsIi8qKlxuICog5Y+C6ICDOiBodHRwczovL2dpdGh1Yi5jb20vbmVmZS9udW1iZXItcHJlY2lzaW9uL2Jsb2IvbWFzdGVyL3NyYy9pbmRleC50c1xuICpcbiAqIOino+WGs+a1ruWKqOi/kOeul+mXrumimO+8jOmBv+WFjeWwj+aVsOeCueWQjuS6p+eUn+WkmuS9jeaVsOWSjOiuoeeul+eyvuW6puaNn+WkseOAglxuICog6Zeu6aKY56S65L6L77yaMi4zICsgMi40ID0gNC42OTk5OTk5OTk5OTk5OTnvvIwxLjAgLSAwLjkgPSAwLjA5OTk5OTk5OTk5OTk5OTk4XG4gKi9cblxuaW1wb3J0IHsgTUFYX1NBRkVfSU5URUdFUiwgTUlOX1NBRkVfSU5URUdFUiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuLyoqXG4gKiDmmK/lkKbkuLrnp5HlraborqHmlbDms5XmlbDlrZdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NjaWVudGlmaWNOdW1iZXIobnVtKSB7XG4gIHJldHVybiAvXFxkK1xcLj9cXGQqZVtcXCtcXC1dKlxcZCsvaS50ZXN0KG51bSk7XG59XG5cbi8qKlxuICog5oqK6ZSZ6K+v55qE5pWw5o2u6L2s5q2jXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDovpPlhaXmlbBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTEyXSDlsI/mlbDngrnnmoTnsr7luqZcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKiBAZXhhbXBsZVxuICpcbiAqICBzdHJpcCgwLjA5OTk5OTk5OTk5OTk5OTk4KT0wLjFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKG51bSwgcHJlY2lzaW9uID0gMTIpIHtcbiAgcmV0dXJuICtwYXJzZUZsb2F0KG51bS50b1ByZWNpc2lvbihwcmVjaXNpb24pKTtcbn1cblxuLyoqXG4gKiDorqHnrpfmlbDlrZfnmoTlsI/mlbDngrnplb/luqbvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAqXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bSDovpPlhaXmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOWwj+aVsOeCuemVv+W6plxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlnaXRMZW5ndGgobnVtKSB7XG4gIC8vIEdldCBkaWdpdCBsZW5ndGggb2YgZVxuICBjb25zdCBlU3BsaXQgPSBudW0udG9TdHJpbmcoKS5zcGxpdCgvZS9pKTtcbiAgY29uc3QgbGVuID0gKGVTcGxpdFswXS5zcGxpdCgnLicpWzFdIHx8ICcnKS5sZW5ndGggLSArKGVTcGxpdFsxXSB8fCAwKTtcbiAgcmV0dXJuIGxlbiA+IDAgPyBsZW4gOiAwO1xufVxuXG4vKipcbiAqIOaKiuWwj+aVsOi9rOaIkOaVtOaVsO+8jOaUr+aMgeenkeWtpuiuoeaVsOazleOAguWmguaenOaYr+Wwj+aVsOWImeaUvuWkp+aIkOaVtOaVsFxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0MkZpeGVkKG51bSkge1xuICBpZiAoIWlzU2NpZW50aWZpY051bWJlcihudW0udG9TdHJpbmcoKSkpIHtcbiAgICByZXR1cm4gTnVtYmVyKG51bS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnJykpO1xuICB9XG4gIGNvbnN0IGRMZW4gPSBkaWdpdExlbmd0aChudW0pO1xuICByZXR1cm4gZExlbiA+IDAgPyBzdHJpcCgrbnVtICogTWF0aC5wb3coMTAsIGRMZW4pKSA6ICtudW07XG59XG5cbi8qKlxuICog5qOA5rWL5pWw5a2X5piv5ZCm6LaK55WM77yM5aaC5p6c6LaK55WM57uZ5Ye65o+Q56S6XG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQm91bmRhcnkobnVtKSB7XG4gIGlmICgrbnVtID4gTUFYX1NBRkVfSU5URUdFUiB8fCArbnVtIDwgTUlOX1NBRkVfSU5URUdFUikge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7bnVtfSBpcyBiZXlvbmQgYm91bmRhcnkgd2hlbiB0cmFuc2ZlciB0byBpbnRlZ2VyLCB0aGUgcmVzdWx0cyBtYXkgbm90IGJlIGFjY3VyYXRlYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICog5Y675o6J5bem6L655pWw5a2XMFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5pWw5a2X5a2X56ym5LiyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUxlZnRaZXJvKG51bSkge1xuICBjb25zdCByZWcgPSAvXihbKy1dKT8oMCspKFswLTlcXC5dKykkLztcbiAgY29uc3QgcmVzdWx0ID0gcmVnLmV4ZWMobnVtKTtcblxuICBsZXQgc2lnbjtcblxuICBpZiAocmVzdWx0KSB7XG4gICAgc2lnbiA9IHJlc3VsdFsxXSB8fCAnJztcbiAgICByZXR1cm4gc2lnbiArIChyZXN1bHRbM11bMF0gPT09ICcuJyA/ICcwJyArIHJlc3VsdFszXSA6IHJlc3VsdFszXSk7XG4gIH1cblxuICByZXR1cm4gbnVtO1xufVxuXG4vKipcbiAqIOenkeWtpuiuoeaVsOazlei9rOaNouaIkOaZrumAmuaVsOWtl1xuICpcbiAqIEphdmFTY3JpcHTlnKjku6XkuIvmg4Xmma/kvJroh6rliqjlsIbmlbDlgLzovazmjaLkuLrnp5HlraborqHmlbDms5XvvJpcbiAqICAxLuWwj+aVsOeCueWJjeeahOaVsOWtl+S4quaVsOWkp+S6juetieS6jjIy5L2NXG4gKiAgMi7lsI/mlbDngrnliY3ovrnmmK8w77yM5bCP5pWw54K55ZCO5Y2B5YiG5L2N77yI5YyF5ZCr5Y2B5YiG5L2N77yJ5LmL5ZCO6L+e57ut6Zu255qE5Liq5pWw5aSn5LqO562J5LqONuS4qlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g56eR5a2m6K6h5pWw5rOV5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDovazmjaLlkI7nmoTmlbDlrZflrZfnrKbkuLJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjaWVudGlmaWNUb051bWJlcihudW0pIHtcbiAgaWYgKGlzU2NpZW50aWZpY051bWJlcihudW0udG9TdHJpbmcoKSkpIHtcbiAgICBjb25zdCB6ZXJvID0gJzAnO1xuICAgIGNvbnN0IHBhcnRzID0gU3RyaW5nKG51bSkudG9Mb3dlckNhc2UoKS5zcGxpdCgnZScpO1xuICAgIGNvbnN0IGUgPSBwYXJ0cy5wb3AoKTsgLy8g5a2Y5YKo5oyH5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGwgPSBNYXRoLmFicyhlKTsgLy8g5Y+W57ud5a+55YC877yMbC0x5bCx5pivMOeahOS4quaVsFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBzaWduID0gZSAvIGw7IC8v5Yik5pat5q2j6LSfXG4gICAgY29uc3QgY29lZmZfYXJyYXkgPSBwYXJ0c1swXS5zcGxpdCgnLicpOyAvLyDlsIbns7vmlbDmjInnhaflsI/mlbDngrnmi4bliIZcblxuICAgIC8v5aaC5p6c5piv5bCP5pWwXG4gICAgaWYgKHNpZ24gPT09IC0xKSB7XG4gICAgICAvL+aLvOaOpeWtl+espuS4su+8jOWmguaenOaYr+Wwj+aVsO+8jOaLvOaOpTDlkozlsI/mlbDngrlcbiAgICAgIG51bSA9IHplcm8gKyAnLicgKyBuZXcgQXJyYXkobCkuam9pbih6ZXJvKSArIGNvZWZmX2FycmF5LmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZWMgPSBjb2VmZl9hcnJheVsxXTtcblxuICAgICAgLy/lpoLmnpzmmK/mlbTmlbDvvIzlsIbmlbTmlbDpmaTnrKzkuIDkvY3kuYvlpJbnmoTpnZ7pm7bmlbDlrZforqHlhaXkvY3mlbDvvIznm7jlupTnmoTlh4/lsJEw55qE5Liq5pWwXG4gICAgICBpZiAobCAtIGRlYy5sZW5ndGggPCAwKSB7XG4gICAgICAgIG51bSA9IHRyaW1MZWZ0WmVybyhjb2VmZl9hcnJheVswXSArIGRlYy5zdWJzdHJpbmcoMCwgbCkpICsgJy4nICsgZGVjLnN1YnN0cmluZyhsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5pW05pWw77yM5LiN6ZyA6KaB5ou85o6l5bCP5pWw54K5XG4gICAgICAgIG51bSA9IGNvZWZmX2FycmF5LmpvaW4oJycpICsgbmV3IEFycmF5KGwgLSBkZWMubGVuZ3RoICsgMSkuam9pbih6ZXJvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbnVtO1xufVxuIiwiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzVHlwZSc7XG5cbi8qKlxuICog5qOA5p+l5YC85piv5ZCm5Li6TmFOXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTmFOXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li6TmFOXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzTmFOKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc05hTigxKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gX2lzTmFOKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdOdW1iZXInKSAmJiBpc05hTih2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IF9pc05hTjtcbiIsImltcG9ydCB7IGNoZWNrQm91bmRhcnksIHNjaWVudGlmaWNUb051bWJlciwgaXNTY2llbnRpZmljTnVtYmVyIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IGlzTmFOIGZyb20gJy4vdXRpbHMvdHlwZS9pc05hTic7XG5pbXBvcnQgeyB0cmltTGVmdFplcm8gfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5cbmNvbnN0IHJlZyA9IC9eWystXT9cXGQqXFwuP1xcZCokLztcblxuLyoqXG4gKiDmo4Dmn6XmlbDlrZfmiJbmlbDlrZflrZfnrKbkuLJcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IG51bVxuICogQHJldHVybnMg5piv5ZCm5Li65pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGNoZWNrTnVtYmVyKG51bSkge1xuICBpZiAoIShyZWcudGVzdChudW0pIHx8IGlzU2NpZW50aWZpY051bWJlcihudW0pKSB8fCBpc05hTihudW0pIHx8ICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbnVtICE9PSAnc3RyaW5nJykgfHwgbnVtID09PSAnJykge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7bnVtfSBpbnZhbGlkIHBhcmFtZXRlci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyDmlbDlrZfotoXpmZDlpoLmnpzkuI3mmK/mmK/lrZfnrKbkuLLvvIzlj6/og73mnInlvILluLhcbiAgLy8g5aaCIDExMTExMTExMTExMTExMTExMTExMTEgLy8gPT4gMS4xMTExMTExMTExMTExMTExZSsyMVxuICBpZiAodHlwZW9mIG51bSA9PT0gJ251bWJlcicpIHtcbiAgICBjaGVja0JvdW5kYXJ5KG51bSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJbmlbTmlbDpg6jliIZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGludFN0ciDmlbDlrZflrZfnrKbkuLJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aG91c2FuZCDljYPliIbkvY3nrKblj7dcbiAqIEByZXR1cm5zIOagvOW8j+WMluWQjueahOWAvFxuICovXG5mdW5jdGlvbiBmb3JtYXRJbnQoaW50U3RyLCB0aG91c2FuZCkge1xuICBsZXQgdHh0ID0gJyc7XG4gIGludFN0ciA9IHRyaW1MZWZ0WmVybyhpbnRTdHIpO1xuICBpbnRTdHIgPSBpbnRTdHJbMF0gPT09ICcrJyA/IGludFN0ci5zdWJzdHJpbmcoMSkgOiBpbnRTdHI7IC8vIOWOu+aOiSvnrKblj7dcbiAgY29uc3QgbmVnYXRpdmVTeW1ib2wgPSBOdW1iZXIoaW50U3RyKSA8IDAgPyAnLScgOiAnJztcbiAgY29uc3QgcmVBcnIgPSBuZWdhdGl2ZVN5bWJvbCA/IGludFN0ci5zdWJzdHJpbmcoMSkuc3BsaXQoJycpLnJldmVyc2UoKSA6IGludFN0ci5zcGxpdCgnJykucmV2ZXJzZSgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVBcnIubGVuZ3RoOyBpKyspIHtcbiAgICB0eHQgKz0gcmVBcnJbaV0gKyAoKGkgKyAxKSAlIDMgPT09IDAgJiYgaSArIDEgIT09IHJlQXJyLmxlbmd0aCA/IHRob3VzYW5kIDogJycpO1xuICB9XG5cbiAgcmV0dXJuIG5lZ2F0aXZlU3ltYm9sICsgdHh0LnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7XG59XG5cbi8qKlxuICog5qC85byP5YyW5bCP5pWw6YOo5YiG77yM5aaC5p6c5L2/55SoIHRvRml4ZWTvvIzotoXlpKfpop3mlbDlrZfkvJroh6rliqjooqvmiKrmlq1cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlY1N0ciDlsI/mlbDngrnpg6jliIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7bnVtYmVyfSBwcmVjaXNpb24g5L+d55WZ5L2N5pWwXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjaW1hbCDlsI/mlbDngrnnrKblj7dcbiAqIEByZXR1cm5zIOagvOW8j+WMluWQjueahOWAvFxuICovXG5mdW5jdGlvbiBmb3JtYXREZWMoZGVjU3RyLCBwcmVjaXNpb24sIGRlY2ltYWwpIHtcbiAgaWYgKHByZWNpc2lvbiA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IHplcm8gPSAwO1xuICBsZXQgcmV0ID0gJyc7XG5cbiAgaWYgKGRlY1N0ciAmJiBOdW1iZXIoZGVjU3RyKSA+IDApIHtcbiAgICBsZXQgdG1wTnVtID0gcGFyc2VGbG9hdCgnMC4nICsgZGVjU3RyKTtcbiAgICByZXQgPSB0bXBOdW0udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfSBlbHNlIHtcbiAgICByZXQgPSB6ZXJvLnRvRml4ZWQocHJlY2lzaW9uKS5zdWJzdHJpbmcoMik7XG4gIH1cblxuICByZXR1cm4gZGVjaW1hbCArIHJldDtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJbph5Hpop1cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5mb3JtYXRNb25leVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gbnVtIOmcgOi9rOaNoumHkeminSAo5pyA5aSn77yaOTAwNzE5OTI1NDc0MDk5MSDmnIDlsI/vvJogLTkwMDcxOTkyNTQ3NDA5OTEpXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0g6YeR6aKd5qC85byP5YyW6YWN572uXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0gW29wdGlvbnMucHJlY2lzaW9uPTJdIC0g5L+d55WZ5L2N5pWwIO+8iOacgOmrmO+8mjEw5L2N77yJXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3ltYm9sXSAtIOi0p+W4geespuWPt1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnRob3VzYW5kPVwiLFwiXSAtIOWNg+WIhuS9jeespuWPt1xuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmRlY2ltYWw9XCIuXCJdIC0g5bCP5pWw5L2N56ym5Y+3XG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoLzlvI/ljJbnmoTph5Hpop1cbiAqIEBleGFtcGxlXG4gKlxuICogLy8g5pW05pWwXG4gKiBmb3JtYXRNb25leSgnMTAwMCcpO1xuICogLy8gPT4gMSwwMDAuMDBcbiAqXG4gKiAvLyDlsI/mlbDvvIjpu5jorqTkv53nlZky5L2N5bCP5pWw77yJXG4gKiBmb3JtYXRNb25leSgnMzAwMC4wMycpO1xuICogLy8gPT4gMywwMDAuMDNcbiAqXG4gKiAvLyDkv53nlZk05L2N5bCP5pWwXG4gKiBmb3JtYXRNb25leSgnMzAwMC4wMzAwJywgeyBwcmVjaXNpb246IDQgfSk7XG4gKiAvLyA9PiAzLDAwMC4wMzAwXG4gKlxuICogLy8g5L+d55WZMTDkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCcxNTAwLjInLCB7IHByZWNpc2lvbjogMTAgfSk7XG4gKiAvLyA9PiAxLDUwMC4yMDAwMDAwMDAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5Y2V5L2N56ym5Y+3XG4gKiBmb3JtYXRNb25leSgxMDAwLjAwLCB7IHN5bWJvbDogJyQnIH0pO1xuICogLy8gPT4gJDEsMDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5Y2D5L2N5YiG5Ymy56ym77yI6buY6K6kJywn77yJXG4gKiBmb3JtYXRNb25leSgxMDAwLjAwLCB7IHRob3VzYW5kOiAnfCcgfSk7XG4gKiAvLyA9PiAxfDAwMC4wMFxuICpcbiAqIC8vIOiHquWumuS5ieWwj+aVsOS9jeWIhuWJsuespijpu5jorqQnLicpXG4gKiBmb3JtYXRNb25leSgxMDAwLjAwLCB7IGRlY2ltYWw6ICcmJyB9KTtcbiAqIC8vID0+IDEsMDAwJjAwXG4gKi9cbmNvbnN0IGZvcm1hdE1vbmV5ID0gKG51bSwgeyBwcmVjaXNpb24gPSAyLCBzeW1ib2wsIHRob3VzYW5kID0gJywnLCBkZWNpbWFsID0gJy4nIH0gPSB7fSkgPT4ge1xuICAvLyDmlbDlrZflj4LmlbDkuI3mraPnoa7vvIzov5Tlm57nqbrlrZfnrKbkuLJcbiAgLy8gQHRzLWlnbm9yZVxuICBpZiAoIWNoZWNrTnVtYmVyKG51bSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvLyDlj4LmlbDop4TmlbTljJZcbiAgaWYgKHR5cGVvZiBwcmVjaXNpb24gIT09ICdudW1iZXInIHx8IGlzTmFOKHByZWNpc2lvbikgfHwgcHJlY2lzaW9uIDwgMCkge1xuICAgIHByZWNpc2lvbiA9IDI7XG4gIH0gZWxzZSBpZiAocHJlY2lzaW9uID4gMTApIHtcbiAgICBwcmVjaXNpb24gPSAxMDtcbiAgfVxuICBzeW1ib2wgPSB0eXBlb2Ygc3ltYm9sID09PSAnc3RyaW5nJyA/IHN5bWJvbCA6ICcnO1xuICB0aG91c2FuZCA9IHR5cGVvZiB0aG91c2FuZCA9PT0gJ3N0cmluZycgPyB0aG91c2FuZCA6ICcsJztcbiAgZGVjaW1hbCA9IHR5cGVvZiBkZWNpbWFsID09PSAnc3RyaW5nJyA/IGRlY2ltYWwgOiAnLic7XG5cbiAgLy8g6L2s5o2i5pWw5a2X5a2X56ym5Liy77yM5pSv5oyB56eR5a2m6K6w5pWw5rOVXG4gIGNvbnN0IG51bVN0ciA9IHNjaWVudGlmaWNUb051bWJlcihudW0pICsgJyc7XG4gIC8vIOaVtOaVsOWSjOWwj+aVsOmDqOWIhlxuICBjb25zdCBbaW50U3RyLCBkZWNTdHJdID0gbnVtU3RyLnNwbGl0KCcuJyk7XG5cbiAgcmV0dXJuIHN5bWJvbCArIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSArIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRNb25leTtcbiIsIi8qKlxuICog5qC85byP5YyW6ZO26KGM5Y2h5Y+3XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuZm9ybWF0QmFua0NhcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IGJhbmtDYXJkTm8g6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNoYXI9XCIgXCJdIOmXtOmalOWtl+esplxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxlbmd0aD00XSDpl7TpmpTplb/luqZcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmTtuihjOWNoeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiAvLyAxOeS9jemTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnKTtcbiAqIC8vID0+IDYyMjggNDgwNCAwMjU2IDQ4OTAgMDE4XG4gKlxuICogLy8gMTbkvY3pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJyk7XG4gKiAvLyA9PiA2MjI4IDQ4MDQgMDI1NiA0ODkwXG4gKlxuICogLy8g6ISx5pWP6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyOCoqKioqKioqODkwJyk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiA4OTBcbiAqXG4gKiAvLyAxNuS9jemTtuihjOWNoe+8jFwiLVwi6Ze06ZqUXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MCcsIHtjaGFyOiAnLSd9KTtcbiAqIC8vID0+IDYyMjgtNDgwNC0wMjU2LTQ4OTBcbiAqXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEJhbmtDYXJkKGJhbmtDYXJkTm8gPSAnJywgeyBjaGFyID0gJyAnLCBsZW5ndGggPSA0IH0gPSB7fSkge1xuICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGAoLnske2xlbmd0aH19KWAsICdnJyk7XG4gIGNvbnN0IHJlZ0NoYXIgPSBuZXcgUmVnRXhwKGAke2NoYXJ9YCwgJ2cnKTtcblxuICBjb25zdCByZWFsVmFsdWUgPSBiYW5rQ2FyZE5vLnJlcGxhY2UocmVnQ2hhciwgJycpO1xuXG4gIGNvbnN0IG5lZWRSZW1vdmVMYXN0Q2hhciA9IHJlYWxWYWx1ZS5sZW5ndGggJSBsZW5ndGggPT09IDA7XG5cbiAgY29uc3Qgc3RyID0gcmVhbFZhbHVlLnJlcGxhY2UocmVnLCBgJDEke2NoYXJ9YCk7XG5cbiAgcmV0dXJuIG5lZWRSZW1vdmVMYXN0Q2hhciA/IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpIDogc3RyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRCYW5rQ2FyZDtcbiIsIi8qKlxuICog5pu/5o2i5a2X56ym77yM5bqU55So5Zy65pmv5aaC77ya6ISx5pWPXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IucmVwbGFjZUNoYXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuc3RhcnQ9M10g5byA5aeL5L2N572uXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZW5kPS00XSDnu5PmnZ/kvY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jaGFyPVwiKlwiXSDmm7/mjaLlrZfnrKZcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5yZXBlYXRdIOabv+aNouWtl+espueahOmHjeWkjeasoeaVsO+8jOm7mOiupOS4uuabv+aNouWGheWuuemVv+W6pu+8jOWPr+iuvue9ruS4uuWbuuWumuWAvFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmV4Y2x1ZGVdIOaOkumZpOWtl+espu+8jOWmguaenOaMh+WumuaOkumZpOmhue+8jHJlcGVhdOiuvue9ruaXoOaViFxuICogQHJldHVybnMge3N0cmluZ30g5aSE55CG5ZCO55qE5a2X56ymXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIOaJi+acuuWPt1xuICogcmVwbGFjZUNoYXIoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiAxMzAqKioqMDAwMFxuICpcbiAqIC8vIOi6q+S7veivgVxuICogcmVwbGFjZUNoYXIoJzEzMDcwMTE5OTMxMDMwMjI4OCcpO1xuICogLy8gPT4gMTMwKioqKioqKioqKioyMjg4XG4gKlxuICogLy8g6YKu566xXG4gKiBjb25zdCBlbWFpbCA9ICcxMjM0NUBxcS5jb20nXG4gKiByZXBsYWNlQ2hhcihlbWFpbCwge3N0YXJ0OiAyLCBlbmQ6IGVtYWlsLmluZGV4T2YoJ0AnKSwgcmVwZWF0OiA0fSk7XG4gKiAvLyA9PiAxMioqKipAcXEuY29tXG4gKlxuICogLy8g6ZO26KGM5Y2h5Y+3XG4gKiByZXBsYWNlQ2hhcignNjIyODQ4MDQwMjU2NDg5MDAxOCcsIHtzdGFydDogMCwgZW5kOiAtNCwgcmVwZWF0OiA0fSk7XG4gKiAvLyA9PiAqKioqMDAxOFxuICpcbiAqIC8vIOW4puagvOW8j+eahOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjggNDgwNCAwMjU2IDQ4OTAgMDE4Jywge3N0YXJ0OiA0LCBlbmQ6IC00LCBleGNsdWRlOiAnICd9KTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqICoqKiogMDE4XG4gKlxuICogLy8g55So5oi35ZCNXG4gKiByZXBsYWNlQ2hhcign5p6X5p+Q5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKiByZXBsYWNlQ2hhcign5p6X5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKiByZXBsYWNlQ2hhcign5p6X5p+Q5p+Q5p+QJywge3N0YXJ0OiAxLCBlbmQ6IEluZmluaXR5LCByZXBlYXQ6IDJ9KTtcbiAqIC8vID0+IOaelyoqXG4gKlxuICovXG5mdW5jdGlvbiByZXBsYWNlQ2hhcihzdHIgPSAnJywgeyBzdGFydCA9IDMsIGVuZCA9IC00LCBjaGFyID0gJyonLCByZXBlYXQsIGV4Y2x1ZGUgfSA9IHt9KSB7XG4gIGNvbnN0IHN0ckxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgLy8g5byA5aeL5L2N572u6LaF6L+Hc3Ry6ZW/5bqmXG4gIGlmIChNYXRoLmFicyhzdGFydCkgPj0gc3RyTGVuKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj0gMCA/IHN0YXJ0IDogc3RyTGVuICsgc3RhcnQ7XG4gIGVuZCA9IGVuZCA+PSAwID8gZW5kIDogc3RyTGVuICsgZW5kO1xuXG4gIC8vIOW8gOWni+S9jee9ruWkp+S6jue7k+adn+S9jee9rlxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIGxldCBtaWRkbGVTdHIgPSBzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuXG4gIGlmIChleGNsdWRlKSB7XG4gICAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgW14ke2V4Y2x1ZGV9XWAsICdnJyk7XG4gICAgbWlkZGxlU3RyID0gbWlkZGxlU3RyLnJlcGxhY2UocmVnLCBjaGFyKTtcbiAgfSBlbHNlIHtcbiAgICByZXBlYXQgPSB0eXBlb2YgcmVwZWF0ID09PSAnbnVtYmVyJyAmJiByZXBlYXQgPj0gMCA/IHJlcGVhdCA6IG1pZGRsZVN0ci5sZW5ndGg7XG4gICAgbWlkZGxlU3RyID0gY2hhci5yZXBlYXQocmVwZWF0KTtcbiAgfVxuXG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIHN0YXJ0KSArIG1pZGRsZVN0ciArIHN0ci5zdWJzdHJpbmcoZW5kKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVwbGFjZUNoYXI7XG4iLCJpbXBvcnQgeyBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi91dGlscy9jb25maWcnO1xuXG4vLyDnroDkvZNcbmNvbnN0IGNobk51bWJlckNoYXIgPSBbJ+mbticsICfkuIAnLCAn5LqMJywgJ+S4iScsICflm5snLCAn5LqUJywgJ+WFrScsICfkuIMnLCAn5YWrJywgJ+S5nSddO1xuY29uc3QgY2huVW5pdENoYXIgPSBbJycsICfljYEnLCAn55m+JywgJ+WNgyddO1xuXG4vLyDnuYHkvZNcbmNvbnN0IGJpZzVOdW1iZXJDaGFyID0gWyfpm7YnLCAn5aO5JywgJ+i0sCcsICflj4EnLCAn6IKGJywgJ+S8jScsICfpmYYnLCAn5p+SJywgJ+aNjCcsICfnjpYnXTtcbmNvbnN0IGJpZzVVbml0Q2hhciA9IFsnJywgJ+aLvicsICfkvbAnLCAn5LufJ107XG5cbi8vIOaVsOWtl+Wtl+espuOAgeiuoeaVsOWNleS9jVxuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCBudW1iZXJDaGFyO1xuXG4vKipcbiAqIEB0eXBlIHtzdHJpbmdbXX1cbiAqIEBwcml2YXRlXG4gKi9cbmxldCB1bml0Q2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdFNlY3Rpb247XG5cbi8qKlxuICog5q+P5Liq5bCP6IqC55qE5YaF6YOo6L+b6KGM6L2s5YyWXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZWN0aW9uIOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L2s5YyW55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbikge1xuICBsZXQgc3RyID0gJycsXG4gICAgY2huc3RyID0gJycsXG4gICAgemVybyA9IGZhbHNlLCAvL3plcm/kuLrmmK/lkKbov5vooYzooaXpm7bvvIwg56ys5LiA5qyh6L+b6KGM5Y+W5L2Z55Sx5LqO5Li65Liq5L2N5pWw77yM6buY6K6k5LiN6KGl6Zu2XG4gICAgdW5pdFBvcyA9IDA7XG5cbiAgd2hpbGUgKHNlY3Rpb24gPiAwKSB7XG4gICAgLy8g5a+55pWw5a2X5Y+W5L2ZMTDvvIzlvpfliLDnmoTmlbDljbPkuLrkuKrkvY3mlbBcbiAgICBsZXQgdiA9IHNlY3Rpb24gJSAxMDtcblxuICAgIC8v5aaC5p6c5pWw5a2X5Li66Zu277yM5YiZ5a+55a2X56ym5Liy6L+b6KGM6KGl6Zu2XG4gICAgaWYgKHYgPT0gMCkge1xuICAgICAgaWYgKHplcm8pIHtcbiAgICAgICAgLy/lpoLmnpzpgYfliLDov57nu63lpJrmrKHlj5bkvZnpg73mmK8w77yM6YKj5LmI5Y+q6ZyA6KGl5LiA5Liq6Zu25Y2z5Y+vXG4gICAgICAgIHplcm8gPSBmYWxzZTtcbiAgICAgICAgY2huc3RyID0gbnVtYmVyQ2hhclt2XSArIGNobnN0cjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy/nrKzkuIDmrKHlj5bkvZnkuYvlkI7vvIzlpoLmnpzlho3mrKHlj5bkvZnkuLrpm7bvvIzliJnpnIDopoHooaXpm7ZcbiAgICAgIHplcm8gPSB0cnVlO1xuICAgICAgc3RyID0gbnVtYmVyQ2hhclt2XTtcbiAgICAgIHN0ciArPSB1bml0Q2hhclt1bml0UG9zXTtcbiAgICAgIGNobnN0ciA9IHN0ciArIGNobnN0cjtcbiAgICB9XG4gICAgdW5pdFBvcysrO1xuICAgIHNlY3Rpb24gPSBNYXRoLmZsb29yKHNlY3Rpb24gLyAxMCk7XG4gIH1cbiAgcmV0dXJuIGNobnN0cjtcbn1cblxuLyoqXG4gKiDovazmjaLmlbTmlbBcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHovazmjaLnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOS4reaWh+aVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0SW50ZWdlcihudW0pIHtcbiAgbnVtID0gTWF0aC5mbG9vcihudW0pO1xuXG4gIGxldCB1bml0UG9zID0gMDtcbiAgbGV0IHN0cklucyA9ICcnLFxuICAgIGNoblN0ciA9ICcnO1xuICBsZXQgbmVlZFplcm8gPSBmYWxzZTtcblxuICBpZiAobnVtID09PSAwKSB7XG4gICAgcmV0dXJuIG51bWJlckNoYXJbMF07XG4gIH1cbiAgd2hpbGUgKG51bSA+IDApIHtcbiAgICB2YXIgc2VjdGlvbiA9IG51bSAlIDEwMDAwO1xuICAgIGlmIChuZWVkWmVybykge1xuICAgICAgY2huU3RyID0gbnVtYmVyQ2hhclswXSArIGNoblN0cjtcbiAgICB9XG4gICAgc3RySW5zID0gc2VjdGlvblRvQ2hpbmVzZShzZWN0aW9uKTtcbiAgICBzdHJJbnMgKz0gc2VjdGlvbiAhPT0gMCA/IHVuaXRTZWN0aW9uW3VuaXRQb3NdIDogdW5pdFNlY3Rpb25bMF07XG4gICAgY2huU3RyID0gc3RySW5zICsgY2huU3RyO1xuICAgIG5lZWRaZXJvID0gc2VjdGlvbiA8IDEwMDAgJiYgc2VjdGlvbiA+IDA7XG4gICAgbnVtID0gTWF0aC5mbG9vcihudW0gLyAxMDAwMCk7XG4gICAgdW5pdFBvcysrO1xuICB9XG4gIHJldHVybiBjaG5TdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5bCP5pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnREZWNpbWFsKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgY29uc3QgaW5kZXggPSBudW1TdHIuaW5kZXhPZignLicpO1xuXG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoaW5kZXggPiAtMSkge1xuICAgIGxldCBkZWNpbWFsU3RyID0gbnVtU3RyLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgcmV0ID0gbWFwTnVtYmVyQ2hhcihwYXJzZUludChkZWNpbWFsU3RyKSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYoOWwhOS4uuS4reaWh+aVsOWtl1xuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgeWkhOeQhueahOaVsOWtl1xuICogQHJldHVybnMge3N0cmluZ30g6L+U5Zue5Lit5paH5pWw5a2X55qE5pig5bCEXG4gKi9cbmZ1bmN0aW9uIG1hcE51bWJlckNoYXIobnVtKSB7XG4gIGNvbnN0IG51bVN0ciA9IG51bSArICcnO1xuICBsZXQgcmV0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG51bVN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHJldCArPSBudW1iZXJDaGFyW3BhcnNlSW50KG51bVN0cltpXSldO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmlbDlrZfovazkuK3mlofmlbDlrZdcbiAqIOS4jeWcqOWuieWFqOaVsOWtlyAtOTAwNzE5OTI1NDc0MDk5Me+9njkwMDcxOTkyNTQ3NDA5OTEg5YaF77yM5aSE55CG5Lya5pyJ5byC5bi4XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IubnVtYmVyVG9DaGluZXNlXG4gKiBAc2luY2UgMS4yLjBcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g5pWw5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5iaWc1PWZhbHNlXSDnuYHkvZNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudW5pdD10cnVlXSDorqHmlbDljZXkvY1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kZWNpbWFsPVwi54K5XCJdIOS4reaWh+Wwj+aVsOeCuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnplcm89XCLpm7ZcIl0g6K6+572uMOOAguW4uOeUqOmFjee9riDjgIdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5uZWdhdGl2ZT1cIui0n1wiXSDotJ/mlbDliY3pnaLnmoTlrZdcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy51bml0Q29uZmlnXSDoioLngrnljZXkvY3phY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnc9XCLkuIdcIl0g6K6+572u6K6h5pWw5Y2V5L2N5LiH44CC5bi455So6YWN572uIOiQrFxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnVuaXRDb25maWcueT1cIuS6v1wiXSDorr7nva7orqHmlbDljZXkvY3kur/jgILluLjnlKjphY3nva4g5YSEXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqIEBleGFtcGxlXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMCk7XG4gKiAvLyA9PiDkuIDnmb5cbiAqXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLjMpO1xuICogLy8gPT4g5LiA55m+54K55LiJXG4gKlxuICogLy8g57mB5L2TXG4gKiBudW1iZXJUb0NoaW5lc2UoMTAwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2wXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55L2w54K55Y+BXG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEyMzQ1Njc4OTAsIHtiaWc1OiB0cnVlfSk7XG4gKiAvLyA9PiDlo7nmi77otLDkur/lj4Hku5/ogobkvbDkvI3mi77pmYbkuIfmn5Lku5/mjYzkvbDnjpbmi75cbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY1cbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2V9KTtcbiAqIC8vID0+IOS4gOS5neS5nembtlxuICpcbiAqIC8vIOS4jeW4puiuoeaVsOWNleS9je+8jOS/ruaUuTBcbiAqIG51bWJlclRvQ2hpbmVzZSgxOTkwLCB7dW5pdDogZmFsc2UsIHplcm86J+OAhyd9KTtcbiAqIC8vID0+IOS4gOS5neS5neOAh1xuICpcbiAqL1xuZnVuY3Rpb24gbnVtYmVyVG9DaGluZXNlKFxuICBudW0sXG4gIHtcbiAgICBiaWc1ID0gZmFsc2UsXG4gICAgdW5pdCA9IHRydWUsXG4gICAgZGVjaW1hbCA9ICfngrknLFxuICAgIHplcm8gPSAnJyxcbiAgICBuZWdhdGl2ZSA9ICfotJ8nLFxuICAgIHVuaXRDb25maWcgPSB7XG4gICAgICB3OiAn5LiHJywgLy8gJ+iQrCdcbiAgICAgIHk6ICfkur8nIC8vICflhIQnXG4gICAgfVxuICB9ID0ge31cbikge1xuICAvLyDpnZ7mlbDlrZcg5oiWIE5hTiDkuI3lpITnkIZcbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInIHx8IGlzTmFOKG51bSkpIHtcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlV2FybmluZykge1xuICAgICAgY29uc29sZS53YXJuKGDlj4LmlbDplJnor68gJHtudW1977yM6K+35Lyg5YWl5pWw5a2XYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8g6LaF6L+H5a6J5YWo5pWw5a2X5o+Q56S6XG4gIGNoZWNrQm91bmRhcnkobnVtKTtcblxuICAvLyDorr7nva7mlbDlrZflrZfnrKblkozorqHmlbDljZXkvY1cbiAgaWYgKGJpZzUpIHtcbiAgICBudW1iZXJDaGFyID0gYmlnNU51bWJlckNoYXIuc2xpY2UoKTtcbiAgICB1bml0Q2hhciA9IGJpZzVVbml0Q2hhci5zbGljZSgpO1xuICB9IGVsc2Uge1xuICAgIG51bWJlckNoYXIgPSBjaG5OdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBjaG5Vbml0Q2hhci5zbGljZSgpO1xuICB9XG5cbiAgLy8g6K6+572u6IqC54K56K6h5pWw5Y2V5L2N77yM5LiH44CB5Lq/44CB5LiH5Lq/XG4gIGNvbnN0IGRlZmF1bHRVbml0V2FuID0gJ+S4hyc7XG4gIGNvbnN0IGRlZmF1bHRVbml0WWkgPSAn5Lq/JztcbiAgdW5pdFNlY3Rpb24gPSBbJycsIHVuaXRDb25maWcudyB8fCBkZWZhdWx0VW5pdFdhbiwgdW5pdENvbmZpZy55IHx8IGRlZmF1bHRVbml0WWksIHVuaXRDb25maWcudyAmJiB1bml0Q29uZmlnLnkgPyB1bml0Q29uZmlnLncgKyB1bml0Q29uZmlnLnkgOiBkZWZhdWx0VW5pdFdhbiArIGRlZmF1bHRVbml0WWldO1xuXG4gIC8vIOiuvue9rjBcbiAgaWYgKHplcm8pIHtcbiAgICBudW1iZXJDaGFyWzBdID0gemVybztcbiAgfVxuXG4gIC8vIOWJjee9ruWtl+espu+8jOi0n+aVsOWkhOeQhlxuICBjb25zdCBwcmVTdHIgPSBudW0gPCAwID8gbmVnYXRpdmUgOiAnJztcblxuICAvLyDmlbTmlbDlkozlsI/mlbBcbiAgbGV0IGNobkludGVnZXIsIGNobkRlY2ltYWw7XG5cbiAgLy8g5aSE55CG5pW05pWwXG4gIGlmICh1bml0KSB7XG4gICAgY2huSW50ZWdlciA9IGNvbnZlcnRJbnRlZ2VyKG51bSk7XG4gIH0gZWxzZSB7XG4gICAgY2huSW50ZWdlciA9IG1hcE51bWJlckNoYXIoTWF0aC5mbG9vcihudW0pKTtcbiAgfVxuXG4gIC8vIOWkhOeQhuWwj+aVsFxuICBjaG5EZWNpbWFsID0gY29udmVydERlY2ltYWwobnVtKTtcblxuICByZXR1cm4gY2huRGVjaW1hbCA/IGAke3ByZVN0cn0ke2NobkludGVnZXJ9JHtkZWNpbWFsfSR7Y2huRGVjaW1hbH1gIDogYCR7cHJlU3RyfSR7Y2huSW50ZWdlcn1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBudW1iZXJUb0NoaW5lc2U7XG4iLCIvKipcbiAqIOWtl+iKgui9rOaNouWtmOWCqOWNleS9je+8jOS/neeVmTLkvY3lsI/mlbDngrlcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5ieXRlc1RvU2l6ZVxuICogQHNpbmNlIDMuOC4wXG4gKiBAcGFyYW0ge251bWJlcn0gYnl0ZXMg5a2X6IqC5aSn5bCPXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDlrZjlgqjljZXkvY3lgLxcbiAqIEBleGFtcGxlXG4gKlxuICogYnl0ZXNUb1NpemUoMCk7XG4gKiAvLyA9PiAwIEJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KTtcbiAqIC8vID0+IDEgS0JcbiAqXG4gKiBieXRlc1RvU2l6ZSgzLjIxMzI0MyoxMDI0KjEwMjQpO1xuICogLy8gPT4gMy4yMSBNQlxuICpcbiAqIGJ5dGVzVG9TaXplKDEwMjQqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDEgR0JcbiAqL1xuZnVuY3Rpb24gYnl0ZXNUb1NpemUoYnl0ZXMpIHtcbiAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQic7XG4gIGNvbnN0IGsgPSAxMDI0O1xuICAvLyDlrZjlgqjljZXkvY1cbiAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcbiAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuXG4gIHJldHVybiBzaXplc1tpXSA/IGAke051bWJlcigoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSl9ICR7c2l6ZXNbaV19YCA6IGJ5dGVzICsgJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ5dGVzVG9TaXplO1xuIiwiaW1wb3J0IGlzSWRDYXJkIGZyb20gJy4vaXNJZENhcmQnO1xuXG5jb25zdCByZWdJZENhcmQgPSAvXig/PHByb3ZpbmNlPlxcZHsyfSkoPzxjaXR5PlxcZHsyfSkoPzxhcmVhPlxcZHsyfSkoPzx5ZWFyPig/OlxcZHsyfSk/XFxkezJ9KSg/PG1vbnRoPlxcZHsyfSkoPzxkYXk+XFxkezJ9KVxcZHsyfSg/PGdlbmRlcj5cXGQpKD86XFxkfFgpPyQvaTtcblxuY29uc3QgUHJvdmluY2VzID0gW1xuICAvLyDljY7ljJflnLDljLrvvJrljJfkuqzluIJ8MTEwMDAw77yM5aSp5rSl5biCfDEyMDAwMO+8jOays+WMl+ecgXwxMzAwMDDvvIzlsbHopb/nnIF8MTQwMDAw77yM5YaF6JKZ5Y+k6Ieq5rK75Yy6fDE1MDAwMFxuICBbJzExJywgJ+WMl+S6rOW4giddLFxuICBbJzEyJywgJ+Wkqea0peW4giddLFxuICBbJzEzJywgJ+ays+WMl+ecgSddLFxuICBbJzE0JywgJ+Wxseilv+ecgSddLFxuICBbJzE1JywgJ+WGheiSmeWPpOiHquayu+WMuiddLFxuXG4gIC8vIOS4nOWMl+WcsOWMuu+8miDovr3lroHnnIF8MjEwMDAw77yM5ZCJ5p6X55yBfDIyMDAwMO+8jOm7kem+meaxn+ecgXwyMzAwMDBcbiAgWycyMScsICfovr3lroHnnIEnXSxcbiAgWycyMicsICflkInmnpfnnIEnXSxcbiAgWycyMycsICfpu5HpvpnmsZ/nnIEnXSxcblxuICAvLyDljY7kuJzlnLDljLrvvJog5LiK5rW35biCfDMxMDAwMO+8jOaxn+iLj+ecgXwzMjAwMDDvvIzmtZnmsZ/nnIF8MzMwMDAw77yM5a6J5b6955yBfDM0MDAwMO+8jOemj+W7uuecgXwzNTAwMDDvvIzmsZ/opb/nnIF8MzYwMDAw77yM5bGx5Lic55yBfDM3MDAwMFxuICBbJzMxJywgJ+S4iua1t+W4giddLFxuICBbJzMyJywgJ+axn+iLj+ecgSddLFxuICBbJzMzJywgJ+a1meaxn+ecgSddLFxuICBbJzM0JywgJ+WuieW+veecgSddLFxuICBbJzM1JywgJ+emj+W7uuecgSddLFxuICBbJzM2JywgJ+axn+ilv+ecgSddLFxuICBbJzM3JywgJ+WxseS4nOecgSddLFxuXG4gIC8vIOWNjuS4reWcsOWMuu+8miDmsrPljZfnnIF8NDEwMDAw77yM5rmW5YyX55yBfDQyMDAwMO+8jOa5luWNl+ecgXw0MzAwMDBcbiAgWyc0MScsICfmsrPljZfnnIEnXSxcbiAgWyc0MicsICfmuZbljJfnnIEnXSxcbiAgWyc0MycsICfmuZbljZfnnIEnXSxcblxuICAvLyDljY7ljZflnLDljLrvvJrlub/kuJznnIF8NDQwMDAw77yM5bm/6KW/5aOu5peP6Ieq5rK75Yy6fDQ1MDAwMO+8jOa1t+WNl+ecgXw0NjAwMDBcbiAgWyc0NCcsICflub/kuJznnIEnXSxcbiAgWyc0NScsICflub/opb/lo67ml4/oh6rmsrvljLonXSxcbiAgWyc0NicsICfmtbfljZfnnIEnXSxcblxuICAvLyDopb/ljZflnLDljLrvvJrph43luobluIJ8NTAwMDAw77yM5Zub5bed55yBfDUxMDAwMO+8jOi0teW3nuecgXw1MjAwMDDvvIzkupHljZfnnIF8NTMwMDAw77yM6KW/6JeP6Ieq5rK75Yy6fDU0MDAwMFxuICBbJzUwJywgJ+mHjeW6huW4giddLFxuICBbJzUxJywgJ+Wbm+W3neecgSddLFxuICBbJzUyJywgJ+i0teW3nuecgSddLFxuICBbJzUzJywgJ+S6keWNl+ecgSddLFxuICBbJzU0JywgJ+ilv+iXj+iHquayu+WMuiddLFxuXG4gIC8vIOilv+WMl+WcsOWMuu+8miDpmZXopb/nnIF8NjEwMDAw77yM55SY6IKD55yBfDYyMDAwMO+8jOmdkua1t+ecgXw2MzAwMDDvvIzlroHlpI/lm57ml4/oh6rmsrvljLp8NjQwMDAw77yM5paw55aG57u05ZC+5bCU6Ieq5rK75Yy6fDY1MDAwMFxuICBbJzYxJywgJ+mZleilv+ecgSddLFxuICBbJzYyJywgJ+eUmOiCg+ecgSddLFxuICBbJzYzJywgJ+mdkua1t+ecgSddLFxuICBbJzY0JywgJ+WugeWkj+WbnuaXj+iHquayu+WMuiddLFxuICBbJzY1JywgJ+aWsOeWhue7tOWQvuWwlOiHquayu+WMuiddLFxuXG4gIC8vIOWPsOa5vuWcsOWMuu+8muWPsOa5vuecgXw3MTAwMDBcbiAgLy8g5Y+w5rm+5bGF5rCR5YWs5rCR6Lqr5Lu95Y+356CB5Zyw5Z2A56CB5Li6ODMwMDAw77yM5Y+C6ICDIGh0dHA6Ly93d3cud2Fud2VpYmFpa2UuY29tL3dpa2kt5Lit5Y2O5Lq65rCR5YWx5ZKM5Zu96KGM5pS/5Yy65YiS5Luj56CBXyg35Yy6KeOAgWh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+a4r+a+s+WPsOWxheawkeWxheS9j+ivgVxuICBbJzcxJywgJ+WPsOa5vuecgSddLFxuICBbJzgzJywgJ+WPsOa5vuecgSddLFxuXG4gIC8vIOa4r+a+s+WcsOWMuu+8mummmea4r+eJueWIq+ihjOaUv+WMunw4MTAwMDDvvIzmvrPpl6jnibnliKvooYzmlL/ljLp8ODIwMDAwXG4gIFsnODEnLCAn6aaZ5riv54m55Yir6KGM5pS/5Yy6J10sXG4gIFsnODInLCAn5r6z6Zeo54m55Yir6KGM5pS/5Yy6J11cbl07XG5cbi8vIOesrOS4gOS9jeaVsOWtl+aYr+S7peWJjeeahOWkp+WMuuWItuS7o+eggeOAguesrOS6jOS9jeaYr+Wkp+WMuuaJgOWcqOecgeW4gue8lueggeOAguWFqOWbveWFseWIhuS4ujjkuKrlpKfljLrvvJrljY7ljJfvvIgx77yJ44CB5Lic5YyX77yIMu+8ieOAgeWNjuS4nO+8iDPvvInjgIHkuK3ljZfvvIg077yJ44CB6KW/5Y2X77yINe+8ieOAgeilv+WMl++8iDbvvInjgIHlj7Dmub7vvIg377yJ5ZKM5riv5r6z77yIOO+8ieOAglxuLy8gY29uc3QgUmVnaW9ucyA9IFtcbi8vICAgWycxJywgJ+WNjuWMl+WcsOWMuiddLFxuLy8gICBbJzInLCAn5Lic5YyX5Zyw5Yy6J10sXG4vLyAgIFsnMycsICfljY7kuJzlnLDljLonXSxcbi8vICAgWyc0JywgJ+S4reWNl+WcsOWMuiddLFxuLy8gICBbJzUnLCAn6KW/5Y2X5Zyw5Yy6J10sXG4vLyAgIFsnNicsICfopb/ljJflnLDljLonXSxcbi8vICAgWyc3JywgJ+WPsOa5vuWcsOWMuiddLFxuLy8gICBbJzgnLCAn5riv5r6z5Zyw5Yy6J11cbi8vIF07XG5cbi8qKlxuICog6Kej5p6Q6Lqr5Lu96K+B5Y+356CB77yM5pSv5oyBMTXjgIExOOS9jei6q+S7veivgeWPt+eggVxuICogXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5wYXJzZUlkQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE15L2NXG4gKiBAcmV0dXJucyBudWxsIOaIliDnnIHku73jgIHnlJ/ml6XjgIHmgKfliKvvvIznnIEv5biCL+WMui/lubQv5pyIL+aXpS/mgKfliKvnvJbnoIFcbiAqIEBleGFtcGxlXG4gKiBwYXJzZUlkQ2FyZCgnMTIzNDU2Nzg5MTIzNDU2Jyk7XG4gKiAvLyA9PiBudWxsXG4gKiBcbiAqIC8vIDE45L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBwYXJzZUlkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjg4JylcbiAqIC8vID0+XG4gKiB7XG4gIGJpcnRoZGF5OiBcIjE5OTMtMTAtMzBcIixcbiAgZ2VuZGVyOiBcIuWls1wiLFxuICBvcmlnaW46IHsgcHJvdmluY2U6IFwiMTNcIiwgY2l0eTogXCIwN1wiLCBhcmVhOiBcIjAxXCIsIHllYXI6IFwiMTk5M1wiLCBtb250aDogXCIxMFwiLCBkYXk6IFwiMzBcIiwgZ2VuZGVyOiBcIjhcIiB9LFxuICBwcm92aW5jZTogXCLmsrPljJfnnIFcIlxufVxuICogLy8gMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDE5MzEwMzAyMjgnKTtcbiAqIC8vID0+XG4gKiB7XG4gIGJpcnRoZGF5OiBcIjkzLTEwLTMwXCIsXG4gIGdlbmRlcjogXCLlpbNcIixcbiAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG59XG4gKiBcbiAqL1xuZnVuY3Rpb24gcGFyc2VJZENhcmQoaWQpIHtcbiAgaWYgKCFpc0lkQ2FyZChpZCwgeyBsb29zZTogdHJ1ZSB9KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW5mbyA9IHJlZ0lkQ2FyZC5leGVjKGlkKTtcblxuICBpZiAoIWluZm8pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7eyBwcm92aW5jZTogc3RyaW5nLCBjaXR5OiBzdHJpbmcsIGFyZWE6IHN0cmluZywgeWVhcjogc3RyaW5nLCBtb250aDogc3RyaW5nLCBkYXk6IHN0cmluZywgZ2VuZGVyOiBzdHJpbmcgfX1cbiAgICpcbiAgICovXG4gIGxldCBvcmlnaW4gPSB7XG4gICAgcHJvdmluY2U6ICcnLFxuICAgIGNpdHk6ICcnLFxuICAgIGFyZWE6ICcnLFxuICAgIHllYXI6ICcnLFxuICAgIG1vbnRoOiAnJyxcbiAgICBkYXk6ICcnLFxuICAgIGdlbmRlcjogJydcbiAgfTtcblxuICBpZiAoaW5mby5ncm91cHMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luID0gaW5mby5ncm91cHM7XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luID0ge1xuICAgICAgcHJvdmluY2U6IGluZm9bMV0sXG4gICAgICBjaXR5OiBpbmZvWzJdLFxuICAgICAgYXJlYTogaW5mb1szXSxcbiAgICAgIHllYXI6IGluZm9bNF0sXG4gICAgICBtb250aDogaW5mb1s1XSxcbiAgICAgIGRheTogaW5mb1s2XSxcbiAgICAgIGdlbmRlcjogaW5mb1s3XVxuICAgIH07XG4gIH1cblxuICBjb25zdCBwcm92aW5jZSA9IFByb3ZpbmNlcy5maW5kKChpdGVtKSA9PiBpdGVtWzBdID09PSBvcmlnaW4ucHJvdmluY2UpO1xuXG4gIGlmICghcHJvdmluY2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGJpcnRoZGF5ID0gYCR7b3JpZ2luLnllYXJ9LSR7b3JpZ2luLm1vbnRofS0ke29yaWdpbi5kYXl9YDtcbiAgY29uc3QgZ2VuZGVyID0gTnVtYmVyKG9yaWdpbi5nZW5kZXIpICUgMiA9PT0gMCA/ICflpbMnIDogJ+eUtyc7XG4gIC8vIGNvbnN0IHJlZ2lvbiA9IFJlZ2lvbnMuZmluZChpdGVtID0+IGl0ZW1bMF0gPT09IG9yaWdpbi5wcm92aW5jZT8uc3Vic3RyaW5nKDAsIDEpKTtcblxuICByZXR1cm4ge1xuICAgIC8vIHJlZ2lvbixcbiAgICBwcm92aW5jZTogcHJvdmluY2VbMV0sXG4gICAgYmlydGhkYXksXG4gICAgZ2VuZGVyLFxuICAgIG9yaWdpblxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZUlkQ2FyZDtcbiIsImltcG9ydCBpc1R5cGUgZnJvbSAnLi9pc1R5cGUnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uk51bWJlclxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VHlwZS5pc051bWJlclxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bWJlclxuICogQGV4YW1wbGVcbiAqXG4gKiBpc051bWJlcigxKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdW1iZXIoSW5maW5pdHkpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdW1iZXIoTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKCcxJylcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdOdW1iZXInKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOdW1iZXI7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCwgZmxvYXQyRml4ZWQsIGNoZWNrQm91bmRhcnkgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgeyBpc051bWJlciwgaXNOYU4sIGlzU3RyaW5nIH0gZnJvbSAnLi91dGlscy90eXBlJztcblxuLyoqXG4gKiDnsr7noa7kuZjms5XvvIzmlK/mjIHlpJrkuKrmlbDnm7jkuZhcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgudGltZXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOS5mOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5LmY56evXG4gKiBAZXhhbXBsZVxuICpcbiAqIHRpbWVzKDMsIDAuNik7XG4gKiAvLyA9PiAxLjhcbiAqXG4gKiB0aW1lcygzLCAwLjYsIDIpO1xuICogLy8gPT4gMy42XG4gKlxuICogdGltZXMoMywgMC42LCAyLCAxMCk7XG4gKiAvLyA9PiAzNlxuICovXG5mdW5jdGlvbiB0aW1lcyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gdGltZXModGltZXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY29uc3QgYmFzZU51bSA9IGRpZ2l0TGVuZ3RoKG51bTEpICsgZGlnaXRMZW5ndGgobnVtMik7XG4gIGNvbnN0IGxlZnRWYWx1ZSA9IG51bTFDaGFuZ2VkICogbnVtMkNoYW5nZWQ7XG5cbiAgY2hlY2tCb3VuZGFyeShsZWZ0VmFsdWUpO1xuXG4gIHJldHVybiBsZWZ0VmFsdWUgLyBNYXRoLnBvdygxMCwgYmFzZU51bSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRpbWVzO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGggfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5pbXBvcnQgeyBpc051bWJlciwgaXNOYU4sIGlzU3RyaW5nIH0gZnJvbSAnLi91dGlscy90eXBlJztcblxuLyoqXG4gKiDnsr7noa7liqDms5XvvIzmlK/mjIHlpJrkuKrmlbDnm7jliqBcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk1hdGgucGx1c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45Yqg55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDmgLvlkoxcbiAqIEBleGFtcGxlXG4gKlxuICogcGx1cygwLjEsIDAuMik7XG4gKiAvLyA9PiAwLjNcbiAqXG4gKiBwbHVzKDAuMSwgMC4yLCAwLjMpO1xuICogLy8gPT4gMC42XG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zLCAwLjQpO1xuICogLy8gPT4gMVxuICovXG5mdW5jdGlvbiBwbHVzKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHBsdXMocGx1cyhudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBiYXNlTnVtID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KGRpZ2l0TGVuZ3RoKG51bTEpLCBkaWdpdExlbmd0aChudW0yKSkpO1xuICByZXR1cm4gKHRpbWVzKG51bTEsIGJhc2VOdW0pICsgdGltZXMobnVtMiwgYmFzZU51bSkpIC8gYmFzZU51bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGx1cztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5YeP5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YePXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLm1pbnVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jlh4/nmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOW3rlxuICogQGV4YW1wbGVcbiAqXG4gKiBtaW51cygxLCAwLjkpO1xuICogLy8gPT4gMC4xXG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyKTtcbiAqIC8vID0+IDAuMDhcbiAqXG4gKiBtaW51cygxLCAwLjksIDAuMDIsIDAuMDgpO1xuICogLy8gPT4gMFxuICovXG5mdW5jdGlvbiBtaW51cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBtaW51cyhtaW51cyhudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBiYXNlTnVtID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KGRpZ2l0TGVuZ3RoKG51bTEpLCBkaWdpdExlbmd0aChudW0yKSkpO1xuICByZXR1cm4gKHRpbWVzKG51bTEsIGJhc2VOdW0pIC0gdGltZXMobnVtMiwgYmFzZU51bSkpIC8gYmFzZU51bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWludXM7XG4iLCJpbXBvcnQgeyBzdHJpcCwgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu6Zmk5rOV77yM5pSv5oyB5aSa5Liq5pWw55u46ZmkXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLmRpdmlkZVxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg6Zmk5pWw5ZKM6KKr6Zmk5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDllYbmlbBcbiAqIEBleGFtcGxlXG4gKlxuICogZGl2aWRlKDEuMjEsIDEuMSk7XG4gKiAvLyA9PiAxLjFcbiAqXG4gKiBkaXZpZGUoMTAwMCwgMTAsIDEwKTtcbiAqIC8vID0+IDEwXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCwgMTApO1xuICogLy8gPT4gMVxuICovXG5mdW5jdGlvbiBkaXZpZGUoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZGl2aWRlKGRpdmlkZShudW0xLCBudW0yKSwgLi4ucmVzdCk7XG4gIH1cblxuICAvLyDlhbzlrrnlpITnkIbvvIzlpoLmnpznrKwy5Liq5Y+C5pWw5Li66Z2e5pWw5a2X5oiW5a2X56ym5Liy5pe277yM6L+U5Zue56ys5LiA5Liq5Y+C5pWwXG4gIGlmICgoIWlzTnVtYmVyKG51bTIpIHx8IGlzTmFOKG51bTIpKSAmJiAhaXNTdHJpbmcobnVtMikpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG51bTE7XG4gIH1cblxuICBjb25zdCBudW0xQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTEpO1xuICBjb25zdCBudW0yQ2hhbmdlZCA9IGZsb2F0MkZpeGVkKG51bTIpO1xuICBjaGVja0JvdW5kYXJ5KG51bTFDaGFuZ2VkKTtcbiAgY2hlY2tCb3VuZGFyeShudW0yQ2hhbmdlZCk7XG4gIC8vIGZpeDog57G75Ly8IDEwICoqIC00IOS4uiAwLjAwMDA5OTk5OTk5OTk5OTk5OTk577yMc3RyaXAg5L+u5q2jXG4gIHJldHVybiB0aW1lcyhudW0xQ2hhbmdlZCAvIG51bTJDaGFuZ2VkLCBzdHJpcChNYXRoLnBvdygxMCwgZGlnaXRMZW5ndGgobnVtMikgLSBkaWdpdExlbmd0aChudW0xKSkpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGl2aWRlO1xuIiwiaW1wb3J0IGRpdmlkZSBmcm9tICcuL2RpdmlkZSc7XG5pbXBvcnQgdGltZXMgZnJvbSAnLi90aW1lcyc7XG5cbi8qKlxuICog5Zub6IiN5LqU5YWl77yM5pSv5oyB6K6+572u57K+5bqmXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnJvdW5kXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOimgeWbm+iIjeS6lOWFpeeahOaVsOWtl1xuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0g5Zub6IiN5LqU5YWl55qE57K+5bqmXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBleGFtcGxlXG4gKlxuICogcm91bmQoNC4wMDYpO1xuICogLy8gPT4gNFxuICpcbiAqIHJvdW5kKDQuMDA2LCAyKTtcbiAqIC8vID0+IDQuMDFcbiAqXG4gKiByb3VuZCg0MDYwLCAtMik7XG4gKiAvLyA9PiA0MTAwXG4gKi9cbmZ1bmN0aW9uIHJvdW5kKG51bSwgcHJlY2lzaW9uID0gMCkge1xuICBjb25zdCBiYXNlID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBkaXZpZGUoTWF0aC5yb3VuZCh0aW1lcyhudW0sIGJhc2UpKSwgYmFzZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJvdW5kO1xuIl0sIm5hbWVzIjpbInJlZyIsInJlZ0lkQ2FyZCIsImJhc2VSZWciLCJzdW1DaGVja0NvZGUiLCJpc05hTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDM0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO0VBQ2pDLEVBQUUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN6RDs7RUNYQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtFQUN6QixFQUFFLE9BQU8sTUFBTSxD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RUFBRSxHQUFHLEVBQUUsRUFBRTtFQUMxRSxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztFQUNoRCxFQUFFLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdDO0VBQ0EsRUFBRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwRDtFQUNBLEVBQUUsTUFBTSxrQkFBa0IsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0Q7RUFDQSxFQUFFLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRDtFQUNBLEVBQUUsT0FBTyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztFQUNyRTs7RUN6Q0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdB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QUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0VBQzlDLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsYUFBYSxDQUFDLEdBQUcsRUFBRTtFQUM1QixFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7RUFDMUIsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDZjtFQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtFQUNyRCxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDM0MsR0FBRztBQUNIO0VBQ0EsRUFBRSxPQUFPLEdBQUcsQ0FBQztFQUNiLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsZUFBZTtFQUN4QixFQUFFLEdBQUc7RUFDTCxFQUFFO0VBQ0YsSUFBSSxJQUFJLEdBQUcsS0FBSztFQUNoQixJQUFJLElBQUksR0FBRyxJQUFJO0VBQ2YsSUFBSSxPQUFPLEdBQUcsR0FBRztFQUNqQixJQUFJLElBQUksR0FBRyxFQUFFO0VBQ2IsSUFBSSxRQUFRLEdBQUcsR0FBRztFQUNsQixJQUFJLFVBQVUsR0FBRztFQUNqQixN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QUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBQ25CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7QUFDakI7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDO0VBQ25CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO0FBQ3BCO0VBQ0E7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDbkIsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDbkIsQ0FBQyxD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QTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7RUFDekIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDakM7O0VDMUJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUU7RUFDeEIsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztFQUNyQyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDdkIsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7RUFDN0MsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSUEsTUFBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO0VBQzNEO0VBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztFQUNoQixHQUFHO0FBQ0g7RUFDQSxFQUFFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN4QyxFQUFFLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN4QyxFQUFFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDeEQsRUFBRSxNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDO0FBQzlDO0VBQ0EsRUFB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
|