util-helpers 4.4.0 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/util-helpers.js +169 -26
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/calculateCursorPosition.js +62 -0
- package/esm/formatBankCard.js +1 -2
- package/esm/formatMobile.js +45 -0
- package/esm/index.js +2 -0
- package/esm/isHMCard.js +12 -0
- package/esm/isIdCard.js +1 -1
- package/esm/isTWCard.js +6 -0
- package/esm/normalizeString.js +1 -1
- package/esm/parseIdCard.js +34 -14
- package/esm/safeDate.js +3 -2
- package/esm/setDataURLPrefix.js +1 -2
- package/esm/validatePassword.js +17 -1
- package/lib/calculateCursorPosition.js +73 -0
- package/lib/formatBankCard.js +1 -2
- package/lib/formatMobile.js +55 -0
- package/lib/index.js +16 -0
- package/lib/isHMCard.js +12 -0
- package/lib/isIdCard.js +1 -1
- package/lib/isTWCard.js +6 -0
- package/lib/normalizeString.js +1 -1
- package/lib/parseIdCard.js +34 -14
- package/lib/safeDate.js +3 -2
- package/lib/setDataURLPrefix.js +1 -2
- package/lib/validatePassword.js +17 -1
- package/package.json +1 -1
- package/types/calculateCursorPosition.d.ts +25 -0
- package/types/formatMobile.d.ts +27 -0
- package/types/index.d.ts +2 -0
- package/types/isHMCard.d.ts +12 -0
- package/types/isTWCard.d.ts +6 -0
- package/types/normalizeString.d.ts +1 -1
- package/types/parseIdCard.d.ts +84 -25
- package/types/safeDate.d.ts +3 -2
- package/types/setDataURLPrefix.d.ts +1 -2
- package/types/validatePassword.d.ts +58 -12
package/dist/util-helpers.js
CHANGED
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
* @see 参考 {@link https://zh.wikipedia.org/wiki/中华人民共和国公民身份号码|中华人民共和国公民身份号码}
|
|
141
141
|
* @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
|
|
142
142
|
* @param {string} id 身份证号码
|
|
143
|
-
* @returns 校验码是否正确
|
|
143
|
+
* @returns {boolean} 校验码是否正确
|
|
144
144
|
*/
|
|
145
145
|
function check(id) {
|
|
146
146
|
let index, sum, num;
|
|
@@ -581,6 +581,22 @@
|
|
|
581
581
|
return ret;
|
|
582
582
|
}
|
|
583
583
|
|
|
584
|
+
/**
|
|
585
|
+
* @typedef {Object} PasswordContaines - 验证密码的包含内容
|
|
586
|
+
* @property {boolean} number - 包含数字
|
|
587
|
+
* @property {boolean} lowerCaseLetter - 包含小写字母
|
|
588
|
+
* @property {boolean} upperCaseLetter - 包含大写字母
|
|
589
|
+
* @property {boolean} specialCharacter - 包含特殊字符
|
|
590
|
+
* @property {boolean} unallowableCharacter - 包含非法字符
|
|
591
|
+
*/
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* @typedef {Object} ValidatePasswordReturn - 验证结果
|
|
595
|
+
* @property {boolean} validated - 验证结果,根据密码强度、是否包含非法字符得出
|
|
596
|
+
* @property {number} level - 强度级别,包含数字/大小写字母/特殊字符
|
|
597
|
+
* @property {PasswordContaines} containes - 包含内容
|
|
598
|
+
*/
|
|
599
|
+
|
|
584
600
|
/**
|
|
585
601
|
* 验证密码(数字、大小写字母、特殊字符、非法字符)
|
|
586
602
|
*
|
|
@@ -593,7 +609,7 @@
|
|
|
593
609
|
* @param {number} [options.level=2] 密码强度 1-包含一种字符 2-包含两种字符 3-包含三种字符。(大写字母、小写字母、数字、特殊字符)
|
|
594
610
|
* @param {boolean} [options.ignoreCase=false] 是否忽略大小写,为 ture 时,大小写字母视为一种字符
|
|
595
611
|
* @param {string} [options.special="!@#$%^&*()-=_+[]\|{},./?<>~"] 支持的特殊字符
|
|
596
|
-
* @returns 验证结果
|
|
612
|
+
* @returns {ValidatePasswordReturn} 验证结果
|
|
597
613
|
* @example
|
|
598
614
|
*
|
|
599
615
|
* validatePassword('a12345678');
|
|
@@ -1101,6 +1117,18 @@
|
|
|
1101
1117
|
* @see 参考 {@link https://zh.wikipedia.org/wiki/港澳居民来往内地通行证|港澳居民来往内地通行证}
|
|
1102
1118
|
* @param {*} value 要检测的值
|
|
1103
1119
|
* @returns {boolean} 是否为港澳居民来往内地通行证
|
|
1120
|
+
* @example
|
|
1121
|
+
* // 第一代 11 位
|
|
1122
|
+
* isHMCard('h3203117707') // true
|
|
1123
|
+
* isHMCard('H3203117707') // true
|
|
1124
|
+
* isHMCard('m3203117707') // true
|
|
1125
|
+
* isHMCard('M3203117707') // true
|
|
1126
|
+
*
|
|
1127
|
+
* // 第二代 9 位
|
|
1128
|
+
* isHMCard('h32031177') // true
|
|
1129
|
+
* isHMCard('H32031177') // true
|
|
1130
|
+
* isHMCard('m32031177') // true
|
|
1131
|
+
* isHMCard('M32031177') // true
|
|
1104
1132
|
*/
|
|
1105
1133
|
function isHMCard(value) {
|
|
1106
1134
|
const valueStr = convertToString(value);
|
|
@@ -1119,6 +1147,12 @@
|
|
|
1119
1147
|
* @see 参考 {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证|台湾居民来往大陆通行证}
|
|
1120
1148
|
* @param {*} value 要检测的值
|
|
1121
1149
|
* @returns {boolean} 是否为台湾居民来往大陆通行证
|
|
1150
|
+
* @example
|
|
1151
|
+
* isTWCard('12345678') // true
|
|
1152
|
+
* isTWCard('07257456') // true
|
|
1153
|
+
*
|
|
1154
|
+
* // 一次性短期
|
|
1155
|
+
* isTWCard('F290299977') // true
|
|
1122
1156
|
*/
|
|
1123
1157
|
function isTWCard(value) {
|
|
1124
1158
|
const valueStr = convertToString(value);
|
|
@@ -1487,7 +1521,7 @@
|
|
|
1487
1521
|
*
|
|
1488
1522
|
* @static
|
|
1489
1523
|
* @alias module:Processor.normalizeString
|
|
1490
|
-
* @see 参考 {@link
|
|
1524
|
+
* @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#string_instances|String}
|
|
1491
1525
|
* @since 4.3.0
|
|
1492
1526
|
* @param {*} value 待处理的值
|
|
1493
1527
|
* @returns {string} 规整化的值
|
|
@@ -1544,12 +1578,9 @@
|
|
|
1544
1578
|
const regChar = new RegExp(`${char}`, 'g');
|
|
1545
1579
|
|
|
1546
1580
|
const realValue = normalizeString(bankCardNo).replace(regChar, '');
|
|
1547
|
-
|
|
1548
|
-
const needRemoveLastChar = realValue.length % length === 0;
|
|
1549
|
-
|
|
1550
1581
|
const str = realValue.replace(reg, `$1${char}`);
|
|
1551
1582
|
|
|
1552
|
-
return
|
|
1583
|
+
return realValue.length % length === 0 ? str.substring(0, str.length - 1) : str;
|
|
1553
1584
|
}
|
|
1554
1585
|
|
|
1555
1586
|
/**
|
|
@@ -1974,38 +2005,58 @@
|
|
|
1974
2005
|
// ['8', '港澳地区']
|
|
1975
2006
|
// ];
|
|
1976
2007
|
|
|
2008
|
+
/**
|
|
2009
|
+
* @typedef {Object} IdCardOrigin - 解析身份证原数据
|
|
2010
|
+
* @property {string} province - 省份编码
|
|
2011
|
+
* @property {string} city - 城市编码
|
|
2012
|
+
* @property {string} area - 地区编码
|
|
2013
|
+
* @property {string} year - 出生年
|
|
2014
|
+
* @property {string} month - 出生月
|
|
2015
|
+
* @property {string} day - 出生日
|
|
2016
|
+
* @property {string} gender - 性别 能整除2为女,否则为男
|
|
2017
|
+
*/
|
|
2018
|
+
|
|
2019
|
+
/**
|
|
2020
|
+
* @typedef {Object} IdCardInfo - 身份证信息
|
|
2021
|
+
* @property {string} province - 省份
|
|
2022
|
+
* @property {string} birthday - 生日
|
|
2023
|
+
* @property {string} gender - 性别
|
|
2024
|
+
* @property {IdCardOrigin} origin - 解析身份证原数据
|
|
2025
|
+
*/
|
|
2026
|
+
|
|
1977
2027
|
/**
|
|
1978
2028
|
* 解析身份证号码,支持15、18位身份证号码
|
|
1979
|
-
*
|
|
2029
|
+
*
|
|
1980
2030
|
* @static
|
|
1981
2031
|
* @alias module:Processor.parseIdCard
|
|
1982
2032
|
* @since 4.0.0
|
|
1983
2033
|
* @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
|
|
1984
2034
|
* @param {string} id 身份证号码,支持15位
|
|
1985
|
-
* @returns null 或 省份、生日、性别,省/市/区/年/月/日/性别编码
|
|
2035
|
+
* @returns {null|IdCardInfo} null 或 省份、生日、性别,省/市/区/年/月/日/性别编码
|
|
1986
2036
|
* @example
|
|
1987
2037
|
* parseIdCard('123456789123456');
|
|
1988
2038
|
* // => null
|
|
1989
|
-
*
|
|
2039
|
+
*
|
|
1990
2040
|
* // 18位身份证号码
|
|
1991
2041
|
* parseIdCard('130701199310302288')
|
|
1992
2042
|
* // =>
|
|
1993
2043
|
* {
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
2044
|
+
* birthday: "1993-10-30",
|
|
2045
|
+
* gender: "女",
|
|
2046
|
+
* origin: { province: "13", city: "07", area: "01", year: "1993", month: "10", day: "30", gender: "8" },
|
|
2047
|
+
* province: "河北省"
|
|
2048
|
+
* }
|
|
2049
|
+
*
|
|
1999
2050
|
* // 15位身份证号码
|
|
2000
2051
|
* parseIdCard('130701931030228');
|
|
2001
2052
|
* // =>
|
|
2002
2053
|
* {
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
*
|
|
2054
|
+
* birthday: "93-10-30",
|
|
2055
|
+
* gender: "女",
|
|
2056
|
+
* origin: { province: "13", city: "07", area: "01", year: "93", month: "10", day: "30", gender: "8" },
|
|
2057
|
+
* province: "河北省"
|
|
2058
|
+
* }
|
|
2059
|
+
*
|
|
2009
2060
|
*/
|
|
2010
2061
|
function parseIdCard(id) {
|
|
2011
2062
|
if (!isIdCard(id, { loose: true })) {
|
|
@@ -2131,8 +2182,7 @@
|
|
|
2131
2182
|
}
|
|
2132
2183
|
|
|
2133
2184
|
/**
|
|
2134
|
-
* 设置 DataURL 前缀、MIME 类型、base64 标识。<br
|
|
2135
|
-
*
|
|
2185
|
+
* 设置 DataURL 前缀、MIME 类型、base64 标识。<br/>
|
|
2136
2186
|
* 如果你需要获取DataURL 的 MIME 类型和数据本身,推荐使用 <a href="https://www.npmjs.com/package/data-urls">data-urls</a>。
|
|
2137
2187
|
*
|
|
2138
2188
|
* @static
|
|
@@ -2160,7 +2210,8 @@
|
|
|
2160
2210
|
// TODO: 函数重载,类型参照 Date
|
|
2161
2211
|
|
|
2162
2212
|
/**
|
|
2163
|
-
* 创建一个 Date
|
|
2213
|
+
* 创建一个 Date 实例日期对象,同 new Date() 。<br/>
|
|
2214
|
+
* 规避了苹果设备浏览器不支持部分格式(YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。
|
|
2164
2215
|
*
|
|
2165
2216
|
* @static
|
|
2166
2217
|
* @alias module:Processor.safeDate
|
|
@@ -2168,7 +2219,7 @@
|
|
|
2168
2219
|
* @since 4.4.0
|
|
2169
2220
|
* @param {string|number|Date} [value] 日期时间字符串、毫秒数、日期对象
|
|
2170
2221
|
* @param {...number} args 月/日/时/分/秒/毫秒
|
|
2171
|
-
* @returns {Date} Date
|
|
2222
|
+
* @returns {Date} Date 实例日期对象
|
|
2172
2223
|
* @example
|
|
2173
2224
|
* safeDate('2022-1-1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
|
|
2174
2225
|
* safeDate('2022/1/1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
|
|
@@ -2190,6 +2241,42 @@
|
|
|
2190
2241
|
return isNil(safeValue) ? new Date() : new Date(safeValue);
|
|
2191
2242
|
}
|
|
2192
2243
|
|
|
2244
|
+
/**
|
|
2245
|
+
* 格式化手机号码
|
|
2246
|
+
*
|
|
2247
|
+
* @static
|
|
2248
|
+
* @alias module:Processor.formatMobile
|
|
2249
|
+
* @since 4.5.0
|
|
2250
|
+
* @param {string} mobileNo 手机号码
|
|
2251
|
+
* @param {object} [options] 配置项
|
|
2252
|
+
* @param {string} [options.char=' '] 间隔字符
|
|
2253
|
+
* @returns {string} 格式化后的手机号码
|
|
2254
|
+
* @example
|
|
2255
|
+
* formatMobile('13345678900') // '133 4567 8900'
|
|
2256
|
+
* formatMobile('13345678900', { char: '-' }) // '133-4567-8900'
|
|
2257
|
+
*
|
|
2258
|
+
* // 脱敏手机号码
|
|
2259
|
+
* formatMobile('133****1234') // '133 **** 1234'
|
|
2260
|
+
* formatMobile('133****1234', { char: '-' }) // '133-****-1234'
|
|
2261
|
+
*
|
|
2262
|
+
* // 手机号码位数不够
|
|
2263
|
+
* formatMobile('133') // '133'
|
|
2264
|
+
* formatMobile('133456') // '133 456'
|
|
2265
|
+
* formatMobile('13345678') // '133 4567 8'
|
|
2266
|
+
*/
|
|
2267
|
+
function formatMobile(mobileNo, { char = ' ' } = {}) {
|
|
2268
|
+
const regChar = new RegExp(char, 'g');
|
|
2269
|
+
const realValue = normalizeString(mobileNo).replace(regChar, '').substring(0, 11);
|
|
2270
|
+
|
|
2271
|
+
if (realValue.length > 7) {
|
|
2272
|
+
return realValue.replace(/^(...)(....)/g, `$1${char}$2${char}`);
|
|
2273
|
+
}
|
|
2274
|
+
if (realValue.length > 3) {
|
|
2275
|
+
return realValue.replace(/^(...)/g, `$1${char}`);
|
|
2276
|
+
}
|
|
2277
|
+
return realValue;
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2193
2280
|
/**
|
|
2194
2281
|
* 检查值是否为Number
|
|
2195
2282
|
*
|
|
@@ -2421,11 +2508,67 @@
|
|
|
2421
2508
|
});
|
|
2422
2509
|
}
|
|
2423
2510
|
|
|
2511
|
+
// ref: https://github.com/ant-design/ant-design-mobile/blob/v2/components/input-item/index.tsx#L240
|
|
2512
|
+
|
|
2513
|
+
/**
|
|
2514
|
+
* 计算输入框的值格式化后光标位置
|
|
2515
|
+
*
|
|
2516
|
+
* @static
|
|
2517
|
+
* @alias module:Other.calculateCursorPosition
|
|
2518
|
+
* @since 4.6.0
|
|
2519
|
+
* @see 格式化手机号码 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatMobile|formatMobile}
|
|
2520
|
+
* @see 格式化银行卡号 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatBankCard|formatBankCard}
|
|
2521
|
+
* @see 示例 {@link https://2950v9.csb.app/|点击查看}
|
|
2522
|
+
* @param {number} prevPos 赋值前的光标位置,onChange/onInput的光标位置 e.target.selectionEnd
|
|
2523
|
+
* @param {string} prevCtrlValue 上一个格式化后的值
|
|
2524
|
+
* @param {string} rawValue 当前输入原值
|
|
2525
|
+
* @param {string} ctrlValue 当前格式化后的值
|
|
2526
|
+
* @param {Object} [options] 配置项
|
|
2527
|
+
* @param {string[]|string} [options.placeholderChar=' '] 占位符
|
|
2528
|
+
* @param {RegExp} [options.maskReg=/\D/g] 需要遮盖的字符规则。默认去掉非数字,意味着 ctrlValue 需要去掉非数字。
|
|
2529
|
+
* @param {'mobile'|'bankCard'} [options.type] 格式化类型,内置手机号码和银行卡号特殊处理
|
|
2530
|
+
* @returns {number} 格式化后的光标位置
|
|
2531
|
+
*/
|
|
2532
|
+
function calculateCursorPosition(prevPos, prevCtrlValue, rawValue, ctrlValue, { placeholderChar = ' ', maskReg = /\D/g, type } = {}) {
|
|
2533
|
+
const realCtrlValue = normalizeString(prevCtrlValue);
|
|
2534
|
+
const realRawValue = normalizeString(rawValue);
|
|
2535
|
+
const placeholderChars = Array.isArray(placeholderChar) ? placeholderChar : [placeholderChar];
|
|
2536
|
+
|
|
2537
|
+
const editLength = realRawValue.length - realCtrlValue.length;
|
|
2538
|
+
const isAddition = editLength > 0;
|
|
2539
|
+
|
|
2540
|
+
let pos = prevPos;
|
|
2541
|
+
|
|
2542
|
+
if (isAddition) {
|
|
2543
|
+
const additionStr = realRawValue.substring(pos - editLength, pos);
|
|
2544
|
+
let ctrlCharCount = additionStr.replace(maskReg, '').length;
|
|
2545
|
+
pos -= editLength - ctrlCharCount;
|
|
2546
|
+
|
|
2547
|
+
let placeholderCharCount = 0;
|
|
2548
|
+
while (ctrlCharCount > 0) {
|
|
2549
|
+
if (placeholderChars.indexOf(ctrlValue.charAt(pos - ctrlCharCount + placeholderCharCount)) !== -1) {
|
|
2550
|
+
placeholderCharCount++;
|
|
2551
|
+
} else {
|
|
2552
|
+
ctrlCharCount--;
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
pos += placeholderCharCount;
|
|
2556
|
+
}
|
|
2557
|
+
|
|
2558
|
+
if ((type === 'mobile' && (pos === 4 || pos === 9)) || (type === 'bankCard' && pos > 0 && pos % 5 === 0)) {
|
|
2559
|
+
pos -= 1;
|
|
2560
|
+
}
|
|
2561
|
+
|
|
2562
|
+
return pos;
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2424
2565
|
exports.blobToDataURL = blobToDataURL;
|
|
2425
2566
|
exports.bytesToSize = bytesToSize;
|
|
2567
|
+
exports.calculateCursorPosition = calculateCursorPosition;
|
|
2426
2568
|
exports.dataURLToBlob = dataURLToBlob;
|
|
2427
2569
|
exports.divide = divide;
|
|
2428
2570
|
exports.formatBankCard = formatBankCard;
|
|
2571
|
+
exports.formatMobile = formatMobile;
|
|
2429
2572
|
exports.formatMoney = formatMoney;
|
|
2430
2573
|
exports.isBankCard = isBankCard;
|
|
2431
2574
|
exports.isBusinessLicense = isBusinessLicense;
|
|
@@ -2464,4 +2607,4 @@
|
|
|
2464
2607
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2465
2608
|
|
|
2466
2609
|
})));
|
|
2467
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNVbmRlZmluZWQuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc051bGwuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc05pbC5qcyIsIi4uL3NyYy9ub3JtYWxpemVTdHJpbmcuanMiLCIuLi9zcmMvZm9ybWF0QmFua0NhcmQuanMiLCIuLi9zcmMvcmVwbGFjZUNoYXIuanMiLCIuLi9zcmMvbnVtYmVyVG9DaGluZXNlLmpzIiwiLi4vc3JjL2J5dGVzVG9TaXplLmpzIiwiLi4vc3JjL3BhcnNlSWRDYXJkLmpzIiwiLi4vc3JjL2Jsb2JUb0RhdGFVUkwuanMiLCIuLi9zcmMvZGF0YVVSTFRvQmxvYi5qcyIsIi4uL3NyYy9zZXREYXRhVVJMUHJlZml4LmpzIiwiLi4vc3JjL3NhZmVEYXRlLmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNOdW1iZXIuanMiLCIuLi9zcmMvdGltZXMuanMiLCIuLi9zcmMvcGx1cy5qcyIsIi4uL3NyYy9taW51cy5qcyIsIi4uL3NyYy9kaXZpZGUuanMiLCIuLi9zcmMvcm91bmQuanMiLCIuLi9zcmMvd2FpdFRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIOajgOa1i+WAvOeahCBgdG9TdHJpbmdgIOexu+Wei1xuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZW5hbWUg57G75Z6L5ZCN56ewXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g6L+U5Zue5YC855qEIGB0b1N0cmluZ2Ag57G75Z6L5piv5ZCm5Yy56YWNXG4gKi9cbmZ1bmN0aW9uIGlzVHlwZSh2YWx1ZSwgdHlwZW5hbWUpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBgW29iamVjdCAke3R5cGVuYW1lfV1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1R5cGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpTdHJpbmdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNTdHJpbmdcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpTdHJpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogaXNTdHJpbmcoJ2FiYycpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTdHJpbmcoMSlcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBpc1R5cGUodmFsdWUsICdTdHJpbmcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTdHJpbmc7XG4iLCJpbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi90eXBlL2lzU3RyaW5nJztcblxuLyoqXG4gKiDovazmjaLkuLrlrZfnrKbkuLJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIOWAvFxuICogQHJldHVybnMge3N0cmluZ30g5a2X56ym5LiyXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb252ZXJ0VG9TdHJpbmc7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5omL5py65Y+356CBIDEx5L2N5pWw5a2X77yM5LulMeW8gOWktO+8jOesrOS6jOS9jeaYrzM0NTY3ODnlhbbkuK3kuIDkuKrvvIzlkI7pnaLlho3liqA55Liq5pWw5a2XXG5jb25zdCByZWcgPSAvXjFbMzQ1Njc4OV1cXGR7OX0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiYvmnLrlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc01vYmlsZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuaJi+acuuWPt+eggVxuICogQGV4YW1wbGVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAwMDAwMDAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc01vYmlsZSgnMTMwMDAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc01vYmlsZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTW9iaWxlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWbuuWumueUteivnSDmlK/mjIHljLrlj7flkozliIbmnLrlj7cgM++9njTkvY3ljLrlj7fvvIzku6Uw5byA5aS077ybN++9njjkvY3nm7Tmkq3lj7fvvIzku6Uy772eOeW8gOWktO+8mzHvvZ425L2N5YiG5py65Y+3XG5jb25zdCByZWcgPSAvXigwXFxkezIsM31cXC0pPyhbMi05XVxcZHs2LDd9KShcXC1cXGR7MSw2fSk/JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65Zu65a6a55S16K+dXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNUZWxlcGhvbmVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrlm7rlrprnlLXor51cbiAqIEBleGFtcGxlXG4gKlxuICogaXNUZWxlcGhvbmUoJzIyMDMzMjEyJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzAyMS0yMjAzMzIxMicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcwMjEtMjIwMzMyMTItMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNUZWxlcGhvbmUoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNUZWxlcGhvbmUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RlbGVwaG9uZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDpgq7mlL/nvJbnoIFcbmNvbnN0IHJlZyA9IC9eXFxkezZ9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66YKu5pS/57yW56CB77yMNuS9jeaVsOWtl1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUG9zdGNvZGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpgq7mlL/nvJbnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQb3N0Y29kZSgnMTAxMTExJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQb3N0Y29kZSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQb3N0Y29kZSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUG9zdGNvZGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6Lqr5Lu96K+B5Y+35q2j5YiZXG5jb25zdCByZWdJZENhcmQgPSAvXlsxLTldXFxkezV9KDE5fDIwKT9cXGR7Mn0oKDBbMS05XSl8KDFbMDEyXSkpKChbMC0yXVsxLTldKXwxMHwyMHwzMHwzMSlcXGR7M30oXFxkfFgpPyQvaTtcblxuLyoqXG4gKiDmoKHpqoznoIHorqHnrpdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveWFrOawkei6q+S7veWPt+eggXzkuK3ljY7kurrmsJHlhbHlkozlm73lhazmsJHouqvku73lj7fnoIF9XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+eggVxuICogQHJldHVybnMg5qCh6aqM56CB5piv5ZCm5q2j56GuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrKGlkKSB7XG4gIGxldCBpbmRleCwgc3VtLCBudW07XG4gIGZvciAoc3VtID0gaW5kZXggPSAwOyBpbmRleCA8IDE3OyBpbmRleCsrKSB7XG4gICAgc3VtICs9IChNYXRoLnBvdygyLCAxNyAtIGluZGV4KSAlIDExKSAqIE51bWJlcihpZFtpbmRleF0pO1xuICB9XG4gIG51bSA9ICgxMiAtIChzdW0gJSAxMSkpICUgMTE7XG4gIGlmIChudW0gPCAxMCkge1xuICAgIHJldHVybiBudW0gPT09IE51bWJlcihpZFsxN10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpZFsxN10gPT0gJ1gnO1xuICB9XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6MTjkvY3ouqvku73or4Hlj7fnoIHjgII8YnIvPuWuveadvuaooeW8j+S4i++8jOaUr+aMgTE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJZENhcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/vvIzmlK/mjIExNeS9jei6q+S7veivgeWPt+eggVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jaGVja0NvZGU9dHJ1ZV0g5piv5ZCm5qCh6aqM5pyA5ZCO5LiA5L2N5qCh6aqM56CB77yM5LuF5pSv5oyBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrouqvku73or4Hlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyOFgnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4WCcsIHsgY2hlY2tDb2RlOiBmYWxzZSB9KTsgLy8g5LiN5qCh6aqM5qCh6aqM56CBXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJZENhcmQoJzMyMDMxMTc3MDcwNjAwMScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lkQ2FyZCgnMzIwMzExNzcwNzA2MDAxJywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSWRDYXJkKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UsIGNoZWNrQ29kZSA9IHRydWUgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTUgJiYgbG9vc2UpIHtcbiAgICByZXR1cm4gcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpO1xuICB9XG5cbiAgaWYgKHZhbHVlU3RyLmxlbmd0aCA9PT0gMTggJiYgcmVnSWRDYXJkLnRlc3QodmFsdWVTdHIpKSB7XG4gICAgaWYgKGNoZWNrQ29kZSkge1xuICAgICAgcmV0dXJuIGNoZWNrKHZhbHVlU3RyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSWRDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmCrueusVxuY29uc3QgcmVnID0gL15bXFxkYS16XSsoW1xcLVxcLlxcX10/W1xcZGEtel0rKSpAW1xcZGEtel0rKFtcXC1cXC5dP1tcXGRhLXpdKykqKFxcLlthLXpdezIsfSkrJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4ukVtYWlsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNFbWFpbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ukVtYWlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzRW1haWwoJzEyMzJAcXEuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNFbWFpbCgnMTIzQCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzRW1haWwodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0VtYWlsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIFFR5Y+35q2j5YiZXG5jb25zdCByZWcgPSAvXlsxLTldXFxkezQsMTB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6UVHlj7fvvIzpnZ4w5byA5aS077yMNeiHszEx5L2N5pWw5a2XXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNRUVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4ulFR5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUVEoJzEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNRUSgnMTIzJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNRUSh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUVE7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5b6u5L+h5Y+3IDboh7MyMOS9je+8jOS7peWtl+avjeW8gOWktO+8jOWtl+avje+8jOaVsOWtl++8jOWHj+WPt++8iOi/nuaOpeespu+8ie+8jOS4i+WIkue6v1xuY29uc3QgcmVnID0gL15bYS16XShbLV9hLXowLTldezUsMTl9KSskL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65b6u5L+h5Y+3XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNXWFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuW+ruS/oeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1dYKCdhMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1dYKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1dYKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNXWDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDovabniYzlj7fmraPliJlcbmNvbnN0IHJlZyA9IC9eW+S6rOa0peayqua4neWGgOixq+S6kei+vem7kea5mOealumygeaWsOiLj+a1mei1o+mEguahgueUmOaZi+iSmemZleWQiemXvei0teeypOmdkuiXj+W3neWugeeQvOS9v+mihkEtWl17MX1bQS1aXXsxfSgoW0EtWjAtOV17NH1bQS1aMC055oyC5a2m6K2m5riv5r6zXXsxfSl8KFtBLVowLTldezV9W0RGXSl8KFtERl1bQS1aMC05XXs1fSkpJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66L2m54mM5Y+377yM5pSv5oyB5paw6IO95rqQ5ZKM6Z2e5paw6IO95rqQ6L2m54mMXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNWZWhpY2xlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/ovabniYzlj7d86L2m54mM5Y+3fVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uui9pueJjOWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc1ZlaGljbGUoJ+S6rEwxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkQxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQkYxMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVmVoaWNsZSgn57KkQjEyMzQ1RicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNWZWhpY2xlKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNWZWhpY2xlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOmdnjDlvIDlpLTvvIwxMH4yMeS9jeaVsOWtl1xuY29uc3QgcmVnID0gL15bMS05XVxcZHs5LDIwfSQvO1xuXG4vLyA4fjMw5L2N5pWw5a2XXG5jb25zdCByZWdMb29zZSA9IC9eXFxkezgsMzB9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li66ZO26KGM5Y2h5Y+344CC5q2j5bi45qih5byP77yI6Z2eMOW8gOWktO+8jDEwfjIx5L2N5pWw5a2X77yJ5a695p2+5qih5byP77yIOH4zMOS9jeaVsOWtl++8iVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQmFua0NhcmRcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2tmLnFxLmNvbS9mYXEvMTcwMTEyQUJubTZiMTcwMTEyRnZxdUFuLmh0bWx85bi455So6ZO26KGM6LSm5Y+35L2N5pWw5Y+C6ICDfVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j++8jDh+MzDkvY3mlbDlrZdcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrpk7booYzljaHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0JhbmtDYXJkKCcxMjM0NTY3ODknKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCYW5rQ2FyZCgnMTIzNDU2Nzg5JywgeyBsb29zZTogdHJ1ZSB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzQmFua0NhcmQodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGlmIChsb29zZSkge1xuICAgIHJldHVybiByZWdMb29zZS50ZXN0KHZhbHVlU3RyKTtcbiAgfVxuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0JhbmtDYXJkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE45L2N5pWw5a2X5ZKM5aSn5YaZ5a2X5q+N57uE5oiQ77yM5LiN5L2/55SoSeOAgU/jgIFa44CBU+OAgVbjgIJcbmNvbnN0IGJhc2VSZWcgPSAvXltcXGRBLUhKLU5QUVJUVVdYWV17Mn1cXGR7Nn1bXFxkQS1ISi1OUFFSVFVXWFldezEwfSQvO1xuXG4vLyDln7rnoYDlrZfnrKbnu4TmiJBcbmNvbnN0IGJhc2VDb2RlQXJyID0gJzAxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSVFVXWFknLnNwbGl0KCcnKTtcblxuLy/liqDmnYPlm6DlrZBcbmNvbnN0IHdlaWdodEZhY3RvciA9IFsxLCAzLCA5LCAyNywgMTksIDI2LCAxNiwgMTcsIDIwLCAyOSwgMjUsIDEzLCA4LCAyNCwgMTAsIDMwLCAyOF07XG5cbi8qKlxuICog6I635Y+W5a2X56ym5L2N572uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIOWtl+esplxuICogQHJldHVybnMge251bWJlcn0g5a2X56ym5omA5Zyo5Z+656GA5a2X56ym55qE5L2N572uXG4gKi9cbmZ1bmN0aW9uIGdldEJhc2VDb2RlSW5kZXgoY29kZSkge1xuICBsZXQgcmV0O1xuXG4gIGJhc2VDb2RlQXJyLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0gPT09IGNvZGUpIHtcbiAgICAgIHJldCA9IGluZGV4O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOiuoeeul+agoemqjOeggVxuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVDb2RlIOe7n+S4gOS7o+eggeWJjTE35L2NXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDmoKHpqoznoIFcbiAqL1xuZnVuY3Rpb24gc3VtQ2hlY2tDb2RlKHByZUNvZGUpIHtcbiAgLy8gY29uc3QgcHJlQ29kZUFyciA9IHByZUNvZGUuc3BsaXQoJycpO1xuXG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgLy8g6K6h566X5a2X56ym5L2N572u5a+55bqU5bqP5Y+35ZKM5Yqg5p2D5Zug5a2Q55qE5LmY56ev77yM5oC75ZKMXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTc7IGkrKykge1xuICAgIC8vIOWtl+espuS9jee9ruWvueW6lOeahOWfuuehgOe8lueggeW6j+WPt1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0QmFzZUNvZGVJbmRleChwcmVDb2RlW2ldKTtcbiAgICAvLyDliqDmnYPlm6DlrZBcbiAgICBjb25zdCB3ZiA9IHdlaWdodEZhY3RvcltpXTtcbiAgICAvLyDorqHnrpfluo/lj7flkozliqDmnYPlm6DlrZDnmoTkuZjnp6/vvIzlubborqHnrpfnuqfmlbDkuYvlkoxcbiAgICB0b3RhbCArPSBpbmRleCAqIHdmO1xuICB9XG5cbiAgLy8g6K6h566X5pW05pWw5rGC5L2Z5Ye95pWwTU9EXG4gIGNvbnN0IHJlbWFpbmRlciA9IHRvdGFsICUgMzE7XG4gIC8vIOagoemqjOeggeWtl+espuWAvOW6j+WPt1xuICBjb25zdCBjaGVja0NvZGVJbmRleCA9IDMxIC0gcmVtYWluZGVyO1xuXG4gIHJldHVybiBiYXNlQ29kZUFycltjaGVja0NvZGVJbmRleF07XG59XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CB77yM5Lmf5Y+r5LiJ6K+B5ZCI5LiA57uE57uH5Luj56CB44CC55SxMTjkvY3mlbDlrZflkozlpKflhpnlrZfmr43nu4TmiJDvvIzkuI3kvb/nlKhJ44CBT+OAgVrjgIFT44CBVuOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzU29jaWFsQ3JlZGl0Q29kZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXNvdXJjZS5vcmcvemgtaGFucy9HQl8zMjEwMC0yMDE1X+azleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImXxHQiAzMjEwMC0yMDE1IOazleS6uuWSjOWFtuS7lue7hOe7h+e7n+S4gOekvuS8muS/oeeUqOS7o+eggee8lueggeinhOWImX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li657uf5LiA56S+5Lya5L+h55So5Luj56CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTQzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNEEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5LiN5qCh6aqM5qCh6aqM5L2N44CC5omA5Lul5Lmf5Y+v5Lul6YCa6L+HXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0QScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNTb2NpYWxDcmVkaXRDb2RlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE35L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTcpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+agoemqjOeggVxuICBjb25zdCBjaGVja0NvZGUgPSBzdW1DaGVja0NvZGUocHJlQ29kZSk7XG5cbiAgcmV0dXJuIGxhc3RDb2RlID09PSBjaGVja0NvZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU29jaWFsQ3JlZGl0Q29kZTtcbiIsImNvbnN0IGNvbmZpZyA9IHtcbiAgLy8g56aB55Sod2FybmluZ+aPkOekulxuICBkaXNhYmxlV2FybmluZzogdHJ1ZVxufTtcblxuLyoqXG4gKiDorr7nva7npoHmraJ3YXJuaW5n5o+Q56S6XG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOkRlYnVnLmZvcm1hdEJhbmtDYXJkXG4gKiBAc2luY2UgMy42LjFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9vbCDmmK/lkKbnpoHmraJ3YXJuaW5n5o+Q56S6XG4gKi9cbmZ1bmN0aW9uIHNldERpc2FibGVXYXJuaW5nKGJvb2wpIHtcbiAgY29uZmlnLmRpc2FibGVXYXJuaW5nID0gISFib29sO1xufVxuXG5leHBvcnQgeyBjb25maWcsIHNldERpc2FibGVXYXJuaW5nIH07XG4iLCJpbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5cbmNvbnN0IHJlZ051bWJlciA9IC9bXFxkXS87XG5jb25zdCByZWdMb3dlckNhc2VMZXR0ZXIgPSAvW2Etel0vO1xuY29uc3QgcmVnVXBwZXJDYXNlTGV0dGVyID0gL1tBLVpdLztcbmNvbnN0IHJlZ0FsbE51bWJlckFuZExldHRlciA9IC9bXFxkfGEtel0vZ2k7XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5p+l55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5pWw5a2XXG4gKi9cbmZ1bmN0aW9uIGhhc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ051bWJlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc0xvd2VyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ0xvd2VyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKi9cbmZ1bmN0aW9uIGhhc1VwcGVyQ2FzZUxldHRlcih2YWwpIHtcbiAgcmV0dXJuIHJlZ1VwcGVyQ2FzZUxldHRlci50ZXN0KHZhbCk7XG59XG5cbi8qKlxuICog5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWwg5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65Y2B5YWt6L+b5Yi2XG4gKi9cbmZ1bmN0aW9uIGhhc0hleCh2YWwpIHtcbiAgcmV0dXJuIHZhbC5pbmRleE9mKCdcXFxceCcpID4gLTEgfHwgdmFsLmluZGV4T2YoJ1xcXFx1JykgPiAtMTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvnibnmrorlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnNdIOeJueauiuWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICovXG5mdW5jdGlvbiBoYXNTcGVjaWFsQ2hhcmFjdGVyKHZhbCwgY2hhcnMgPSAnJykge1xuICBpZiAoIWNoYXJzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFske2NoYXJzfV1gKSA6IG51bGw7XG5cbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuXG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA+IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFycyDpnZ7ms5XlrZfnrKZcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvpnZ7ms5XlrZfnrKZcbiAqL1xuZnVuY3Rpb24gaGFzVW5hbGxvd2FibGVDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGNvbnN0IHNwZWNpYWxDaGFycyA9IHZhbC5yZXBsYWNlKHJlZ0FsbE51bWJlckFuZExldHRlciwgJycpO1xuXG4gIGlmICghY2hhcnMgJiYgc3BlY2lhbENoYXJzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCByZWdDaGFycyA9IGhhc0hleChjaGFycykgPyBuZXcgUmVnRXhwKGBbXiR7Y2hhcnN9XWApIDogbnVsbDtcbiAgaWYgKHJlZ0NoYXJzKSB7XG4gICAgcmV0dXJuIHJlZ0NoYXJzLnRlc3Qoc3BlY2lhbENoYXJzKTtcbiAgfVxuICBsZXQgcmV0ID0gZmFsc2U7XG4gIHNwZWNpYWxDaGFycy5zcGxpdCgnJykuc29tZSgoY2hhckl0ZW0pID0+IHtcbiAgICBpZiAoY2hhcnMuaW5kZXhPZihjaGFySXRlbSkgPT09IC0xKSB7XG4gICAgICByZXQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDpqozor4Hlr4bnoIHvvIjmlbDlrZfjgIHlpKflsI/lhpnlrZfmr43jgIHnibnmrorlrZfnrKbjgIHpnZ7ms5XlrZfnrKbvvIlcbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHNpbmNlIDMuNy4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIOmqjOivgee7k+aenFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnKTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogdHJ1ZSwgLy8g6aqM6K+B57uT5p6c77yM5qC55o2u5a+G56CB5by65bqm44CB5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ym5b6X5Ye6XG4gKiAgIGxldmVsOiAyLCAvLyDlvLrluqbnuqfliKtcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLCAvLyDljIXlkKvmlbDlrZdcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsIC8vIOWMheWQq+Wwj+WGmeWtl+avjVxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsIC8vIOWMheWQq+Wkp+WGmeWtl+avjVxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGZhbHNlLCAvLyDljIXlkKvnibnmrorlrZfnrKZcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2UgLy8g5YyF5ZCr6Z2e5rOV5a2X56ymXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogZmFsc2UsXG4gKiAgIGxldmVsOiAyLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogZmFsc2UsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogZmFsc2UsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB2YWxpZGF0ZVBhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiBmYWxzZSxcbiAqICAgbGV2ZWw6IDMsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IHRydWVcbiAqICAgfVxuICogfVxuICpcbiAqIC8vIOiHquWumuS5ieeJueauiuWtl+esplxuICogdmFsaWRhdGVQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWUsIHNwZWNpYWw6ICdf5LiA5LqM5LiJJ30pO1xuICogLy8gPT5cbiAqIHtcbiAqICAgdmFsaWRhdGVkOiB0cnVlLFxuICogICBsZXZlbDogMyxcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgc3BlY2lhbENoYXJhY3RlcjogdHJ1ZSxcbiAqICAgICB1bmFsbG93YWJsZUNoYXJhY3RlcjogZmFsc2VcbiAqICAgfVxuICogfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVBhc3N3b3JkKHZhbHVlLCB7IGxldmVsID0gMiwgaWdub3JlQ2FzZSA9IGZhbHNlLCBzcGVjaWFsID0gJ1xcXFx4MjEtXFxcXHgyRlxcXFx4M0EtXFxcXHg0MFxcXFx4NUItXFxcXHg2MFxcXFx4N0ItXFxcXHg3RScgfSA9IHt9KSB7XG4gIGxldCB2YWxTdHIgPSB2YWx1ZTtcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIGlmICghY29uZmlnLmRpc2FibGVXYXJuaW5nKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFt2YWxpZGF0ZVBhc3N3b3JkXSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLmApO1xuICAgIH1cbiAgICB2YWxTdHIgPSAnJztcbiAgfVxuXG4gIGxldCBjdXJyZW50TGV2ZWwgPSAwO1xuXG4gIC8vIOWMheWQq+aVsOWtl1xuICBjb25zdCBjb250YWluZXNOdW1iZXIgPSBoYXNOdW1iZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr5bCP5YaZ5a2X5q+NXG4gIGNvbnN0IGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciA9IGhhc0xvd2VyQ2FzZUxldHRlcih2YWxTdHIpO1xuICAvLyDljIXlkKvlpKflhpnlrZfmr41cbiAgY29uc3QgY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyID0gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+eJueauiuWtl+esplxuICBjb25zdCBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyID0gaGFzU3BlY2lhbENoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuICAvLyDljIXlkKvpnZ7ms5XlrZfnrKZcbiAgY29uc3QgY29udGFpbmVzVW5hbGxvd2FibGVDaGFyYWN0ZXIgPSBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWxTdHIsIHNwZWNpYWwpO1xuXG4gIGlmIChjb250YWluZXNOdW1iZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgLy8g5LiN5Yy65YiG5aSn5bCP5YaZXG4gICAgaWYgKGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlciB8fCBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyDljLrliIblpKflsI/lhplcbiAgICBpZiAoY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gICAgaWYgKGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbnRhaW5lc1NwZWNpYWxDaGFyYWN0ZXIpIHtcbiAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgfVxuXG4gIC8vIOmqjOivgee7k+aenFxuICBjb25zdCB2YWxpZGF0ZWQgPSBjdXJyZW50TGV2ZWwgPj0gbGV2ZWwgJiYgIWNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyO1xuXG4gIHJldHVybiB7XG4gICAgdmFsaWRhdGVkLFxuICAgIGxldmVsOiBjdXJyZW50TGV2ZWwsXG4gICAgY29udGFpbmVzOiB7XG4gICAgICBudW1iZXI6IGNvbnRhaW5lc051bWJlcixcbiAgICAgIGxvd2VyQ2FzZUxldHRlcjogY29udGFpbmVzTG93ZXJDYXNlTGV0dGVyLFxuICAgICAgdXBwZXJDYXNlTGV0dGVyOiBjb250YWluZXNVcHBlckNhc2VMZXR0ZXIsXG4gICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyLFxuICAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0ZVBhc3N3b3JkO1xuIiwiaW1wb3J0IHZhbGlkYXRlUGFzc3dvcmQgZnJvbSAnLi92YWxpZGF0ZVBhc3N3b3JkJztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbnrKblkIjlr4bnoIHlvLrluqZcbiAqIDxwPjxzdHJvbmc+5rOo5oSP77ya6K+l5qCh6aqM5Y+q5qCh6aqM5piv5ZCm5a2Y5Zyo5LiN5ZCM5a2X56ymKOWkp+Wwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuespuWPtynvvIzkuI3liKTmlq3plb/luqbjgII8L3N0cm9uZz48L3A+XG4gKiA8cD48aT7lpoLmnpzpnIDopoHmm7Tnu4boh7TnmoTpqozor4HvvIzor7fkvb/nlKggPGEgaHJlZj1cIiMudmFsaWRhdGVQYXNzd29yZFwiPnZhbGlkYXRlUGFzc3dvcmQ8L2E+PC9pPjwvcD5cbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzd29yZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcmVxdWlyZXMgbW9kdWxlOlZhbGlkYXRvci52YWxpZGF0ZVBhc3N3b3JkXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZXZlbD0yXSDlr4bnoIHlvLrluqYgMS3ljIXlkKvkuIDnp43lrZfnrKYgMi3ljIXlkKvkuKTnp43lrZfnrKYgMy3ljIXlkKvkuInnp43lrZfnrKbjgILvvIjlpKflhpnlrZfmr43jgIHlsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrorlrZfnrKbvvIlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWdub3JlQ2FzZT1mYWxzZV0g5piv5ZCm5b+955Wl5aSn5bCP5YaZ77yM5Li6IHR1cmUg5pe277yM5aSn5bCP5YaZ5a2X5q+N6KeG5Li65LiA56eN5a2X56ymXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3BlY2lhbD1cIiFAIyQlXiYqKCktPV8rW11cXHx7fSwuLz88Pn5cIl0g5pSv5oyB55qE54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm56ym5ZCI5a+G56CB5by65bqmXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3dvcmQoJ2ExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdBYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzd29yZCgnQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCdfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOS7heaUr+aMgSDmlbDlrZfjgIHlrZfmr43jgIHnibnmrorlrZfnrKbvvIzlhbbku5blrZfnrKblpoLkuK3mloflrZfnrKbmmK/moKHpqozkuI3pgJrov4fnmoRcbiAqIGlzUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzUGFzc3dvcmQoJyBfQWExMjM0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCA9IDIsIGlnbm9yZUNhc2UgPSBmYWxzZSwgc3BlY2lhbCA9ICdcXFxceDIxLVxcXFx4MkZcXFxceDNBLVxcXFx4NDBcXFxceDVCLVxcXFx4NjBcXFxceDdCLVxcXFx4N0UnIH0gPSB7fSkge1xuICByZXR1cm4gdmFsaWRhdGVQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCwgaWdub3JlQ2FzZSwgc3BlY2lhbCB9KS52YWxpZGF0ZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3dvcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5oqk54Wn5Y+3IDnkvY3vvIzljIXmi6zpppblrZfmr43lkozmlbDlrZfvvJvmlK/mjIEg5pmu6YCa5oqk54WnKEUqKeOAgeWkluS6pOaKpOeFpyhERSnjgIHlhazliqHmiqTnhacoU0Up44CB5YWs5Yqh5pmu6YCa5oqk54WnKFBFKeOAgemmmea4r+eJueWMuuaKpOeFpyhLL0tKKeOAgea+s+mXqOeJueWMuuaKpOeFpyhNQSlcbmNvbnN0IHJlZyA9IC9eKChlW1xcZGEtel0pfChkZSl8KHNlKXwocGUpfChrW1xcZGEtel0pfChrail8KG1hKSlbXFxkYS16XXs3fSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIOaUr+aMgeaZrumAmuaKpOeFpyhFKinjgIHlpJbkuqTmiqTnhacoREUp44CB5YWs5Yqh5oqk54WnKFNFKeOAgeWFrOWKoeaZrumAmuaKpOeFpyhQRSnjgIHpppnmuK/nibnljLrmiqTnhacoSy9LSinjgIHmvrPpl6jnibnljLrmiqTnhacoTUEpXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQYXNzcG9ydFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vemgud2lraXBlZGlhLm9yZy93aWtpL+S4reWNjuS6uuawkeWFseWSjOWbveaKpOeFpyPkuKrkurrotYTmlpnpobV85Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95oqk54WnI+S4quS6uui1hOaWmemhtX1cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrmiqTnhaflj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNQYXNzcG9ydCgnRTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNQYXNzcG9ydCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNQYXNzcG9ydCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGFzc3BvcnQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuY29uc3QgY2hpbmVzZURpY3Rpb25hcnkgPSB7XG4gIC8vIOWfuuacrOaxieWtl1xuICBjaGluZXNlQmFzaWM6ICdbXFx1NGUwMC1cXHU5ZmE1XScsXG5cbiAgLy8g5Z+65pys5rGJ5a2X6KGl5YWFXG4gIGNoaW5lc2VFeHRlbmQ6ICdbXFx1OWVhNi1cXHU5ZmVmXScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQVxuICBjaGluZXNlRXh0ZW5kQTogJ1tcXHUzNDAwLVxcdTREQjVdJyxcblxuICAvLyDmsYnlrZfmianlsZVCXG4gIGNoaW5lc2VFeHRlbmRCOiAnW1xcdXsyMDAwMH0tXFx1ezJBNkQ2fV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUNcbiAgY2hpbmVzZUV4dGVuZEM6ICdbXFx1ezJBNzAwfS1cXHV7MkI3MzR9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRFxuICBjaGluZXNlRXh0ZW5kRDogJ1tcXHV7MkI3NDB9LVxcdXsyQjgxRH1dJyxcblxuICAvLyDmsYnlrZfmianlsZVFXG4gIGNoaW5lc2VFeHRlbmRFOiAnW1xcdXsyQjgyMH0tXFx1ezJDRUExfV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUZcbiAgY2hpbmVzZUV4dGVuZEY6ICdbXFx1ezJDRUIwfS1cXHV7MkVCRTB9XSdcbn07XG5cbmxldCBsb29zZUNoaW5lc2VSZWdFeHAgPSBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnKyc7XG5cbmxldCBjaGluZXNlUmVnRXhwID0gJ14nICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJyskJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuY29uc3Qgc3VwcG9ydFJlZ0V4cFVuaWNvZGUgPSBSZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCd1bmljb2RlJyk7XG5cbmlmIChzdXBwb3J0UmVnRXhwVW5pY29kZSkge1xuICBsb29zZUNoaW5lc2VSZWdFeHAgPSAnKD86JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRCICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRFICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEYgKyAnKSsnO1xuICBjaGluZXNlUmVnRXhwID0gJ14oPzonICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRBICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEIgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmREICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEUgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRiArICcpKyQnO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuS4reaWh1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQ2hpbmVzZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzgvI0Jsb2NrTGlzdGluZ3w0LjQgTGlzdGluZyBvZiBDaGFyYWN0ZXJzIENvdmVyZWQgYnkgdGhlIFVuaWhhbiBEYXRhYmFzZX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOWPquimgeWMheWQq+S4reaWh+WNs+S4unRydWVcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrkuK3mlodcbiAqIEBleGFtcGxlXG4gKlxuICogaXNDaGluZXNlKCfmnpfmn5Dmn5AnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0NoaW5lc2UoJ+ael0EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogLy8g5a695p2+5qih5byP77yM5Y+q6KaB5YyF5ZCr5Lit5paH5Y2z5Li6dHJ1ZVxuICogaXNDaGluZXNlKCfmnpdBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNDaGluZXNlKCdB5p6XQScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNDaGluZXNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChsb29zZSA/IGxvb3NlQ2hpbmVzZVJlZ0V4cCA6IGNoaW5lc2VSZWdFeHAsIHN1cHBvcnRSZWdFeHBVbmljb2RlID8gJ3UnIDogdW5kZWZpbmVkKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNDaGluZXNlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIGlwdjTmraPliJlcbmNvbnN0IHJlZyA9IC9eKChcXGR7MSwyfXwxXFxkXFxkfDJbMC00XVxcZHwyNVswLTVdKVxcLil7M30oXFxkezEsMn18MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSkkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLppcHY0XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNJUHY0XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6aXB2NFxuICogQGV4YW1wbGVcbiAqXG4gKiBpc0lQdjQoJzE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY0KCcyNTUuMjU1LjI1NS4yNTUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjQoJzI1Ni4yNTYuMjU2LjI1NicpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lQdjQoJzAuMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzSVB2NCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSVB2NDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBpcHY25q2j5YiZXG5jb25zdCByZWcgPSAvXigoKFswLTlBLUZdezEsNH06KXs3fShbMC05QS1GXXsxLDR9fDopKXwoKFswLTlBLUZdezEsNH06KXs2fSg6WzAtOUEtRl17MSw0fXwoKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pfDopKXwoKFswLTlBLUZdezEsNH06KXs1fSgoKDpbMC05QS1GXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KXw6KSl8KChbMC05QS1GXXsxLDR9Oil7NH0oKCg6WzAtOUEtRl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXszfSgoKDpbMC05QS1GXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsyfSgoKDpbMC05QS1GXXsxLDR9KXsxLDV9KXwoKDpbMC05QS1GXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoKFswLTlBLUZdezEsNH06KXsxfSgoKDpbMC05QS1GXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKXwoOigoKDpbMC05QS1GXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSkpfDopKSkoJS4rKT8kL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6aXB2NlxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSVB2NlxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4umlwdjZcbiAqIEBleGFtcGxlXG4gKlxuICogLy8g5YaS5YiG5Y2B5YWt6L+b5Yi26KGo56S65rOVXG4gKiBpc0lQdjYoJzIwMDE6MERCODowMDAwOjAwMjM6MDAwODowODAwOjIwMEM6NDE3QScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIOWJjeWvvDDnnIHnlaVcbiAqIGlzSVB2NignMjAwMTpEQjg6MDoyMzo4OjgwMDoyMDBDOjQxN0EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJ0ZGMDE6MDowOjA6MDowOjA6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIC8vIDDkvY3ljovnvKnooajnpLrms5VcbiAqIGlzSVB2NignRkYwMTo6MTEwMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMDowOjA6MDowOjA6MDoxJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCcwOjA6MDowOjA6MDowOjAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDlhoXltYxJUHY05Zyw5Z2A6KGo56S65rOVXG4gKiBpc0lQdjYoJzo6MTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6RkZGRjoxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lQdjYodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lQdjY7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gdXJs5q2j5YiZXG5jb25zdCByZWcgPSAvKCgoXmh0dHBzPzooPzpcXC9cXC8pPykoPzpbLTs6Jj1cXCtcXCQsXFx3XStAKT9bQS1aYS16MC05Li1dKyg/OjpcXGQrKT98KD86d3d3LnxbLTs6Jj1cXCtcXCQsXFx3XStAKVtBLVphLXowLTkuLV0rKSgoPzpcXC9bXFwrfiVcXC8uXFx3LV9dKik/XFw/Pyg/OlstXFwrPSY7JUAuXFx3X10qKSM/KD86W1xcd10qKSk/KSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4unVybFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVXJsXG4gKiBAc2luY2UgMy40LjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/nu5/kuIDotYTmupDlrprkvY3nrKZ857uf5LiA6LWE5rqQ5a6a5L2N56ymfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLp1cmxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVcmwoJycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnOC44LjguOCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1VybCgnZXhhbXBsZS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL2V4YW1wbGUuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHBzOi8vZXhhbXBsZS5jb206ODA4MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QvMTIzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vdGVzdC8xMjM/Zm9vPWJhcicpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1VybCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVXJsO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOWfuuehgOinhOWIme+8jOeUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG5jb25zdCBiYXNlUmVnID0gL15cXGR7MTV9JC87XG5cbi8qKlxuICog6K6h566X5qCh6aqM56CBXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHtzdHJpbmd9IHByZUNvZGUg6JCl5Lia5omn54Wn5YmNMTTkvY1cbiAqIEByZXR1cm5zIHtudW1iZXJ9IOagoemqjOeggVxuICovXG5mdW5jdGlvbiBzdW1DaGVja0NvZGUocHJlQ29kZSkge1xuICBsZXQgcmV0TnVtOyAvLyDmoKHpqozkvY3mlbDlrZdcblxuICBsZXQgcGogPSAxMDsgLy8gUGorMSAxMe+8jOWIneWni+S4ujEwXG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCAxNDsgaisrKSB7XG4gICAgY29uc3Qgc2ogPSBwaiArIE51bWJlcihwcmVDb2RlW2pdKTtcbiAgICBsZXQgc2oxMCA9IHNqICUgMTA7XG4gICAgc2oxMCA9IHNqMTAgPT09IDAgPyAxMCA6IHNqMTA7XG4gICAgY29uc3QgcGoxID0gc2oxMCAqIDI7XG4gICAgcGogPSBwajEgJSAxMTtcbiAgfVxuXG4gIC8vIOWPjeaooTEw6K6h566XXG4gIGlmIChwaiA9PT0gMTAgfHwgcGogPT09IDEpIHtcbiAgICByZXROdW0gPSAxO1xuICB9IGVsc2Uge1xuICAgIHJldE51bSA9IDExIC0gcGo7XG4gIH1cblxuICByZXR1cm4gcmV0TnVtO1xufVxuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuiQpeS4muaJp+eFp+WPt++8jOS5n+WPq+W3peWVhuazqOWGjOWPt+OAgueUsTE05L2N5pWw5a2X5pys5L2T56CB5ZKMMeS9jeaVsOWtl+agoemqjOeggee7hOaIkO+8jOWFtuS4reacrOS9k+eggeS7juW3puiHs+WPs+S+neasoeS4uu+8mjbkvY3pppbmrKHnmbvorrDmnLrlhbPnoIHjgIE45L2N6aG65bqP56CB44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNCdXNpbmVzc0xpY2Vuc2VcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3dlbmt1LmJhaWR1LmNvbS92aWV3LzE5ODczNzA0Y2MxNzU1MjcwNzIyMDg3Yy5odG1sfEdTMTXigJQyMDA2IOW3peWVhuihjOaUv+euoeeQhuW4guWcuuS4u+S9k+azqOWGjOWPt+e8luWItuinhOWImX1cbiAqIEBzaW5jZSAzLjUuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxvb3NlPWZhbHNlXSDlrr3mnb7mqKHlvI/jgILlpoLmnpzkuLp0cnVl77yM5LiN5qCh6aqM5qCh6aqM5L2N44CCXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66JCl5Lia5omn54Wn5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzUnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDk4NTUzNScsIHsgbG9vc2U6IHRydWUgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzQnVzaW5lc3NMaWNlbnNlKHZhbHVlLCB7IGxvb3NlID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBwYXNzQmFzZVJ1bGUgPSBiYXNlUmVnLnRlc3QodmFsdWVTdHIpO1xuXG4gIC8vIOWuveadvuaooeW8jyDmiJYg5Z+656GA6KeE5YiZ5LiN6YCa6L+H55u05o6l6L+U5ZueXG4gIGlmIChsb29zZSB8fCAhcGFzc0Jhc2VSdWxlKSB7XG4gICAgcmV0dXJuIHBhc3NCYXNlUnVsZTtcbiAgfVxuXG4gIC8vIOWJjTE05L2NXG4gIGNvbnN0IHByZUNvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcoMCwgMTQpO1xuICAvLyDmoKHpqoznoIFcbiAgY29uc3QgbGFzdENvZGUgPSB2YWx1ZVN0ci5zdWJzdHJpbmcodmFsdWVTdHIubGVuZ3RoIC0gMSk7XG4gIC8vIOiuoeeul+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/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGVmdFplcm8obnVtKSB7XG4gIGNvbnN0IHJlZyA9IC9eKFsrLV0pPygwKykoWzAtOVxcLl0rKSQvO1xuICBjb25zdCByZXN1bHQgPSByZWcuZXhlYyhudW0pO1xuXG4gIGxldCBzaWduO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICBzaWduID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHJldHVybiBzaWduICsgKHJlc3VsdFszXVswXSA9PT0gJy4nID8gJzAnICsgcmVzdWx0WzNdIDogcmVzdWx0WzNdKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICog56eR5a2m6K6h5pWw5rOV6L2s5o2i5oiQ5pmu6YCa5pWw5a2XXG4gKlxuICogSmF2YVNjcmlwdOWcqOS7peS4i+aDheaZr+S8muiHquWKqOWwhuaVsOWAvOi9rOaNouS4uuenkeWtpuiuoeaVsOazle+8mlxuICogIDEu5bCP5pWw54K55YmN55qE5pWw5a2X5Liq5pWw5aSn5LqO562J5LqOMjLkvY1cbiAqICAyLuWwj+aVsOeCueWJjei+ueaYrzDvvIzlsI/mlbDngrnlkI7ljYHliIbkvY3vvIjljIXlkKvljYHliIbkvY3vvInkuYvlkI7ov57nu63pm7bnmoTkuKrmlbDlpKfkuo7nrYnkuo425LiqXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDnp5HlraborqHmlbDms5XmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOaNouWQjueahOaVsOWtl+Wtl+espuS4slxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkge1xuICBpZiAoaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHplcm8gPSAnMCc7XG4gICAgY29uc3QgcGFydHMgPSBTdHJpbmcobnVtKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdlJyk7XG4gICAgY29uc3QgZSA9IHBhcnRzLnBvcCgpOyAvLyDlrZjlgqjmjIfmlbBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbCA9IE1hdGguYWJzKGUpOyAvLyDlj5bnu53lr7nlgLzvvIxsLTHlsLHmmK8w55qE5Liq5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNpZ24gPSBlIC8gbDsgLy/liKTmlq3mraPotJ9cbiAgICBjb25zdCBjb2VmZl9hcnJheSA9IHBhcnRzWzBdLnNwbGl0KCcuJyk7IC8vIOWwhuezu+aVsOaMieeFp+Wwj+aVsOeCueaLhuWIhlxuXG4gICAgLy/lpoLmnpzmmK/lsI/mlbBcbiAgICBpZiAoc2lnbiA9PT0gLTEpIHtcbiAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5bCP5pWw77yM5ou85o6lMOWSjOWwj+aVsOeCuVxuICAgICAgbnVtID0gemVybyArICcuJyArIG5ldyBBcnJheShsKS5qb2luKHplcm8pICsgY29lZmZfYXJyYXkuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlYyA9IGNvZWZmX2FycmF5WzFdO1xuXG4gICAgICAvL+WmguaenOaYr+aVtOaVsO+8jOWwhuaVtOaVsOmZpOesrOS4gOS9jeS5i+WklueahOmdnumbtuaVsOWtl+iuoeWFpeS9jeaVsO+8jOebuOW6lOeahOWHj+WwkTDnmoTkuKrmlbBcbiAgICAgIGlmIChsIC0gZGVjLmxlbmd0aCA8IDApIHtcbiAgICAgICAgbnVtID0gdHJpbUxlZnRaZXJvKGNvZWZmX2FycmF5WzBdICsgZGVjLnN1YnN0cmluZygwLCBsKSkgKyAnLicgKyBkZWMuc3Vic3RyaW5nKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy/mi7zmjqXlrZfnrKbkuLLvvIzlpoLmnpzmmK/mlbTmlbDvvIzkuI3pnIDopoHmi7zmjqXlsI/mlbDngrlcbiAgICAgICAgbnVtID0gY29lZmZfYXJyYXkuam9pbignJykgKyBuZXcgQXJyYXkobCAtIGRlYy5sZW5ndGggKyAxKS5qb2luKHplcm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBudW07XG59XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOYU5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOYU5cbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYU4oTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBfaXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpICYmIGlzTmFOKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX2lzTmFOO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSwgc2NpZW50aWZpY1RvTnVtYmVyLCBpc1NjaWVudGlmaWNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgaXNOYU4gZnJvbSAnLi91dGlscy90eXBlL2lzTmFOJztcbmltcG9ydCB7IHRyaW1MZWZ0WmVybyB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnID0gL15bKy1dP1xcZCpcXC4/XFxkKiQvO1xuXG4vKipcbiAqIOajgOafpeaVsOWtl+aIluaVsOWtl+Wtl+espuS4slxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtXG4gKiBAcmV0dXJucyDmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gdHJpbUxlZnRaZXJvKGludFN0cik7XG4gIGludFN0ciA9IGludFN0clswXSA9PT0gJysnID8gaW50U3RyLnN1YnN0cmluZygxKSA6IGludFN0cjsgLy8g5Y675o6JK+espuWPt1xuICBjb25zdCBuZWdhdGl2ZVN5bWJvbCA9IE51bWJlcihpbnRTdHIpIDwgMCA/ICctJyA6ICcnO1xuICBjb25zdCByZUFyciA9IG5lZ2F0aXZlU3ltYm9sID8gaW50U3RyLnN1YnN0cmluZygxKS5zcGxpdCgnJykucmV2ZXJzZSgpIDogaW50U3RyLnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZUFyci5sZW5ndGg7IGkrKykge1xuICAgIHR4dCArPSByZUFycltpXSArICgoaSArIDEpICUgMyA9PT0gMCAmJiBpICsgMSAhPT0gcmVBcnIubGVuZ3RoID8gdGhvdXNhbmQgOiAnJyk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRpdmVTeW1ib2wgKyB0eHQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJblsI/mlbDpg6jliIbvvIzlpoLmnpzkvb/nlKggdG9GaXhlZO+8jOi2heWkp+mineaVsOWtl+S8muiHquWKqOiiq+aIquaWrVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjU3RyIOWwj+aVsOeCuemDqOWIhueahOWtl+espuS4slxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvbiDkv53nlZnkvY3mlbBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsIOWwj+aVsOeCueespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCkge1xuICBpZiAocHJlY2lzaW9uID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgemVybyA9IDA7XG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoZGVjU3RyICYmIE51bWJlcihkZWNTdHIpID4gMCkge1xuICAgIGxldCB0bXBOdW0gPSBwYXJzZUZsb2F0KCcwLicgKyBkZWNTdHIpO1xuICAgIHJldCA9IHRtcE51bS50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyaW5nKDIpO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IHplcm8udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHJldHVybiBkZWNpbWFsICsgcmV0O1xufVxuXG4vKipcbiAqIOagvOW8j+WMlumHkeminVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vbmV5XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g6ZyA6L2s5o2i6YeR6aKdICjmnIDlpKfvvJo5MDA3MTk5MjU0NzQwOTkxIOacgOWwj++8miAtOTAwNzE5OTI1NDc0MDk5MSlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSDph5Hpop3moLzlvI/ljJbphY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbb3B0aW9ucy5wcmVjaXNpb249Ml0gLSDkv53nlZnkvY3mlbAg77yI5pyA6auY77yaMTDkvY3vvIlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zeW1ib2xdIC0g6LSn5biB56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudGhvdXNhbmQ9XCIsXCJdIC0g5Y2D5YiG5L2N56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIi5cIl0gLSDlsI/mlbDkvY3nrKblj7dcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmHkeminVxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmlbTmlbBcbiAqIGZvcm1hdE1vbmV5KCcxMDAwJyk7XG4gKiAvLyA9PiAxLDAwMC4wMFxuICpcbiAqIC8vIOWwj+aVsO+8iOm7mOiupOS/neeVmTLkvY3lsI/mlbDvvIlcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzJyk7XG4gKiAvLyA9PiAzLDAwMC4wM1xuICpcbiAqIC8vIOS/neeVmTTkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzMDAnLCB7IHByZWNpc2lvbjogNCB9KTtcbiAqIC8vID0+IDMsMDAwLjAzMDBcbiAqXG4gKiAvLyDkv53nlZkxMOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzE1MDAuMicsIHsgcHJlY2lzaW9uOiAxMCB9KTtcbiAqIC8vID0+IDEsNTAwLjIwMDAwMDAwMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljZXkvY3nrKblj7dcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgc3ltYm9sOiAnJCcgfSk7XG4gKiAvLyA9PiAkMSwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljYPkvY3liIblibLnrKbvvIjpu5jorqQnLCfvvIlcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgdGhvdXNhbmQ6ICd8JyB9KTtcbiAqIC8vID0+IDF8MDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5bCP5pWw5L2N5YiG5Ymy56ymKOm7mOiupCcuJylcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgZGVjaW1hbDogJyYnIH0pO1xuICogLy8gPT4gMSwwMDAmMDBcbiAqL1xuY29uc3QgZm9ybWF0TW9uZXkgPSAobnVtLCB7IHByZWNpc2lvbiA9IDIsIHN5bWJvbCwgdGhvdXNhbmQgPSAnLCcsIGRlY2ltYWwgPSAnLicgfSA9IHt9KSA9PiB7XG4gIC8vIOaVsOWtl+WPguaVsOS4jeato+ehru+8jOi/lOWbnuepuuWtl+espuS4slxuICAvLyBAdHMtaWdub3JlXG4gIGlmICghY2hlY2tOdW1iZXIobnVtKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOWPguaVsOinhOaVtOWMllxuICBpZiAodHlwZW9mIHByZWNpc2lvbiAhPT0gJ251bWJlcicgfHwgaXNOYU4ocHJlY2lzaW9uKSB8fCBwcmVjaXNpb24gPCAwKSB7XG4gICAgcHJlY2lzaW9uID0gMjtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24gPiAxMCkge1xuICAgIHByZWNpc2lvbiA9IDEwO1xuICB9XG4gIHN5bWJvbCA9IHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnID8gc3ltYm9sIDogJyc7XG4gIHRob3VzYW5kID0gdHlwZW9mIHRob3VzYW5kID09PSAnc3RyaW5nJyA/IHRob3VzYW5kIDogJywnO1xuICBkZWNpbWFsID0gdHlwZW9mIGRlY2ltYWwgPT09ICdzdHJpbmcnID8gZGVjaW1hbCA6ICcuJztcblxuICAvLyDovazmjaLmlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAgY29uc3QgbnVtU3RyID0gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkgKyAnJztcbiAgLy8g5pW05pWw5ZKM5bCP5pWw6YOo5YiGXG4gIGNvbnN0IFtpbnRTdHIsIGRlY1N0cl0gPSBudW1TdHIuc3BsaXQoJy4nKTtcblxuICByZXR1cm4gc3ltYm9sICsgZm9ybWF0SW50KGludFN0ciwgdGhvdXNhbmQpICsgZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdE1vbmV5O1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpVbmRlZmluZWRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNVbmRlZmluZWRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpVbmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVbmRlZmluZWQodW5kZWZpbmVkKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVW5kZWZpbmVkKHZvaWQgMClcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VuZGVmaW5lZChudWxsKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdWxsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTnVsbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bGxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdWxsKG51bGwpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdWxsKHZvaWQgMClcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbiIsImltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbmltcG9ydCBpc051bGwgZnJvbSAnLi9pc051bGwnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uiB1bmRlZmluZWQg5oiWIG51bGxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSA0LjMuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLogdW5kZWZpbmVkIOaIliBudWxsXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgfHwgaXNOdWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOaWw7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcbmltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vKipcbiAqIOinhOaVtOWMluWtl+espuS4suOAguWmguaenOWAvOS4uiB1bmRlZmluZWQg5oiWIG51bGwg5bCG6L2s5Li656m65a2X56ym5Liy77yM5aaC5p6c5YC85LiN5piv5a2X56ym5Liy57G75Z6L5bCG6L2s5Li65a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iubm9ybWFsaXplU3RyaW5nXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgdHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nI3N0cmluZ19pbnN0YW5jZXN8U3RyaW5nfVxuICogQHNpbmNlIDQuMy4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOW+heWkhOeQhueahOWAvFxuICogQHJldHVybnMge3N0cmluZ30g6KeE5pW05YyW55qE5YC8XG4gKiBAZXhhbXBsZVxuICogbm9ybWFsaXplU3RyaW5nKCk7IC8vICcnXG4gKiBub3JtYWxpemVTdHJpbmcodW5kZWZpbmVkKTsgLy8gJydcbiAqIG5vcm1hbGl6ZVN0cmluZyh2b2lkIDApOyAvLyAnJ1xuICogbm9ybWFsaXplU3RyaW5nKG51bGwpOyAvLyAnJ1xuICpcbiAqIG5vcm1hbGl6ZVN0cmluZyh0cnVlKTsgLy8gJ3RydWUnXG4gKiBub3JtYWxpemVTdHJpbmcoTmFOKTsgLy8gJ05hTidcbiAqIG5vcm1hbGl6ZVN0cmluZygxKTsgLy8gJzEnXG4gKiBub3JtYWxpemVTdHJpbmcoJ2EnKTsgLy8gJ2EnXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyh2YWx1ZSkge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVTdHJpbmc7XG4iLCJpbXBvcnQgbm9ybWFsaXplU3RyaW5nIGZyb20gJy4vbm9ybWFsaXplU3RyaW5nJztcblxuLyoqXG4gKiDmoLzlvI/ljJbpk7booYzljaHlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5mb3JtYXRCYW5rQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFua0NhcmRObyDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIiBcIl0g6Ze06ZqU5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTRdIOmXtOmalOmVv+W6plxuICogQHJldHVybnMge3N0cmluZ30g5qC85byP5YyW55qE6ZO26KGM5Y2h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIDE55L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MCAwMThcbiAqXG4gKiAvLyAxNuS9jemTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IDYyMjggNDgwNCAwMjU2IDQ4OTBcbiAqXG4gKiAvLyDohLHmlY/pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4KioqKioqKio4OTAnKTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqIDg5MFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2h77yMXCItXCLpl7TpmpRcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJywge2NoYXI6ICctJ30pO1xuICogLy8gPT4gNjIyOC00ODA0LTAyNTYtNDg5MFxuICpcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QmFua0NhcmQoYmFua0NhcmRObyA9ICcnLCB7IGNoYXIgPSAnICcsIGxlbmd0aCA9IDQgfSA9IHt9KSB7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYCgueyR7bGVuZ3RofX0pYCwgJ2cnKTtcbiAgY29uc3QgcmVnQ2hhciA9IG5ldyBSZWdFeHAoYCR7Y2hhcn1gLCAnZycpO1xuXG4gIGNvbnN0IHJlYWxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhiYW5rQ2FyZE5vKS5yZXBsYWNlKHJlZ0NoYXIsICcnKTtcblxuICBjb25zdCBuZWVkUmVtb3ZlTGFzdENoYXIgPSByZWFsVmFsdWUubGVuZ3RoICUgbGVuZ3RoID09PSAwO1xuXG4gIGNvbnN0IHN0ciA9IHJlYWxWYWx1ZS5yZXBsYWNlKHJlZywgYCQxJHtjaGFyfWApO1xuXG4gIHJldHVybiBuZWVkUmVtb3ZlTGFzdENoYXIgPyBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QmFua0NhcmQ7XG4iLCIvKipcbiAqIOabv+aNouWtl+espu+8jOW6lOeUqOWcuuaZr+Wmgu+8muiEseaVj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnJlcGxhY2VDaGFyXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIg6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnN0YXJ0PTNdIOW8gOWni+S9jee9rlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVuZD0tNF0g57uT5p2f5L2N572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIipcIl0g5pu/5o2i5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucmVwZWF0XSDmm7/mjaLlrZfnrKbnmoTph43lpI3mrKHmlbDvvIzpu5jorqTkuLrmm7/mjaLlhoXlrrnplb/luqbvvIzlj6/orr7nva7kuLrlm7rlrprlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5leGNsdWRlXSDmjpLpmaTlrZfnrKbvvIzlpoLmnpzmjIflrprmjpLpmaTpobnvvIxyZXBlYXTorr7nva7ml6DmlYhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWkhOeQhuWQjueahOWtl+esplxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmiYvmnLrlj7dcbiAqIHJlcGxhY2VDaGFyKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gMTMwKioqKjAwMDBcbiAqXG4gKiAvLyDouqvku73or4FcbiAqIHJlcGxhY2VDaGFyKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IDEzMCoqKioqKioqKioqMjI4OFxuICpcbiAqIC8vIOmCrueusVxuICogY29uc3QgZW1haWwgPSAnMTIzNDVAcXEuY29tJ1xuICogcmVwbGFjZUNoYXIoZW1haWwsIHtzdGFydDogMiwgZW5kOiBlbWFpbC5pbmRleE9mKCdAJyksIHJlcGVhdDogNH0pO1xuICogLy8gPT4gMTIqKioqQHFxLmNvbVxuICpcbiAqIC8vIOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnLCB7c3RhcnQ6IDAsIGVuZDogLTQsIHJlcGVhdDogNH0pO1xuICogLy8gPT4gKioqKjAwMThcbiAqXG4gKiAvLyDluKbmoLzlvI/nmoTpk7booYzljaHlj7dcbiAqIHJlcGxhY2VDaGFyKCc2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOCcsIHtzdGFydDogNCwgZW5kOiAtNCwgZXhjbHVkZTogJyAnfSk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiAqKioqIDAxOFxuICpcbiAqIC8vIOeUqOaIt+WQjVxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUNoYXIoc3RyID0gJycsIHsgc3RhcnQgPSAzLCBlbmQgPSAtNCwgY2hhciA9ICcqJywgcmVwZWF0LCBleGNsdWRlIH0gPSB7fSkge1xuICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuXG4gIC8vIOW8gOWni+S9jee9rui2hei/h3N0cumVv+W6plxuICBpZiAoTWF0aC5hYnMoc3RhcnQpID49IHN0ckxlbikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID49IDAgPyBzdGFydCA6IHN0ckxlbiArIHN0YXJ0O1xuICBlbmQgPSBlbmQgPj0gMCA/IGVuZCA6IHN0ckxlbiArIGVuZDtcblxuICAvLyDlvIDlp4vkvY3nva7lpKfkuo7nu5PmnZ/kvY3nva5cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBsZXQgbWlkZGxlU3RyID0gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFteJHtleGNsdWRlfV1gLCAnZycpO1xuICAgIG1pZGRsZVN0ciA9IG1pZGRsZVN0ci5yZXBsYWNlKHJlZywgY2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmVwZWF0ID0gdHlwZW9mIHJlcGVhdCA9PT0gJ251bWJlcicgJiYgcmVwZWF0ID49IDAgPyByZXBlYXQgOiBtaWRkbGVTdHIubGVuZ3RoO1xuICAgIG1pZGRsZVN0ciA9IGNoYXIucmVwZWF0KHJlcGVhdCk7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBzdGFydCkgKyBtaWRkbGVTdHIgKyBzdHIuc3Vic3RyaW5nKGVuZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2VDaGFyO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuLy8g566A5L2TXG5jb25zdCBjaG5OdW1iZXJDaGFyID0gWyfpm7YnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nLCAn5LiDJywgJ+WFqycsICfkuZ0nXTtcbmNvbnN0IGNoblVuaXRDaGFyID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcblxuLy8g57mB5L2TXG5jb25zdCBiaWc1TnVtYmVyQ2hhciA9IFsn6Zu2JywgJ+WjuScsICfotLAnLCAn5Y+BJywgJ+iChicsICfkvI0nLCAn6ZmGJywgJ+afkicsICfmjYwnLCAn546WJ107XG5jb25zdCBiaWc1VW5pdENoYXIgPSBbJycsICfmi74nLCAn5L2wJywgJ+S7nyddO1xuXG4vLyDmlbDlrZflrZfnrKbjgIHorqHmlbDljZXkvY1cblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgbnVtYmVyQ2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdENoYXI7XG5cbi8qKlxuICogQHR5cGUge3N0cmluZ1tdfVxuICogQHByaXZhdGVcbiAqL1xubGV0IHVuaXRTZWN0aW9uO1xuXG4vKipcbiAqIOavj+S4quWwj+iKgueahOWGhemDqOi/m+ihjOi9rOWMllxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc2VjdGlvbiDmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOWMlueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBzZWN0aW9uVG9DaGluZXNlKHNlY3Rpb24pIHtcbiAgbGV0IHN0ciA9ICcnLFxuICAgIGNobnN0ciA9ICcnLFxuICAgIHplcm8gPSBmYWxzZSwgLy96ZXJv5Li65piv5ZCm6L+b6KGM6KGl6Zu277yMIOesrOS4gOasoei/m+ihjOWPluS9meeUseS6juS4uuS4quS9jeaVsO+8jOm7mOiupOS4jeihpembtlxuICAgIHVuaXRQb3MgPSAwO1xuXG4gIHdoaWxlIChzZWN0aW9uID4gMCkge1xuICAgIC8vIOWvueaVsOWtl+WPluS9mTEw77yM5b6X5Yiw55qE5pWw5Y2z5Li65Liq5L2N5pWwXG4gICAgbGV0IHYgPSBzZWN0aW9uICUgMTA7XG5cbiAgICAvL+WmguaenOaVsOWtl+S4uumbtu+8jOWImeWvueWtl+espuS4sui/m+ihjOihpembtlxuICAgIGlmICh2ID09IDApIHtcbiAgICAgIGlmICh6ZXJvKSB7XG4gICAgICAgIC8v5aaC5p6c6YGH5Yiw6L+e57ut5aSa5qyh5Y+W5L2Z6YO95pivMO+8jOmCo+S5iOWPqumcgOihpeS4gOS4qumbtuWNs+WPr1xuICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICAgIGNobnN0ciA9IG51bWJlckNoYXJbdl0gKyBjaG5zdHI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v56ys5LiA5qyh5Y+W5L2Z5LmL5ZCO77yM5aaC5p6c5YaN5qyh5Y+W5L2Z5Li66Zu277yM5YiZ6ZyA6KaB6KGl6Zu2XG4gICAgICB6ZXJvID0gdHJ1ZTtcbiAgICAgIHN0ciA9IG51bWJlckNoYXJbdl07XG4gICAgICBzdHIgKz0gdW5pdENoYXJbdW5pdFBvc107XG4gICAgICBjaG5zdHIgPSBzdHIgKyBjaG5zdHI7XG4gICAgfVxuICAgIHVuaXRQb3MrKztcbiAgICBzZWN0aW9uID0gTWF0aC5mbG9vcihzZWN0aW9uIC8gMTApO1xuICB9XG4gIHJldHVybiBjaG5zdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5pW05pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY29udmVydEludGVnZXIobnVtKSB7XG4gIG51bSA9IE1hdGguZmxvb3IobnVtKTtcblxuICBsZXQgdW5pdFBvcyA9IDA7XG4gIGxldCBzdHJJbnMgPSAnJyxcbiAgICBjaG5TdHIgPSAnJztcbiAgbGV0IG5lZWRaZXJvID0gZmFsc2U7XG5cbiAgaWYgKG51bSA9PT0gMCkge1xuICAgIHJldHVybiBudW1iZXJDaGFyWzBdO1xuICB9XG4gIHdoaWxlIChudW0gPiAwKSB7XG4gICAgdmFyIHNlY3Rpb24gPSBudW0gJSAxMDAwMDtcbiAgICBpZiAobmVlZFplcm8pIHtcbiAgICAgIGNoblN0ciA9IG51bWJlckNoYXJbMF0gKyBjaG5TdHI7XG4gICAgfVxuICAgIHN0cklucyA9IHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbik7XG4gICAgc3RySW5zICs9IHNlY3Rpb24gIT09IDAgPyB1bml0U2VjdGlvblt1bml0UG9zXSA6IHVuaXRTZWN0aW9uWzBdO1xuICAgIGNoblN0ciA9IHN0cklucyArIGNoblN0cjtcbiAgICBuZWVkWmVybyA9IHNlY3Rpb24gPCAxMDAwICYmIHNlY3Rpb24gPiAwO1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gMTAwMDApO1xuICAgIHVuaXRQb3MrKztcbiAgfVxuICByZXR1cm4gY2huU3RyO1xufVxuXG4vKipcbiAqIOi9rOaNouWwj+aVsFxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgei9rOaNoueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0RGVjaW1hbChudW0pIHtcbiAgY29uc3QgbnVtU3RyID0gbnVtICsgJyc7XG4gIGNvbnN0IGluZGV4ID0gbnVtU3RyLmluZGV4T2YoJy4nKTtcblxuICBsZXQgcmV0ID0gJyc7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBsZXQgZGVjaW1hbFN0ciA9IG51bVN0ci5zbGljZShpbmRleCArIDEpO1xuICAgIHJldCA9IG1hcE51bWJlckNoYXIocGFyc2VJbnQoZGVjaW1hbFN0cikpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmKDlsITkuLrkuK3mlofmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHlpITnkIbnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi/lOWbnuS4reaWh+aVsOWtl+eahOaYoOWwhFxuICovXG5mdW5jdGlvbiBtYXBOdW1iZXJDaGFyKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgbGV0IHJldCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBudW1TdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXQgKz0gbnVtYmVyQ2hhcltwYXJzZUludChudW1TdHJbaV0pXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5pWw5a2X6L2s5Lit5paH5pWw5a2XXG4gKiDkuI3lnKjlronlhajmlbDlrZcgLTkwMDcxOTkyNTQ3NDA5OTHvvZ45MDA3MTk5MjU0NzQwOTkxIOWGhe+8jOWkhOeQhuS8muacieW8guW4uFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLm51bWJlclRvQ2hpbmVzZVxuICogQHNpbmNlIDEuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOaVsOWtl1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuYmlnNT1mYWxzZV0g57mB5L2TXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnVuaXQ9dHJ1ZV0g6K6h5pWw5Y2V5L2NXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIueCuVwiXSDkuK3mloflsI/mlbDngrlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy56ZXJvPVwi6Zu2XCJdIOiuvue9rjDjgILluLjnlKjphY3nva4g44CHXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubmVnYXRpdmU9XCLotJ9cIl0g6LSf5pWw5YmN6Z2i55qE5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMudW5pdENvbmZpZ10g6IqC54K55Y2V5L2N6YWN572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdENvbmZpZy53PVwi5LiHXCJdIOiuvue9ruiuoeaVsOWNleS9jeS4h+OAguW4uOeUqOmFjee9riDokKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnk9XCLkur9cIl0g6K6+572u6K6h5pWw5Y2V5L2N5Lq/44CC5bi455So6YWN572uIOWEhFxuICogQHJldHVybnMge3N0cmluZ30g5Lit5paH5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDApO1xuICogLy8gPT4g5LiA55m+XG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zKTtcbiAqIC8vID0+IOS4gOeZvueCueS4iVxuICpcbiAqIC8vIOe5geS9k1xuICogbnVtYmVyVG9DaGluZXNlKDEwMCwge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sFxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDAuMywge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sOeCueWPgVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMjM0NTY3ODkwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55ou+6LSw5Lq/5Y+B5Luf6IKG5L2w5LyN5ou+6ZmG5LiH5p+S5Luf5o2M5L2w546W5ou+XG4gKlxuICogLy8g5LiN5bim6K6h5pWw5Y2V5L2NXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3pm7ZcbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY3vvIzkv67mlLkwXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlLCB6ZXJvOifjgIcnfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3jgIdcbiAqXG4gKi9cbmZ1bmN0aW9uIG51bWJlclRvQ2hpbmVzZShcbiAgbnVtLFxuICB7XG4gICAgYmlnNSA9IGZhbHNlLFxuICAgIHVuaXQgPSB0cnVlLFxuICAgIGRlY2ltYWwgPSAn54K5JyxcbiAgICB6ZXJvID0gJycsXG4gICAgbmVnYXRpdmUgPSAn6LSfJyxcbiAgICB1bml0Q29uZmlnID0ge1xuICAgICAgdzogJ+S4hycsIC8vICfokKwnXG4gICAgICB5OiAn5Lq/JyAvLyAn5YSEJ1xuICAgIH1cbiAgfSA9IHt9XG4pIHtcbiAgLy8g6Z2e5pWw5a2XIOaIliBOYU4g5LiN5aSE55CGXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyB8fCBpc05hTihudW0pKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2Fybihg5Y+C5pWw6ZSZ6K+vICR7bnVtfe+8jOivt+S8oOWFpeaVsOWtl2ApO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOi2hei/h+WuieWFqOaVsOWtl+aPkOekulxuICBjaGVja0JvdW5kYXJ5KG51bSk7XG5cbiAgLy8g6K6+572u5pWw5a2X5a2X56ym5ZKM6K6h5pWw5Y2V5L2NXG4gIGlmIChiaWc1KSB7XG4gICAgbnVtYmVyQ2hhciA9IGJpZzVOdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBiaWc1VW5pdENoYXIuc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICBudW1iZXJDaGFyID0gY2huTnVtYmVyQ2hhci5zbGljZSgpO1xuICAgIHVuaXRDaGFyID0gY2huVW5pdENoYXIuc2xpY2UoKTtcbiAgfVxuXG4gIC8vIOiuvue9ruiKgueCueiuoeaVsOWNleS9je+8jOS4h+OAgeS6v+OAgeS4h+S6v1xuICBjb25zdCBkZWZhdWx0VW5pdFdhbiA9ICfkuIcnO1xuICBjb25zdCBkZWZhdWx0VW5pdFlpID0gJ+S6vyc7XG4gIHVuaXRTZWN0aW9uID0gWycnLCB1bml0Q29uZmlnLncgfHwgZGVmYXVsdFVuaXRXYW4sIHVuaXRDb25maWcueSB8fCBkZWZhdWx0VW5pdFlpLCB1bml0Q29uZmlnLncgJiYgdW5pdENvbmZpZy55ID8gdW5pdENvbmZpZy53ICsgdW5pdENvbmZpZy55IDogZGVmYXVsdFVuaXRXYW4gKyBkZWZhdWx0VW5pdFlpXTtcblxuICAvLyDorr7nva4wXG4gIGlmICh6ZXJvKSB7XG4gICAgbnVtYmVyQ2hhclswXSA9IHplcm87XG4gIH1cblxuICAvLyDliY3nva7lrZfnrKbvvIzotJ/mlbDlpITnkIZcbiAgY29uc3QgcHJlU3RyID0gbnVtIDwgMCA/IG5lZ2F0aXZlIDogJyc7XG5cbiAgLy8g5pW05pWw5ZKM5bCP5pWwXG4gIGxldCBjaG5JbnRlZ2VyLCBjaG5EZWNpbWFsO1xuXG4gIC8vIOWkhOeQhuaVtOaVsFxuICBpZiAodW5pdCkge1xuICAgIGNobkludGVnZXIgPSBjb252ZXJ0SW50ZWdlcihudW0pO1xuICB9IGVsc2Uge1xuICAgIGNobkludGVnZXIgPSBtYXBOdW1iZXJDaGFyKE1hdGguZmxvb3IobnVtKSk7XG4gIH1cblxuICAvLyDlpITnkIblsI/mlbBcbiAgY2huRGVjaW1hbCA9IGNvbnZlcnREZWNpbWFsKG51bSk7XG5cbiAgcmV0dXJuIGNobkRlY2ltYWwgPyBgJHtwcmVTdHJ9JHtjaG5JbnRlZ2VyfSR7ZGVjaW1hbH0ke2NobkRlY2ltYWx9YCA6IGAke3ByZVN0cn0ke2NobkludGVnZXJ9YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbnVtYmVyVG9DaGluZXNlO1xuIiwiLyoqXG4gKiDlrZfoioLovazmjaLlrZjlgqjljZXkvY3vvIzkv53nlZky5L2N5bCP5pWw54K5XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuYnl0ZXNUb1NpemVcbiAqIEBzaW5jZSAzLjguMFxuICogQHBhcmFtIHtudW1iZXJ9IGJ5dGVzIOWtl+iKguWkp+Wwj1xuICogQHJldHVybnMge3N0cmluZ30g5a2Y5YKo5Y2V5L2N5YC8XG4gKiBAZXhhbXBsZVxuICpcbiAqIGJ5dGVzVG9TaXplKDApO1xuICogLy8gPT4gMCBCXG4gKlxuICogYnl0ZXNUb1NpemUoMTAyNCk7XG4gKiAvLyA9PiAxIEtCXG4gKlxuICogYnl0ZXNUb1NpemUoMy4yMTMyNDMqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDMuMjEgTUJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KjEwMjQqMTAyNCk7XG4gKiAvLyA9PiAxIEdCXG4gKi9cbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKGJ5dGVzKSB7XG4gIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xuICBjb25zdCBrID0gMTAyNDtcbiAgLy8g5a2Y5YKo5Y2V5L2NXG4gIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcblxuICByZXR1cm4gc2l6ZXNbaV0gPyBgJHtOdW1iZXIoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMikpfSAke3NpemVzW2ldfWAgOiBieXRlcyArICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBieXRlc1RvU2l6ZTtcbiIsImltcG9ydCBpc0lkQ2FyZCBmcm9tICcuL2lzSWRDYXJkJztcblxuY29uc3QgcmVnSWRDYXJkID0gL14oPzxwcm92aW5jZT5cXGR7Mn0pKD88Y2l0eT5cXGR7Mn0pKD88YXJlYT5cXGR7Mn0pKD88eWVhcj4oPzpcXGR7Mn0pP1xcZHsyfSkoPzxtb250aD5cXGR7Mn0pKD88ZGF5PlxcZHsyfSlcXGR7Mn0oPzxnZW5kZXI+XFxkKSg/OlxcZHxYKT8kL2k7XG5cbmNvbnN0IFByb3ZpbmNlcyA9IFtcbiAgLy8g5Y2O5YyX5Zyw5Yy677ya5YyX5Lqs5biCfDExMDAwMO+8jOWkqea0peW4gnwxMjAwMDDvvIzmsrPljJfnnIF8MTMwMDAw77yM5bGx6KW/55yBfDE0MDAwMO+8jOWGheiSmeWPpOiHquayu+WMunwxNTAwMDBcbiAgWycxMScsICfljJfkuqzluIInXSxcbiAgWycxMicsICflpKnmtKXluIInXSxcbiAgWycxMycsICfmsrPljJfnnIEnXSxcbiAgWycxNCcsICflsbHopb/nnIEnXSxcbiAgWycxNScsICflhoXokpnlj6Toh6rmsrvljLonXSxcblxuICAvLyDkuJzljJflnLDljLrvvJog6L695a6B55yBfDIxMDAwMO+8jOWQieael+ecgXwyMjAwMDDvvIzpu5HpvpnmsZ/nnIF8MjMwMDAwXG4gIFsnMjEnLCAn6L695a6B55yBJ10sXG4gIFsnMjInLCAn5ZCJ5p6X55yBJ10sXG4gIFsnMjMnLCAn6buR6b6Z5rGf55yBJ10sXG5cbiAgLy8g5Y2O5Lic5Zyw5Yy677yaIOS4iua1t+W4gnwzMTAwMDDvvIzmsZ/oi4/nnIF8MzIwMDAw77yM5rWZ5rGf55yBfDMzMDAwMO+8jOWuieW+veecgXwzNDAwMDDvvIznpo/lu7rnnIF8MzUwMDAw77yM5rGf6KW/55yBfDM2MDAwMO+8jOWxseS4nOecgXwzNzAwMDBcbiAgWyczMScsICfkuIrmtbfluIInXSxcbiAgWyczMicsICfmsZ/oi4/nnIEnXSxcbiAgWyczMycsICfmtZnmsZ/nnIEnXSxcbiAgWyczNCcsICflronlvr3nnIEnXSxcbiAgWyczNScsICfnpo/lu7rnnIEnXSxcbiAgWyczNicsICfmsZ/opb/nnIEnXSxcbiAgWyczNycsICflsbHkuJznnIEnXSxcblxuICAvLyDljY7kuK3lnLDljLrvvJog5rKz5Y2X55yBfDQxMDAwMO+8jOa5luWMl+ecgXw0MjAwMDDvvIzmuZbljZfnnIF8NDMwMDAwXG4gIFsnNDEnLCAn5rKz5Y2X55yBJ10sXG4gIFsnNDInLCAn5rmW5YyX55yBJ10sXG4gIFsnNDMnLCAn5rmW5Y2X55yBJ10sXG5cbiAgLy8g5Y2O5Y2X5Zyw5Yy677ya5bm/5Lic55yBfDQ0MDAwMO+8jOW5v+ilv+WjruaXj+iHquayu+WMunw0NTAwMDDvvIzmtbfljZfnnIF8NDYwMDAwXG4gIFsnNDQnLCAn5bm/5Lic55yBJ10sXG4gIFsnNDUnLCAn5bm/6KW/5aOu5peP6Ieq5rK75Yy6J10sXG4gIFsnNDYnLCAn5rW35Y2X55yBJ10sXG5cbiAgLy8g6KW/5Y2X5Zyw5Yy677ya6YeN5bqG5biCfDUwMDAwMO+8jOWbm+W3neecgXw1MTAwMDDvvIzotLXlt57nnIF8NTIwMDAw77yM5LqR5Y2X55yBfDUzMDAwMO+8jOilv+iXj+iHquayu+WMunw1NDAwMDBcbiAgWyc1MCcsICfph43luobluIInXSxcbiAgWyc1MScsICflm5vlt53nnIEnXSxcbiAgWyc1MicsICfotLXlt57nnIEnXSxcbiAgWyc1MycsICfkupHljZfnnIEnXSxcbiAgWyc1NCcsICfopb/ol4/oh6rmsrvljLonXSxcblxuICAvLyDopb/ljJflnLDljLrvvJog6ZmV6KW/55yBfDYxMDAwMO+8jOeUmOiCg+ecgXw2MjAwMDDvvIzpnZLmtbfnnIF8NjMwMDAw77yM5a6B5aSP5Zue5peP6Ieq5rK75Yy6fDY0MDAwMO+8jOaWsOeWhue7tOWQvuWwlOiHquayu+WMunw2NTAwMDBcbiAgWyc2MScsICfpmZXopb/nnIEnXSxcbiAgWyc2MicsICfnlJjogoPnnIEnXSxcbiAgWyc2MycsICfpnZLmtbfnnIEnXSxcbiAgWyc2NCcsICflroHlpI/lm57ml4/oh6rmsrvljLonXSxcbiAgWyc2NScsICfmlrDnlobnu7TlkL7lsJToh6rmsrvljLonXSxcblxuICAvLyDlj7Dmub7lnLDljLrvvJrlj7Dmub7nnIF8NzEwMDAwXG4gIC8vIOWPsOa5vuWxheawkeWFrOawkei6q+S7veWPt+eggeWcsOWdgOeggeS4ujgzMDAwMO+8jOWPguiAgyBodHRwOi8vd3d3LndhbndlaWJhaWtlLmNvbS93aWtpLeS4reWNjuS6uuawkeWFseWSjOWbveihjOaUv+WMuuWIkuS7o+eggV8oN+WMuinjgIFodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlj7DlsYXmsJHlsYXkvY/or4FcbiAgWyc3MScsICflj7Dmub7nnIEnXSxcbiAgWyc4MycsICflj7Dmub7nnIEnXSxcblxuICAvLyDmuK/mvrPlnLDljLrvvJrpppnmuK/nibnliKvooYzmlL/ljLp8ODEwMDAw77yM5r6z6Zeo54m55Yir6KGM5pS/5Yy6fDgyMDAwMFxuICBbJzgxJywgJ+mmmea4r+eJueWIq+ihjOaUv+WMuiddLFxuICBbJzgyJywgJ+a+s+mXqOeJueWIq+ihjOaUv+WMuiddXG5dO1xuXG4vLyDnrKzkuIDkvY3mlbDlrZfmmK/ku6XliY3nmoTlpKfljLrliLbku6PnoIHjgILnrKzkuozkvY3mmK/lpKfljLrmiYDlnKjnnIHluILnvJbnoIHjgILlhajlm73lhbHliIbkuLo45Liq5aSn5Yy677ya5Y2O5YyX77yIMe+8ieOAgeS4nOWMl++8iDLvvInjgIHljY7kuJzvvIgz77yJ44CB5Lit5Y2X77yINO+8ieOAgeilv+WNl++8iDXvvInjgIHopb/ljJfvvIg277yJ44CB5Y+w5rm+77yIN++8ieWSjOa4r+a+s++8iDjvvInjgIJcbi8vIGNvbnN0IFJlZ2lvbnMgPSBbXG4vLyAgIFsnMScsICfljY7ljJflnLDljLonXSxcbi8vICAgWycyJywgJ+S4nOWMl+WcsOWMuiddLFxuLy8gICBbJzMnLCAn5Y2O5Lic5Zyw5Yy6J10sXG4vLyAgIFsnNCcsICfkuK3ljZflnLDljLonXSxcbi8vICAgWyc1JywgJ+ilv+WNl+WcsOWMuiddLFxuLy8gICBbJzYnLCAn6KW/5YyX5Zyw5Yy6J10sXG4vLyAgIFsnNycsICflj7Dmub7lnLDljLonXSxcbi8vICAgWyc4JywgJ+a4r+a+s+WcsOWMuiddXG4vLyBdO1xuXG4vKipcbiAqIOino+aekOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE144CBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIFxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IucGFyc2VJZENhcmRcbiAqIEBzaW5jZSA0LjAuMFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0v5bGF5rCR6Lqr5Lu96K+B5Y+356CBfOWxheawkei6q+S7veivgeWPt+eggX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCDouqvku73or4Hlj7fnoIHvvIzmlK/mjIExNeS9jVxuICogQHJldHVybnMgbnVsbCDmiJYg55yB5Lu944CB55Sf5pel44CB5oCn5Yir77yM55yBL+W4gi/ljLov5bm0L+aciC/ml6Uv5oCn5Yir57yW56CBXG4gKiBAZXhhbXBsZVxuICogcGFyc2VJZENhcmQoJzEyMzQ1Njc4OTEyMzQ1NicpO1xuICogLy8gPT4gbnVsbFxuICogXG4gKiAvLyAxOOS9jei6q+S7veivgeWPt+eggVxuICogcGFyc2VJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4OCcpXG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCIxOTkzLTEwLTMwXCIsXG4gIGdlbmRlcjogXCLlpbNcIixcbiAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjE5OTNcIiwgbW9udGg6IFwiMTBcIiwgZGF5OiBcIjMwXCIsIGdlbmRlcjogXCI4XCIgfSxcbiAgcHJvdmluY2U6IFwi5rKz5YyX55yBXCJcbn1cbiAqIC8vIDE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBwYXJzZUlkQ2FyZCgnMTMwNzAxOTMxMDMwMjI4Jyk7XG4gKiAvLyA9PlxuICoge1xuICBiaXJ0aGRheTogXCI5My0xMC0zMFwiLFxuICBnZW5kZXI6IFwi5aWzXCIsXG4gIG9yaWdpbjogeyBwcm92aW5jZTogXCIxM1wiLCBjaXR5OiBcIjA3XCIsIGFyZWE6IFwiMDFcIiwgeWVhcjogXCI5M1wiLCBtb250aDogXCIxMFwiLCBkYXk6IFwiMzBcIiwgZ2VuZGVyOiBcIjhcIiB9LFxuICBwcm92aW5jZTogXCLmsrPljJfnnIFcIlxufVxuICogXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSWRDYXJkKGlkKSB7XG4gIGlmICghaXNJZENhcmQoaWQsIHsgbG9vc2U6IHRydWUgfSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGluZm8gPSByZWdJZENhcmQuZXhlYyhpZCk7XG5cbiAgaWYgKCFpbmZvKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHR5cGUge3sgcHJvdmluY2U6IHN0cmluZywgY2l0eTogc3RyaW5nLCBhcmVhOiBzdHJpbmcsIHllYXI6IHN0cmluZywgbW9udGg6IHN0cmluZywgZGF5OiBzdHJpbmcsIGdlbmRlcjogc3RyaW5nIH19XG4gICAqXG4gICAqL1xuICBsZXQgb3JpZ2luID0ge1xuICAgIHByb3ZpbmNlOiAnJyxcbiAgICBjaXR5OiAnJyxcbiAgICBhcmVhOiAnJyxcbiAgICB5ZWFyOiAnJyxcbiAgICBtb250aDogJycsXG4gICAgZGF5OiAnJyxcbiAgICBnZW5kZXI6ICcnXG4gIH07XG5cbiAgaWYgKGluZm8uZ3JvdXBzKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbiA9IGluZm8uZ3JvdXBzO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbiA9IHtcbiAgICAgIHByb3ZpbmNlOiBpbmZvWzFdLFxuICAgICAgY2l0eTogaW5mb1syXSxcbiAgICAgIGFyZWE6IGluZm9bM10sXG4gICAgICB5ZWFyOiBpbmZvWzRdLFxuICAgICAgbW9udGg6IGluZm9bNV0sXG4gICAgICBkYXk6IGluZm9bNl0sXG4gICAgICBnZW5kZXI6IGluZm9bN11cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHJvdmluY2UgPSBQcm92aW5jZXMuZmluZCgoaXRlbSkgPT4gaXRlbVswXSA9PT0gb3JpZ2luLnByb3ZpbmNlKTtcblxuICBpZiAoIXByb3ZpbmNlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBiaXJ0aGRheSA9IGAke29yaWdpbi55ZWFyfS0ke29yaWdpbi5tb250aH0tJHtvcmlnaW4uZGF5fWA7XG4gIGNvbnN0IGdlbmRlciA9IE51bWJlcihvcmlnaW4uZ2VuZGVyKSAlIDIgPT09IDAgPyAn5aWzJyA6ICfnlLcnO1xuICAvLyBjb25zdCByZWdpb24gPSBSZWdpb25zLmZpbmQoaXRlbSA9PiBpdGVtWzBdID09PSBvcmlnaW4ucHJvdmluY2U/LnN1YnN0cmluZygwLCAxKSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyByZWdpb24sXG4gICAgcHJvdmluY2U6IHByb3ZpbmNlWzFdLFxuICAgIGJpcnRoZGF5LFxuICAgIGdlbmRlcixcbiAgICBvcmlnaW5cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJZENhcmQ7XG4iLCIvLyAgZmlsZeOAgWJsb2Lmlofku7blpoLkvZXpooTop4jlm77niYfvvJ9cbi8vICDmlrnms5Ux77ya5bCGZmlsZeaIluiAhWJsb2Lnsbvlnovmlofku7bovazmiJBiYXNlNjTmlbDmja7vvIzlho3kvZzkuLpzcmPotYvlgLznu5lpbWfmoIfnrb5cbi8vICDmlrnms5Uy77ya5L2/55SoIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpIOS4umJsb2LjgIFmaWxlIOWIm+W7uuS4gOS4quaMh+WQkeivpeWPguaVsOWvueixoeeahFVSTFxuXG4vKipcbiAqIOWwhiBCbG9iIOaIliBGaWxlIOWvueixoei9rOaIkCBkYXRhOlVSTCDmoLzlvI/nmoQgQmFzZTY0IOWtl+espuS4suOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmJsb2JUb0RhdGFVUkxcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvRmlsZVJlYWRlci9yZWFkQXNEYXRhVVJMfEZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCgpfVxuICogQHNpbmNlIDQuMS4wXG4gKiBAcGFyYW0ge0Jsb2J9IGJsb2IgQmxvYiDmiJYgRmlsZSDlr7nosaFcbiAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IGRhdGE6VVJMIOagvOW8j+eahCBCYXNlNjQg5a2X56ym5Liy44CCXG4gKiBAZXhhbXBsZVxuICogY29uc3QgYUZpbGVQYXJ0cyA9IFsnPGEgaWQ9XCJhXCI+PGIgaWQ9XCJiXCI+aGV5ITwvYj48L2E+J107IC8vIOS4gOS4quWMheWQq0RPTVN0cmluZ+eahOaVsOe7hFxuICogY29uc3QgaHRtbEJsb2IgPSBuZXcgQmxvYihhRmlsZVBhcnRzLCB7IHR5cGU6ICd0ZXh0L2h0bWwnIH0pOyAvLyDlvpfliLAgYmxvYlxuICpcbiAqIGJsb2JUb0RhdGFVUkwoaHRtbEJsb2IpLnRoZW4oZGF0YT0+e1xuICogICBjb25zb2xlLmxvZyhkYXRhKTsgLy8gZGF0YTp0ZXh0L2h0bWw7YmFzZTY0LFBHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9XG4gKiB9KTtcbiAqXG4gKiBjb25zdCB0ZXh0QmxvYiA9IG5ldyBCbG9iKGFGaWxlUGFydHMsIHsgdHlwZTogJ3RleHQvcGxhaW4nIH0pO1xuICpcbiAqIGJsb2JUb0RhdGFVUkwodGV4dEJsb2IpLnRoZW4oZGF0YT0+e1xuICogICBjb25zb2xlLmxvZyhkYXRhKTsgLy8gZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGJsb2JUb0RhdGFVUkwoYmxvYikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoZXJyb3IpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmxvYlRvRGF0YVVSTDtcbiIsIi8qKlxuICog5bCGIERhdGFVUkwg6L2s5Li6IEJsb2Ig5a+56LGhXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuZGF0YVVSTFRvQmxvYlxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvR2xvc3NhcnkvQmFzZTY0fEJhc2U2NH1cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGF1cmwgZGF0YTog5Y2P6K6u55qEVVJMXG4gKiBAcmV0dXJucyB7QmxvYn0gQmxvYiDlr7nosaFcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhdXJsID0gJ2RhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PSc7XG4gKiBkYXRhVVJMVG9CbG9iKGRhdGF1cmwpO1xuICovXG5mdW5jdGlvbiBkYXRhVVJMVG9CbG9iKGRhdGF1cmwpIHtcbiAgY29uc3QgYXJyID0gZGF0YXVybC5zcGxpdCgnLCcpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKVsxXTtcbiAgY29uc3QgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgbGV0IG4gPSBic3RyLmxlbmd0aDtcbiAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcblxuICB3aGlsZSAobi0tKSB7XG4gICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XG4gIH1cbiAgcmV0dXJuIG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGF0YVVSTFRvQmxvYjtcbiIsIi8qKlxuICog6K6+572uIERhdGFVUkwg5YmN57yA44CBTUlNRSDnsbvlnovjgIFiYXNlNjQg5qCH6K+G44CCPGJyLz48YnIvPlxuICpcbiAqIOWmguaenOS9oOmcgOimgeiOt+WPlkRhdGFVUkwg55qEIE1JTUUg57G75Z6L5ZKM5pWw5o2u5pys6Lqr77yM5o6o6I2Q5L2/55SoIDxhIGhyZWY9XCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXRhLXVybHNcIj5kYXRhLXVybHM8L2E+44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iuc2V0RGF0YVVSTFByZWZpeFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzfERhdGEgVVJMc31cbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI3VuZGVyc3RhbmRpbmctbWltZS10eXBlc3xNSU1FIHR5cGVzfVxuICogQHNpbmNlIDQuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YSDmlbDmja7mnKzouqtcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWltZXR5cGU9XCJpbWFnZS9wbmdcIl0gTUlNRSDnsbvlnotcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Jhc2U2ND10cnVlXSDmt7vliqAgYmFzZTY0IOagh+ivhlxuICogQHJldHVybnMge3N0cmluZ30gRGF0YVVSTCDmoLzlvI/nmoTlrZfnrKbkuLJcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhID0gJ1BHRWdhV1E5SW1FaVBqeGlJR2xrUFNKaUlqNW9aWGtoUEM5aVBqd3ZZVDQ9JztcbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSk7IC8vIGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnaW1hZ2UvcG5nJywgZmFsc2UpOyAvLyBkYXRhOmltYWdlL3BuZyxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnaW1hZ2UvanBnJyk7IC8vIGRhdGE6aW1hZ2UvanBnO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAndGV4dC9odG1sJyk7IC8vIGRhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnJyk7IC8vIGRhdGE6O2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogc2V0RGF0YVVSTFByZWZpeChkYXRhLCAnJywgZmFsc2UpOyAvLyBkYXRhOixQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICovXG5mdW5jdGlvbiBzZXREYXRhVVJMUHJlZml4KGRhdGEsIG1pbWV0eXBlID0gJ2ltYWdlL3BuZycsIGJhc2U2NCA9IHRydWUpIHtcbiAgcmV0dXJuIGBkYXRhOiR7bWltZXR5cGV9JHtiYXNlNjQgPyAnO2Jhc2U2NCcgOiAnJ30sJHtkYXRhfWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldERhdGFVUkxQcmVmaXg7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcblxuLy8gVE9ETzog5Ye95pWw6YeN6L2977yM57G75Z6L5Y+C54WnIERhdGVcblxuLyoqXG4gKiDliJvlu7rkuIDkuKogRGF0ZSDlrp7kvovvvIzlkIwgbmV3IERhdGUoKSDjgII8YnIvPjxici8+5Li76KaB5piv6KeE6YG/5LqGIGlwaG9uZSDorr7lpIfmtY/op4jlmajkuI3mlK/mjIHpg6jliIbmoLzlvI/vvIhZWVlZLU1NLUREIEhILW1tIOaIliBZWVlZLk1NLkRE77yJ44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iuc2FmZURhdGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlfERhdGV9XG4gKiBAc2luY2UgNC40LjBcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxEYXRlfSBbdmFsdWVdIOaXpeacn+aXtumXtOWtl+espuS4suOAgeavq+enkuaVsOOAgeaXpeacn+WvueixoVxuICogQHBhcmFtIHsuLi5udW1iZXJ9IGFyZ3Mg5pyIL+aXpS/ml7Yv5YiGL+enki/mr6vnp5JcbiAqIEByZXR1cm5zIHtEYXRlfSBEYXRlIOWunuS+i1xuICogQGV4YW1wbGVcbiAqIHNhZmVEYXRlKCcyMDIyLTEtMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLzEvMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLjEuMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKCcyMDIyLjEuMSAxMToxMScpOyAvLyBTYXQgSmFuIDAxIDIwMjIgMTE6MTE6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKDk5LCAxKTsgLy8gTW9uIEZlYiAwMSAxOTk5IDAwOjAwOjAwIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gKiBzYWZlRGF0ZSgxNjQ2NzExMjMzMTcxKTsgLy8gVHVlIE1hciAwOCAyMDIyIDExOjQ3OjEzIEdNVCswODAwICjkuK3lm73moIflh4bml7bpl7QpXG4gKlxuICovXG5mdW5jdGlvbiBzYWZlRGF0ZSh2YWx1ZSwgLi4uYXJncykge1xuICBjb25zdCBzYWZlVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUucmVwbGFjZSgvW1xcXFwuLV0vZywgJy8nKSA6IHZhbHVlO1xuXG4gIGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbmV3IERhdGUoc2FmZVZhbHVlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGlzTmlsKHNhZmVWYWx1ZSkgPyBuZXcgRGF0ZSgpIDogbmV3IERhdGUoc2FmZVZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2FmZURhdGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdW1iZXJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOdW1iZXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOdW1iZXJcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdW1iZXIoMSlcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKEluZmluaXR5KVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcignMScpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTnVtYmVyJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5LmY5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45LmYXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnRpbWVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jkuZjnmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOS5mOenr1xuICogQGV4YW1wbGVcbiAqXG4gKiB0aW1lcygzLCAwLjYpO1xuICogLy8gPT4gMS44XG4gKlxuICogdGltZXMoMywgMC42LCAyKTtcbiAqIC8vID0+IDMuNlxuICpcbiAqIHRpbWVzKDMsIDAuNiwgMiwgMTApO1xuICogLy8gPT4gMzZcbiAqL1xuZnVuY3Rpb24gdGltZXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHRpbWVzKHRpbWVzKG51bTEsIG51bTIpLCAuLi5yZXN0KTtcbiAgfVxuXG4gIC8vIOWFvOWuueWkhOeQhu+8jOWmguaenOesrDLkuKrlj4LmlbDkuLrpnZ7mlbDlrZfmiJblrZfnrKbkuLLml7bvvIzov5Tlm57nrKzkuIDkuKrlj4LmlbBcbiAgaWYgKCghaXNOdW1iZXIobnVtMikgfHwgaXNOYU4obnVtMikpICYmICFpc1N0cmluZyhudW0yKSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbnVtMTtcbiAgfVxuXG4gIGNvbnN0IG51bTFDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMSk7XG4gIGNvbnN0IG51bTJDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMik7XG4gIGNvbnN0IGJhc2VOdW0gPSBkaWdpdExlbmd0aChudW0xKSArIGRpZ2l0TGVuZ3RoKG51bTIpO1xuICBjb25zdCBsZWZ0VmFsdWUgPSBudW0xQ2hhbmdlZCAqIG51bTJDaGFuZ2VkO1xuXG4gIGNoZWNrQm91bmRhcnkobGVmdFZhbHVlKTtcblxuICByZXR1cm4gbGVmdFZhbHVlIC8gTWF0aC5wb3coMTAsIGJhc2VOdW0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aW1lcztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5Yqg5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YqgXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnBsdXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOWKoOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5oC75ZKMXG4gKiBAZXhhbXBsZVxuICpcbiAqIHBsdXMoMC4xLCAwLjIpO1xuICogLy8gPT4gMC4zXG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zKTtcbiAqIC8vID0+IDAuNlxuICpcbiAqIHBsdXMoMC4xLCAwLjIsIDAuMywgMC40KTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gcGx1cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwbHVzKHBsdXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSArIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdXM7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehruWHj+azle+8jOaUr+aMgeWkmuS4quaVsOebuOWHj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5taW51c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45YeP55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlt65cbiAqIEBleGFtcGxlXG4gKlxuICogbWludXMoMSwgMC45KTtcbiAqIC8vID0+IDAuMVxuICpcbiAqIG1pbnVzKDEsIDAuOSwgMC4wMik7XG4gKiAvLyA9PiAwLjA4XG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyLCAwLjA4KTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gbWludXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gbWludXMobWludXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSAtIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1pbnVzO1xuIiwiaW1wb3J0IHsgc3RyaXAsIGRpZ2l0TGVuZ3RoLCBmbG9hdDJGaXhlZCwgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehrumZpOazle+8jOaUr+aMgeWkmuS4quaVsOebuOmZpFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5kaXZpZGVcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOmZpOaVsOWSjOiiq+mZpOaVsFxuICogQHJldHVybnMge251bWJlcn0g5ZWG5pWwXG4gKiBAZXhhbXBsZVxuICpcbiAqIGRpdmlkZSgxLjIxLCAxLjEpO1xuICogLy8gPT4gMS4xXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCk7XG4gKiAvLyA9PiAxMFxuICpcbiAqIGRpdmlkZSgxMDAwLCAxMCwgMTAsIDEwKTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gZGl2aWRlKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRpdmlkZShkaXZpZGUobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY2hlY2tCb3VuZGFyeShudW0xQ2hhbmdlZCk7XG4gIGNoZWNrQm91bmRhcnkobnVtMkNoYW5nZWQpO1xuICAvLyBmaXg6IOexu+S8vCAxMCAqKiAtNCDkuLogMC4wMDAwOTk5OTk5OTk5OTk5OTk5Oe+8jHN0cmlwIOS/ruato1xuICByZXR1cm4gdGltZXMobnVtMUNoYW5nZWQgLyBudW0yQ2hhbmdlZCwgc3RyaXAoTWF0aC5wb3coMTAsIGRpZ2l0TGVuZ3RoKG51bTIpIC0gZGlnaXRMZW5ndGgobnVtMSkpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpdmlkZTtcbiIsImltcG9ydCBkaXZpZGUgZnJvbSAnLi9kaXZpZGUnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuXG4vKipcbiAqIOWbm+iIjeS6lOWFpe+8jOaUr+aMgeiuvue9rueyvuW6plxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5yb3VuZFxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bSDopoHlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIOWbm+iIjeS6lOWFpeeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn0g5Zub6IiN5LqU5YWl55qE5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIHJvdW5kKDQuMDA2KTtcbiAqIC8vID0+IDRcbiAqXG4gKiByb3VuZCg0LjAwNiwgMik7XG4gKiAvLyA9PiA0LjAxXG4gKlxuICogcm91bmQoNDA2MCwgLTIpO1xuICogLy8gPT4gNDEwMFxuICovXG5mdW5jdGlvbiByb3VuZChudW0sIHByZWNpc2lvbiA9IDApIHtcbiAgY29uc3QgYmFzZSA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuICByZXR1cm4gZGl2aWRlKE1hdGgucm91bmQodGltZXMobnVtLCBiYXNlKSksIGJhc2UpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByb3VuZDtcbiIsIi8qKlxuICog562J5b6F5pe26Ze06L+U5ZueIFByb21pc2Ug44CC5bi455So5LqO5byC5q2l5pa55rOV5Lit5bu25pe244CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpPdGhlci53YWl0VGltZVxuICogQHNpbmNlIDQuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gW3RpbWU9MTAwMF0g5bu25pe25pe26Ze077yM5Y2V5L2N5q+r56eSXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB0ZXN0ID0gYXN5bmMgKCk9PntcbiAqICAgYXdhaXQgd2FpdFRpbWUoKTtcbiAqICAgLy8gZG8gc29tZXRoaW5nXG4gKiB9XG4gKlxuICogd2FpdFRpbWUoNTAwKS50aGVuKCgpPT57XG4gKiAgIC8vIGRvIHNvbWV0aGluZ1xuICogfSlcbiAqL1xuZnVuY3Rpb24gd2FpdFRpbWUodGltZSA9IDEwMDApIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdhaXRUaW1lO1xuIl0sIm5hbWVzIjpbInJlZyIsInJlZ0lkQ2FyZCIsImJhc2VSZWciLCJzdW1DaGVja0NvZGUiLCJpc05hTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDM0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVB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QUFDLEtBQUssRUFBRTtFQUN4QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLGlCQUFpQixDQUFDO0FBQzlCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUNyQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDZCQUE2QixDQUFDO0FBQzFDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUNyQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLHdIQUF3SCxDQUFDO0FBQ3JJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFO0VBQzFCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUNqQ0E7RUFDQSxNQUFNQSxLQUFHLEdBQUcsaUJBQWlCLENBQUM7QUFDOUI7RUFDQTtFQUNBLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQztBQUM5QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ25ELEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0VBQ0EsRUFBRSxJQUFJLEtBQUssRUFBRTtFQUNiLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ25DLEdBQUc7RUFDSCxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkNBO0VBQ0EsTUFBTUUsU0FBTyxHQUFHLG9EQUFvRCxDQUFDO0FBQ3JFO0VBQ0E7RUFDQSxNQUFNLFdBQVcsR0FBRyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEU7RUFDQTtFQUNBLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRTtFQUNoQyxFQUFFLElBQUksR0FBRyxDQUFDO0FBQ1Y7RUFDQSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLO0VBQ3BDLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0VBQ3ZCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQztFQUNsQixNQUFNLE9BQU8sSUFBSSxDQUFDO0VBQ2xCLEtBQUs7RUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0VBQ2pCLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7RUFDQTtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBU0MsY0FBWSxDQUFDLE9BQU8sRUFBRTtFQUMvQjtBQUNBO0VBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7RUFDQTtFQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtFQUMvQjtFQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDL0M7RUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvQjtFQUNBLElBQUksS0FBSyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7RUFDeEIsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7RUFDL0I7RUFDQSxFQUFFLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFDeEM7RUFDQSxFQUFFLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0VBQ3JDLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUMzRCxFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsTUFBTSxZQUFZLEdBQUdELFNBQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUM7RUFDQTtFQUNBLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7RUFDOUIsSUFBSSxPQUFPLFlBQVksQ0FBQztFQUN4QixHQUFHO0FBQ0g7RUFDQTtFQUNBLEVBQUUsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7RUFDNUM7RUFDQSxFQUFFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztFQUMzRDtFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUdDLGNBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsT0FBTyxRQUFRLEtBQUssU0FBUyxDQUFDO0VBQ2hDOztFQzFHQSxNQUFNLE1BQU0sR0FBRztFQUNmO0VBQ0EsRUFBRSxjQUFjLEVBQUUsSUFBSTtFQUN0QixDQUFDLENBQUM7QUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7RUFDakMsRUFBRSxNQUFNLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7RUFDakM7O0VDWkEsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0VBQ3pCLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0VBQ25DLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0VBQ25DLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBQzNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7RUFDeEIsRUFBRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDN0IsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtFQUNqQyxFQUFFLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ3RDLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7RUFDakMsRUFBRSxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN0QyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRTtFQUNyQixFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQzVELENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFO0VBQzlDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUNkLElBQUksT0FBTyxLQUFLLENBQUM7RUFDakIsR0FBRztBQUNIO0VBQ0EsRUFBRSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQzlELEVBQUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNuRTtFQUNBLEVBQUUsSUFBSSxRQUFRLEVBQUU7RUFDaEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7RUFDdkMsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7RUFDbEIsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSztFQUM1QyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtFQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUM7RUFDakIsS0FBSztFQUNMLElBQUksT0FBTyxHQUFHLENBQUM7RUFDZixHQUFHLENBQUMsQ0FBQztFQUNMLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRTtFQUNsRCxFQUFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUQ7RUFDQSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksWUFBWSxFQUFFO0VBQzlCLElBQUksT0FBTyxJQUFJLENBQUM7RUFDaEIsR0FBRztBQUNIO0VBQ0EsRUFBRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0VBQ3BFLEVBQUUsSUFBSSxRQUFRLEVBQUU7RUFDaEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7RUFDdkMsR0FBRztFQUNILEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0VBQ2xCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUs7RUFDNUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7RUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0VBQ2pCLEtBQUs7RUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0VBQ2YsR0FBRyxDQUFDLENBQUM7RUFDTCxFQUFFLE9BQU8sR0FBRyxDQUFDO0VBQ2IsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxLQUFLLEVBQUUsT0FBTyxHQUFHLDhDQUE4QyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ25JLEVBQUUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3JCO0VBQ0EsRUFBRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtFQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO0VBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FBQztFQUNqRSxLQUFLO0VBQ0wsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0VBQ2hCLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCO0VBQ0E7RUFDQSxFQUFFLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM1QztFQUNBLEVBQUUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM5RDtFQUNBLEVBQUUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM5RDtFQUNBLEVBQUUsTUFBTSx5QkFBeUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFDekU7RUFDQSxFQUFFLE1BQU0sNkJBQTZCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGO0VBQ0EsRUFBRSxJQUFJLGVBQWUsRUFBRTtFQUN2QixJQUFJLFlBQVksSUFBSSxDQUFDLENBQUM7RUFDdEIsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtFQUNsQjtFQUNBLElBQUksSUFBSSx3QkFBd0IsSUFBSSx3QkFBd0IsRUFBRTtFQUM5RCxNQUFNLFlBQVksSUFBSSxDQUFDLENBQUM7RUFDeEIsS0FBSztFQUNMLEdBQUcsTUFBTTtFQUNUO0VBQ0EsSUFBSSxJQUFJLHdCQUF3QixFQUFFO0VBQ2xDLE1BQU0sWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN4QixLQUFLO0VBQ0wsSUFBSSxJQUFJLHdCQUF3QixFQUFFO0VBQ2xDLE1BQU0sWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN4QixLQUFLO0VBQ0wsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLHlCQUF5QixFQUFFO0VBQ2pDLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN0QixHQUFHO0FBQ0g7RUFDQTtFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxJQUFJLEtBQUssSUFBSSxDQUFDLDZCQUE2QixDQUFDO0FBQzVFO0VBQ0EsRUFBRSxPQUFPO0VBQ1QsSUFBSSxTQUFTO0VBQ2IsSUFBSSxLQUFLLEVBQUUsWUFBWTtFQUN2QixJQUFJLFNBQVMsRUFBRTtFQUNmLE1BQU0sTUFBTSxFQUFFLGVBQWU7RUFDN0IsTUFBTSxlQUFlLEVBQUUsd0JBQXdCO0VBQy9DLE1BQU0sZUFBZSxFQUFFLHdCQUF3QjtFQUMvQyxNQUFNLGdCQUFnQixFQUFFLHlCQUF5QjtFQUNqRCxNQUFNLG9CQUFvQixFQUFFLDZCQUE2QjtFQUN6RCxLQUFLO0VBQ0wsR0FBRyxDQUFDO0VBQ0o7O0VDaFBBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUM3SCxFQUFFLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztFQUMzRTs7RUMxQ0E7RUFDQSxNQUFNSCxLQUFHLEdBQUcsK0RBQStELENBQUM7QUFDNUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtFQUMzQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDekJBLE1BQU0saUJBQWlCLEdBQUc7RUFDMUI7RUFDQSxFQUFFLFlBQVksRUFBRSxpQkFBaUI7QUFDakM7RUFDQTtFQUNBLEVBQUUsYUFBYSxFQUFFLGlCQUFpQjtBQUNsQztFQUNBO0VBQ0EsRUFBRSxjQUFjLEVBQUUsaUJBQWlCO0FBQ25DO0VBQ0E7RUFDQSxFQUFFLGNBQWMsRUFBRSx1QkFBdUI7QUFDekM7RUFDQTtFQUNBLEVBQUUsY0FBYyxFQUFFLHVCQUF1QjtBQUN6QztFQUNBO0VBQ0EsRUFBRSxjQUFjLEVBQUUsdUJBQXVCO0FBQ3pDO0VBQ0E7RUFDQSxFQUFFLGNBQWMsRUFBRSx1QkFBdUI7QUFDekM7RUFDQTtFQUNBLEVBQUUsY0FBYyxFQUFFLHVCQUF1QjtFQUN6QyxDQUFDLENBQUM7QUFDRjtFQUNBLElBQUksa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUM5RDtFQUNBLElBQUksYUFBYSxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ2hFO0VBQ0E7RUFDQSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hFO0VBQ0EsSUFBSSxvQkFBb0IsRUFBRTtFQUMxQixFQUFFLGtCQUFrQixHQUFHLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7RUFDblcsRUFBRSxhQUFhLEdBQUcsTUFBTSxHQUFHLGlCQUFpQixDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztFQUNoVyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ2xELEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLGtCQUFrQixHQUFHLGFBQWEsRUFBRSxvQkFBb0IsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7RUFDN0csRUFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDckVBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDJFQUEyRSxDQUFDO0FBQ3hGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtFQUN2QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDN0JBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDArQkFBMCtCLENBQUM7QUFDdi9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0VBQ3ZCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN0REE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsdUtBQXVLLENBQUM7QUFDcEw7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0VBQ3RCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN0Q0E7RUFDQSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUM7QUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0VBQy9CLEVBQUUsSUFBSSxNQUFNLENBQUM7QUFDYjtFQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2Q7RUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7RUFDL0IsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3ZDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztFQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7RUFDbEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0VBQ3pCLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7RUFDbEIsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO0VBQzdCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNmLEdBQUcsTUFBTTtFQUNULElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7RUFDckIsR0FBRztBQUNIO0VBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztFQUNoQixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUMxRCxFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QztFQUNBO0VBQ0EsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtFQUM5QixJQUFJLE9BQU8sWUFBWSxDQUFDO0VBQ3hCLEdBQUc7QUFDSDtFQUNBO0VBQ0EsRUFBRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztFQUM1QztFQUNBLEVBQUUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQzNEO0VBQ0EsRUFBRSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUM7RUFDQSxFQUFFLE9BQU8sUUFBUSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztFQUN4Qzs7RUNsRkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUU7RUFDNUIsRUFBRSxPQUFPLEdBQUcsS0FBSyxJQUFJLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7RUFDbEg7O0VDbkJBO0VBQ0EsTUFBTSxTQUFTLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtFQUN6QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQzs7RUNoQkE7RUFDQSxNQUFNLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQztBQUMzQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ2xDOztFQ2xCQTtFQUNPLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDO0VBQzVFO0VBQ08sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0I7O0VDSDVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7RUFDeEMsRUFBRSxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFO0VBQzNDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7RUFDakQsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0VBQ2pDO0VBQ0EsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVDLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDekUsRUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztFQUMzQixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDTyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7RUFDakMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7RUFDM0MsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ25ELEdBQUc7RUFDSCxFQUFFLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoQyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztFQUM1RCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxhQUFhLENBQUMsR0FBRyxFQUFFO0VBQ25DLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRTtFQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO0VBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztFQUMxRyxLQUFLO0VBQ0wsR0FBRztFQUNILENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRTtFQUNsQyxFQUFFLE1BQU0sR0FBRyxHQUFHLHlCQUF5QixDQUFDO0VBQ3hDLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQjtFQUNBLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtFQUNBLEVBQUUsSUFBSSxNQUFNLEVBQUU7RUFDZCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0VBQzNCLElBQUksT0FBTyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3ZFLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFO0VBQ3hDLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtFQUMxQyxJQUFJLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQztFQUNyQixJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDdkQsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDMUI7RUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDMUI7RUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDdkIsSUFBSSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDO0VBQ0E7RUFDQSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0VBQ3JCO0VBQ0EsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUN4RSxLQUFLLE1BQU07RUFDWCxNQUFNLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQztFQUNBO0VBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtFQUM5QixRQUFRLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDMUYsT0FBTyxNQUFNO0VBQ2I7RUFDQSxRQUFRLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM5RSxPQUFPO0VBQ1AsS0FBSztFQUNMLEdBQUc7RUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYjs7RUNuSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7RUFDdkIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ2pEOztFQ2ZBLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDO0FBQy9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7RUFDMUIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJSSxNQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7RUFDdkksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtFQUNoQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7RUFDaEQsS0FBSztBQUNMO0VBQ0EsSUFBSSxPQUFPLEtBQUssQ0FBQztFQUNqQixHQUFHO0FBQ0g7RUFDQTtFQUNBO0VBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtFQUMvQixJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN2QixHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0VBQ2QsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDckMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7RUFDZixFQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDaEMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztFQUM1RCxFQUFFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztFQUN2RCxFQUFFLE1BQU0sS0FBSyxHQUFHLGNBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RHO0VBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtFQUN6QyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztFQUNwRixHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQzNELENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0VBQy9DLEVBQUUsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO0VBQ3ZCLElBQUksT0FBTyxFQUFFLENBQUM7RUFDZCxHQUFHO0FBQ0g7RUFDQSxFQUFFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztFQUNqQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmO0VBQ0EsRUFBRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0VBQ3BDLElBQUksSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQztFQUMzQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNqRCxHQUFHLE1BQU07RUFDVCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvQyxHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sT0FBTyxHQUFHLEdBQUcsQ0FBQztFQUN2QixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNB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QVMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDaEQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckU7RUFDQSxFQUFFLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzdEO0VBQ0EsRUFBRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7RUFDQSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDckU7O0VDM0NBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxXQUFX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LEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztBQUNmO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ2pCO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztFQUNuQixFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQztBQUNwQjtFQUNBO0VBQ0E7RUFDQSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7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QU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0VBQ0EsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO0VBQ2QsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNsQyxHQUFHO0VBQ0gsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUMzQzs7RUN6QkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRTtFQUN2RSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUQ7O0VDdkJBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRTtFQUNsQyxFQUFFLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdEY7RUFDQSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQy9CO0VBQ0EsSUFBSSxPQUFPLElBQUksSUFB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O0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRTtFQUNuQyxFQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0VBQ3ZDLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDcEQ7O0VDMUJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUU7RUFDL0IsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLO0VBQ2xDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztFQUM5QixHQUFHLENBQUMsQ0FBQztFQUNMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
|
|
2610
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNVbmRlZmluZWQuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc051bGwuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc05pbC5qcyIsIi4uL3NyYy9ub3JtYWxpemVTdHJpbmcuanMiLCIuLi9zcmMvZm9ybWF0QmFua0NhcmQuanMiLCIuLi9zcmMvcmVwbGFjZUNoYXIuanMiLCIuLi9zcmMvbnVtYmVyVG9DaGluZXNlLmpzIiwiLi4vc3JjL2J5dGVzVG9TaXplLmpzIiwiLi4vc3JjL3BhcnNlSWRDYXJkLmpzIiwiLi4vc3JjL2Jsb2JUb0RhdGFVUkwuanMiLCIuLi9zcmMvZGF0YVVSTFRvQmxvYi5qcyIsIi4uL3NyYy9zZXREYXRhVVJMUHJlZml4LmpzIiwiLi4vc3JjL3NhZmVEYXRlLmpzIiwiLi4vc3JjL2Zvcm1hdE1vYmlsZS5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTnVtYmVyLmpzIiwiLi4vc3JjL3RpbWVzLmpzIiwiLi4vc3JjL3BsdXMuanMiLCIuLi9zcmMvbWludXMuanMiLCIuLi9zcmMvZGl2aWRlLmpzIiwiLi4vc3JjL3JvdW5kLmpzIiwiLi4vc3JjL3dhaXRUaW1lLmpzIiwiLi4vc3JjL2NhbGN1bGF0ZUN1cnNvclBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiDmo4DmtYvlgLznmoQgYHRvU3RyaW5nYCDnsbvlnotcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lIOexu+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+eggX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCDouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIHtib29sZWFufSDmoKHpqoznoIHmmK/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+5qih5byPIOaIliDln7rnoYDop4TliJnkuI3pgJrov4fnm7TmjqXov5Tlm55cbiAgaWYgKGxvb3NlIHx8ICFwYXNzQmFzZVJ1bGUpIHtcbiAgICByZXR1cm4gcGFzc0Jhc2VSdWxlO1xuICB9XG5cbiAgLy8g5YmNMTfkvY1cbiAgY29uc3QgcHJlQ29kZSA9IHZhbHVlU3RyLnN1YnN0cmluZygwLCAxNyk7XG4gIC8vIOagoemqjOeggVxuICBjb25zdCBsYXN0Q29kZSA9IHZhbHVlU3RyLnN1YnN0cmluZyh2YWx1ZVN0ci5sZW5ndGggLSAxKTtcbiAgLy8g6K6h566X5qCh6aqM56CBXG4gIGNvbnN0IGNoZWNrQ29kZSA9IHN1bUNoZWNrQ29kZShwcmVDb2RlKTtcblxuICByZXR1cm4gbGFzdENvZGUgPT09IGNoZWNrQ29kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTb2NpYWxDcmVkaXRDb2RlO1xuIiwiY29uc3QgY29uZmlnID0ge1xuICAvLyDnpoHnlKh3YXJuaW5n5o+Q56S6XG4gIGRpc2FibGVXYXJuaW5nOiB0cnVlXG59O1xuXG4vKipcbiAqIOiuvue9ruemgeatondhcm5pbmfmj5DnpLpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6RGVidWcuZm9ybWF0QmFua0NhcmRcbiAqIEBzaW5jZSAzLjYuMVxuICogQHBhcmFtIHtib29sZWFufSBib29sIOaYr+WQpuemgeatondhcm5pbmfmj5DnpLpcbiAqL1xuZnVuY3Rpb24gc2V0RGlzYWJsZVdhcm5pbmcoYm9vbCkge1xuICBjb25maWcuZGlzYWJsZVdhcm5pbmcgPSAhIWJvb2w7XG59XG5cbmV4cG9ydCB7IGNvbmZpZywgc2V0RGlzYWJsZVdhcm5pbmcgfTtcbiIsImltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnTnVtYmVyID0gL1tcXGRdLztcbmNvbnN0IHJlZ0xvd2VyQ2FzZUxldHRlciA9IC9bYS16XS87XG5jb25zdCByZWdVcHBlckNhc2VMZXR0ZXIgPSAvW0EtWl0vO1xuY29uc3QgcmVnQWxsTnVtYmVyQW5kTGV0dGVyID0gL1tcXGR8YS16XS9naTtcblxuLyoqXG4gKiDmmK/lkKbljIXlkKvmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4Dmn6XnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvmlbDlrZdcbiAqL1xuZnVuY3Rpb24gaGFzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gcmVnTnVtYmVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzTG93ZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnTG93ZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnVXBwZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqL1xuZnVuY3Rpb24gaGFzSGV4KHZhbCkge1xuICByZXR1cm4gdmFsLmluZGV4T2YoJ1xcXFx4JykgPiAtMSB8fCB2YWwuaW5kZXhPZignXFxcXHUnKSA+IC0xO1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyc10g54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr54m55q6K5a2X56ymXG4gKi9cbmZ1bmN0aW9uIGhhc1NwZWNpYWxDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzcGVjaWFsQ2hhcnMgPSB2YWwucmVwbGFjZShyZWdBbGxOdW1iZXJBbmRMZXR0ZXIsICcnKTtcbiAgY29uc3QgcmVnQ2hhcnMgPSBoYXNIZXgoY2hhcnMpID8gbmV3IFJlZ0V4cChgWyR7Y2hhcnN9XWApIDogbnVsbDtcblxuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG5cbiAgbGV0IHJldCA9IGZhbHNlO1xuICBzcGVjaWFsQ2hhcnMuc3BsaXQoJycpLnNvbWUoKGNoYXJJdGVtKSA9PiB7XG4gICAgaWYgKGNoYXJzLmluZGV4T2YoY2hhckl0ZW0pID4gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJzIOmdnuazleWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICovXG5mdW5jdGlvbiBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWwsIGNoYXJzID0gJycpIHtcbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG5cbiAgaWYgKCFjaGFycyAmJiBzcGVjaWFsQ2hhcnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFteJHtjaGFyc31dYCkgOiBudWxsO1xuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA9PT0gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBhc3N3b3JkQ29udGFpbmVzIC0g6aqM6K+B5a+G56CB55qE5YyF5ZCr5YaF5a65XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG51bWJlciAtIOWMheWQq+aVsOWtl1xuICogQHByb3BlcnR5IHtib29sZWFufSBsb3dlckNhc2VMZXR0ZXIgLSDljIXlkKvlsI/lhpnlrZfmr41cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXBwZXJDYXNlTGV0dGVyIC0g5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNwZWNpYWxDaGFyYWN0ZXIgLSDljIXlkKvnibnmrorlrZfnrKZcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdW5hbGxvd2FibGVDaGFyYWN0ZXIgLSDljIXlkKvpnZ7ms5XlrZfnrKZcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRlUGFzc3dvcmRSZXR1cm4gLSDpqozor4Hnu5PmnpxcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdmFsaWRhdGVkIC0g6aqM6K+B57uT5p6c77yM5qC55o2u5a+G56CB5by65bqm44CB5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ym5b6X5Ye6XG4gKiBAcHJvcGVydHkge251bWJlcn0gbGV2ZWwgLSDlvLrluqbnuqfliKvvvIzljIXlkKvmlbDlrZcv5aSn5bCP5YaZ5a2X5q+NL+eJueauiuWtl+esplxuICogQHByb3BlcnR5IHtQYXNzd29yZENvbnRhaW5lc30gY29udGFpbmVzIC0g5YyF5ZCr5YaF5a65XG4gKi9cblxuLyoqXG4gKiDpqozor4Hlr4bnoIHvvIjmlbDlrZfjgIHlpKflsI/lhpnlrZfmr43jgIHnibnmrorlrZfnrKbjgIHpnZ7ms5XlrZfnrKbvvIlcbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHNpbmNlIDMuNy4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIHtWYWxpZGF0ZVBhc3N3b3JkUmV0dXJufSDpqozor4Hnu5PmnpxcbiAqIEBleGFtcGxlXG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnYTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IHRydWUsIC8vIOmqjOivgee7k+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+BXG4gKiBAZXhhbXBsZVxuICogLy8g56ys5LiA5LujIDExIOS9jVxuICogaXNITUNhcmQoJ2gzMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ0gzMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ20zMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ00zMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICpcbiAqIC8vIOesrOS6jOS7oyA5IOS9jVxuICogaXNITUNhcmQoJ2gzMjAzMTE3NycpIC8vIHRydWVcbiAqIGlzSE1DYXJkKCdIMzIwMzExNzcnKSAvLyB0cnVlXG4gKiBpc0hNQ2FyZCgnbTMyMDMxMTc3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ00zMjAzMTE3NycpIC8vIHRydWVcbiAqL1xuZnVuY3Rpb24gaXNITUNhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnSE1DYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0hNQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HmraPliJnvvIzmlK/mjIHkuIDmrKHmgKfnn63mnJ/lj7Dog57or4FcbmNvbnN0IHJlZ1RXQ2FyZCA9IC9eKFxcZHs4fXxbXFxkYS16XXsxMH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivge+8jOS/l+ensOWPsOiDnuivgeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVFdDYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/lj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4F85Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4FcbiAqIEBleGFtcGxlXG4gKiBpc1RXQ2FyZCgnMTIzNDU2NzgnKSAvLyB0cnVlXG4gKiBpc1RXQ2FyZCgnMDcyNTc0NTYnKSAvLyB0cnVlXG4gKlxuICogLy8g5LiA5qyh5oCn55+t5pyfXG4gKiBpc1RXQ2FyZCgnRjI5MDI5OTk3NycpIC8vIHRydWVcbiAqL1xuZnVuY3Rpb24gaXNUV0NhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnVFdDYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RXQ2FyZDtcbiIsIi8vIOacgOWkp+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuLy8g5pyA5bCP5a6J5YWo5pWw5a2XXG5leHBvcnQgY29uc3QgTUlOX1NBRkVfSU5URUdFUiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIHx8IC05MDA3MTk5MjU0NzQwOTkxO1xuIiwiLyoqXG4gKiDlj4LogIM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZWZlL251bWJlci1wcmVjaXNpb24vYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gKlxuICog6Kej5Yaz5rWu5Yqo6L+Q566X6Zeu6aKY77yM6YG/5YWN5bCP5pWw54K55ZCO5Lqn55Sf5aSa5L2N5pWw5ZKM6K6h566X57K+5bqm5o2f5aSx44CCXG4gKiDpl67popjnpLrkvovvvJoyLjMgKyAyLjQgPSA0LjY5OTk5OTk5OTk5OTk5Oe+8jDEuMCAtIDAuOSA9IDAuMDk5OTk5OTk5OTk5OTk5OThcbiAqL1xuXG5pbXBvcnQgeyBNQVhfU0FGRV9JTlRFR0VSLCBNSU5fU0FGRV9JTlRFR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOaYr+WQpuS4uuenkeWtpuiuoeaVsOazleaVsOWtl1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NpZW50aWZpY051bWJlcihudW0pIHtcbiAgcmV0dXJuIC9cXGQrXFwuP1xcZCplW1xcK1xcLV0qXFxkKy9pLnRlc3QobnVtKTtcbn1cblxuLyoqXG4gKiDmiorplJnor6/nmoTmlbDmja7ovazmraNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MTJdIOWwj+aVsOeCueeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleGFtcGxlXG4gKlxuICogIHN0cmlwKDAuMDk5OTk5OTk5OTk5OTk5OTgpPTAuMVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAobnVtLCBwcmVjaXNpb24gPSAxMikge1xuICByZXR1cm4gK3BhcnNlRmxvYXQobnVtLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xufVxuXG4vKipcbiAqIOiuoeeul+aVsOWtl+eahOWwj+aVsOeCuemVv+W6pu+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn0g5bCP5pWw54K56ZW/5bqmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdExlbmd0aChudW0pIHtcbiAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gIGNvbnN0IGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9lL2kpO1xuICBjb25zdCBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICByZXR1cm4gbGVuID4gMCA/IGxlbiA6IDA7XG59XG5cbi8qKlxuICog5oqK5bCP5pWw6L2s5oiQ5pW05pWw77yM5pSv5oyB56eR5a2m6K6h5pWw5rOV44CC5aaC5p6c5piv5bCP5pWw5YiZ5pS+5aSn5oiQ5pW05pWwXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQyRml4ZWQobnVtKSB7XG4gIGlmICghaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIHJldHVybiBOdW1iZXIobnVtLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKSk7XG4gIH1cbiAgY29uc3QgZExlbiA9IGRpZ2l0TGVuZ3RoKG51bSk7XG4gIHJldHVybiBkTGVuID4gMCA/IHN0cmlwKCtudW0gKiBNYXRoLnBvdygxMCwgZExlbikpIDogK251bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvmlbDlrZfmmK/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGVmdFplcm8obnVtKSB7XG4gIGNvbnN0IHJlZyA9IC9eKFsrLV0pPygwKykoWzAtOVxcLl0rKSQvO1xuICBjb25zdCByZXN1bHQgPSByZWcuZXhlYyhudW0pO1xuXG4gIGxldCBzaWduO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICBzaWduID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHJldHVybiBzaWduICsgKHJlc3VsdFszXVswXSA9PT0gJy4nID8gJzAnICsgcmVzdWx0WzNdIDogcmVzdWx0WzNdKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICog56eR5a2m6K6h5pWw5rOV6L2s5o2i5oiQ5pmu6YCa5pWw5a2XXG4gKlxuICogSmF2YVNjcmlwdOWcqOS7peS4i+aDheaZr+S8muiHquWKqOWwhuaVsOWAvOi9rOaNouS4uuenkeWtpuiuoeaVsOazle+8mlxuICogIDEu5bCP5pWw54K55YmN55qE5pWw5a2X5Liq5pWw5aSn5LqO562J5LqOMjLkvY1cbiAqICAyLuWwj+aVsOeCueWJjei+ueaYrzDvvIzlsI/mlbDngrnlkI7ljYHliIbkvY3vvIjljIXlkKvljYHliIbkvY3vvInkuYvlkI7ov57nu63pm7bnmoTkuKrmlbDlpKfkuo7nrYnkuo425LiqXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDnp5HlraborqHmlbDms5XmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOaNouWQjueahOaVsOWtl+Wtl+espuS4slxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkge1xuICBpZiAoaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHplcm8gPSAnMCc7XG4gICAgY29uc3QgcGFydHMgPSBTdHJpbmcobnVtKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdlJyk7XG4gICAgY29uc3QgZSA9IHBhcnRzLnBvcCgpOyAvLyDlrZjlgqjmjIfmlbBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbCA9IE1hdGguYWJzKGUpOyAvLyDlj5bnu53lr7nlgLzvvIxsLTHlsLHmmK8w55qE5Liq5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNpZ24gPSBlIC8gbDsgLy/liKTmlq3mraPotJ9cbiAgICBjb25zdCBjb2VmZl9hcnJheSA9IHBhcnRzWzBdLnNwbGl0KCcuJyk7IC8vIOWwhuezu+aVsOaMieeFp+Wwj+aVsOeCueaLhuWIhlxuXG4gICAgLy/lpoLmnpzmmK/lsI/mlbBcbiAgICBpZiAoc2lnbiA9PT0gLTEpIHtcbiAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5bCP5pWw77yM5ou85o6lMOWSjOWwj+aVsOeCuVxuICAgICAgbnVtID0gemVybyArICcuJyArIG5ldyBBcnJheShsKS5qb2luKHplcm8pICsgY29lZmZfYXJyYXkuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlYyA9IGNvZWZmX2FycmF5WzFdO1xuXG4gICAgICAvL+WmguaenOaYr+aVtOaVsO+8jOWwhuaVtOaVsOmZpOesrOS4gOS9jeS5i+WklueahOmdnumbtuaVsOWtl+iuoeWFpeS9jeaVsO+8jOebuOW6lOeahOWHj+WwkTDnmoTkuKrmlbBcbiAgICAgIGlmIChsIC0gZGVjLmxlbmd0aCA8IDApIHtcbiAgICAgICAgbnVtID0gdHJpbUxlZnRaZXJvKGNvZWZmX2FycmF5WzBdICsgZGVjLnN1YnN0cmluZygwLCBsKSkgKyAnLicgKyBkZWMuc3Vic3RyaW5nKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy/mi7zmjqXlrZfnrKbkuLLvvIzlpoLmnpzmmK/mlbTmlbDvvIzkuI3pnIDopoHmi7zmjqXlsI/mlbDngrlcbiAgICAgICAgbnVtID0gY29lZmZfYXJyYXkuam9pbignJykgKyBuZXcgQXJyYXkobCAtIGRlYy5sZW5ndGggKyAxKS5qb2luKHplcm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBudW07XG59XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOYU5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOYU5cbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYU4oTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBfaXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpICYmIGlzTmFOKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX2lzTmFOO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSwgc2NpZW50aWZpY1RvTnVtYmVyLCBpc1NjaWVudGlmaWNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgaXNOYU4gZnJvbSAnLi91dGlscy90eXBlL2lzTmFOJztcbmltcG9ydCB7IHRyaW1MZWZ0WmVybyB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnID0gL15bKy1dP1xcZCpcXC4/XFxkKiQvO1xuXG4vKipcbiAqIOajgOafpeaVsOWtl+aIluaVsOWtl+Wtl+espuS4slxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtXG4gKiBAcmV0dXJucyDmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gdHJpbUxlZnRaZXJvKGludFN0cik7XG4gIGludFN0ciA9IGludFN0clswXSA9PT0gJysnID8gaW50U3RyLnN1YnN0cmluZygxKSA6IGludFN0cjsgLy8g5Y675o6JK+espuWPt1xuICBjb25zdCBuZWdhdGl2ZVN5bWJvbCA9IE51bWJlcihpbnRTdHIpIDwgMCA/ICctJyA6ICcnO1xuICBjb25zdCByZUFyciA9IG5lZ2F0aXZlU3ltYm9sID8gaW50U3RyLnN1YnN0cmluZygxKS5zcGxpdCgnJykucmV2ZXJzZSgpIDogaW50U3RyLnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZUFyci5sZW5ndGg7IGkrKykge1xuICAgIHR4dCArPSByZUFycltpXSArICgoaSArIDEpICUgMyA9PT0gMCAmJiBpICsgMSAhPT0gcmVBcnIubGVuZ3RoID8gdGhvdXNhbmQgOiAnJyk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRpdmVTeW1ib2wgKyB0eHQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJblsI/mlbDpg6jliIbvvIzlpoLmnpzkvb/nlKggdG9GaXhlZO+8jOi2heWkp+mineaVsOWtl+S8muiHquWKqOiiq+aIquaWrVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjU3RyIOWwj+aVsOeCuemDqOWIhueahOWtl+espuS4slxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvbiDkv53nlZnkvY3mlbBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsIOWwj+aVsOeCueespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCkge1xuICBpZiAocHJlY2lzaW9uID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgemVybyA9IDA7XG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoZGVjU3RyICYmIE51bWJlcihkZWNTdHIpID4gMCkge1xuICAgIGxldCB0bXBOdW0gPSBwYXJzZUZsb2F0KCcwLicgKyBkZWNTdHIpO1xuICAgIHJldCA9IHRtcE51bS50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyaW5nKDIpO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IHplcm8udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHJldHVybiBkZWNpbWFsICsgcmV0O1xufVxuXG4vKipcbiAqIOagvOW8j+WMlumHkeminVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vbmV5XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g6ZyA6L2s5o2i6YeR6aKdICjmnIDlpKfvvJo5MDA3MTk5MjU0NzQwOTkxIOacgOWwj++8miAtOTAwNzE5OTI1NDc0MDk5MSlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSDph5Hpop3moLzlvI/ljJbphY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbb3B0aW9ucy5wcmVjaXNpb249Ml0gLSDkv53nlZnkvY3mlbAg77yI5pyA6auY77yaMTDkvY3vvIlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zeW1ib2xdIC0g6LSn5biB56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudGhvdXNhbmQ9XCIsXCJdIC0g5Y2D5YiG5L2N56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIi5cIl0gLSDlsI/mlbDkvY3nrKblj7dcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmHkeminVxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmlbTmlbBcbiAqIGZvcm1hdE1vbmV5KCcxMDAwJyk7XG4gKiAvLyA9PiAxLDAwMC4wMFxuICpcbiAqIC8vIOWwj+aVsO+8iOm7mOiupOS/neeVmTLkvY3lsI/mlbDvvIlcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzJyk7XG4gKiAvLyA9PiAzLDAwMC4wM1xuICpcbiAqIC8vIOS/neeVmTTkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzMDAnLCB7IHByZWNpc2lvbjogNCB9KTtcbiAqIC8vID0+IDMsMDAwLjAzMDBcbiAqXG4gKiAvLyDkv53nlZkxMOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzE1MDAuMicsIHsgcHJlY2lzaW9uOiAxMCB9KTtcbiAqIC8vID0+IDEsNTAwLjIwMDAwMDAwMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljZXkvY3nrKblj7dcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgc3ltYm9sOiAnJCcgfSk7XG4gKiAvLyA9PiAkMSwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljYPkvY3liIblibLnrKbvvIjpu5jorqQnLCfvvIlcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgdGhvdXNhbmQ6ICd8JyB9KTtcbiAqIC8vID0+IDF8MDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5bCP5pWw5L2N5YiG5Ymy56ymKOm7mOiupCcuJylcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgZGVjaW1hbDogJyYnIH0pO1xuICogLy8gPT4gMSwwMDAmMDBcbiAqL1xuY29uc3QgZm9ybWF0TW9uZXkgPSAobnVtLCB7IHByZWNpc2lvbiA9IDIsIHN5bWJvbCwgdGhvdXNhbmQgPSAnLCcsIGRlY2ltYWwgPSAnLicgfSA9IHt9KSA9PiB7XG4gIC8vIOaVsOWtl+WPguaVsOS4jeato+ehru+8jOi/lOWbnuepuuWtl+espuS4slxuICAvLyBAdHMtaWdub3JlXG4gIGlmICghY2hlY2tOdW1iZXIobnVtKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOWPguaVsOinhOaVtOWMllxuICBpZiAodHlwZW9mIHByZWNpc2lvbiAhPT0gJ251bWJlcicgfHwgaXNOYU4ocHJlY2lzaW9uKSB8fCBwcmVjaXNpb24gPCAwKSB7XG4gICAgcHJlY2lzaW9uID0gMjtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24gPiAxMCkge1xuICAgIHByZWNpc2lvbiA9IDEwO1xuICB9XG4gIHN5bWJvbCA9IHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnID8gc3ltYm9sIDogJyc7XG4gIHRob3VzYW5kID0gdHlwZW9mIHRob3VzYW5kID09PSAnc3RyaW5nJyA/IHRob3VzYW5kIDogJywnO1xuICBkZWNpbWFsID0gdHlwZW9mIGRlY2ltYWwgPT09ICdzdHJpbmcnID8gZGVjaW1hbCA6ICcuJztcblxuICAvLyDovazmjaLmlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAgY29uc3QgbnVtU3RyID0gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkgKyAnJztcbiAgLy8g5pW05pWw5ZKM5bCP5pWw6YOo5YiGXG4gIGNvbnN0IFtpbnRTdHIsIGRlY1N0cl0gPSBudW1TdHIuc3BsaXQoJy4nKTtcblxuICByZXR1cm4gc3ltYm9sICsgZm9ybWF0SW50KGludFN0ciwgdGhvdXNhbmQpICsgZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdE1vbmV5O1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpVbmRlZmluZWRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNVbmRlZmluZWRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpVbmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVbmRlZmluZWQodW5kZWZpbmVkKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVW5kZWZpbmVkKHZvaWQgMClcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VuZGVmaW5lZChudWxsKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdWxsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTnVsbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bGxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdWxsKG51bGwpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdWxsKHZvaWQgMClcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbiIsImltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbmltcG9ydCBpc051bGwgZnJvbSAnLi9pc051bGwnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uiB1bmRlZmluZWQg5oiWIG51bGxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSA0LjMuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLogdW5kZWZpbmVkIOaIliBudWxsXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgfHwgaXNOdWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOaWw7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcbmltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vKipcbiAqIOinhOaVtOWMluWtl+espuS4suOAguWmguaenOWAvOS4uiB1bmRlZmluZWQg5oiWIG51bGwg5bCG6L2s5Li656m65a2X56ym5Liy77yM5aaC5p6c5YC85LiN5piv5a2X56ym5Liy57G75Z6L5bCG6L2s5Li65a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iubm9ybWFsaXplU3RyaW5nXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nI3N0cmluZ19pbnN0YW5jZXN8U3RyaW5nfVxuICogQHNpbmNlIDQuMy4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOW+heWkhOeQhueahOWAvFxuICogQHJldHVybnMge3N0cmluZ30g6KeE5pW05YyW55qE5YC8XG4gKiBAZXhhbXBsZVxuICogbm9ybWFsaXplU3RyaW5nKCk7IC8vICcnXG4gKiBub3JtYWxpemVTdHJpbmcodW5kZWZpbmVkKTsgLy8gJydcbiAqIG5vcm1hbGl6ZVN0cmluZyh2b2lkIDApOyAvLyAnJ1xuICogbm9ybWFsaXplU3RyaW5nKG51bGwpOyAvLyAnJ1xuICpcbiAqIG5vcm1hbGl6ZVN0cmluZyh0cnVlKTsgLy8gJ3RydWUnXG4gKiBub3JtYWxpemVTdHJpbmcoTmFOKTsgLy8gJ05hTidcbiAqIG5vcm1hbGl6ZVN0cmluZygxKTsgLy8gJzEnXG4gKiBub3JtYWxpemVTdHJpbmcoJ2EnKTsgLy8gJ2EnXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyh2YWx1ZSkge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVTdHJpbmc7XG4iLCJpbXBvcnQgbm9ybWFsaXplU3RyaW5nIGZyb20gJy4vbm9ybWFsaXplU3RyaW5nJztcblxuLyoqXG4gKiDmoLzlvI/ljJbpk7booYzljaHlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5mb3JtYXRCYW5rQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFua0NhcmRObyDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIiBcIl0g6Ze06ZqU5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTRdIOmXtOmalOmVv+W6plxuICogQHJldHVybnMge3N0cmluZ30g5qC85byP5YyW55qE6ZO26KGM5Y2h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIDE55L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MCAwMThcbiAqXG4gKiAvLyAxNuS9jemTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IDYyMjggNDgwNCAwMjU2IDQ4OTBcbiAqXG4gKiAvLyDohLHmlY/pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4KioqKioqKio4OTAnKTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqIDg5MFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2h77yMXCItXCLpl7TpmpRcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJywge2NoYXI6ICctJ30pO1xuICogLy8gPT4gNjIyOC00ODA0LTAyNTYtNDg5MFxuICpcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QmFua0NhcmQoYmFua0NhcmRObyA9ICcnLCB7IGNoYXIgPSAnICcsIGxlbmd0aCA9IDQgfSA9IHt9KSB7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYCgueyR7bGVuZ3RofX0pYCwgJ2cnKTtcbiAgY29uc3QgcmVnQ2hhciA9IG5ldyBSZWdFeHAoYCR7Y2hhcn1gLCAnZycpO1xuXG4gIGNvbnN0IHJlYWxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhiYW5rQ2FyZE5vKS5yZXBsYWNlKHJlZ0NoYXIsICcnKTtcbiAgY29uc3Qgc3RyID0gcmVhbFZhbHVlLnJlcGxhY2UocmVnLCBgJDEke2NoYXJ9YCk7XG5cbiAgcmV0dXJuIHJlYWxWYWx1ZS5sZW5ndGggJSBsZW5ndGggPT09IDAgPyBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QmFua0NhcmQ7XG4iLCIvKipcbiAqIOabv+aNouWtl+espu+8jOW6lOeUqOWcuuaZr+Wmgu+8muiEseaVj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnJlcGxhY2VDaGFyXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIg6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnN0YXJ0PTNdIOW8gOWni+S9jee9rlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVuZD0tNF0g57uT5p2f5L2N572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIipcIl0g5pu/5o2i5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucmVwZWF0XSDmm7/mjaLlrZfnrKbnmoTph43lpI3mrKHmlbDvvIzpu5jorqTkuLrmm7/mjaLlhoXlrrnplb/luqbvvIzlj6/orr7nva7kuLrlm7rlrprlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5leGNsdWRlXSDmjpLpmaTlrZfnrKbvvIzlpoLmnpzmjIflrprmjpLpmaTpobnvvIxyZXBlYXTorr7nva7ml6DmlYhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWkhOeQhuWQjueahOWtl+esplxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmiYvmnLrlj7dcbiAqIHJlcGxhY2VDaGFyKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gMTMwKioqKjAwMDBcbiAqXG4gKiAvLyDouqvku73or4FcbiAqIHJlcGxhY2VDaGFyKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IDEzMCoqKioqKioqKioqMjI4OFxuICpcbiAqIC8vIOmCrueusVxuICogY29uc3QgZW1haWwgPSAnMTIzNDVAcXEuY29tJ1xuICogcmVwbGFjZUNoYXIoZW1haWwsIHtzdGFydDogMiwgZW5kOiBlbWFpbC5pbmRleE9mKCdAJyksIHJlcGVhdDogNH0pO1xuICogLy8gPT4gMTIqKioqQHFxLmNvbVxuICpcbiAqIC8vIOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnLCB7c3RhcnQ6IDAsIGVuZDogLTQsIHJlcGVhdDogNH0pO1xuICogLy8gPT4gKioqKjAwMThcbiAqXG4gKiAvLyDluKbmoLzlvI/nmoTpk7booYzljaHlj7dcbiAqIHJlcGxhY2VDaGFyKCc2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOCcsIHtzdGFydDogNCwgZW5kOiAtNCwgZXhjbHVkZTogJyAnfSk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiAqKioqIDAxOFxuICpcbiAqIC8vIOeUqOaIt+WQjVxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUNoYXIoc3RyID0gJycsIHsgc3RhcnQgPSAzLCBlbmQgPSAtNCwgY2hhciA9ICcqJywgcmVwZWF0LCBleGNsdWRlIH0gPSB7fSkge1xuICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuXG4gIC8vIOW8gOWni+S9jee9rui2hei/h3N0cumVv+W6plxuICBpZiAoTWF0aC5hYnMoc3RhcnQpID49IHN0ckxlbikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID49IDAgPyBzdGFydCA6IHN0ckxlbiArIHN0YXJ0O1xuICBlbmQgPSBlbmQgPj0gMCA/IGVuZCA6IHN0ckxlbiArIGVuZDtcblxuICAvLyDlvIDlp4vkvY3nva7lpKfkuo7nu5PmnZ/kvY3nva5cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBsZXQgbWlkZGxlU3RyID0gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFteJHtleGNsdWRlfV1gLCAnZycpO1xuICAgIG1pZGRsZVN0ciA9IG1pZGRsZVN0ci5yZXBsYWNlKHJlZywgY2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmVwZWF0ID0gdHlwZW9mIHJlcGVhdCA9PT0gJ251bWJlcicgJiYgcmVwZWF0ID49IDAgPyByZXBlYXQgOiBtaWRkbGVTdHIubGVuZ3RoO1xuICAgIG1pZGRsZVN0ciA9IGNoYXIucmVwZWF0KHJlcGVhdCk7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBzdGFydCkgKyBtaWRkbGVTdHIgKyBzdHIuc3Vic3RyaW5nKGVuZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2VDaGFyO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuLy8g566A5L2TXG5jb25zdCBjaG5OdW1iZXJDaGFyID0gWyfpm7YnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nLCAn5LiDJywgJ+WFqycsICfkuZ0nXTtcbmNvbnN0IGNoblVuaXRDaGFyID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcblxuLy8g57mB5L2TXG5jb25zdCBiaWc1TnVtYmVyQ2hhciA9IFsn6Zu2JywgJ+WjuScsICfotLAnLCAn5Y+BJywgJ+iChicsICfkvI0nLCAn6ZmGJywgJ+afkicsICfmjYwnLCAn546WJ107XG5jb25zdCBiaWc1VW5pdENoYXIgPSBbJycsICfmi74nLCAn5L2wJywgJ+S7nyddO1xuXG4vLyDmlbDlrZflrZfnrKbjgIHorqHmlbDljZXkvY1cblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgbnVtYmVyQ2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdENoYXI7XG5cbi8qKlxuICogQHR5cGUge3N0cmluZ1tdfVxuICogQHByaXZhdGVcbiAqL1xubGV0IHVuaXRTZWN0aW9uO1xuXG4vKipcbiAqIOavj+S4quWwj+iKgueahOWGhemDqOi/m+ihjOi9rOWMllxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc2VjdGlvbiDmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOWMlueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBzZWN0aW9uVG9DaGluZXNlKHNlY3Rpb24pIHtcbiAgbGV0IHN0ciA9ICcnLFxuICAgIGNobnN0ciA9ICcnLFxuICAgIHplcm8gPSBmYWxzZSwgLy96ZXJv5Li65piv5ZCm6L+b6KGM6KGl6Zu277yMIOesrOS4gOasoei/m+ihjOWPluS9meeUseS6juS4uuS4quS9jeaVsO+8jOm7mOiupOS4jeihpembtlxuICAgIHVuaXRQb3MgPSAwO1xuXG4gIHdoaWxlIChzZWN0aW9uID4gMCkge1xuICAgIC8vIOWvueaVsOWtl+WPluS9mTEw77yM5b6X5Yiw55qE5pWw5Y2z5Li65Liq5L2N5pWwXG4gICAgbGV0IHYgPSBzZWN0aW9uICUgMTA7XG5cbiAgICAvL+WmguaenOaVsOWtl+S4uumbtu+8jOWImeWvueWtl+espuS4sui/m+ihjOihpembtlxuICAgIGlmICh2ID09IDApIHtcbiAgICAgIGlmICh6ZXJvKSB7XG4gICAgICAgIC8v5aaC5p6c6YGH5Yiw6L+e57ut5aSa5qyh5Y+W5L2Z6YO95pivMO+8jOmCo+S5iOWPqumcgOihpeS4gOS4qumbtuWNs+WPr1xuICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICAgIGNobnN0ciA9IG51bWJlckNoYXJbdl0gKyBjaG5zdHI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v56ys5LiA5qyh5Y+W5L2Z5LmL5ZCO77yM5aaC5p6c5YaN5qyh5Y+W5L2Z5Li66Zu277yM5YiZ6ZyA6KaB6KGl6Zu2XG4gICAgICB6ZXJvID0gdHJ1ZTtcbiAgICAgIHN0ciA9IG51bWJlckNoYXJbdl07XG4gICAgICBzdHIgKz0gdW5pdENoYXJbdW5pdFBvc107XG4gICAgICBjaG5zdHIgPSBzdHIgKyBjaG5zdHI7XG4gICAgfVxuICAgIHVuaXRQb3MrKztcbiAgICBzZWN0aW9uID0gTWF0aC5mbG9vcihzZWN0aW9uIC8gMTApO1xuICB9XG4gIHJldHVybiBjaG5zdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5pW05pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY29udmVydEludGVnZXIobnVtKSB7XG4gIG51bSA9IE1hdGguZmxvb3IobnVtKTtcblxuICBsZXQgdW5pdFBvcyA9IDA7XG4gIGxldCBzdHJJbnMgPSAnJyxcbiAgICBjaG5TdHIgPSAnJztcbiAgbGV0IG5lZWRaZXJvID0gZmFsc2U7XG5cbiAgaWYgKG51bSA9PT0gMCkge1xuICAgIHJldHVybiBudW1iZXJDaGFyWzBdO1xuICB9XG4gIHdoaWxlIChudW0gPiAwKSB7XG4gICAgdmFyIHNlY3Rpb24gPSBudW0gJSAxMDAwMDtcbiAgICBpZiAobmVlZFplcm8pIHtcbiAgICAgIGNoblN0ciA9IG51bWJlckNoYXJbMF0gKyBjaG5TdHI7XG4gICAgfVxuICAgIHN0cklucyA9IHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbik7XG4gICAgc3RySW5zICs9IHNlY3Rpb24gIT09IDAgPyB1bml0U2VjdGlvblt1bml0UG9zXSA6IHVuaXRTZWN0aW9uWzBdO1xuICAgIGNoblN0ciA9IHN0cklucyArIGNoblN0cjtcbiAgICBuZWVkWmVybyA9IHNlY3Rpb24gPCAxMDAwICYmIHNlY3Rpb24gPiAwO1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gMTAwMDApO1xuICAgIHVuaXRQb3MrKztcbiAgfVxuICByZXR1cm4gY2huU3RyO1xufVxuXG4vKipcbiAqIOi9rOaNouWwj+aVsFxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgei9rOaNoueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0RGVjaW1hbChudW0pIHtcbiAgY29uc3QgbnVtU3RyID0gbnVtICsgJyc7XG4gIGNvbnN0IGluZGV4ID0gbnVtU3RyLmluZGV4T2YoJy4nKTtcblxuICBsZXQgcmV0ID0gJyc7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBsZXQgZGVjaW1hbFN0ciA9IG51bVN0ci5zbGljZShpbmRleCArIDEpO1xuICAgIHJldCA9IG1hcE51bWJlckNoYXIocGFyc2VJbnQoZGVjaW1hbFN0cikpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmKDlsITkuLrkuK3mlofmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHlpITnkIbnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi/lOWbnuS4reaWh+aVsOWtl+eahOaYoOWwhFxuICovXG5mdW5jdGlvbiBtYXBOdW1iZXJDaGFyKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgbGV0IHJldCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBudW1TdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXQgKz0gbnVtYmVyQ2hhcltwYXJzZUludChudW1TdHJbaV0pXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5pWw5a2X6L2s5Lit5paH5pWw5a2XXG4gKiDkuI3lnKjlronlhajmlbDlrZcgLTkwMDcxOTkyNTQ3NDA5OTHvvZ45MDA3MTk5MjU0NzQwOTkxIOWGhe+8jOWkhOeQhuS8muacieW8guW4uFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLm51bWJlclRvQ2hpbmVzZVxuICogQHNpbmNlIDEuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOaVsOWtl1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuYmlnNT1mYWxzZV0g57mB5L2TXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnVuaXQ9dHJ1ZV0g6K6h5pWw5Y2V5L2NXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIueCuVwiXSDkuK3mloflsI/mlbDngrlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy56ZXJvPVwi6Zu2XCJdIOiuvue9rjDjgILluLjnlKjphY3nva4g44CHXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubmVnYXRpdmU9XCLotJ9cIl0g6LSf5pWw5YmN6Z2i55qE5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMudW5pdENvbmZpZ10g6IqC54K55Y2V5L2N6YWN572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdENvbmZpZy53PVwi5LiHXCJdIOiuvue9ruiuoeaVsOWNleS9jeS4h+OAguW4uOeUqOmFjee9riDokKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnk9XCLkur9cIl0g6K6+572u6K6h5pWw5Y2V5L2N5Lq/44CC5bi455So6YWN572uIOWEhFxuICogQHJldHVybnMge3N0cmluZ30g5Lit5paH5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDApO1xuICogLy8gPT4g5LiA55m+XG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zKTtcbiAqIC8vID0+IOS4gOeZvueCueS4iVxuICpcbiAqIC8vIOe5geS9k1xuICogbnVtYmVyVG9DaGluZXNlKDEwMCwge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sFxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDAuMywge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sOeCueWPgVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMjM0NTY3ODkwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55ou+6LSw5Lq/5Y+B5Luf6IKG5L2w5LyN5ou+6ZmG5LiH5p+S5Luf5o2M5L2w546W5ou+XG4gKlxuICogLy8g5LiN5bim6K6h5pWw5Y2V5L2NXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3pm7ZcbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY3vvIzkv67mlLkwXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlLCB6ZXJvOifjgIcnfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3jgIdcbiAqXG4gKi9cbmZ1bmN0aW9uIG51bWJlclRvQ2hpbmVzZShcbiAgbnVtLFxuICB7XG4gICAgYmlnNSA9IGZhbHNlLFxuICAgIHVuaXQgPSB0cnVlLFxuICAgIGRlY2ltYWwgPSAn54K5JyxcbiAgICB6ZXJvID0gJycsXG4gICAgbmVnYXRpdmUgPSAn6LSfJyxcbiAgICB1bml0Q29uZmlnID0ge1xuICAgICAgdzogJ+S4hycsIC8vICfokKwnXG4gICAgICB5OiAn5Lq/JyAvLyAn5YSEJ1xuICAgIH1cbiAgfSA9IHt9XG4pIHtcbiAgLy8g6Z2e5pWw5a2XIOaIliBOYU4g5LiN5aSE55CGXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyB8fCBpc05hTihudW0pKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2Fybihg5Y+C5pWw6ZSZ6K+vICR7bnVtfe+8jOivt+S8oOWFpeaVsOWtl2ApO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOi2hei/h+WuieWFqOaVsOWtl+aPkOekulxuICBjaGVja0JvdW5kYXJ5KG51bSk7XG5cbiAgLy8g6K6+572u5pWw5a2X5a2X56ym5ZKM6K6h5pWw5Y2V5L2NXG4gIGlmIChiaWc1KSB7XG4gICAgbnVtYmVyQ2hhciA9IGJpZzVOdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBiaWc1VW5pdENoYXIuc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICBudW1iZXJDaGFyID0gY2huTnVtYmVyQ2hhci5zbGljZSgpO1xuICAgIHVuaXRDaGFyID0gY2huVW5pdENoYXIuc2xpY2UoKTtcbiAgfVxuXG4gIC8vIOiuvue9ruiKgueCueiuoeaVsOWNleS9je+8jOS4h+OAgeS6v+OAgeS4h+S6v1xuICBjb25zdCBkZWZhdWx0VW5pdFdhbiA9ICfkuIcnO1xuICBjb25zdCBkZWZhdWx0VW5pdFlpID0gJ+S6vyc7XG4gIHVuaXRTZWN0aW9uID0gWycnLCB1bml0Q29uZmlnLncgfHwgZGVmYXVsdFVuaXRXYW4sIHVuaXRDb25maWcueSB8fCBkZWZhdWx0VW5pdFlpLCB1bml0Q29uZmlnLncgJiYgdW5pdENvbmZpZy55ID8gdW5pdENvbmZpZy53ICsgdW5pdENvbmZpZy55IDogZGVmYXVsdFVuaXRXYW4gKyBkZWZhdWx0VW5pdFlpXTtcblxuICAvLyDorr7nva4wXG4gIGlmICh6ZXJvKSB7XG4gICAgbnVtYmVyQ2hhclswXSA9IHplcm87XG4gIH1cblxuICAvLyDliY3nva7lrZfnrKbvvIzotJ/mlbDlpITnkIZcbiAgY29uc3QgcHJlU3RyID0gbnVtIDwgMCA/IG5lZ2F0aXZlIDogJyc7XG5cbiAgLy8g5pW05pWw5ZKM5bCP5pWwXG4gIGxldCBjaG5JbnRlZ2VyLCBjaG5EZWNpbWFsO1xuXG4gIC8vIOWkhOeQhuaVtOaVsFxuICBpZiAodW5pdCkge1xuICAgIGNobkludGVnZXIgPSBjb252ZXJ0SW50ZWdlcihudW0pO1xuICB9IGVsc2Uge1xuICAgIGNobkludGVnZXIgPSBtYXBOdW1iZXJDaGFyKE1hdGguZmxvb3IobnVtKSk7XG4gIH1cblxuICAvLyDlpITnkIblsI/mlbBcbiAgY2huRGVjaW1hbCA9IGNvbnZlcnREZWNpbWFsKG51bSk7XG5cbiAgcmV0dXJuIGNobkRlY2ltYWwgPyBgJHtwcmVTdHJ9JHtjaG5JbnRlZ2VyfSR7ZGVjaW1hbH0ke2NobkRlY2ltYWx9YCA6IGAke3ByZVN0cn0ke2NobkludGVnZXJ9YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbnVtYmVyVG9DaGluZXNlO1xuIiwiLyoqXG4gKiDlrZfoioLovazmjaLlrZjlgqjljZXkvY3vvIzkv53nlZky5L2N5bCP5pWw54K5XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuYnl0ZXNUb1NpemVcbiAqIEBzaW5jZSAzLjguMFxuICogQHBhcmFtIHtudW1iZXJ9IGJ5dGVzIOWtl+iKguWkp+Wwj1xuICogQHJldHVybnMge3N0cmluZ30g5a2Y5YKo5Y2V5L2N5YC8XG4gKiBAZXhhbXBsZVxuICpcbiAqIGJ5dGVzVG9TaXplKDApO1xuICogLy8gPT4gMCBCXG4gKlxuICogYnl0ZXNUb1NpemUoMTAyNCk7XG4gKiAvLyA9PiAxIEtCXG4gKlxuICogYnl0ZXNUb1NpemUoMy4yMTMyNDMqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDMuMjEgTUJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KjEwMjQqMTAyNCk7XG4gKiAvLyA9PiAxIEdCXG4gKi9cbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKGJ5dGVzKSB7XG4gIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xuICBjb25zdCBrID0gMTAyNDtcbiAgLy8g5a2Y5YKo5Y2V5L2NXG4gIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcblxuICByZXR1cm4gc2l6ZXNbaV0gPyBgJHtOdW1iZXIoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMikpfSAke3NpemVzW2ldfWAgOiBieXRlcyArICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBieXRlc1RvU2l6ZTtcbiIsImltcG9ydCBpc0lkQ2FyZCBmcm9tICcuL2lzSWRDYXJkJztcblxuY29uc3QgcmVnSWRDYXJkID0gL14oPzxwcm92aW5jZT5cXGR7Mn0pKD88Y2l0eT5cXGR7Mn0pKD88YXJlYT5cXGR7Mn0pKD88eWVhcj4oPzpcXGR7Mn0pP1xcZHsyfSkoPzxtb250aD5cXGR7Mn0pKD88ZGF5PlxcZHsyfSlcXGR7Mn0oPzxnZW5kZXI+XFxkKSg/OlxcZHxYKT8kL2k7XG5cbmNvbnN0IFByb3ZpbmNlcyA9IFtcbiAgLy8g5Y2O5YyX5Zyw5Yy677ya5YyX5Lqs5biCfDExMDAwMO+8jOWkqea0peW4gnwxMjAwMDDvvIzmsrPljJfnnIF8MTMwMDAw77yM5bGx6KW/55yBfDE0MDAwMO+8jOWGheiSmeWPpOiHquayu+WMunwxNTAwMDBcbiAgWycxMScsICfljJfkuqzluIInXSxcbiAgWycxMicsICflpKnmtKXluIInXSxcbiAgWycxMycsICfmsrPljJfnnIEnXSxcbiAgWycxNCcsICflsbHopb/nnIEnXSxcbiAgWycxNScsICflhoXokpnlj6Toh6rmsrvljLonXSxcblxuICAvLyDkuJzljJflnLDljLrvvJog6L695a6B55yBfDIxMDAwMO+8jOWQieael+ecgXwyMjAwMDDvvIzpu5HpvpnmsZ/nnIF8MjMwMDAwXG4gIFsnMjEnLCAn6L695a6B55yBJ10sXG4gIFsnMjInLCAn5ZCJ5p6X55yBJ10sXG4gIFsnMjMnLCAn6buR6b6Z5rGf55yBJ10sXG5cbiAgLy8g5Y2O5Lic5Zyw5Yy677yaIOS4iua1t+W4gnwzMTAwMDDvvIzmsZ/oi4/nnIF8MzIwMDAw77yM5rWZ5rGf55yBfDMzMDAwMO+8jOWuieW+veecgXwzNDAwMDDvvIznpo/lu7rnnIF8MzUwMDAw77yM5rGf6KW/55yBfDM2MDAwMO+8jOWxseS4nOecgXwzNzAwMDBcbiAgWyczMScsICfkuIrmtbfluIInXSxcbiAgWyczMicsICfmsZ/oi4/nnIEnXSxcbiAgWyczMycsICfmtZnmsZ/nnIEnXSxcbiAgWyczNCcsICflronlvr3nnIEnXSxcbiAgWyczNScsICfnpo/lu7rnnIEnXSxcbiAgWyczNicsICfmsZ/opb/nnIEnXSxcbiAgWyczNycsICflsbHkuJznnIEnXSxcblxuICAvLyDljY7kuK3lnLDljLrvvJog5rKz5Y2X55yBfDQxMDAwMO+8jOa5luWMl+ecgXw0MjAwMDDvvIzmuZbljZfnnIF8NDMwMDAwXG4gIFsnNDEnLCAn5rKz5Y2X55yBJ10sXG4gIFsnNDInLCAn5rmW5YyX55yBJ10sXG4gIFsnNDMnLCAn5rmW5Y2X55yBJ10sXG5cbiAgLy8g5Y2O5Y2X5Zyw5Yy677ya5bm/5Lic55yBfDQ0MDAwMO+8jOW5v+ilv+WjruaXj+iHquayu+WMunw0NTAwMDDvvIzmtbfljZfnnIF8NDYwMDAwXG4gIFsnNDQnLCAn5bm/5Lic55yBJ10sXG4gIFsnNDUnLCAn5bm/6KW/5aOu5peP6Ieq5rK75Yy6J10sXG4gIFsnNDYnLCAn5rW35Y2X55yBJ10sXG5cbiAgLy8g6KW/5Y2X5Zyw5Yy677ya6YeN5bqG5biCfDUwMDAwMO+8jOWbm+W3neecgXw1MTAwMDDvvIzotLXlt57nnIF8NTIwMDAw77yM5LqR5Y2X55yBfDUzMDAwMO+8jOilv+iXj+iHquayu+WMunw1NDAwMDBcbiAgWyc1MCcsICfph43luobluIInXSxcbiAgWyc1MScsICflm5vlt53nnIEnXSxcbiAgWyc1MicsICfotLXlt57nnIEnXSxcbiAgWyc1MycsICfkupHljZfnnIEnXSxcbiAgWyc1NCcsICfopb/ol4/oh6rmsrvljLonXSxcblxuICAvLyDopb/ljJflnLDljLrvvJog6ZmV6KW/55yBfDYxMDAwMO+8jOeUmOiCg+ecgXw2MjAwMDDvvIzpnZLmtbfnnIF8NjMwMDAw77yM5a6B5aSP5Zue5peP6Ieq5rK75Yy6fDY0MDAwMO+8jOaWsOeWhue7tOWQvuWwlOiHquayu+WMunw2NTAwMDBcbiAgWyc2MScsICfpmZXopb/nnIEnXSxcbiAgWyc2MicsICfnlJjogoPnnIEnXSxcbiAgWyc2MycsICfpnZLmtbfnnIEnXSxcbiAgWyc2NCcsICflroHlpI/lm57ml4/oh6rmsrvljLonXSxcbiAgWyc2NScsICfmlrDnlobnu7TlkL7lsJToh6rmsrvljLonXSxcblxuICAvLyDlj7Dmub7lnLDljLrvvJrlj7Dmub7nnIF8NzEwMDAwXG4gIC8vIOWPsOa5vuWxheawkeWFrOawkei6q+S7veWPt+eggeWcsOWdgOeggeS4ujgzMDAwMO+8jOWPguiAgyBodHRwOi8vd3d3LndhbndlaWJhaWtlLmNvbS93aWtpLeS4reWNjuS6uuawkeWFseWSjOWbveihjOaUv+WMuuWIkuS7o+eggV8oN+WMuinjgIFodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlj7DlsYXmsJHlsYXkvY/or4FcbiAgWyc3MScsICflj7Dmub7nnIEnXSxcbiAgWyc4MycsICflj7Dmub7nnIEnXSxcblxuICAvLyDmuK/mvrPlnLDljLrvvJrpppnmuK/nibnliKvooYzmlL/ljLp8ODEwMDAw77yM5r6z6Zeo54m55Yir6KGM5pS/5Yy6fDgyMDAwMFxuICBbJzgxJywgJ+mmmea4r+eJueWIq+ihjOaUv+WMuiddLFxuICBbJzgyJywgJ+a+s+mXqOeJueWIq+ihjOaUv+WMuiddXG5dO1xuXG4vLyDnrKzkuIDkvY3mlbDlrZfmmK/ku6XliY3nmoTlpKfljLrliLbku6PnoIHjgILnrKzkuozkvY3mmK/lpKfljLrmiYDlnKjnnIHluILnvJbnoIHjgILlhajlm73lhbHliIbkuLo45Liq5aSn5Yy677ya5Y2O5YyX77yIMe+8ieOAgeS4nOWMl++8iDLvvInjgIHljY7kuJzvvIgz77yJ44CB5Lit5Y2X77yINO+8ieOAgeilv+WNl++8iDXvvInjgIHopb/ljJfvvIg277yJ44CB5Y+w5rm+77yIN++8ieWSjOa4r+a+s++8iDjvvInjgIJcbi8vIGNvbnN0IFJlZ2lvbnMgPSBbXG4vLyAgIFsnMScsICfljY7ljJflnLDljLonXSxcbi8vICAgWycyJywgJ+S4nOWMl+WcsOWMuiddLFxuLy8gICBbJzMnLCAn5Y2O5Lic5Zyw5Yy6J10sXG4vLyAgIFsnNCcsICfkuK3ljZflnLDljLonXSxcbi8vICAgWyc1JywgJ+ilv+WNl+WcsOWMuiddLFxuLy8gICBbJzYnLCAn6KW/5YyX5Zyw5Yy6J10sXG4vLyAgIFsnNycsICflj7Dmub7lnLDljLonXSxcbi8vICAgWyc4JywgJ+a4r+a+s+WcsOWMuiddXG4vLyBdO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IElkQ2FyZE9yaWdpbiAtIOino+aekOi6q+S7veivgeWOn+aVsOaNrlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3ZpbmNlIC0g55yB5Lu957yW56CBXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2l0eSAtIOWfjuW4gue8lueggVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFyZWEgLSDlnLDljLrnvJbnoIFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB5ZWFyIC0g5Ye655Sf5bm0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gbW9udGggLSDlh7rnlJ/mnIhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXkgLSDlh7rnlJ/ml6VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBnZW5kZXIgLSDmgKfliKsg6IO95pW06ZmkMuS4uuWls++8jOWQpuWImeS4uueUt1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSWRDYXJkSW5mbyAtIOi6q+S7veivgeS/oeaBr1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3ZpbmNlIC0g55yB5Lu9XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmlydGhkYXkgLSDnlJ/ml6VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBnZW5kZXIgLSDmgKfliKtcbiAqIEBwcm9wZXJ0eSB7SWRDYXJkT3JpZ2lufSBvcmlnaW4gLSDop6PmnpDouqvku73or4Hljp/mlbDmja5cbiAqL1xuXG4vKipcbiAqIOino+aekOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE144CBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5wYXJzZUlkQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE15L2NXG4gKiBAcmV0dXJucyB7bnVsbHxJZENhcmRJbmZvfSBudWxsIOaIliDnnIHku73jgIHnlJ/ml6XjgIHmgKfliKvvvIznnIEv5biCL+WMui/lubQv5pyIL+aXpS/mgKfliKvnvJbnoIFcbiAqIEBleGFtcGxlXG4gKiBwYXJzZUlkQ2FyZCgnMTIzNDU2Nzg5MTIzNDU2Jyk7XG4gKiAvLyA9PiBudWxsXG4gKlxuICogLy8gMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyODgnKVxuICogLy8gPT5cbiAqIHtcbiAqICAgYmlydGhkYXk6IFwiMTk5My0xMC0zMFwiLFxuICogICBnZW5kZXI6IFwi5aWzXCIsXG4gKiAgIG9yaWdpbjogeyBwcm92aW5jZTogXCIxM1wiLCBjaXR5OiBcIjA3XCIsIGFyZWE6IFwiMDFcIiwgeWVhcjogXCIxOTkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gKiAgIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG4gKiB9XG4gKlxuICogLy8gMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDE5MzEwMzAyMjgnKTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIGJpcnRoZGF5OiBcIjkzLTEwLTMwXCIsXG4gKiAgIGdlbmRlcjogXCLlpbNcIixcbiAqICAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gKiAgIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBwYXJzZUlkQ2FyZChpZCkge1xuICBpZiAoIWlzSWRDYXJkKGlkLCB7IGxvb3NlOiB0cnVlIH0pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpbmZvID0gcmVnSWRDYXJkLmV4ZWMoaWQpO1xuXG4gIGlmICghaW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlIHt7IHByb3ZpbmNlOiBzdHJpbmcsIGNpdHk6IHN0cmluZywgYXJlYTogc3RyaW5nLCB5ZWFyOiBzdHJpbmcsIG1vbnRoOiBzdHJpbmcsIGRheTogc3RyaW5nLCBnZW5kZXI6IHN0cmluZyB9fVxuICAgKlxuICAgKi9cbiAgbGV0IG9yaWdpbiA9IHtcbiAgICBwcm92aW5jZTogJycsXG4gICAgY2l0eTogJycsXG4gICAgYXJlYTogJycsXG4gICAgeWVhcjogJycsXG4gICAgbW9udGg6ICcnLFxuICAgIGRheTogJycsXG4gICAgZ2VuZGVyOiAnJ1xuICB9O1xuXG4gIGlmIChpbmZvLmdyb3Vwcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW4gPSBpbmZvLmdyb3VwcztcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW4gPSB7XG4gICAgICBwcm92aW5jZTogaW5mb1sxXSxcbiAgICAgIGNpdHk6IGluZm9bMl0sXG4gICAgICBhcmVhOiBpbmZvWzNdLFxuICAgICAgeWVhcjogaW5mb1s0XSxcbiAgICAgIG1vbnRoOiBpbmZvWzVdLFxuICAgICAgZGF5OiBpbmZvWzZdLFxuICAgICAgZ2VuZGVyOiBpbmZvWzddXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpbmNlID0gUHJvdmluY2VzLmZpbmQoKGl0ZW0pID0+IGl0ZW1bMF0gPT09IG9yaWdpbi5wcm92aW5jZSk7XG5cbiAgaWYgKCFwcm92aW5jZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYmlydGhkYXkgPSBgJHtvcmlnaW4ueWVhcn0tJHtvcmlnaW4ubW9udGh9LSR7b3JpZ2luLmRheX1gO1xuICBjb25zdCBnZW5kZXIgPSBOdW1iZXIob3JpZ2luLmdlbmRlcikgJSAyID09PSAwID8gJ+WlsycgOiAn55S3JztcbiAgLy8gY29uc3QgcmVnaW9uID0gUmVnaW9ucy5maW5kKGl0ZW0gPT4gaXRlbVswXSA9PT0gb3JpZ2luLnByb3ZpbmNlPy5zdWJzdHJpbmcoMCwgMSkpO1xuXG4gIHJldHVybiB7XG4gICAgLy8gcmVnaW9uLFxuICAgIHByb3ZpbmNlOiBwcm92aW5jZVsxXSxcbiAgICBiaXJ0aGRheSxcbiAgICBnZW5kZXIsXG4gICAgb3JpZ2luXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlSWRDYXJkO1xuIiwiLy8gIGZpbGXjgIFibG9i5paH5Lu25aaC5L2V6aKE6KeI5Zu+54mH77yfXG4vLyAg5pa55rOVMe+8muWwhmZpbGXmiJbogIVibG9i57G75Z6L5paH5Lu26L2s5oiQYmFzZTY05pWw5o2u77yM5YaN5L2c5Li6c3Jj6LWL5YC857uZaW1n5qCH562+XG4vLyAg5pa55rOVMu+8muS9v+eUqCB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSDkuLpibG9i44CBZmlsZSDliJvlu7rkuIDkuKrmjIflkJHor6Xlj4LmlbDlr7nosaHnmoRVUkxcblxuLyoqXG4gKiDlsIYgQmxvYiDmiJYgRmlsZSDlr7nosaHovazmiJAgZGF0YTpVUkwg5qC85byP55qEIEJhc2U2NCDlrZfnrKbkuLLjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5ibG9iVG9EYXRhVVJMXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvQVBJL0ZpbGVSZWFkZXIvcmVhZEFzRGF0YVVSTHxGaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoKX1cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtCbG9ifSBibG9iIEJsb2Ig5oiWIEZpbGUg5a+56LGhXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBkYXRhOlVSTCDmoLzlvI/nmoQgQmFzZTY0IOWtl+espuS4suOAglxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFGaWxlUGFydHMgPSBbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddOyAvLyDkuIDkuKrljIXlkKtET01TdHJpbmfnmoTmlbDnu4RcbiAqIGNvbnN0IGh0bWxCbG9iID0gbmV3IEJsb2IoYUZpbGVQYXJ0cywgeyB0eXBlOiAndGV4dC9odG1sJyB9KTsgLy8g5b6X5YiwIGJsb2JcbiAqXG4gKiBibG9iVG9EYXRhVVJMKGh0bWxCbG9iKS50aGVuKGRhdGE9PntcbiAqICAgY29uc29sZS5sb2coZGF0YSk7IC8vIGRhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogfSk7XG4gKlxuICogY29uc3QgdGV4dEJsb2IgPSBuZXcgQmxvYihhRmlsZVBhcnRzLCB7IHR5cGU6ICd0ZXh0L3BsYWluJyB9KTtcbiAqXG4gKiBibG9iVG9EYXRhVVJMKHRleHRCbG9iKS50aGVuKGRhdGE9PntcbiAqICAgY29uc29sZS5sb2coZGF0YSk7IC8vIGRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIH0pO1xuICovXG5mdW5jdGlvbiBibG9iVG9EYXRhVVJMKGJsb2IpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJsb2JUb0RhdGFVUkw7XG4iLCIvKipcbiAqIOWwhiBEYXRhVVJMIOi9rOS4uiBCbG9iIOWvueixoVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmRhdGFVUkxUb0Jsb2JcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL0dsb3NzYXJ5L0Jhc2U2NHxCYXNlNjR9XG4gKiBAc2luY2UgNC4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhdXJsIGRhdGE6IOWNj+iurueahFVSTFxuICogQHJldHVybnMge0Jsb2J9IEJsb2Ig5a+56LGhXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YXVybCA9ICdkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND0nO1xuICogZGF0YVVSTFRvQmxvYihkYXRhdXJsKTtcbiAqL1xuZnVuY3Rpb24gZGF0YVVSTFRvQmxvYihkYXRhdXJsKSB7XG4gIGNvbnN0IGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV07XG4gIGNvbnN0IGJzdHIgPSBhdG9iKGFyclsxXSk7XG4gIGxldCBuID0gYnN0ci5sZW5ndGg7XG4gIGNvbnN0IHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG5cbiAgd2hpbGUgKG4tLSkge1xuICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xuICB9XG4gIHJldHVybiBuZXcgQmxvYihbdThhcnJdLCB7IHR5cGU6IG1pbWUgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGFVUkxUb0Jsb2I7XG4iLCIvKipcbiAqIOiuvue9riBEYXRhVVJMIOWJjee8gOOAgU1JTUUg57G75Z6L44CBYmFzZTY0IOagh+ivhuOAgjxici8+XG4gKiDlpoLmnpzkvaDpnIDopoHojrflj5ZEYXRhVVJMIOeahCBNSU1FIOexu+Wei+WSjOaVsOaNruacrOi6q++8jOaOqOiNkOS9v+eUqCA8YSBocmVmPVwiaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZGF0YS11cmxzXCI+ZGF0YS11cmxzPC9hPuOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnNldERhdGFVUkxQcmVmaXhcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc3xEYXRhIFVSTHN9XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyN1bmRlcnN0YW5kaW5nLW1pbWUtdHlwZXN8TUlNRSB0eXBlc31cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEg5pWw5o2u5pys6LqrXG4gKiBAcGFyYW0ge3N0cmluZ30gW21pbWV0eXBlPVwiaW1hZ2UvcG5nXCJdIE1JTUUg57G75Z6LXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtiYXNlNjQ9dHJ1ZV0g5re75YqgIGJhc2U2NCDmoIfor4ZcbiAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGFVUkwg5qC85byP55qE5a2X56ym5LiyXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YSA9ICdQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PSc7XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEpOyAvLyBkYXRhOmltYWdlL3BuZztiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ2ltYWdlL3BuZycsIGZhbHNlKTsgLy8gZGF0YTppbWFnZS9wbmcsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ2ltYWdlL2pwZycpOyAvLyBkYXRhOmltYWdlL2pwZztiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ3RleHQvaHRtbCcpOyAvLyBkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJycpOyAvLyBkYXRhOjtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJycsIGZhbHNlKTsgLy8gZGF0YTosUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqL1xuZnVuY3Rpb24gc2V0RGF0YVVSTFByZWZpeChkYXRhLCBtaW1ldHlwZSA9ICdpbWFnZS9wbmcnLCBiYXNlNjQgPSB0cnVlKSB7XG4gIHJldHVybiBgZGF0YToke21pbWV0eXBlfSR7YmFzZTY0ID8gJztiYXNlNjQnIDogJyd9LCR7ZGF0YX1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzZXREYXRhVVJMUHJlZml4O1xuIiwiaW1wb3J0IGlzTmlsIGZyb20gJy4vdXRpbHMvdHlwZS9pc05pbCc7XG5cbi8vIFRPRE86IOWHveaVsOmHjei9ve+8jOexu+Wei+WPgueFpyBEYXRlXG5cbi8qKlxuICog5Yib5bu65LiA5LiqIERhdGUg5a6e5L6L5pel5pyf5a+56LGh77yM5ZCMIG5ldyBEYXRlKCkg44CCPGJyLz5cbiAqIOinhOmBv+S6huiLueaenOiuvuWkh+a1j+iniOWZqOS4jeaUr+aMgemDqOWIhuagvOW8j++8iFlZWVktTU0tREQgSEgtbW0g5oiWIFlZWVkuTU0uRETvvInjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5zYWZlRGF0ZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGV8RGF0ZX1cbiAqIEBzaW5jZSA0LjQuMFxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfERhdGV9IFt2YWx1ZV0g5pel5pyf5pe26Ze05a2X56ym5Liy44CB5q+r56eS5pWw44CB5pel5pyf5a+56LGhXG4gKiBAcGFyYW0gey4uLm51bWJlcn0gYXJncyDmnIgv5pelL+aXti/liIYv56eSL+avq+enklxuICogQHJldHVybnMge0RhdGV9IERhdGUg5a6e5L6L5pel5pyf5a+56LGhXG4gKiBAZXhhbXBsZVxuICogc2FmZURhdGUoJzIwMjItMS0xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIvMS8xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIuMS4xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIuMS4xIDExOjExJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAxMToxMTowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoOTksIDEpOyAvLyBNb24gRmViIDAxIDE5OTkgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKDE2NDY3MTEyMzMxNzEpOyAvLyBUdWUgTWFyIDA4IDIwMjIgMTE6NDc6MTMgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqXG4gKi9cbmZ1bmN0aW9uIHNhZmVEYXRlKHZhbHVlLCAuLi5hcmdzKSB7XG4gIGNvbnN0IHNhZmVWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS5yZXBsYWNlKC9bXFxcXC4tXS9nLCAnLycpIDogdmFsdWU7XG5cbiAgaWYgKGFyZ3MgJiYgYXJncy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgRGF0ZShzYWZlVmFsdWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaXNOaWwoc2FmZVZhbHVlKSA/IG5ldyBEYXRlKCkgOiBuZXcgRGF0ZShzYWZlVmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzYWZlRGF0ZTtcbiIsImltcG9ydCBub3JtYWxpemVTdHJpbmcgZnJvbSAnLi9ub3JtYWxpemVTdHJpbmcnO1xuXG4vKipcbiAqIOagvOW8j+WMluaJi+acuuWPt+eggVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vYmlsZVxuICogQHNpbmNlIDQuNS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9iaWxlTm8g5omL5py65Y+356CBXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNoYXI9JyAnXSDpl7TpmpTlrZfnrKZcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMluWQjueahOaJi+acuuWPt+eggVxuICogQGV4YW1wbGVcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2Nzg5MDAnKSAvLyAnMTMzIDQ1NjcgODkwMCdcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2Nzg5MDAnLCB7IGNoYXI6ICctJyB9KSAvLyAnMTMzLTQ1NjctODkwMCdcbiAqXG4gKiAvLyDohLHmlY/miYvmnLrlj7fnoIFcbiAqIGZvcm1hdE1vYmlsZSgnMTMzKioqKjEyMzQnKSAvLyAnMTMzICoqKiogMTIzNCdcbiAqIGZvcm1hdE1vYmlsZSgnMTMzKioqKjEyMzQnLCB7IGNoYXI6ICctJyB9KSAvLyAnMTMzLSoqKiotMTIzNCdcbiAqXG4gKiAvLyDmiYvmnLrlj7fnoIHkvY3mlbDkuI3lpJ9cbiAqIGZvcm1hdE1vYmlsZSgnMTMzJykgLy8gJzEzMydcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2JykgLy8gJzEzMyA0NTYnXG4gKiBmb3JtYXRNb2JpbGUoJzEzMzQ1Njc4JykgLy8gJzEzMyA0NTY3IDgnXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdE1vYmlsZShtb2JpbGVObywgeyBjaGFyID0gJyAnIH0gPSB7fSkge1xuICBjb25zdCByZWdDaGFyID0gbmV3IFJlZ0V4cChjaGFyLCAnZycpO1xuICBjb25zdCByZWFsVmFsdWUgPSBub3JtYWxpemVTdHJpbmcobW9iaWxlTm8pLnJlcGxhY2UocmVnQ2hhciwgJycpLnN1YnN0cmluZygwLCAxMSk7XG5cbiAgaWYgKHJlYWxWYWx1ZS5sZW5ndGggPiA3KSB7XG4gICAgcmV0dXJuIHJlYWxWYWx1ZS5yZXBsYWNlKC9eKC4uLikoLi4uLikvZywgYCQxJHtjaGFyfSQyJHtjaGFyfWApO1xuICB9XG4gIGlmIChyZWFsVmFsdWUubGVuZ3RoID4gMykge1xuICAgIHJldHVybiByZWFsVmFsdWUucmVwbGFjZSgvXiguLi4pL2csIGAkMSR7Y2hhcn1gKTtcbiAgfVxuICByZXR1cm4gcmVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRNb2JpbGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdW1iZXJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOdW1iZXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOdW1iZXJcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdW1iZXIoMSlcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKEluZmluaXR5KVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcignMScpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTnVtYmVyJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5LmY5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45LmYXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnRpbWVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jkuZjnmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOS5mOenr1xuICogQGV4YW1wbGVcbiAqXG4gKiB0aW1lcygzLCAwLjYpO1xuICogLy8gPT4gMS44XG4gKlxuICogdGltZXMoMywgMC42LCAyKTtcbiAqIC8vID0+IDMuNlxuICpcbiAqIHRpbWVzKDMsIDAuNiwgMiwgMTApO1xuICogLy8gPT4gMzZcbiAqL1xuZnVuY3Rpb24gdGltZXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHRpbWVzKHRpbWVzKG51bTEsIG51bTIpLCAuLi5yZXN0KTtcbiAgfVxuXG4gIC8vIOWFvOWuueWkhOeQhu+8jOWmguaenOesrDLkuKrlj4LmlbDkuLrpnZ7mlbDlrZfmiJblrZfnrKbkuLLml7bvvIzov5Tlm57nrKzkuIDkuKrlj4LmlbBcbiAgaWYgKCghaXNOdW1iZXIobnVtMikgfHwgaXNOYU4obnVtMikpICYmICFpc1N0cmluZyhudW0yKSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbnVtMTtcbiAgfVxuXG4gIGNvbnN0IG51bTFDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMSk7XG4gIGNvbnN0IG51bTJDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMik7XG4gIGNvbnN0IGJhc2VOdW0gPSBkaWdpdExlbmd0aChudW0xKSArIGRpZ2l0TGVuZ3RoKG51bTIpO1xuICBjb25zdCBsZWZ0VmFsdWUgPSBudW0xQ2hhbmdlZCAqIG51bTJDaGFuZ2VkO1xuXG4gIGNoZWNrQm91bmRhcnkobGVmdFZhbHVlKTtcblxuICByZXR1cm4gbGVmdFZhbHVlIC8gTWF0aC5wb3coMTAsIGJhc2VOdW0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aW1lcztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5Yqg5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YqgXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnBsdXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOWKoOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5oC75ZKMXG4gKiBAZXhhbXBsZVxuICpcbiAqIHBsdXMoMC4xLCAwLjIpO1xuICogLy8gPT4gMC4zXG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zKTtcbiAqIC8vID0+IDAuNlxuICpcbiAqIHBsdXMoMC4xLCAwLjIsIDAuMywgMC40KTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gcGx1cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwbHVzKHBsdXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSArIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdXM7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehruWHj+azle+8jOaUr+aMgeWkmuS4quaVsOebuOWHj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5taW51c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45YeP55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlt65cbiAqIEBleGFtcGxlXG4gKlxuICogbWludXMoMSwgMC45KTtcbiAqIC8vID0+IDAuMVxuICpcbiAqIG1pbnVzKDEsIDAuOSwgMC4wMik7XG4gKiAvLyA9PiAwLjA4XG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyLCAwLjA4KTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gbWludXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gbWludXMobWludXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSAtIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1pbnVzO1xuIiwiaW1wb3J0IHsgc3RyaXAsIGRpZ2l0TGVuZ3RoLCBmbG9hdDJGaXhlZCwgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehrumZpOazle+8jOaUr+aMgeWkmuS4quaVsOebuOmZpFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5kaXZpZGVcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOmZpOaVsOWSjOiiq+mZpOaVsFxuICogQHJldHVybnMge251bWJlcn0g5ZWG5pWwXG4gKiBAZXhhbXBsZVxuICpcbiAqIGRpdmlkZSgxLjIxLCAxLjEpO1xuICogLy8gPT4gMS4xXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCk7XG4gKiAvLyA9PiAxMFxuICpcbiAqIGRpdmlkZSgxMDAwLCAxMCwgMTAsIDEwKTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gZGl2aWRlKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRpdmlkZShkaXZpZGUobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY2hlY2tCb3VuZGFyeShudW0xQ2hhbmdlZCk7XG4gIGNoZWNrQm91bmRhcnkobnVtMkNoYW5nZWQpO1xuICAvLyBmaXg6IOexu+S8vCAxMCAqKiAtNCDkuLogMC4wMDAwOTk5OTk5OTk5OTk5OTk5Oe+8jHN0cmlwIOS/ruato1xuICByZXR1cm4gdGltZXMobnVtMUNoYW5nZWQgLyBudW0yQ2hhbmdlZCwgc3RyaXAoTWF0aC5wb3coMTAsIGRpZ2l0TGVuZ3RoKG51bTIpIC0gZGlnaXRMZW5ndGgobnVtMSkpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpdmlkZTtcbiIsImltcG9ydCBkaXZpZGUgZnJvbSAnLi9kaXZpZGUnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuXG4vKipcbiAqIOWbm+iIjeS6lOWFpe+8jOaUr+aMgeiuvue9rueyvuW6plxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5yb3VuZFxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bSDopoHlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIOWbm+iIjeS6lOWFpeeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn0g5Zub6IiN5LqU5YWl55qE5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIHJvdW5kKDQuMDA2KTtcbiAqIC8vID0+IDRcbiAqXG4gKiByb3VuZCg0LjAwNiwgMik7XG4gKiAvLyA9PiA0LjAxXG4gKlxuICogcm91bmQoNDA2MCwgLTIpO1xuICogLy8gPT4gNDEwMFxuICovXG5mdW5jdGlvbiByb3VuZChudW0sIHByZWNpc2lvbiA9IDApIHtcbiAgY29uc3QgYmFzZSA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuICByZXR1cm4gZGl2aWRlKE1hdGgucm91bmQodGltZXMobnVtLCBiYXNlKSksIGJhc2UpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByb3VuZDtcbiIsIi8qKlxuICog562J5b6F5pe26Ze06L+U5ZueIFByb21pc2Ug44CC5bi455So5LqO5byC5q2l5pa55rOV5Lit5bu25pe244CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpPdGhlci53YWl0VGltZVxuICogQHNpbmNlIDQuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gW3RpbWU9MTAwMF0g5bu25pe25pe26Ze077yM5Y2V5L2N5q+r56eSXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB0ZXN0ID0gYXN5bmMgKCk9PntcbiAqICAgYXdhaXQgd2FpdFRpbWUoKTtcbiAqICAgLy8gZG8gc29tZXRoaW5nXG4gKiB9XG4gKlxuICogd2FpdFRpbWUoNTAwKS50aGVuKCgpPT57XG4gKiAgIC8vIGRvIHNvbWV0aGluZ1xuICogfSlcbiAqL1xuZnVuY3Rpb24gd2FpdFRpbWUodGltZSA9IDEwMDApIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdhaXRUaW1lO1xuIiwiaW1wb3J0IG5vcm1hbGl6ZVN0cmluZyBmcm9tICcuL25vcm1hbGl6ZVN0cmluZyc7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi1tb2JpbGUvYmxvYi92Mi9jb21wb25lbnRzL2lucHV0LWl0ZW0vaW5kZXgudHN4I0wyNDBcblxuLyoqXG4gKiDorqHnrpfovpPlhaXmoYbnmoTlgLzmoLzlvI/ljJblkI7lhYnmoIfkvY3nva5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk90aGVyLmNhbGN1bGF0ZUN1cnNvclBvc2l0aW9uXG4gKiBAc2luY2UgNC42LjBcbiAqIEBzZWUg5qC85byP5YyW5omL5py65Y+356CBIHtAbGluayBodHRwczovL2RvbHktZGV2LmdpdGh1Yi5pby91dGlsLWhlbHBlcnMvbW9kdWxlLVByb2Nlc3Nvci5odG1sIy5mb3JtYXRNb2JpbGV8Zm9ybWF0TW9iaWxlfVxuICogQHNlZSDmoLzlvI/ljJbpk7booYzljaHlj7cge0BsaW5rIGh0dHBzOi8vZG9seS1kZXYuZ2l0aHViLmlvL3V0aWwtaGVscGVycy9tb2R1bGUtUHJvY2Vzc29yLmh0bWwjLmZvcm1hdEJhbmtDYXJkfGZvcm1hdEJhbmtDYXJkfVxuICogQHNlZSDnpLrkvosge0BsaW5rIGh0dHBzOi8vMjk1MHY5LmNzYi5hcHAvfOeCueWHu+afpeeci31cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcmV2UG9zIOi1i+WAvOWJjeeahOWFieagh+S9jee9ru+8jG9uQ2hhbmdlL29uSW5wdXTnmoTlhYnmoIfkvY3nva4gZS50YXJnZXQuc2VsZWN0aW9uRW5kXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJldkN0cmxWYWx1ZSDkuIrkuIDkuKrmoLzlvI/ljJblkI7nmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdWYWx1ZSDlvZPliY3ovpPlhaXljp/lgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdHJsVmFsdWUg5b2T5YmN5qC85byP5YyW5ZCO55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtzdHJpbmdbXXxzdHJpbmd9IFtvcHRpb25zLnBsYWNlaG9sZGVyQ2hhcj0nICddIOWNoOS9jeesplxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLm1hc2tSZWc9L1xcRC9nXSDpnIDopoHpga7nm5bnmoTlrZfnrKbop4TliJnjgILpu5jorqTljrvmjonpnZ7mlbDlrZfvvIzmhI/lkbPnnYAgY3RybFZhbHVlIOmcgOimgeWOu+aOiemdnuaVsOWtl+OAglxuICogQHBhcmFtIHsnbW9iaWxlJ3wnYmFua0NhcmQnfSBbb3B0aW9ucy50eXBlXSDmoLzlvI/ljJbnsbvlnovvvIzlhoXnva7miYvmnLrlj7fnoIHlkozpk7booYzljaHlj7fnibnmrorlpITnkIZcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOagvOW8j+WMluWQjueahOWFieagh+S9jee9rlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVDdXJzb3JQb3NpdGlvbihwcmV2UG9zLCBwcmV2Q3RybFZhbHVlLCByYXdWYWx1ZSwgY3RybFZhbHVlLCB7IHBsYWNlaG9sZGVyQ2hhciA9ICcgJywgbWFza1JlZyA9IC9cXEQvZywgdHlwZSB9ID0ge30pIHtcbiAgY29uc3QgcmVhbEN0cmxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhwcmV2Q3RybFZhbHVlKTtcbiAgY29uc3QgcmVhbFJhd1ZhbHVlID0gbm9ybWFsaXplU3RyaW5nKHJhd1ZhbHVlKTtcbiAgY29uc3QgcGxhY2Vob2xkZXJDaGFycyA9IEFycmF5LmlzQXJyYXkocGxhY2Vob2xkZXJDaGFyKSA/IHBsYWNlaG9sZGVyQ2hhciA6IFtwbGFjZWhvbGRlckNoYXJdO1xuXG4gIGNvbnN0IGVkaXRMZW5ndGggPSByZWFsUmF3VmFsdWUubGVuZ3RoIC0gcmVhbEN0cmxWYWx1ZS5sZW5ndGg7XG4gIGNvbnN0IGlzQWRkaXRpb24gPSBlZGl0TGVuZ3RoID4gMDtcblxuICBsZXQgcG9zID0gcHJldlBvcztcblxuICBpZiAoaXNBZGRpdGlvbikge1xuICAgIGNvbnN0IGFkZGl0aW9uU3RyID0gcmVhbFJhd1ZhbHVlLnN1YnN0cmluZyhwb3MgLSBlZGl0TGVuZ3RoLCBwb3MpO1xuICAgIGxldCBjdHJsQ2hhckNvdW50ID0gYWRkaXRpb25TdHIucmVwbGFjZShtYXNrUmVnLCAnJykubGVuZ3RoO1xuICAgIHBvcyAtPSBlZGl0TGVuZ3RoIC0gY3RybENoYXJDb3VudDtcblxuICAgIGxldCBwbGFjZWhvbGRlckNoYXJDb3VudCA9IDA7XG4gICAgd2hpbGUgKGN0cmxDaGFyQ291bnQgPiAwKSB7XG4gICAgICBpZiAocGxhY2Vob2xkZXJDaGFycy5pbmRleE9mKGN0cmxWYWx1ZS5jaGFyQXQocG9zIC0gY3RybENoYXJDb3VudCArIHBsYWNlaG9sZGVyQ2hhckNvdW50KSkgIT09IC0xKSB7XG4gICAgICAgIHBsYWNlaG9sZGVyQ2hhckNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHJsQ2hhckNvdW50LS07XG4gICAgICB9XG4gICAgfVxuICAgIHBvcyArPSBwbGFjZWhvbGRlckNoYXJDb3VudDtcbiAgfVxuXG4gIGlmICgodHlwZSA9PT0gJ21vYmlsZScgJiYgKHBvcyA9PT0gNCB8fCBwb3MgPT09IDkpKSB8fCAodHlwZSA9PT0gJ2JhbmtDYXJkJyAmJiBwb3MgPiAwICYmIHBvcyAlIDUgPT09IDApKSB7XG4gICAgcG9zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcG9zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjYWxjdWxhdGVDdXJzb3JQb3NpdGlvbjtcbiJdLCJuYW1lcyI6WyJyZWciLCJyZWdJZENhcmQiLCJiYXNlUmVnIiwic3VtQ2hlY2tDb2RlIiwiaXNOYU4iXSwibWFwcGluZ3MiOiI7Ozs7OztFQUFBLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtFQUNqQyxFQUFFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDekQ7O0VDWEE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7RUFDekIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDakM7O0VDbEJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsZUFBZSxDQUFDLEtBQUssRUFBRTtFQUNoQyxFQUFFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDakQ7O0VDUkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsbUJBQW1CLENBQUM7QUFDaEM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN2QkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsMkNBQTJDLENBQUM7QUFDeEQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0VBQzVCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUM3QkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsU0FBUyxDQUFDO0FBQ3RCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtFQUMzQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUMsV0FBUyxHQUFHLHFGQUFxRixDQUFDO0FBQ3hHO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsRUFBRSxFQUFFO0VBQ25CLEVBQUUsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztFQUN0QixFQUFFLEtBQUssR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtFQUM3QyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQzlELEdBQUc7RUFDSCxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQy9CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFO0VBQ2hCLElBQUksT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ2xDLEdBQUcsTUFBTTtFQUNULElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO0VBQ3pCLEdBQUc7RUFDSCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxTQUFTLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ25FLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUU7RUFDdkMsSUFBSSxPQUFPQSxXQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ3BDLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSUEsV0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtFQUMxRCxJQUFJLElBQUksU0FBUyxFQUFFO0VBQ25CLE1BQU0sT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDN0IsS0FBSztFQUNMLElBQUksT0FBTyxJQUFJLENBQUM7RUFDaEIsR0FBRztBQUNIO0VBQ0EsRUFBRSxPQUFPLEtBQUssQ0FBQztFQUNmOztFQ3BFQTtFQUNBLE1BQU1ELEtBQUcsR0FBRywwRUFBMEUsQ0FBQztBQUN2RjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7RUFDeEIsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDMUMsRUFBRSxPQUFPQSxLQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzVCOztFQ3ZCQTtFQUNBLE1BQU1BLEtBQUcsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7RUFDckIsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDMUMsRUFBRSxPQUFPQSxLQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzVCOztFQ3ZCQTtFQUNBLE1BQU1BLEtBQUcsR0FBRyw2QkFBNkIsQ0FBQztBQUMxQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7RUFDckIsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDMUMsRUFBRSxPQUFPQSxLQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzVCOztFQ3ZCQTtFQUNBLE1BQU1BLEtBQUcsR0FBRyx3SEFBd0gsQ0FBQztBQUNySTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRTtFQUMxQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDakNBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLGlCQUFpQixDQUFDO0FBQzlCO0VBQ0E7RUFDQSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7QUFDOUI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUNuRCxFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsSUFBSSxLQUFLLEVBQUU7RUFDYixJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNuQyxHQUFHO0VBQ0gsRUFBRSxPQUFPQSxLQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQzVCOztFQ3ZDQTtFQUNBLE1BQU1FLFNBQU8sR0FBRyxvREFBb0QsQ0FBQztBQUNyRTtFQUNBO0VBQ0EsTUFBTSxXQUFXLEdBQUcsaUNBQWlDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFO0VBQ0E7RUFDQSxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7RUFDaEMsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUNWO0VBQ0EsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSztFQUNwQyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtFQUN2QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7RUFDbEIsTUFBTSxPQUFPLElBQUksQ0FBQztFQUNsQixLQUFLO0VBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQztFQUNqQixHQUFHLENBQUMsQ0FBQztBQUNMO0VBQ0E7RUFDQSxFQUFFLE9BQU8sR0FBRyxDQUFDO0VBQ2IsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVNDLGNBQVksQ0FBQyxPQUFPLEVBQUU7RUFDL0I7QUFDQTtFQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0VBQ0E7RUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7RUFDL0I7RUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQy9DO0VBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDL0I7RUFDQSxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0VBQ3hCLEdBQUc7QUFDSDtFQUNBO0VBQ0EsRUFBRSxNQUFNLFNBQVMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO0VBQy9CO0VBQ0EsRUFBRSxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO0FBQ3hDO0VBQ0EsRUFBRSxPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztFQUNyQyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDM0QsRUFBRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUM7RUFDQSxFQUFFLE1BQU0sWUFBWSxHQUFHRCxTQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlDO0VBQ0E7RUFDQSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO0VBQzlCLElBQUksT0FBTyxZQUFZLENBQUM7RUFDeEIsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQzVDO0VBQ0EsRUFBRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDM0Q7RUFDQSxFQUFFLE1BQU0sU0FBUyxHQUFHQyxjQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUM7RUFDQSxFQUFFLE9BQU8sUUFBUSxLQUFLLFNBQVMsQ0FBQztFQUNoQzs7RUMxR0EsTUFBTSxNQUFNLEdBQUc7RUFDZjtFQUNBLEVBQUUsY0FBYyxFQUFFLElBQUk7RUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFO0VBQ2pDLEVBQUUsTUFBTSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0VBQ2pDOztFQ1pBLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztFQUN6QixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztFQUNuQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztFQUNuQyxNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQUMzQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0VBQ3hCLEVBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzdCLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7RUFDakMsRUFBRSxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN0QyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFO0VBQ2pDLEVBQUUsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDdEMsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUU7RUFDckIsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUM1RCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRTtFQUM5QyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7RUFDZCxJQUFJLE9BQU8sS0FBSyxDQUFDO0VBQ2pCLEdBQUc7QUFDSDtFQUNBLEVBQUUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztFQUM5RCxFQUFFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkU7RUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0VBQ2hCLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0VBQ3ZDLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO0VBQ2xCLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUs7RUFDNUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7RUFDdEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0VBQ2pCLEtBQUs7RUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0VBQ2YsR0FBRyxDQUFDLENBQUM7RUFDTCxFQUFFLE9BQU8sR0FBRyxDQUFDO0VBQ2IsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUU7RUFDbEQsRUFBRSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlEO0VBQ0EsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksRUFBRTtFQUM5QixJQUFJLE9BQU8sSUFBSSxDQUFDO0VBQ2hCLEdBQUc7QUFDSDtFQUNBLEVBQUUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztFQUNwRSxFQUFFLElBQUksUUFBUSxFQUFFO0VBQ2hCLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0VBQ3ZDLEdBQUc7RUFDSCxFQUFFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztFQUNsQixFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLO0VBQzVDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0VBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztFQUNqQixLQUFLO0VBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztFQUNmLEdBQUcsQ0FBQyxDQUFDO0VBQ0wsRUFBRSxPQUFPLEdBQUcsQ0FBQztFQUNiLENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxLQUFLLEVBQUUsT0FBTyxHQUFHLDhDQUE4QyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ25JLEVBQUUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3JCO0VBQ0EsRUFBRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtFQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO0VBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FBQztFQUNqRSxLQUFLO0VBQ0wsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0VBQ2hCLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCO0VBQ0E7RUFDQSxFQUFFLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM1QztFQUNBLEVBQUUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM5RDtFQUNBLEVBQUUsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM5RDtFQUNBLEVBQUUsTUFBTSx5QkFBeUIsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFDekU7RUFDQSxFQUFFLE1BQU0sNkJBQTZCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGO0VBQ0EsRUFBRSxJQUFJLGVBQWUsRUFBRTtFQUN2QixJQUFJLFlBQVksSUFBSSxDQUFDLENBQUM7RUFDdEIsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLFVBQVUsRUFBRTtFQUNsQjtFQUNBLElBQUksSUFBSSx3QkFBd0IsSUFBSSx3QkFBd0IsRUFBRTtFQUM5RCxNQUFNLFlBQVksSUFBSSxDQUFDLENBQUM7RUFDeEIsS0FBSztFQUNMLEdBQUcsTUFBTTtFQUNUO0VBQ0EsSUFBSSxJQUFJLHdCQUF3QixFQUFFO0VBQ2xDLE1BQU0sWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN4QixLQUFLO0VBQ0wsSUFBSSxJQUFJLHdCQUF3QixFQUFFO0VBQ2xDLE1BQU0sWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN4QixLQUFLO0VBQ0wsR0FBRztBQUNIO0VBQ0EsRUFBRSxJQUFJLHlCQUF5QixFQUFFO0VBQ2pDLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQztFQUN0QixHQUFHO0FBQ0g7RUFDQTtFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxJQUFJLEtBQUssSUFBSSxDQUFDLDZCQUE2QixDQUFDO0FBQzVFO0VBQ0EsRUFBRSxPQUFPO0VBQ1QsSUFBSSxTQUFTO0VBQ2IsSUFBSSxLQUFLLEVBQUUsWUFBWTtFQUN2QixJQUFJLFNBQVMsRUFBRTtFQUNmLE1BQU0sTUFBTSxFQUFFLGVBQWU7RUFDN0IsTUFBTSxlQUFlLEVBQUUsd0JBQXdCO0VBQy9DLE1BQU0sZUFBZSxFQUFFLHdCQUF3QjtFQUMvQyxNQUFNLGdCQUFnQixFQUFFLHlCQUF5QjtFQUNqRCxNQUFNLG9CQUFvQixFQUFFLDZCQUE2QjtFQUN6RCxLQUFLO0VBQ0wsR0FBRyxDQUFDO0VBQ0o7O0VDaFFBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUM3SCxFQUFFLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztFQUMzRTs7RUMxQ0E7RUFDQSxNQUFNSCxLQUFHLEdBQUcsK0RBQStELENBQUM7QUFDNUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtFQUMzQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDekJBLE1BQU0saUJBQWlCLEdBQUc7RUFDMUI7RUFDQSxFQUFFLFlBQVksRUFBRSxpQkFBaUI7QUFDakM7RUFDQTtFQUNBLEVBQUUsYUFBYSxFQUFFLGlCQUFpQjtBQUNsQztFQUNBO0VBQ0EsRUFBRSxjQUFjLEVBQUUsaUJBQWlCO0FBQ25DO0VBQ0E7RUFDQSxFQUFFLGNBQWMsRUFBRSx1QkFBdUI7QUFDekM7RUFDQTtFQUNBLEVBQUUsY0FBYyxFQUFFLHVCQUF1QjtBQUN6QztFQUNBO0VBQ0EsRUFBRSxjQUFjLEVBQUUsdUJBQXVCO0FBQ3pDO0VBQ0E7RUFDQSxFQUFFLGNBQWMsRUFBRSx1QkFBdUI7QUFDekM7RUFDQTtFQUNBLEVBQUUsY0FBYyxFQUFFLHVCQUF1QjtFQUN6QyxDQUFDLENBQUM7QUFDRjtFQUNBLElBQUksa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUM5RDtFQUNBLElBQUksYUFBYSxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ2hFO0VBQ0E7RUFDQSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hFO0VBQ0EsSUFBSSxvQkFBb0IsRUFBRTtFQUMxQixFQUFFLGtCQUFrQixHQUFHLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7RUFDblcsRUFBRSxhQUFhLEdBQUcsTUFBTSxHQUFHLGlCQUFpQixDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztFQUNoVyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ2xELEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLGtCQUFrQixHQUFHLGFBQWEsRUFBRSxvQkFBb0IsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7RUFDN0csRUFBRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDckVBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDJFQUEyRSxDQUFDO0FBQ3hGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtFQUN2QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDN0JBO0VBQ0EsTUFBTUEsS0FBRyxHQUFHLDArQkFBMCtCLENBQUM7QUFDdi9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFO0VBQ3ZCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN0REE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsdUtBQXVLLENBQUM7QUFDcEw7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0VBQ3RCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN0Q0E7RUFDQSxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUM7QUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0VBQy9CLEVBQUUsSUFBSSxNQUFNLENBQUM7QUFDYjtFQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2Q7RUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7RUFDL0IsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3ZDLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztFQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7RUFDbEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0VBQ3pCLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7RUFDbEIsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO0VBQzdCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNmLEdBQUcsTUFBTTtFQUNULElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7RUFDckIsR0FBRztBQUNIO0VBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztFQUNoQixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtFQUMxRCxFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztFQUNBLEVBQUUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QztFQUNBO0VBQ0EsRUFBRSxJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtFQUM5QixJQUFJLE9BQU8sWUFBWSxDQUFDO0VBQ3hCLEdBQUc7QUFDSDtFQUNBO0VBQ0EsRUFBRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztFQUM1QztFQUNBLEVBQUUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQzNEO0VBQ0EsRUFBRSxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUM7RUFDQSxFQUFFLE9BQU8sUUFBUSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztFQUN4Qzs7RUNsRkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUU7RUFDNUIsRUFBRSxPQUFPLEdBQUcsS0FBSyxJQUFJLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7RUFDbEg7O0VDbkJBO0VBQ0EsTUFBTSxTQUFTLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtFQUN6QixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUNsQzs7RUM1QkE7RUFDQSxNQUFNLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQztBQUMzQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ2xDOztFQ3hCQTtFQUNPLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDO0VBQzVFO0VBQ08sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0I7O0VDSDVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7RUFDeEMsRUFBRSxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFO0VBQzNDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7RUFDakQsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0VBQ2pDO0VBQ0EsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVDLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDekUsRUFBRSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztFQUMzQixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDTyxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7RUFDakMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7RUFDM0MsSUFBSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ25ELEdBQUc7RUFDSCxFQUFFLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoQyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztFQUM1RCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ08sU0FBUyxhQUFhLENBQUMsR0FBRyxFQUFFO0VBQ25DLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRTtFQUMxRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO0VBQ2hDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLDZFQUE2RSxDQUFDLENBQUMsQ0FBQztFQUMxRyxLQUFLO0VBQ0wsR0FBRztFQUNILENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRTtFQUNsQyxFQUFFLE1BQU0sR0FBRyxHQUFHLHlCQUF5QixDQUFDO0VBQ3hDLEVBQUUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQjtFQUNBLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtFQUNBLEVBQUUsSUFBSSxNQUFNLEVBQUU7RUFDZCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0VBQzNCLElBQUksT0FBTyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3ZFLEdBQUc7QUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNPLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFO0VBQ3hDLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtFQUMxQyxJQUFJLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQztFQUNyQixJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDdkQsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDMUI7RUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDMUI7RUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDdkIsSUFBSSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVDO0VBQ0E7RUFDQSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0VBQ3JCO0VBQ0EsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUN4RSxLQUFLLE1BQU07RUFDWCxNQUFNLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQztFQUNBO0VBQ0EsTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtFQUM5QixRQUFRLEdBQUcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDMUYsT0FBTyxNQUFNO0VBQ2I7RUFDQSxRQUFRLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM5RSxPQUFPO0VBQ1AsS0FBSztFQUNMLEdBQUc7RUFDSDtFQUNBLEVBQUUsT0FBTyxHQUFHLENBQUM7RUFDYjs7RUNuSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7RUFDdkIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ2pEOztFQ2ZBLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDO0FBQy9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUU7RUFDMUIsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJSSxNQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7RUFDdkksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtFQUNoQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7RUFDaEQsS0FBSztBQUNMO0VBQ0EsSUFBSSxPQUFPLEtBQUssQ0FBQztFQUNqQixHQUFHO0FBQ0g7RUFDQTtFQUNBO0VBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtFQUMvQixJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN2QixHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sSUFBSSxDQUFDO0VBQ2QsQ0FBQztBQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUU7RUFDckMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7RUFDZixFQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDaEMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztFQUM1RCxFQUFFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztFQUN2RCxFQUFFLE1BQU0sS0FBSyxHQUFHLGNBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RHO0VBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtFQUN6QyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztFQUNwRixHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQzNELENBQUM7QUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0VBQy9DLEVBQUUsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO0VBQ3ZCLElBQUksT0FBTyxFQUFFLENBQUM7RUFDZCxHQUFHO0FBQ0g7RUFDQSxFQUFFLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztFQUNqQixFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNmO0VBQ0EsRUFBRSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0VBQ3BDLElBQUksSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQztFQUMzQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNqRCxHQUFHLE1BQU07RUFDVCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvQyxHQUFHO0FBQ0g7RUFDQSxFQUFFLE9BQU8sT0FBTyxHQUFHLEdBQUcsQ0FBQztFQUN2QixDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNLLFFBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO0VBQzVGO0VBQ0E7RUFDQSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7RUFDekIsSUFBSSxPQUFPLEVBQUUsQ0FBQztFQUNkLEdBQUc7QUFDSDtFQUNBO0VBQ0EsRUFBRSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSUEsTUFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7RUFDMUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0VBQ2xCLEdBQUcsTUFBTSxJQUFJLFNBQVMsR0FBRyxFQUFFLEVBQUU7RUFDN0IsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0VBQ25CLEdBQUc7RUFDSCxFQUFFLE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztFQUNwRCxFQUFFLFFBQVEsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQztFQUMzRCxFQUFFLE9BQU8sR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN4RDtFQUNBO0VBQ0EsRUFBRSxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDOUM7RUFDQSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsT0FBTyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztFQUN0Rjs7RUNuSkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7RUFDNUIsRUFBRSxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztFQUMxQjs7RUNyQkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7RUFDdkIsRUFBRSxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUM7RUFDeEI7O0VDZkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0VBQ3RCLEVBQUUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzdDOztFQ1hBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUU7RUFDaEMsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUNwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0VBQ2QsR0FBRztFQUNILEVBQUUsT0FBTyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDaEM7O0VDMUJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsY0FBYyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDaEQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QztFQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7RUFDckUsRUFBRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7RUFDQSxFQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0VBQ2xGOztFQ3hDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsV0FBVyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUYsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzVCO0VBQ0E7RUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLEVBQUU7RUFDakMsSUFBSSxPQUFPLEdBQUcsQ0FBQztFQUNmLEdBQUc7QUFDSDtFQUNBLEVBQUUsS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7RUFDOUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN0QztFQUNBO0VBQ0EsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUU7RUFDcEIsSUFBSSxPQUFPLEdBQUcsQ0FBQztFQUNmLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsR0FBRyxD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LFVBQVUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztFQUNqRzs7RUN0UEE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7RUFDNUIsRUFBRSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7RUFDaEMsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7RUFDakI7RUFDQSxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN0RSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7RUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztFQUM5Rjs7RUM1QkEsTUFBTSxTQUFTLEdBQUcsa0lBQWtJLENBQUM7QUFDcko7RUFDQSxNQUFNLFNBQVMsR0FBRztFQUNsQjtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7QUFDbEI7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztBQUNoQjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDbkIsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxD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QU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUQ7O0VDdEJBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFO0VBQ2xDLEVBQUUsTUFBTSxTQUFTLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN0RjtFQUNBLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDL0I7RUFDQSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7RUFDeEMsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7RUFDN0Q7O0VDaENBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ3JELEVBQUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0VBQ3hDLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFFBQVEs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
|