bx-rest 0.25.0 → 0.26.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.en.md +1 -1
- package/README.md +1 -1
- package/esm2022/services/base.mjs +7 -12
- package/esm2022/services/http/http.mjs +2 -3
- package/fesm2022/bx-rest.mjs +17 -24
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/package.json +1 -1
- package/services/base.d.ts +4 -0
package/README.en.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<img src="https://flagcdn.com/20x15/ru.png" width="20" height="15" alt="RU"> [Русский](README.md) | <img src="https://flagcdn.com/20x15/gb.png" width="20" height="15" alt="GB"> **English**
|
|
2
2
|
|
|
3
3
|
# bx-rest - Bitrix24 REST API client for TypeScript, Angular, Vue and React
|
|
4
4
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<img src="https://flagcdn.com/20x15/ru.png" width="20" height="15" alt="RU"> **Русский** | <img src="https://flagcdn.com/20x15/gb.png" width="20" height="15" alt="GB"> [English](README.en.md)
|
|
2
2
|
|
|
3
3
|
# bx-rest — REST API клиент Bitrix24 для TypeScript, Angular, Vue и React
|
|
4
4
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toLocalAtom } from '../functions/toLocalAtom';
|
|
1
2
|
/**
|
|
2
3
|
* Преобразует значение в строку
|
|
3
4
|
*
|
|
@@ -241,6 +242,10 @@ export function toDate(val, format, opt, throwError = true) {
|
|
|
241
242
|
/**
|
|
242
243
|
* Преобразует дату в строку с учетом временной зоны
|
|
243
244
|
*
|
|
245
|
+
* Форматирование делегировано toLocalAtom() — раньше здесь была вторая,
|
|
246
|
+
* независимая копия той же формулы (paddind + смещение таймзоны), которая
|
|
247
|
+
* могла разойтись с toLocalAtom() при правке одной из них и не другой.
|
|
248
|
+
*
|
|
244
249
|
* @param date
|
|
245
250
|
* @param throwError
|
|
246
251
|
*/
|
|
@@ -250,17 +255,7 @@ export function toISOStringWithTimezone(date, throwError = true) {
|
|
|
250
255
|
throw new Error('Invalid value: not a valid Date object');
|
|
251
256
|
return '';
|
|
252
257
|
}
|
|
253
|
-
|
|
254
|
-
const diff = tzOffset >= 0 ? '+' : '-';
|
|
255
|
-
const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, '0');
|
|
256
|
-
return date.getFullYear() +
|
|
257
|
-
'-' + pad(date.getMonth() + 1) +
|
|
258
|
-
'-' + pad(date.getDate()) +
|
|
259
|
-
'T' + pad(date.getHours()) +
|
|
260
|
-
':' + pad(date.getMinutes()) +
|
|
261
|
-
':' + pad(date.getSeconds()) +
|
|
262
|
-
diff + pad(tzOffset / 60) +
|
|
263
|
-
':' + pad(tzOffset % 60);
|
|
258
|
+
return toLocalAtom(date);
|
|
264
259
|
}
|
|
265
260
|
/**
|
|
266
261
|
* Преобразует значение в булево значение
|
|
@@ -359,4 +354,4 @@ export function prepareBaseAddress(url, add = '') {
|
|
|
359
354
|
}
|
|
360
355
|
return url;
|
|
361
356
|
}
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVEsRUFBRSxVQUFVLEdBQUcsS0FBSztJQUNoRCxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLGdDQUFnQyxDQUFDLENBQUE7UUFDeEUsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBUSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUM7SUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTFCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFakMsSUFBSSxVQUFVO1lBQUUsTUFBTSxLQUFLLENBQUE7UUFFM0Isa0RBQWtEO1FBQ2xELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDL0IsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFVBQVcsU0FBUSxLQUFLO0lBQ25DLFlBQTRCLEtBQVU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxLQUFLLENBQUE7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QUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFBO0lBQ3ZCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDeEcsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFB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QUM5QyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNqQixDQUFDO1FBRUQsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LfQvdCw0YfQtdC90LjQtSDQsiDRgdGC0YDQvtC60YNcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyKHZhbDogYW55LCB0aHJvd0Vycm9yID0gZmFsc2UpOiBzdHJpbmcge1xyXG4gIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZTogJHt2YWx9IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5nYClcclxuICAgIH1cclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuICByZXR1cm4gU3RyaW5nKHZhbClcclxufVxyXG5cclxuLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LfQvdCw0YfQtdC90LjQtSDQsiDRh9C40YHQu9C+XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9OdW0odmFsOiBhbnksIHRocm93RXJyb3IgPSB0cnVlLCBkZWZWYWx1ZSA9IDApOiBudW1iZXIge1xyXG4gIGNvbnN0IHJlc3VsdCA9IE51bWJlcih2YWwpXHJcblxyXG4gIGlmIChpc05hTihyZXN1bHQpKSB7XHJcbiAgICBjb25zdCBlcnJvciA9IG5ldyBUb051bUVycm9yKHZhbClcclxuXHJcbiAgICBpZiAodGhyb3dFcnJvcikgdGhyb3cgZXJyb3JcclxuXHJcbiAgICAvLyDQldGB0LvQuCDQvtGI0LjQsdC60LAg0L3QtSDQv9GA0L7QsdGA0LDRgdGL0LLQsNC10YLRgdGPIOKAlCDQv9GA0L7RgdGC0L4g0LvQvtCz0LjRgNGD0LXQvFxyXG4gICAgY29uc29sZS5lcnJvcihlcnJvci50b1N0cmluZygpKVxyXG4gICAgcmV0dXJuIGRlZlZhbHVlXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQmtCw0YHRgtC+0LzQvdGL0Lkg0YLQuNC/INC+0YjQuNCx0LrQuCDQtNC70Y8g0YfQuNGB0LvQvtCy0YvRhSDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNC5XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVG9OdW1FcnJvciBleHRlbmRzIEVycm9yIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWVUeXBlID0gdHlwZW9mIHZhbHVlXHJcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9XHJcbiAgICAgIHZhbHVlVHlwZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpXHJcbiAgICBjb25zdCBtZXNzYWdlID0gYEludmFsaWQgdmFsdWUgcGFzc2VkIHRvIHRvTnVtKCk6ICR7Zm9ybWF0dGVkVmFsdWV9ICh0eXBlOiAke3ZhbHVlVHlwZX0pYFxyXG4gICAgc3VwZXIobWVzc2FnZSlcclxuICAgIHRoaXMubmFtZSA9ICdUb051bUVycm9yJ1xyXG5cclxuICAgIC8vINGB0L7RhdGA0LDQvdGP0LXQvCDRgdGC0LXQuiDQstGL0LfQvtCy0LAgKNC+0YLRhNC40LvRjNGC0YDQvtCy0LDQsiDRgdCw0Lwg0LrQvtC90YHRgtGA0YPQutGC0L7RgClcclxuICAgIGlmICh0aGlzLnN0YWNrKSB7XHJcbiAgICAgIGNvbnN0IHN0YWNrTGluZXMgPSB0aGlzLnN0YWNrLnNwbGl0KCdcXG4nKVxyXG4gICAgICAvLyDQo9C00LDQu9GP0LXQvCDRgdGC0YDQvtC60YMg0LrQvtC90YHRgtGA0YPQutGC0L7RgNCwICjRh9GC0L7QsdGLINGB0YLQtdC6INC90LDRh9C40L3QsNC70YHRjyDRgSDQvNC10YHRgtCwINCy0YvQt9C+0LLQsCB0b051bSlcclxuICAgICAgdGhpcy5zdGFjayA9IFtzdGFja0xpbmVzWzBdLCAuLi5zdGFja0xpbmVzLnNsaWNlKDIpXS5qb2luKCdcXG4nKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIGDinYwgWyR7dGhpcy5uYW1lfV0gJHt0aGlzLm1lc3NhZ2V9YCxcclxuICAgICAgdGhpcy5zdGFjayA/IGAgICBTdGFjayB0cmFjZTpcXG4ke3RoaXMuc3RhY2t9YCA6ICcnLFxyXG4gICAgXS5qb2luKCdcXG4nKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCe0L/RhtC40Lgg0LTQu9GPIHRvRGF0ZSgpLiDQntGB0YLQsNCy0LvQtdC90Ysg0LTQu9GPINC+0LHRgNCw0YLQvdC+0Lkg0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YHQuNCz0L3QsNGC0YPRgNGLIOKAlCDRgNCw0L3QtdC1INC/0YDQvtCx0YDQsNGB0YvQstCw0LvQuNGB0YxcclxuICog0LIgbHV4b24gKNC30L7QvdCwL9C70L7QutCw0LvRjCkuINCg0LDQt9Cx0L7RgCDQtNCw0YLRiyDRgtC10L/QtdGA0Ywg0L3QtSDQt9Cw0LLQuNGB0LjRgiDQvtGCINCy0L3QtdGI0L3QuNGFINCx0LjQsdC70LjQvtGC0LXQuiDQuCDQv9C+0LTQtNC10YDQttC40LLQsNC10YJcclxuICog0YLQvtC70YzQutC+INGE0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1INGH0LjRgdC70L7QstGL0LUg0YLQvtC60LXQvdGLICjRgdC8LiBwYXJzZURhdGVXaXRoRm9ybWF0KSwg0L/QvtGN0YLQvtC80YMg0L7Qv9GG0LjQuCDRgdC10LnRh9Cw0YEg0L3QtSDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRvRGF0ZU9wdGlvbnMge1xyXG4gIHpvbmU/OiBzdHJpbmdcclxuICBsb2NhbGU/OiBzdHJpbmdcclxufVxyXG5cclxuLyoqINCh0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSDRgtC+0LrQtdC90L7QsiDRhNC+0YDQvNCw0YLQsCDRgNC10LPRg9C70Y/RgNC90YvQvCDQs9GA0YPQv9C/0LDQvCDQt9Cw0YXQstCw0YLQsC4g0J/QvtGA0Y/QtNC+0Log0LLQsNC20LXQvTog0LTQu9C40L3QvdGL0LUg0YLQvtC60LXQvdGLINC/0YDQvtCy0LXRgNGP0Y7RgtGB0Y8g0YDQsNC90YzRiNC1INC60L7RgNC+0YLQutC40YUgKi9cclxuY29uc3QgREFURV9GT1JNQVRfVE9LRU5TOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgWyd5eXl5JywgJyg/PHl5eXk+XFxcXGR7NH0pJ10sXHJcbiAgWyd5eScsICcoPzx5eT5cXFxcZHsyfSknXSxcclxuICBbJ01NJywgJyg/PE1NPlxcXFxkezJ9KSddLFxyXG4gIFsnTScsICcoPzxNPlxcXFxkezEsMn0pJ10sXHJcbiAgWydkZCcsICcoPzxkZD5cXFxcZHsyfSknXSxcclxuICBbJ2QnLCAnKD88ZD5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnSEgnLCAnKD88SEg+XFxcXGR7Mn0pJ10sXHJcbiAgWydIJywgJyg/PEg+XFxcXGR7MSwyfSknXSxcclxuICBbJ21tJywgJyg/PG1tPlxcXFxkezJ9KSddLFxyXG4gIFsnbScsICcoPzxtPlxcXFxkezEsMn0pJ10sXHJcbiAgWydzcycsICcoPzxzcz5cXFxcZHsyfSknXSxcclxuICBbJ3MnLCAnKD88cz5cXFxcZHsxLDJ9KSddLFxyXG5dXHJcblxyXG5jb25zdCBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWCA9IG5ldyBSZWdFeHAoREFURV9GT1JNQVRfVE9LRU5TLm1hcCgoW3Rva2VuXSkgPT4gdG9rZW4pLmpvaW4oJ3wnKSwgJ2cnKVxyXG5cclxuY29uc3QgVElNRV9PTkxZX1RPS0VOUyA9IG5ldyBTZXQoWydISCcsICdIJywgJ21tJywgJ20nLCAnc3MnLCAncyddKVxyXG5cclxuLyoqXHJcbiAqINCS0YvQstC+0LTQuNGCINGE0L7RgNC80LDRgiBcItGC0L7Qu9GM0LrQviDQtNCw0YLQsFwiINC40Lcg0YTQvtGA0LzQsNGC0LAg0LTQsNGC0Yst0Lgt0LLRgNC10LzQtdC90Lgg4oCUINC+0YLRgNC10LfQsNC10YIg0LLRgNC10LzRjyDQuCDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINC/0LXRgNC10LRcclxuICog0L3QuNC8ICjQvdCw0L/RgNC40LzQtdGALCBgJ2RkLk1NLnl5eXkgSEg6bW06c3MnYCDihpIgYCdkZC5NTS55eXl5J2ApLiDQn9C+0YDRj9C00L7QuiDQtNC10L3RjC/QvNC10YHRj9GGL9Cz0L7QtCDRgyDQv9C+0LvQtdC5XHJcbiAqIFwi0LTQsNGC0LBcIiDQuCBcItC00LDRgtCwLdCy0YDQtdC80Y9cIiDQvdCwINC+0LTQvdC+0Lwg0L/QvtGA0YLQsNC70LUgQml0cml4MjQg0LLRgdC10LPQtNCwINGB0L7Qs9C70LDRgdC+0LLQsNC9IOKAlCDRgNCw0LfQu9C40YfQsNC10YLRgdGPINGC0L7Qu9GM0LrQvlxyXG4gKiDQvdCw0LvQuNGH0LjQtSBgSEg6bW06c3NgLCDQv9C+0Y3RgtC+0LzRgyDQvdC10YIg0YHQvNGL0YHQu9CwINC30LDRgdGC0LDQstC70Y/RgtGMINCy0YvQt9GL0LLQsNGO0YnQtdCz0L4g0L/QtdGA0LXQtNCw0LLQsNGC0Ywg0L7QsdCwINGE0L7RgNC80LDRgtCwINC4XHJcbiAqINC00LXRgNC20LDRgtGMINC40YUg0LIg0YHQuNC90YXRgNC+0L3QtSDQstGA0YPRh9C90YPRji5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVEYXRlT25seUZvcm1hdChkYXRlVGltZUZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5sYXN0SW5kZXggPSAwXHJcbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsXHJcblxyXG4gIHdoaWxlICgobWF0Y2ggPSBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5leGVjKGRhdGVUaW1lRm9ybWF0KSkgIT09IG51bGwpIHtcclxuICAgIGlmIChUSU1FX09OTFlfVE9LRU5TLmhhcyhtYXRjaFswXSkpIHtcclxuICAgICAgLy8g0J7RgtGA0LXQt9Cw0LXQvCDQu9GO0LHQvtC5INGA0LDQt9C00LXQu9C40YLQtdC70Ywg0L/QtdGA0LXQtCDQstGA0LXQvNC10L3QtdC8LCDQstC60LvRjtGH0LDRjyDQsdGD0LrQstC10L3QvdGL0LkgKNC90LDQv9GA0LjQvNC10YAgJ1QnINCyIElTTy3RgdGC0LjQu9C1XHJcbiAgICAgIC8vICdkZC5NTS55eXl5VEhIOm1tOnNzJyksINCwINC90LUg0YLQvtC70YzQutC+INC/0YPQvdC60YLRg9Cw0YbQuNGOIOKAlCDQvtGB0YLQsNC90LDQstC70LjQstCw0LXQvNGB0Y8g0L3QsCDQv9C+0YHQu9C10LTQvdC10Lwg0YHQuNC80LLQvtC70LUsXHJcbiAgICAgIC8vINC60L7RgtC+0YDRi9C5INGA0LXQsNC70YzQvdC+INC+0YLQvdC+0YHQuNGC0YHRjyDQuiDRgtC+0LrQtdC90LDQvCDQtNCw0YLRiyAoeS9NL2QpLlxyXG4gICAgICBjb25zdCBkYXRlUGFydCA9IGRhdGVUaW1lRm9ybWF0LnNsaWNlKDAsIG1hdGNoLmluZGV4KS5yZXBsYWNlKC9bXnlNZF0rJC8sICcnKVxyXG4gICAgICByZXR1cm4gZGF0ZVBhcnQgfHwgZGF0ZVRpbWVGb3JtYXRcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlVGltZUZvcm1hdFxyXG59XHJcblxyXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKVxyXG59XHJcblxyXG4vKipcclxuICog0KTQvtGA0LzQsNGC0Ysg0LTQsNGCLCDQutC+0YLQvtGA0YvQtSBCaXRyaXgyNCDRgNC10LDQu9GM0L3QviDQv9GA0LjRgdGL0LvQsNC10YIg0LIg0YDQsNC30L3Ri9GFINC80LXRgtC+0LTQsNGFIFJFU1Qg0Lgg0L3QsCDRgNCw0LfQvdGL0YVcclxuICog0L/QvtGA0YLQsNC70LDRhSDigJQg0YTQvtGA0LzQsNGCINC00LDRgtGLL9Cy0YDQtdC80LXQvdC4INCyINC+0YLQstC10YLQtSDQt9Cw0LLQuNGB0LjRgiDQvtGCINC90LDRgdGC0YDQvtC10Log0L/QvtGA0YLQsNC70LAgKNCd0LDRgdGC0YDQvtC50LrQuCDihpIg0YTQvtGA0LzQsNGCXHJcbiAqINC00LDRgtGLINC4INCy0YDQtdC80LXQvdC4KSwg0L/QvtGN0YLQvtC80YMg0L7QtNC40L0g0LfQsNGF0LDRgNC00LrQvtC20LXQvdC90YvQuSDRiNCw0LHQu9C+0L0g0L3QtSDRg9C90LjQstC10YDRgdCw0LvQtdC9LiDQldGB0LvQuCDRj9Cy0L3Ri9C5IGBmb3JtYXRgLFxyXG4gKiDQv9C10YDQtdC00LDQvdC90YvQuSDQsiB0b0RhdGUoKSwg0L3QtSDRgdC+0LLQv9Cw0Lsg0YHQviDQt9C90LDRh9C10L3QuNC10LwsINC/0LXRgNC10LQg0YLQtdC8INC60LDQuiDRgdGH0LjRgtCw0YLRjCDRgdGC0YDQvtC60YMg0L3QtdCy0LDQu9C40LTQvdC+0LksXHJcbiAqINC/0YDQvtCx0YPQtdC8INGN0YLQuCDQstCw0YDQuNCw0L3RgtGLINC/0L4g0L7Rh9C10YDQtdC00Lgg4oCUINC+0L3QuCDQvdC1INC/0LXRgNC10YHQtdC60LDRjtGC0YHRjyDQv9C+INGA0LDQt9C00LXQu9C40YLQtdC70Y/QvC/Qv9C+0YDRj9C00LrRgyDRgtC+0LrQtdC90L7QsixcclxuICog0YLQsNC6INGH0YLQviDQu9C+0LbQvdGL0YUg0YHQvtCy0L/QsNC00LXQvdC40Lkg0L3QtSDQsdGD0LTQtdGCLlxyXG4gKi9cclxuY29uc3QgRkFMTEJBQ0tfREFURV9GT1JNQVRTID0gW1xyXG4gICdkZC5NTS55eXl5IEhIOm1tOnNzJyxcclxuICAneXl5eS1NTS1kZCBISDptbTpzcycsXHJcbiAgJ2RkLk1NLnl5eXknLFxyXG4gICd5eXl5LU1NLWRkJyxcclxuXVxyXG5cclxuLyoqXHJcbiAqINCg0LDQt9Cx0LjRgNCw0LXRgiDRgdGC0YDQvtC60YMg0LTQsNGC0Ysg0L/QviDQv9GA0L7RgdGC0L7QvNGDINGI0LDQsdC70L7QvdGDICh5eXl5LCBNTSwgZGQsIEhILCBtbSwgc3Mg0Lgg0LjRhSDQvtC00L3QvtCx0YPQutCy0LXQvdC90YvQtVxyXG4gKiDQstCw0YDQuNCw0L3RgtGLLCDQvdCw0L/RgNC40LzQtdGAICdkZC5NTS55eXl5IEhIOm1tOnNzJykuINCg0LDQt9C00LXQu9C40YLQtdC70Lgg0LzQtdC20LTRgyDRgtC+0LrQtdC90LDQvNC4INCx0LXRgNGD0YLRgdGPINC40Lcg0YjQsNCx0LvQvtC90LBcclxuICog0LrQsNC6INC10YHRgtGMLiDQndC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDQu9C+0LrQsNC70LgsINC90LDQt9Cy0LDQvdC40Y8g0LzQtdGB0Y/RhtC10LIg0Lgg0YfQsNGB0L7QstGL0LUg0L/QvtGP0YHQsCDigJQg0LTQu9GPIFJFU1Qt0L7RgtCy0LXRgtC+0LJcclxuICogQml0cml4MjQg0L7QvdC4INC90LUg0YLRgNC10LHRg9GO0YLRgdGPLCDQt9C90LDRh9C10L3QuNGPINCy0YHQtdCz0LTQsCDQv9GA0LjRhdC+0LTRj9GCINCyINGE0LjQutGB0LjRgNC+0LLQsNC90L3QvtC8INGH0LjRgdC70L7QstC+0Lwg0LLQuNC00LUuXHJcbiAqL1xyXG5mdW5jdGlvbiBwYXJzZURhdGVXaXRoRm9ybWF0KHZhbDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICBjb25zdCB0b2tlbk1hcCA9IG5ldyBNYXAoREFURV9GT1JNQVRfVE9LRU5TKVxyXG4gIGxldCBwYXR0ZXJuID0gJydcclxuICBsZXQgbGFzdEluZGV4ID0gMFxyXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbFxyXG5cclxuICBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5sYXN0SW5kZXggPSAwXHJcbiAgd2hpbGUgKChtYXRjaCA9IERBVEVfRk9STUFUX1RPS0VOX1JFR0VYLmV4ZWMoZm9ybWF0KSkgIT09IG51bGwpIHtcclxuICAgIHBhdHRlcm4gKz0gZXNjYXBlUmVnRXhwKGZvcm1hdC5zbGljZShsYXN0SW5kZXgsIG1hdGNoLmluZGV4KSlcclxuICAgIHBhdHRlcm4gKz0gdG9rZW5NYXAuZ2V0KG1hdGNoWzBdKVxyXG4gICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcclxuICB9XHJcbiAgcGF0dGVybiArPSBlc2NhcGVSZWdFeHAoZm9ybWF0LnNsaWNlKGxhc3RJbmRleCkpXHJcblxyXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm59JGApLmV4ZWModmFsKVxyXG4gIGlmICghcmVzdWx0Py5ncm91cHMpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCBnID0gcmVzdWx0Lmdyb3Vwc1xyXG4gIGNvbnN0IHllYXIgPSBnWyd5eXl5J10gPyBOdW1iZXIoZ1sneXl5eSddKSA6IGdbJ3l5J10gPyAyMDAwICsgTnVtYmVyKGdbJ3l5J10pIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXHJcbiAgY29uc3QgbW9udGggPSBOdW1iZXIoZ1snTU0nXSA/PyBnWydNJ10gPz8gMSlcclxuICBjb25zdCBkYXkgPSBOdW1iZXIoZ1snZGQnXSA/PyBnWydkJ10gPz8gMSlcclxuICBjb25zdCBob3VyID0gTnVtYmVyKGdbJ0hIJ10gPz8gZ1snSCddID8/IDApXHJcbiAgY29uc3QgbWludXRlID0gTnVtYmVyKGdbJ21tJ10gPz8gZ1snbSddID8/IDApXHJcbiAgY29uc3Qgc2Vjb25kID0gTnVtYmVyKGdbJ3NzJ10gPz8gZ1sncyddID8/IDApXHJcblxyXG4gIC8vINCi0L7QutC10L3RiyDigJQg0Y3RgtC+INC/0YDQvtGB0YLQviBcIk4g0YbQuNGE0YBcIiwg0LHQtdC3INC/0YDQvtCy0LXRgNC60Lgg0LTQuNCw0L/QsNC30L7QvdCwIChyZWdleCDQvdC1INC+0YLQu9C40YfQuNGCIFwiMTNcIiDQvNC10YHRj9GG0LAg0L7RglxyXG4gIC8vIFwiMTNcIiDQtNC90Y8pLiDQkdC10Lcg0Y3RgtC+0Lkg0L/RgNC+0LLQtdGA0LrQuCBuZXcgRGF0ZSgpINC80L7Qu9GH0LAgXCLQv9C10YDQtdC60LDRgtGL0LLQsNC10YJcIiDQv9C10YDQtdC/0L7Qu9C90LXQvdC40LUg0L3QsCDRgdC+0YHQtdC00L3QuNC5XHJcbiAgLy8g0LzQtdGB0Y/Rhi/Qs9C+0LQgKNC90LDQv9GA0LjQvNC10YAsINC80LXRgdGP0YY9MTMg4oaSINGP0L3QstCw0YDRjCDRgdC70LXQtNGD0Y7RidC10LPQviDQs9C+0LTQsCkg0LLQvNC10YHRgtC+INGC0L7Qs9C+LCDRh9GC0L7QsdGLINGB0YfQuNGC0LDRgtGMXHJcbiAgLy8g0YHRgtGA0L7QutGDINC90LXQstCw0LvQuNC00L3QvtC5LlxyXG4gIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMiB8fCBkYXkgPCAxIHx8IGRheSA+IDMxIHx8IGhvdXIgPiAyMyB8fCBtaW51dGUgPiA1OSB8fCBzZWNvbmQgPiA1OSkge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpXHJcbiAgcmV0dXJuIGlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9C+0YHQu9C10LTQvdC40Lkg0YDQtdC30LXRgNCy0L3Ri9C5INGA0LDQt9Cx0L7RgCDigJQg0LHQtdC3INC30L3QsNC90LjRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INGE0L7RgNC80LDRgtCwLiDQoNCw0LHQvtGC0LDQtdGCINGC0L7Qu9GM0LrQviDQtNC70Y8g0YfQuNGB0YLQvlxyXG4gKiDRh9C40YHQu9C+0LLRi9GFINC00LDRgiAo0L3QuNC60LDQutC40YUg0L3QsNC30LLQsNC90LjQuSDQvNC10YHRj9GG0LXQsi/QtNC90LXQuSDigJQg0LTQu9GPINGN0YLQvtCz0L4g0L3Rg9C20L3RiyBsb2NhbGUt0YLQsNCx0LvQuNGG0YssINCwINGN0YLQviDQutCw0LpcclxuICog0YDQsNC3INGC0L7RgiDQstC10YEsINGA0LDQtNC4INGD0YXQvtC00LAg0L7RgiDQutC+0YLQvtGA0L7Qs9C+IGx1eG9uINCx0YvQuyDRg9Cx0YDQsNC9INC40Lcg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5KS5cclxuICpcclxuICog0JjQtNC10Y86INCz0L7QtCDigJQg0LXQtNC40L3RgdGC0LLQtdC90L3Ri9C5INGB0LXQs9C80LXQvdGCINC00LvQuNC90L7QuSDRgNC+0LLQvdC+IDQg0YbQuNGE0YDRiywg0L/QvtGN0YLQvtC80YMg0LXQs9C+INC/0L7Qt9C40YbQuNGPICjQv9C10YDQstGL0Lkg0LjQu9C4XHJcbiAqINC/0L7RgdC70LXQtNC90LjQuSDQuNC3INGC0YDRkdGFINGB0LXQs9C80LXQvdGC0L7QsiDQtNCw0YLRiykg0L7QtNC90L7Qt9C90LDRh9C90L4g0L7Qv9C+0LfQvdCw0ZHRgtGB0Y8g0L/RgNC4INC70Y7QsdC+0Lwg0YDQsNC30LTQtdC70LjRgtC10LvQtSAoYC5gLCBgLWAsXHJcbiAqIGAvYCwg0L/RgNC+0LHQtdC7Li4uKS4g0JzQtdGB0Y/RhiDQv9C+INCy0YHQtdC8INGA0LDRgdC/0YDQvtGB0YLRgNCw0L3RkdC90L3Ri9C8INCyINC80LjRgNC1INGB0L7Qs9C70LDRiNC10L3QuNGP0LwgKElTTyBgeXl5eS1NTS1kZGAg0LhcclxuICog0LXQstGA0L7Qv9C10LnRgdC60L7QtSBgZGQuTU0ueXl5eWApINGB0YLQvtC40YIg0LzQtdC20LTRgyDQs9C+0LTQvtC8INC4INC00L3RkdC8LCDQv9C+0Y3RgtC+0LzRgyDQsdC10YDRkdGC0YHRjyDQutCw0Log0YHRgNC10LTQvdC40Lkg0YHQtdCz0LzQtdC90YIuXHJcbiAqINCS0YDQtdC80Y8sINC10YHQu9C4INC10YHRgtGMLCDQstGB0LXQs9C00LAg0LjQtNGR0YIg0LrQsNC6IGBISDptbTpzc2Ag4oCUINGN0YLQvtGCINC/0L7RgNGP0LTQvtC6INGD0L3QuNCy0LXRgNGB0LDQu9C10L0uXHJcbiAqXHJcbiAqINCd0LUg0YDQtdGI0LDQtdGCINC4INC90LUg0L/Ri9GC0LDQtdGC0YHRjyDRgNC10YjQuNGC0Ywg0L3QtdC+0LTQvdC+0LfQvdCw0YfQvdC+0YHRgtGMINC00LXQvdGML9C80LXRgdGP0YYg0LIg0YfQuNGB0YLQviDRh9C40YHQu9C+0LLRi9GFINGE0L7RgNC80LDRgtCw0YUg0LLQuNC00LBcclxuICogYE1NL2RkL3l5eXlgICjQodCo0JApLCDQs9C00LUg0L7QsdCwINGB0LXQs9C80LXQvdGC0LAg0LzQvtCz0YPRgiDQsdGL0YLRjCDiiaQxMiDigJQg0YPQs9Cw0LTRi9Cy0LDRgtGMINGN0YLQviDQsdC10Lcg0LfQvdCw0L3QuNGPINC70L7QutCw0LvQuFxyXG4gKiDQt9C90LDRh9C40LvQviDQsdGLINC40L3QvtCz0LTQsCDQvNC+0LvRh9CwINC/0YPRgtCw0YLRjCDQtNC10L3RjCDRgSDQvNC10YHRj9GG0LXQvCwg0YfRgtC+INGF0YPQttC1INGP0LLQvdC+0Lkg0L7RiNC40LHQutC4LlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VEYXRlSGV1cmlzdGljYWxseSh2YWw6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcclxuICBjb25zdCBwYXJ0cyA9IHZhbC5tYXRjaCgvXFxkKy9nKVxyXG4gIGlmICghcGFydHMgfHwgcGFydHMubGVuZ3RoIDwgMyB8fCBwYXJ0cy5sZW5ndGggPiA2KSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgW2QwLCBkMSwgZDIsIC4uLnRpbWVQYXJ0c10gPSBwYXJ0c1xyXG4gIGNvbnN0IGRhdGVQYXJ0cyA9IFtkMCwgZDEsIGQyXVxyXG4gIGNvbnN0IHllYXJJZHggPSBkYXRlUGFydHMuZmluZEluZGV4KHAgPT4gcC5sZW5ndGggPT09IDQpXHJcbiAgLy8g0JPQvtC0INC00L7Qu9C20LXQvSDQsdGL0YLRjCDQvtC00L3QvtC30L3QsNGH0L3QviDQvdCw0LnQtNC10L0gKNGA0L7QstC90L4gNCDRhtC40YTRgNGLKSDQuCDRgdGC0L7Rj9GC0Ywg0YEg0LrRgNCw0Y8sINCwINC90LUg0LIg0YHQtdGA0LXQtNC40L3QtSDigJRcclxuICAvLyDQuNC90LDRh9C1INC/0L7Qt9C40YbQuNGPINC80LXRgdGP0YbQsC/QtNC90Y8g0L3QtSDQvtC/0YDQtdC00LXQu9C40YLRjCDQsdC10LfQvtC/0LDRgdC90L4uXHJcbiAgaWYgKHllYXJJZHggIT09IDAgJiYgeWVhcklkeCAhPT0gMikge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IHllYXIgPSBOdW1iZXIoZGF0ZVBhcnRzW3llYXJJZHhdKVxyXG4gIGNvbnN0IG1vbnRoID0gTnVtYmVyKGRhdGVQYXJ0c1sxXSlcclxuICBjb25zdCBkYXkgPSBOdW1iZXIoZGF0ZVBhcnRzW3llYXJJZHggPT09IDAgPyAyIDogMF0pXHJcbiAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyIHx8IGRheSA8IDEgfHwgZGF5ID4gMzEpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCBbaGgsIG1tLCBzc10gPSB0aW1lUGFydHNcclxuICBjb25zdCBob3VyID0gaGggIT09IHVuZGVmaW5lZCA/IE51bWJlcihoaCkgOiAwXHJcbiAgY29uc3QgbWludXRlID0gbW0gIT09IHVuZGVmaW5lZCA/IE51bWJlcihtbSkgOiAwXHJcbiAgY29uc3Qgc2Vjb25kID0gc3MgIT09IHVuZGVmaW5lZCA/IE51bWJlcihzcykgOiAwXHJcbiAgaWYgKGhvdXIgPiAyMyB8fCBtaW51dGUgPiA1OSB8fCBzZWNvbmQgPiA1OSkge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpXHJcbiAgcmV0dXJuIGlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0LTQsNGC0YMuXHJcbiAqXHJcbiAqINCV0YHQu9C4INC/0LXRgNC10LTQsNC9IGBmb3JtYXRgLCDQvdC+INC30L3QsNGH0LXQvdC40LUg0LXQvNGDINC90LUg0YHQvtC+0YLQstC10YLRgdGC0LLRg9C10YIgKNGB0LwuIEZBTExCQUNLX0RBVEVfRk9STUFUUyDigJRcclxuICog0LDQutGC0YPQsNC70YzQvdC+INC00LvRjyDQv9C+0LvQtdC5LCDQs9C00LUgQml0cml4MjQg0L7RgtC00LDRkdGCINC00LDRgtGDINCyINGE0L7RgNC80LDRgtC1LCDQvdCw0YHRgtGA0L7QtdC90L3QvtC8INC90LAg0L/QvtGA0YLQsNC70LUsINCwINC90LUg0LJcclxuICog0YLQvtC8LCDRh9GC0L4g0LfQsNGF0LDRgNC00LrQvtC20LXQvSDQsiDQvNCw0L/Qv9C10YDQtSksINC/0LXRgNC10LQg0YLQtdC8INC60LDQuiDRgdGH0LjRgtCw0YLRjCDQt9C90LDRh9C10L3QuNC1INC90LXQstCw0LvQuNC00L3Ri9C8LCDQtNC10LvQsNGO0YLRgdGPINC10YnRkVxyXG4gKiDQtNCy0LUg0L/QvtC/0YvRgtC60Lg6INC00YDRg9Cz0LjQtSDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90ZHQvdC90YvQtSDRhNC+0YDQvNCw0YLRiyBCaXRyaXgyNCwg0LAg0LfQsNGC0LXQvCDigJQg0L/QvtC30LjRhtC40L7QvdC90LDRjyDRjdCy0YDQuNGB0YLQuNC60LBcclxuICogKNGB0LwuIHBhcnNlRGF0ZUhldXJpc3RpY2FsbHkpLCDQutC+0YLQvtGA0LDRjyDRgNCw0YHQv9C+0LfQvdCw0ZHRgiDQv9GA0LDQutGC0LjRh9C10YHQutC4INC70Y7QsdC+0Lkg0YfQuNGB0YLQviDRh9C40YHQu9C+0LLQvtC5INGE0L7RgNC80LDRglxyXG4gKiDQtNCw0YLRiyDQvdC10LfQsNCy0LjRgdC40LzQviDQvtGCINGA0LDQt9C00LXQu9C40YLQtdC70Y8uINCV0YHQu9C4INC/0YDQuNC70L7QttC10L3QuNGOINGC0L7Rh9C90L4g0LjQt9Cy0LXRgdGC0LXQvSDRhNC+0YDQvNCw0YIg0LrQvtC90LrRgNC10YLQvdC+0LPQviDQv9C+0YDRgtCw0LvQsCxcclxuICog0LXQs9C+INGB0YLQvtC40YIg0L/QtdGA0LXQtNCw0LLQsNGC0Ywg0Y/QstC90YvQvCBgZm9ybWF0YCDigJQg0Y3RgtC+INCy0YHQtdCz0LTQsCDQv9GA0LjQvtGA0LjRgtC10YLQvdC10LUg0YPQs9Cw0LTRi9Cy0LDQvdC40Y8uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRlKHZhbDogbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZSwgZm9ybWF0Pzogc3RyaW5nLCBvcHQ/OiBUb0RhdGVPcHRpb25zLCB0aHJvd0Vycm9yID0gdHJ1ZSk6IERhdGUge1xyXG4gIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICByZXR1cm4gdmFsXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgaWYgKGZvcm1hdCkge1xyXG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZURhdGVXaXRoRm9ybWF0KHZhbCwgZm9ybWF0KVxyXG4gICAgICBpZiAocGFyc2VkKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlZFxyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGZhbGxiYWNrRm9ybWF0IG9mIEZBTExCQUNLX0RBVEVfRk9STUFUUykge1xyXG4gICAgICAgIGlmIChmYWxsYmFja0Zvcm1hdCA9PT0gZm9ybWF0KSBjb250aW51ZVxyXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyc2VkID0gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWwsIGZhbGxiYWNrRm9ybWF0KVxyXG4gICAgICAgIGlmIChmYWxsYmFja1BhcnNlZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbGxiYWNrUGFyc2VkXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBoZXVyaXN0aWNQYXJzZWQgPSBwYXJzZURhdGVIZXVyaXN0aWNhbGx5KHZhbClcclxuICAgICAgaWYgKGhldXJpc3RpY1BhcnNlZCkge1xyXG4gICAgICAgIHJldHVybiBoZXVyaXN0aWNQYXJzZWRcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbClcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodmFsKVxyXG4gIH1cclxuXHJcbiAgaWYgKHRocm93RXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ1dyb25nIGRhdGUgZm9ybWF0JywgdmFsLCBmb3JtYXQpXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGRhdGUgZm9ybWF0JylcclxuICB9XHJcblxyXG4gIHJldHVybiBuZXcgRGF0ZSgpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC00LDRgtGDINCyINGB0YLRgNC+0LrRgyDRgSDRg9GH0LXRgtC+0Lwg0LLRgNC10LzQtdC90L3QvtC5INC30L7QvdGLXHJcbiAqXHJcbiAqIEBwYXJhbSBkYXRlXHJcbiAqIEBwYXJhbSB0aHJvd0Vycm9yXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9JU09TdHJpbmdXaXRoVGltZXpvbmUoZGF0ZTogRGF0ZSwgdGhyb3dFcnJvciA9IHRydWUpOiBzdHJpbmcge1xyXG4gIGlmICghKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgaWYgKHRocm93RXJyb3IpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogbm90IGEgdmFsaWQgRGF0ZSBvYmplY3QnKVxyXG4gICAgcmV0dXJuICcnXHJcbiAgfVxyXG5cclxuICBjb25zdCB0ek9mZnNldCA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KClcclxuICBjb25zdCBkaWZmID0gdHpPZmZzZXQgPj0gMCA/ICcrJyA6ICctJ1xyXG4gIGNvbnN0IHBhZCA9IChuOiBudW1iZXIpID0+IGAke01hdGguZmxvb3IoTWF0aC5hYnMobikpfWAucGFkU3RhcnQoMiwgJzAnKVxyXG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgJy0nICsgcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICctJyArIHBhZChkYXRlLmdldERhdGUoKSkgK1xyXG4gICAgJ1QnICsgcGFkKGRhdGUuZ2V0SG91cnMoKSkgK1xyXG4gICAgJzonICsgcGFkKGRhdGUuZ2V0TWludXRlcygpKSArXHJcbiAgICAnOicgKyBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpICtcclxuICAgIGRpZmYgKyBwYWQodHpPZmZzZXQgLyA2MCkgK1xyXG4gICAgJzonICsgcGFkKHR6T2Zmc2V0ICUgNjApXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LVcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQm9vbCh2YWw6IGFueSwgdGhyb3dFcnJvciA9IHRydWUpOiBib29sZWFuIHtcclxuICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIGlmICh2YWwgPT09ICduJyB8fCB2YWwgPT09ICd5JykgeyAvLyDQsdC40YLRgNC40LrRgdC+0LLRi9C1INC/0L7QvdGP0YLQuNGPINC+IGJvb2xcclxuICAgICAgICByZXR1cm4gdmFsID09PSAneSdcclxuICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdmYWxzZScpIHsgLy8g0LHQuNGC0YDQuNC60YHQvtCy0YvQtSDQv9C+0L3Rj9GC0LjRjyDQviBib29sXHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRocm93RXJyb3IpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogY2Fubm90IGJlIGNvbnZlcnRlZCB0byBib29sZWFuJylcclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LUg0LIgJ1knINC40LvQuCAnTidcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQlhZb3JOKHZhbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbCA/ICdZJyA6ICdOJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZVVybEh0dHBzKHVybDogc3RyaW5nLCBjb21wb25lbnQgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGVuY29kZVVSSShjcm9wVXJsKHVybCkgKyAnLycpXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBlbmNvZGVVUkkoJ2h0dHBzOi8vJyArIGNyb3BVcmwodXJsKSArICcvJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YDQtdC30LDQtdGCIFVSTCAo0YPQtNCw0LvRj9C10YIg0L/RgNC+0YLQvtC60L7QuylcclxuICpcclxuICogQHBhcmFtIHVybFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyb3BVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczovLycsICcnKSA6ICcnXHJcbiAgdXJsID0gdXJsID8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczonLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwOicsICcnKSA6ICcnXHJcbiAgcmV0dXJuIHVybFxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDRhNCw0LnQuyDQsiBiYXNlNjRcclxuICpcclxuICogQHBhcmFtIGZpbGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKVxyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXHJcbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcilcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtC70YPRh9C40YLRjCDRhNCw0LnQuyDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQg0YEg0YDQsNC30LHQuNCy0LrQvtC5INC90LAg0LfQsNCz0L7Qu9C+0LLQvtC6INC4INC00LDQvdC90YvQtVxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhc2U2NEZpbGVMaWtlU3RyKGZpbGU6IEZpbGUpOiBQcm9taXNlPHtcclxuICBoZWFkZXI6IHN0cmluZyxcclxuICB2YWw6IHN0cmluZ1xyXG59IHwgdW5kZWZpbmVkPiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QmFzZTY0RmlsZShmaWxlKVxyXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xyXG4gICAgY29uc3Qgc3BsaXQgPSByZXN1bHQuc3BsaXQoJywnKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyOiBzcGxpdFswXSxcclxuICAgICAgdmFsOiBzcGxpdFsxXVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmFzZUFkZHJlc3ModXJsOiBzdHJpbmcsIGFkZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJycpIHtcclxuICAvLyBpZiAodXJsLnNlYXJjaCgnaHR0cHM6Ly8nKSAhPT0gMCAmJiB1cmwuc2VhcmNoKCdodHRwOi8vJykpIHtcclxuICAvLyAgIHVybCA9ICdodHRwczovLycgKyB1cmxcclxuICAvLyB9XHJcblxyXG4gIGlmIChhZGQgJiYgYWRkLmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgICB1cmwgPSB1cmwgKyAnLydcclxuICAgIH1cclxuXHJcbiAgICB1cmwgPSB1cmwgKyBhZGRcclxuICB9XHJcblxyXG4gIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgdXJsID0gdXJsICsgJy8nXHJcbiAgfVxyXG5cclxuICByZXR1cm4gdXJsXHJcbn0iXX0=
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRXREOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxHQUFRLEVBQUUsVUFBVSxHQUFHLEtBQUs7SUFDaEQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ3hFLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVEsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWpDLElBQUksVUFBVTtZQUFFLE1BQU0sS0FBSyxDQUFBO1FBRTNCLGtEQUFrRDtRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUNuQyxZQUE0QixLQUFVO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxDQUFBO1FBQzlCLE1BQU0sY0FBYyxHQUNsQixTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEUsTUFBTSxPQUFPLEdBQUcsb0NBQW9DLGNBQWMsV0FBVyxTQUFTLEdBQUcsQ0FBQTtRQUN6RixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFMWSxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBTXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFBO1FBRXhCLHVEQUF1RDtRQUN2RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3pDLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVRLFFBQVE7UUFDZixPQUFPO1lBQ0wsTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNuRCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNkLENBQUM7Q0FDRjtBQVlELHlIQUF5SDtBQUN6SCxNQUFNLGtCQUFrQixHQUF1QjtJQUM3QyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQztJQUMzQixDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7SUFDdkIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDO0lBQ3ZCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO0lBQ3ZCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQztJQUN2QixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQztJQUN2QixDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7SUFDdkIsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7SUFDdkIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDO0lBQ3ZCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO0lBQ3ZCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQztJQUN2QixDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQztDQUN4QixDQUFBO0FBRUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFckcsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUVuRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsY0FBc0I7SUFDekQsdUJBQXVCLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtJQUNyQyxJQUFJLEtBQTZCLENBQUE7SUFFakMsT0FBTyxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN2RSxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25DLHlGQUF5RjtZQUN6Rix5RkFBeUY7WUFDekYsb0RBQW9EO1lBQ3BELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQzdFLE9BQU8sUUFBUSxJQUFJLGNBQWMsQ0FBQTtRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxHQUFXO0lBQy9CLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUNuRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0scUJBQXFCLEdBQUc7SUFDNUIscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQixZQUFZO0lBQ1osWUFBWTtDQUNiLENBQUE7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsbUJBQW1CLENBQUMsR0FBVyxFQUFFLE1BQWM7SUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUM1QyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFDaEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFBO0lBQ2pCLElBQUksS0FBNkIsQ0FBQTtJQUVqQyx1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDL0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUM3RCxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzNDLENBQUM7SUFDRCxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtJQUN2QixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3hHLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzVDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRTdDLHdGQUF3RjtJQUN4Rix3RkFBd0Y7SUFDeEYscUZBQXFGO0lBQ3JGLHFCQUFxQjtJQUNyQixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM5RixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxHQUFXO0lBQ3pDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDL0IsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUN4QyxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDeEQsdUZBQXVGO0lBQ3ZGLG9EQUFvRDtJQUNwRCxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDcEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFBO0lBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hELElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxNQUFNLEdBQUcsRUFBRSxJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNqRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLEdBQTJCLEVBQUUsTUFBZSxFQUFFLEdBQW1CLEVBQUUsVUFBVSxHQUFHLElBQUk7SUFDekcsSUFBSSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDeEIsT0FBTyxHQUFHLENBQUE7SUFDWixDQUFDO1NBQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQy9DLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxNQUFNLENBQUE7WUFDZixDQUFDO1lBRUQsS0FBSyxNQUFNLGNBQWMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLGNBQWMsS0FBSyxNQUFNO29CQUFFLFNBQVE7Z0JBQ3ZDLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQTtnQkFDL0QsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxjQUFjLENBQUE7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbkQsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxlQUFlLENBQUE7WUFDeEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFBO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBVSxFQUFFLFVBQVUsR0FBRyxJQUFJO0lBQ25FLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVCLElBQUksVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtRQUN6RSxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLEdBQVEsRUFBRSxVQUFVLEdBQUcsSUFBSTtJQUNoRCxRQUFRLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsS0FBSyxRQUFRO1lBQ1gsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUN2QixJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsNkJBQTZCO2dCQUM3RCxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUE7WUFDcEIsQ0FBQztpQkFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUMsNkJBQTZCO2dCQUMzRSxPQUFPLEdBQUcsS0FBSyxNQUFNLENBQUE7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksVUFBVTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUE7Z0JBQ2hGLE9BQU8sS0FBSyxDQUFBO1lBQ2QsQ0FBQztRQUNIO1lBQ0UsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkIsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFZO0lBQ25DLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtBQUN4QixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsU0FBUyxHQUFHLEtBQUs7SUFDNUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtJQUN0QyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sU0FBUyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7SUFDbkQsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFXO0lBQ2pDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDNUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMzQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDekMsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBVTtJQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7UUFDL0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFBO1FBQ3RELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQUMsSUFBVTtJQUluRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0IsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2QsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxNQUEwQixFQUFFO0lBQzFFLCtEQUErRDtJQUMvRCwyQkFBMkI7SUFDM0IsSUFBSTtJQUVKLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLENBQUM7UUFFRCxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQTtJQUNqQixDQUFDO0lBRUQsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2pCLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0xvY2FsQXRvbSB9IGZyb20gJy4uL2Z1bmN0aW9ucy90b0xvY2FsQXRvbSdcclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YHRgtGA0L7QutGDXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWxcclxuICogQHBhcmFtIHRocm93RXJyb3JcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1N0cih2YWw6IGFueSwgdGhyb3dFcnJvciA9IGZhbHNlKTogc3RyaW5nIHtcclxuICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhyb3dFcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7dmFsfSBjYW5ub3QgYmUgY29udmVydGVkIHRvIHN0cmluZ2ApXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJydcclxuICB9XHJcbiAgcmV0dXJuIFN0cmluZyh2YWwpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0YfQuNGB0LvQvlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvTnVtKHZhbDogYW55LCB0aHJvd0Vycm9yID0gdHJ1ZSwgZGVmVmFsdWUgPSAwKTogbnVtYmVyIHtcclxuICBjb25zdCByZXN1bHQgPSBOdW1iZXIodmFsKVxyXG5cclxuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xyXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgVG9OdW1FcnJvcih2YWwpXHJcblxyXG4gICAgaWYgKHRocm93RXJyb3IpIHRocm93IGVycm9yXHJcblxyXG4gICAgLy8g0JXRgdC70Lgg0L7RiNC40LHQutCwINC90LUg0L/RgNC+0LHRgNCw0YHRi9Cy0LDQtdGC0YHRjyDigJQg0L/RgNC+0YHRgtC+INC70L7Qs9C40YDRg9C10LxcclxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IudG9TdHJpbmcoKSlcclxuICAgIHJldHVybiBkZWZWYWx1ZVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG4vKipcclxuICog0JrQsNGB0YLQvtC80L3Ri9C5INGC0LjQvyDQvtGI0LjQsdC60Lgg0LTQu9GPINGH0LjRgdC70L7QstGL0YUg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRvTnVtRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHR5cGVvZiB2YWx1ZVxyXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPVxyXG4gICAgICB2YWx1ZVR5cGUgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogU3RyaW5nKHZhbHVlKVxyXG4gICAgY29uc3QgbWVzc2FnZSA9IGBJbnZhbGlkIHZhbHVlIHBhc3NlZCB0byB0b051bSgpOiAke2Zvcm1hdHRlZFZhbHVlfSAodHlwZTogJHt2YWx1ZVR5cGV9KWBcclxuICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICB0aGlzLm5hbWUgPSAnVG9OdW1FcnJvcidcclxuXHJcbiAgICAvLyDRgdC+0YXRgNCw0L3Rj9C10Lwg0YHRgtC10Log0LLRi9C30L7QstCwICjQvtGC0YTQuNC70YzRgtGA0L7QstCw0LIg0YHQsNC8INC60L7QvdGB0YLRgNGD0LrRgtC+0YApXHJcbiAgICBpZiAodGhpcy5zdGFjaykge1xyXG4gICAgICBjb25zdCBzdGFja0xpbmVzID0gdGhpcy5zdGFjay5zcGxpdCgnXFxuJylcclxuICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0YHRgtGA0L7QutGDINC60L7QvdGB0YLRgNGD0LrRgtC+0YDQsCAo0YfRgtC+0LHRiyDRgdGC0LXQuiDQvdCw0YfQuNC90LDQu9GB0Y8g0YEg0LzQtdGB0YLQsCDQstGL0LfQvtCy0LAgdG9OdW0pXHJcbiAgICAgIHRoaXMuc3RhY2sgPSBbc3RhY2tMaW5lc1swXSwgLi4uc3RhY2tMaW5lcy5zbGljZSgyKV0uam9pbignXFxuJylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBg4p2MIFske3RoaXMubmFtZX1dICR7dGhpcy5tZXNzYWdlfWAsXHJcbiAgICAgIHRoaXMuc3RhY2sgPyBgICAgU3RhY2sgdHJhY2U6XFxuJHt0aGlzLnN0YWNrfWAgOiAnJyxcclxuICAgIF0uam9pbignXFxuJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntC/0YbQuNC4INC00LvRjyB0b0RhdGUoKS4g0J7RgdGC0LDQstC70LXQvdGLINC00LvRjyDQvtCx0YDQsNGC0L3QvtC5INGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4INGB0LjQs9C90LDRgtGD0YDRiyDigJQg0YDQsNC90LXQtSDQv9GA0L7QsdGA0LDRgdGL0LLQsNC70LjRgdGMXHJcbiAqINCyIGx1eG9uICjQt9C+0L3QsC/Qu9C+0LrQsNC70YwpLiDQoNCw0LfQsdC+0YAg0LTQsNGC0Ysg0YLQtdC/0LXRgNGMINC90LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQstC90LXRiNC90LjRhSDQsdC40LHQu9C40L7RgtC10Log0Lgg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCXHJcbiAqINGC0L7Qu9GM0LrQviDRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSDRh9C40YHQu9C+0LLRi9C1INGC0L7QutC10L3RiyAo0YHQvC4gcGFyc2VEYXRlV2l0aEZvcm1hdCksINC/0L7RjdGC0L7QvNGDINC+0L/RhtC40Lgg0YHQtdC50YfQsNGBINC90LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBUb0RhdGVPcHRpb25zIHtcclxuICB6b25lPzogc3RyaW5nXHJcbiAgbG9jYWxlPzogc3RyaW5nXHJcbn1cclxuXHJcbi8qKiDQodC+0L7RgtCy0LXRgtGB0YLQstC40LUg0YLQvtC60LXQvdC+0LIg0YTQvtGA0LzQsNGC0LAg0YDQtdCz0YPQu9GP0YDQvdGL0Lwg0LPRgNGD0L/Qv9Cw0Lwg0LfQsNGF0LLQsNGC0LAuINCf0L7RgNGP0LTQvtC6INCy0LDQttC10L06INC00LvQuNC90L3Ri9C1INGC0L7QutC10L3RiyDQv9GA0L7QstC10YDRj9GO0YLRgdGPINGA0LDQvdGM0YjQtSDQutC+0YDQvtGC0LrQuNGFICovXHJcbmNvbnN0IERBVEVfRk9STUFUX1RPS0VOUzogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gIFsneXl5eScsICcoPzx5eXl5PlxcXFxkezR9KSddLFxyXG4gIFsneXknLCAnKD88eXk+XFxcXGR7Mn0pJ10sXHJcbiAgWydNTScsICcoPzxNTT5cXFxcZHsyfSknXSxcclxuICBbJ00nLCAnKD88TT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnZGQnLCAnKD88ZGQ+XFxcXGR7Mn0pJ10sXHJcbiAgWydkJywgJyg/PGQ+XFxcXGR7MSwyfSknXSxcclxuICBbJ0hIJywgJyg/PEhIPlxcXFxkezJ9KSddLFxyXG4gIFsnSCcsICcoPzxIPlxcXFxkezEsMn0pJ10sXHJcbiAgWydtbScsICcoPzxtbT5cXFxcZHsyfSknXSxcclxuICBbJ20nLCAnKD88bT5cXFxcZHsxLDJ9KSddLFxyXG4gIFsnc3MnLCAnKD88c3M+XFxcXGR7Mn0pJ10sXHJcbiAgWydzJywgJyg/PHM+XFxcXGR7MSwyfSknXSxcclxuXVxyXG5cclxuY29uc3QgREFURV9GT1JNQVRfVE9LRU5fUkVHRVggPSBuZXcgUmVnRXhwKERBVEVfRk9STUFUX1RPS0VOUy5tYXAoKFt0b2tlbl0pID0+IHRva2VuKS5qb2luKCd8JyksICdnJylcclxuXHJcbmNvbnN0IFRJTUVfT05MWV9UT0tFTlMgPSBuZXcgU2V0KFsnSEgnLCAnSCcsICdtbScsICdtJywgJ3NzJywgJ3MnXSlcclxuXHJcbi8qKlxyXG4gKiDQktGL0LLQvtC00LjRgiDRhNC+0YDQvNCw0YIgXCLRgtC+0LvRjNC60L4g0LTQsNGC0LBcIiDQuNC3INGE0L7RgNC80LDRgtCwINC00LDRgtGLLdC4LdCy0YDQtdC80LXQvdC4IOKAlCDQvtGC0YDQtdC30LDQtdGCINCy0YDQtdC80Y8g0Lgg0YDQsNC30LTQtdC70LjRgtC10LvRjCDQv9C10YDQtdC0XHJcbiAqINC90LjQvCAo0L3QsNC/0YDQuNC80LXRgCwgYCdkZC5NTS55eXl5IEhIOm1tOnNzJ2Ag4oaSIGAnZGQuTU0ueXl5eSdgKS4g0J/QvtGA0Y/QtNC+0Log0LTQtdC90Ywv0LzQtdGB0Y/Rhi/Qs9C+0LQg0YMg0L/QvtC70LXQuVxyXG4gKiBcItC00LDRgtCwXCIg0LggXCLQtNCw0YLQsC3QstGA0LXQvNGPXCIg0L3QsCDQvtC00L3QvtC8INC/0L7RgNGC0LDQu9C1IEJpdHJpeDI0INCy0YHQtdCz0LTQsCDRgdC+0LPQu9Cw0YHQvtCy0LDQvSDigJQg0YDQsNC30LvQuNGH0LDQtdGC0YHRjyDRgtC+0LvRjNC60L5cclxuICog0L3QsNC70LjRh9C40LUgYEhIOm1tOnNzYCwg0L/QvtGN0YLQvtC80YMg0L3QtdGCINGB0LzRi9GB0LvQsCDQt9Cw0YHRgtCw0LLQu9GP0YLRjCDQstGL0LfRi9Cy0LDRjtGJ0LXQs9C+INC/0LXRgNC10LTQsNCy0LDRgtGMINC+0LHQsCDRhNC+0YDQvNCw0YLQsCDQuFxyXG4gKiDQtNC10YDQttCw0YLRjCDQuNGFINCyINGB0LjQvdGF0YDQvtC90LUg0LLRgNGD0YfQvdGD0Y4uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVyaXZlRGF0ZU9ubHlGb3JtYXQoZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbFxyXG5cclxuICB3aGlsZSAoKG1hdGNoID0gREFURV9GT1JNQVRfVE9LRU5fUkVHRVguZXhlYyhkYXRlVGltZUZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBpZiAoVElNRV9PTkxZX1RPS0VOUy5oYXMobWF0Y2hbMF0pKSB7XHJcbiAgICAgIC8vINCe0YLRgNC10LfQsNC10Lwg0LvRjtCx0L7QuSDRgNCw0LfQtNC10LvQuNGC0LXQu9GMINC/0LXRgNC10LQg0LLRgNC10LzQtdC90LXQvCwg0LLQutC70Y7Rh9Cw0Y8g0LHRg9C60LLQtdC90L3Ri9C5ICjQvdCw0L/RgNC40LzQtdGAICdUJyDQsiBJU08t0YHRgtC40LvQtVxyXG4gICAgICAvLyAnZGQuTU0ueXl5eVRISDptbTpzcycpLCDQsCDQvdC1INGC0L7Qu9GM0LrQviDQv9GD0L3QutGC0YPQsNGG0LjRjiDigJQg0L7RgdGC0LDQvdCw0LLQu9C40LLQsNC10LzRgdGPINC90LAg0L/QvtGB0LvQtdC00L3QtdC8INGB0LjQvNCy0L7Qu9C1LFxyXG4gICAgICAvLyDQutC+0YLQvtGA0YvQuSDRgNC10LDQu9GM0L3QviDQvtGC0L3QvtGB0LjRgtGB0Y8g0Log0YLQvtC60LXQvdCw0Lwg0LTQsNGC0YsgKHkvTS9kKS5cclxuICAgICAgY29uc3QgZGF0ZVBhcnQgPSBkYXRlVGltZUZvcm1hdC5zbGljZSgwLCBtYXRjaC5pbmRleCkucmVwbGFjZSgvW155TWRdKyQvLCAnJylcclxuICAgICAgcmV0dXJuIGRhdGVQYXJ0IHx8IGRhdGVUaW1lRm9ybWF0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZGF0ZVRpbWVGb3JtYXRcclxufVxyXG5cclxuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcclxufVxyXG5cclxuLyoqXHJcbiAqINCk0L7RgNC80LDRgtGLINC00LDRgiwg0LrQvtGC0L7RgNGL0LUgQml0cml4MjQg0YDQtdCw0LvRjNC90L4g0L/RgNC40YHRi9C70LDQtdGCINCyINGA0LDQt9C90YvRhSDQvNC10YLQvtC00LDRhSBSRVNUINC4INC90LAg0YDQsNC30L3Ri9GFXHJcbiAqINC/0L7RgNGC0LDQu9Cw0YUg4oCUINGE0L7RgNC80LDRgiDQtNCw0YLRiy/QstGA0LXQvNC10L3QuCDQsiDQvtGC0LLQtdGC0LUg0LfQsNCy0LjRgdC40YIg0L7RgiDQvdCw0YHRgtGA0L7QtdC6INC/0L7RgNGC0LDQu9CwICjQndCw0YHRgtGA0L7QudC60Lgg4oaSINGE0L7RgNC80LDRglxyXG4gKiDQtNCw0YLRiyDQuCDQstGA0LXQvNC10L3QuCksINC/0L7RjdGC0L7QvNGDINC+0LTQuNC9INC30LDRhdCw0YDQtNC60L7QttC10L3QvdGL0Lkg0YjQsNCx0LvQvtC9INC90LUg0YPQvdC40LLQtdGA0YHQsNC70LXQvS4g0JXRgdC70Lgg0Y/QstC90YvQuSBgZm9ybWF0YCxcclxuICog0L/QtdGA0LXQtNCw0L3QvdGL0Lkg0LIgdG9EYXRlKCksINC90LUg0YHQvtCy0L/QsNC7INGB0L4g0LfQvdCw0YfQtdC90LjQtdC8LCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0YHRgtGA0L7QutGDINC90LXQstCw0LvQuNC00L3QvtC5LFxyXG4gKiDQv9GA0L7QsdGD0LXQvCDRjdGC0Lgg0LLQsNGA0LjQsNC90YLRiyDQv9C+INC+0YfQtdGA0LXQtNC4IOKAlCDQvtC90Lgg0L3QtSDQv9C10YDQtdGB0LXQutCw0Y7RgtGB0Y8g0L/QviDRgNCw0LfQtNC10LvQuNGC0LXQu9GP0Lwv0L/QvtGA0Y/QtNC60YMg0YLQvtC60LXQvdC+0LIsXHJcbiAqINGC0LDQuiDRh9GC0L4g0LvQvtC20L3Ri9GFINGB0L7QstC/0LDQtNC10L3QuNC5INC90LUg0LHRg9C00LXRgi5cclxuICovXHJcbmNvbnN0IEZBTExCQUNLX0RBVEVfRk9STUFUUyA9IFtcclxuICAnZGQuTU0ueXl5eSBISDptbTpzcycsXHJcbiAgJ3l5eXktTU0tZGQgSEg6bW06c3MnLFxyXG4gICdkZC5NTS55eXl5JyxcclxuICAneXl5eS1NTS1kZCcsXHJcbl1cclxuXHJcbi8qKlxyXG4gKiDQoNCw0LfQsdC40YDQsNC10YIg0YHRgtGA0L7QutGDINC00LDRgtGLINC/0L4g0L/RgNC+0YHRgtC+0LzRgyDRiNCw0LHQu9C+0L3RgyAoeXl5eSwgTU0sIGRkLCBISCwgbW0sIHNzINC4INC40YUg0L7QtNC90L7QsdGD0LrQstC10L3QvdGL0LVcclxuICog0LLQsNGA0LjQsNC90YLRiywg0L3QsNC/0YDQuNC80LXRgCAnZGQuTU0ueXl5eSBISDptbTpzcycpLiDQoNCw0LfQtNC10LvQuNGC0LXQu9C4INC80LXQttC00YMg0YLQvtC60LXQvdCw0LzQuCDQsdC10YDRg9GC0YHRjyDQuNC3INGI0LDQsdC70L7QvdCwXHJcbiAqINC60LDQuiDQtdGB0YLRjC4g0J3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C4LCDQvdCw0LfQstCw0L3QuNGPINC80LXRgdGP0YbQtdCyINC4INGH0LDRgdC+0LLRi9C1INC/0L7Rj9GB0LAg4oCUINC00LvRjyBSRVNULdC+0YLQstC10YLQvtCyXHJcbiAqIEJpdHJpeDI0INC+0L3QuCDQvdC1INGC0YDQtdCx0YPRjtGC0YHRjywg0LfQvdCw0YfQtdC90LjRjyDQstGB0LXQs9C00LAg0L/RgNC40YXQvtC00Y/RgiDQsiDRhNC40LrRgdC40YDQvtCy0LDQvdC90L7QvCDRh9C40YHQu9C+0LLQvtC8INCy0LjQtNC1LlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgdG9rZW5NYXAgPSBuZXcgTWFwKERBVEVfRk9STUFUX1RPS0VOUylcclxuICBsZXQgcGF0dGVybiA9ICcnXHJcbiAgbGV0IGxhc3RJbmRleCA9IDBcclxuICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGxcclxuXHJcbiAgREFURV9GT1JNQVRfVE9LRU5fUkVHRVgubGFzdEluZGV4ID0gMFxyXG4gIHdoaWxlICgobWF0Y2ggPSBEQVRFX0ZPUk1BVF9UT0tFTl9SRUdFWC5leGVjKGZvcm1hdCkpICE9PSBudWxsKSB7XHJcbiAgICBwYXR0ZXJuICs9IGVzY2FwZVJlZ0V4cChmb3JtYXQuc2xpY2UobGFzdEluZGV4LCBtYXRjaC5pbmRleCkpXHJcbiAgICBwYXR0ZXJuICs9IHRva2VuTWFwLmdldChtYXRjaFswXSlcclxuICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXHJcbiAgfVxyXG4gIHBhdHRlcm4gKz0gZXNjYXBlUmVnRXhwKGZvcm1hdC5zbGljZShsYXN0SW5kZXgpKVxyXG5cclxuICBjb25zdCByZXN1bHQgPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJufSRgKS5leGVjKHZhbClcclxuICBpZiAoIXJlc3VsdD8uZ3JvdXBzKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgZyA9IHJlc3VsdC5ncm91cHNcclxuICBjb25zdCB5ZWFyID0gZ1sneXl5eSddID8gTnVtYmVyKGdbJ3l5eXknXSkgOiBnWyd5eSddID8gMjAwMCArIE51bWJlcihnWyd5eSddKSA6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gIGNvbnN0IG1vbnRoID0gTnVtYmVyKGdbJ01NJ10gPz8gZ1snTSddID8/IDEpXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGdbJ2RkJ10gPz8gZ1snZCddID8/IDEpXHJcbiAgY29uc3QgaG91ciA9IE51bWJlcihnWydISCddID8/IGdbJ0gnXSA/PyAwKVxyXG4gIGNvbnN0IG1pbnV0ZSA9IE51bWJlcihnWydtbSddID8/IGdbJ20nXSA/PyAwKVxyXG4gIGNvbnN0IHNlY29uZCA9IE51bWJlcihnWydzcyddID8/IGdbJ3MnXSA/PyAwKVxyXG5cclxuICAvLyDQotC+0LrQtdC90Ysg4oCUINGN0YLQviDQv9GA0L7RgdGC0L4gXCJOINGG0LjRhNGAXCIsINCx0LXQtyDQv9GA0L7QstC10YDQutC4INC00LjQsNC/0LDQt9C+0L3QsCAocmVnZXgg0L3QtSDQvtGC0LvQuNGH0LjRgiBcIjEzXCIg0LzQtdGB0Y/RhtCwINC+0YJcclxuICAvLyBcIjEzXCIg0LTQvdGPKS4g0JHQtdC3INGN0YLQvtC5INC/0YDQvtCy0LXRgNC60LggbmV3IERhdGUoKSDQvNC+0LvRh9CwIFwi0L/QtdGA0LXQutCw0YLRi9Cy0LDQtdGCXCIg0L/QtdGA0LXQv9C+0LvQvdC10L3QuNC1INC90LAg0YHQvtGB0LXQtNC90LjQuVxyXG4gIC8vINC80LXRgdGP0YYv0LPQvtC0ICjQvdCw0L/RgNC40LzQtdGALCDQvNC10YHRj9GGPTEzIOKGkiDRj9C90LLQsNGA0Ywg0YHQu9C10LTRg9GO0YnQtdCz0L4g0LPQvtC00LApINCy0LzQtdGB0YLQviDRgtC+0LPQviwg0YfRgtC+0LHRiyDRgdGH0LjRgtCw0YLRjFxyXG4gIC8vINGB0YLRgNC+0LrRgyDQvdC10LLQsNC70LjQtNC90L7QuS5cclxuICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIgfHwgZGF5IDwgMSB8fCBkYXkgPiAzMSB8fCBob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG4gIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtGB0LvQtdC00L3QuNC5INGA0LXQt9C10YDQstC90YvQuSDRgNCw0LfQsdC+0YAg4oCUINCx0LXQtyDQt9C90LDQvdC40Y8g0LrQvtC90LrRgNC10YLQvdC+0LPQviDRhNC+0YDQvNCw0YLQsC4g0KDQsNCx0L7RgtCw0LXRgiDRgtC+0LvRjNC60L4g0LTQu9GPINGH0LjRgdGC0L5cclxuICog0YfQuNGB0LvQvtCy0YvRhSDQtNCw0YIgKNC90LjQutCw0LrQuNGFINC90LDQt9Cy0LDQvdC40Lkg0LzQtdGB0Y/RhtC10LIv0LTQvdC10Lkg4oCUINC00LvRjyDRjdGC0L7Qs9C+INC90YPQttC90YsgbG9jYWxlLdGC0LDQsdC70LjRhtGLLCDQsCDRjdGC0L4g0LrQsNC6XHJcbiAqINGA0LDQtyDRgtC+0YIg0LLQtdGBLCDRgNCw0LTQuCDRg9GF0L7QtNCwINC+0YIg0LrQvtGC0L7RgNC+0LPQviBsdXhvbiDQsdGL0Lsg0YPQsdGA0LDQvSDQuNC3INC30LDQstC40YHQuNC80L7RgdGC0LXQuSkuXHJcbiAqXHJcbiAqINCY0LTQtdGPOiDQs9C+0LQg4oCUINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC10LPQvNC10L3RgiDQtNC70LjQvdC+0Lkg0YDQvtCy0L3QviA0INGG0LjRhNGA0YssINC/0L7RjdGC0L7QvNGDINC10LPQviDQv9C+0LfQuNGG0LjRjyAo0L/QtdGA0LLRi9C5INC40LvQuFxyXG4gKiDQv9C+0YHQu9C10LTQvdC40Lkg0LjQtyDRgtGA0ZHRhSDRgdC10LPQvNC10L3RgtC+0LIg0LTQsNGC0YspINC+0LTQvdC+0LfQvdCw0YfQvdC+INC+0L/QvtC30L3QsNGR0YLRgdGPINC/0YDQuCDQu9GO0LHQvtC8INGA0LDQt9C00LXQu9C40YLQtdC70LUgKGAuYCwgYC1gLFxyXG4gKiBgL2AsINC/0YDQvtCx0LXQuy4uLikuINCc0LXRgdGP0YYg0L/QviDQstGB0LXQvCDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90ZHQvdC90YvQvCDQsiDQvNC40YDQtSDRgdC+0LPQu9Cw0YjQtdC90LjRj9C8IChJU08gYHl5eXktTU0tZGRgINC4XHJcbiAqINC10LLRgNC+0L/QtdC50YHQutC+0LUgYGRkLk1NLnl5eXlgKSDRgdGC0L7QuNGCINC80LXQttC00YMg0LPQvtC00L7QvCDQuCDQtNC90ZHQvCwg0L/QvtGN0YLQvtC80YMg0LHQtdGA0ZHRgtGB0Y8g0LrQsNC6INGB0YDQtdC00L3QuNC5INGB0LXQs9C80LXQvdGCLlxyXG4gKiDQktGA0LXQvNGPLCDQtdGB0LvQuCDQtdGB0YLRjCwg0LLRgdC10LPQtNCwINC40LTRkdGCINC60LDQuiBgSEg6bW06c3NgIOKAlCDRjdGC0L7RgiDQv9C+0YDRj9C00L7QuiDRg9C90LjQstC10YDRgdCw0LvQtdC9LlxyXG4gKlxyXG4gKiDQndC1INGA0LXRiNCw0LXRgiDQuCDQvdC1INC/0YvRgtCw0LXRgtGB0Y8g0YDQtdGI0LjRgtGMINC90LXQvtC00L3QvtC30L3QsNGH0L3QvtGB0YLRjCDQtNC10L3RjC/QvNC10YHRj9GGINCyINGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0YvRhSDRhNC+0YDQvNCw0YLQsNGFINCy0LjQtNCwXHJcbiAqIGBNTS9kZC95eXl5YCAo0KHQqNCQKSwg0LPQtNC1INC+0LHQsCDRgdC10LPQvNC10L3RgtCwINC80L7Qs9GD0YIg0LHRi9GC0Ywg4omkMTIg4oCUINGD0LPQsNC00YvQstCw0YLRjCDRjdGC0L4g0LHQtdC3INC30L3QsNC90LjRjyDQu9C+0LrQsNC70LhcclxuICog0LfQvdCw0YfQuNC70L4g0LHRiyDQuNC90L7Qs9C00LAg0LzQvtC70YfQsCDQv9GD0YLQsNGC0Ywg0LTQtdC90Ywg0YEg0LzQtdGB0Y/RhtC10LwsINGH0YLQviDRhdGD0LbQtSDRj9Cy0L3QvtC5INC+0YjQuNCx0LrQuC5cclxuICovXHJcbmZ1bmN0aW9uIHBhcnNlRGF0ZUhldXJpc3RpY2FsbHkodmFsOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XHJcbiAgY29uc3QgcGFydHMgPSB2YWwubWF0Y2goL1xcZCsvZylcclxuICBpZiAoIXBhcnRzIHx8IHBhcnRzLmxlbmd0aCA8IDMgfHwgcGFydHMubGVuZ3RoID4gNikge1xyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcblxyXG4gIGNvbnN0IFtkMCwgZDEsIGQyLCAuLi50aW1lUGFydHNdID0gcGFydHNcclxuICBjb25zdCBkYXRlUGFydHMgPSBbZDAsIGQxLCBkMl1cclxuICBjb25zdCB5ZWFySWR4ID0gZGF0ZVBhcnRzLmZpbmRJbmRleChwID0+IHAubGVuZ3RoID09PSA0KVxyXG4gIC8vINCT0L7QtCDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0L7QtNC90L7Qt9C90LDRh9C90L4g0L3QsNC50LTQtdC9ICjRgNC+0LLQvdC+IDQg0YbQuNGE0YDRiykg0Lgg0YHRgtC+0Y/RgtGMINGBINC60YDQsNGPLCDQsCDQvdC1INCyINGB0LXRgNC10LTQuNC90LUg4oCUXHJcbiAgLy8g0LjQvdCw0YfQtSDQv9C+0LfQuNGG0LjRjyDQvNC10YHRj9GG0LAv0LTQvdGPINC90LUg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0LHQtdC30L7Qv9Cw0YHQvdC+LlxyXG4gIGlmICh5ZWFySWR4ICE9PSAwICYmIHllYXJJZHggIT09IDIpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCB5ZWFyID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4XSlcclxuICBjb25zdCBtb250aCA9IE51bWJlcihkYXRlUGFydHNbMV0pXHJcbiAgY29uc3QgZGF5ID0gTnVtYmVyKGRhdGVQYXJ0c1t5ZWFySWR4ID09PSAwID8gMiA6IDBdKVxyXG4gIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMiB8fCBkYXkgPCAxIHx8IGRheSA+IDMxKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3QgW2hoLCBtbSwgc3NdID0gdGltZVBhcnRzXHJcbiAgY29uc3QgaG91ciA9IGhoICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoaGgpIDogMFxyXG4gIGNvbnN0IG1pbnV0ZSA9IG1tICE9PSB1bmRlZmluZWQgPyBOdW1iZXIobW0pIDogMFxyXG4gIGNvbnN0IHNlY29uZCA9IHNzICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoc3MpIDogMFxyXG4gIGlmIChob3VyID4gMjMgfHwgbWludXRlID4gNTkgfHwgc2Vjb25kID4gNTkpIHtcclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG5cclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKVxyXG4gIHJldHVybiBpc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQt9C90LDRh9C10L3QuNC1INCyINC00LDRgtGDLlxyXG4gKlxyXG4gKiDQldGB0LvQuCDQv9C10YDQtdC00LDQvSBgZm9ybWF0YCwg0L3QviDQt9C90LDRh9C10L3QuNC1INC10LzRgyDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCICjRgdC8LiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMg4oCUXHJcbiAqINCw0LrRgtGD0LDQu9GM0L3QviDQtNC70Y8g0L/QvtC70LXQuSwg0LPQtNC1IEJpdHJpeDI0INC+0YLQtNCw0ZHRgiDQtNCw0YLRgyDQsiDRhNC+0YDQvNCw0YLQtSwg0L3QsNGB0YLRgNC+0LXQvdC90L7QvCDQvdCwINC/0L7RgNGC0LDQu9C1LCDQsCDQvdC1INCyXHJcbiAqINGC0L7QvCwg0YfRgtC+INC30LDRhdCw0YDQtNC60L7QttC10L0g0LIg0LzQsNC/0L/QtdGA0LUpLCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0YHRh9C40YLQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQvdC10LLQsNC70LjQtNC90YvQvCwg0LTQtdC70LDRjtGC0YHRjyDQtdGJ0ZFcclxuICog0LTQstC1INC/0L7Qv9GL0YLQutC4OiDQtNGA0YPQs9C40LUg0YDQsNGB0L/RgNC+0YHRgtGA0LDQvdGR0L3QvdGL0LUg0YTQvtGA0LzQsNGC0YsgQml0cml4MjQsINCwINC30LDRgtC10Lwg4oCUINC/0L7Qt9C40YbQuNC+0L3QvdCw0Y8g0Y3QstGA0LjRgdGC0LjQutCwXHJcbiAqICjRgdC8LiBwYXJzZURhdGVIZXVyaXN0aWNhbGx5KSwg0LrQvtGC0L7RgNCw0Y8g0YDQsNGB0L/QvtC30L3QsNGR0YIg0L/RgNCw0LrRgtC40YfQtdGB0LrQuCDQu9GO0LHQvtC5INGH0LjRgdGC0L4g0YfQuNGB0LvQvtCy0L7QuSDRhNC+0YDQvNCw0YJcclxuICog0LTQsNGC0Ysg0L3QtdC30LDQstC40YHQuNC80L4g0L7RgiDRgNCw0LfQtNC10LvQuNGC0LXQu9GPLiDQldGB0LvQuCDQv9GA0LjQu9C+0LbQtdC90LjRjiDRgtC+0YfQvdC+INC40LfQstC10YHRgtC10L0g0YTQvtGA0LzQsNGCINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0L/QvtGA0YLQsNC70LAsXHJcbiAqINC10LPQviDRgdGC0L7QuNGCINC/0LXRgNC10LTQsNCy0LDRgtGMINGP0LLQvdGL0LwgYGZvcm1hdGAg4oCUINGN0YLQviDQstGB0LXQs9C00LAg0L/RgNC40L7RgNC40YLQtdGC0L3QtdC1INGD0LPQsNC00YvQstCw0L3QuNGPLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZSh2YWw6IG51bWJlciB8IHN0cmluZyB8IERhdGUsIGZvcm1hdD86IHN0cmluZywgb3B0PzogVG9EYXRlT3B0aW9ucywgdGhyb3dFcnJvciA9IHRydWUpOiBEYXRlIHtcclxuICBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgcmV0dXJuIHZhbFxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcclxuICAgIGlmIChmb3JtYXQpIHtcclxuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VEYXRlV2l0aEZvcm1hdCh2YWwsIGZvcm1hdClcclxuICAgICAgaWYgKHBhcnNlZCkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZWRcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBmYWxsYmFja0Zvcm1hdCBvZiBGQUxMQkFDS19EQVRFX0ZPUk1BVFMpIHtcclxuICAgICAgICBpZiAoZmFsbGJhY2tGb3JtYXQgPT09IGZvcm1hdCkgY29udGludWVcclxuICAgICAgICBjb25zdCBmYWxsYmFja1BhcnNlZCA9IHBhcnNlRGF0ZVdpdGhGb3JtYXQodmFsLCBmYWxsYmFja0Zvcm1hdClcclxuICAgICAgICBpZiAoZmFsbGJhY2tQYXJzZWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxsYmFja1BhcnNlZFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGV1cmlzdGljUGFyc2VkID0gcGFyc2VEYXRlSGV1cmlzdGljYWxseSh2YWwpXHJcbiAgICAgIGlmIChoZXVyaXN0aWNQYXJzZWQpIHtcclxuICAgICAgICByZXR1cm4gaGV1cmlzdGljUGFyc2VkXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWwpXHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbClcclxuICB9XHJcblxyXG4gIGlmICh0aHJvd0Vycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcsIHZhbCwgZm9ybWF0KVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBkYXRlIGZvcm1hdCcpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gbmV3IERhdGUoKVxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQtNCw0YLRgyDQsiDRgdGC0YDQvtC60YMg0YEg0YPRh9C10YLQvtC8INCy0YDQtdC80LXQvdC90L7QuSDQt9C+0L3Ri1xyXG4gKlxyXG4gKiDQpNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INC00LXQu9C10LPQuNGA0L7QstCw0L3QviB0b0xvY2FsQXRvbSgpIOKAlCDRgNCw0L3RjNGI0LUg0LfQtNC10YHRjCDQsdGL0LvQsCDQstGC0L7RgNCw0Y8sXHJcbiAqINC90LXQt9Cw0LLQuNGB0LjQvNCw0Y8g0LrQvtC/0LjRjyDRgtC+0Lkg0LbQtSDRhNC+0YDQvNGD0LvRiyAocGFkZGluZCArINGB0LzQtdGJ0LXQvdC40LUg0YLQsNC50LzQt9C+0L3RiyksINC60L7RgtC+0YDQsNGPXHJcbiAqINC80L7Qs9C70LAg0YDQsNC30L7QudGC0LjRgdGMINGBIHRvTG9jYWxBdG9tKCkg0L/RgNC4INC/0YDQsNCy0LrQtSDQvtC00L3QvtC5INC40Lcg0L3QuNGFINC4INC90LUg0LTRgNGD0LPQvtC5LlxyXG4gKlxyXG4gKiBAcGFyYW0gZGF0ZVxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvSVNPU3RyaW5nV2l0aFRpbWV6b25lKGRhdGU6IERhdGUsIHRocm93RXJyb3IgPSB0cnVlKTogc3RyaW5nIHtcclxuICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgIGlmICh0aHJvd0Vycm9yKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6IG5vdCBhIHZhbGlkIERhdGUgb2JqZWN0JylcclxuICAgIHJldHVybiAnJ1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRvTG9jYWxBdG9tKGRhdGUpXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC30L3QsNGH0LXQvdC40LUg0LIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LVcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcGFyYW0gdGhyb3dFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQm9vbCh2YWw6IGFueSwgdGhyb3dFcnJvciA9IHRydWUpOiBib29sZWFuIHtcclxuICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHtcclxuICAgIGNhc2UgJ3N0cmluZyc6XHJcbiAgICAgIHZhbCA9IHZhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIGlmICh2YWwgPT09ICduJyB8fCB2YWwgPT09ICd5JykgeyAvLyDQsdC40YLRgNC40LrRgdC+0LLRi9C1INC/0L7QvdGP0YLQuNGPINC+IGJvb2xcclxuICAgICAgICByZXR1cm4gdmFsID09PSAneSdcclxuICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICd0cnVlJyB8fCB2YWwgPT09ICdmYWxzZScpIHsgLy8g0LHQuNGC0YDQuNC60YHQvtCy0YvQtSDQv9C+0L3Rj9GC0LjRjyDQviBib29sXHJcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRocm93RXJyb3IpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogY2Fubm90IGJlIGNvbnZlcnRlZCB0byBib29sZWFuJylcclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIEJvb2xlYW4odmFsKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0LHRg9C70LXQstC+INC30L3QsNGH0LXQvdC40LUg0LIgJ1knINC40LvQuCAnTidcclxuICpcclxuICogQHBhcmFtIHZhbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQlhZb3JOKHZhbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHZhbCA/ICdZJyA6ICdOJ1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZVVybEh0dHBzKHVybDogc3RyaW5nLCBjb21wb25lbnQgPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgcmV0dXJuIGVuY29kZVVSSShjcm9wVXJsKHVybCkgKyAnLycpXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBlbmNvZGVVUkkoJ2h0dHBzOi8vJyArIGNyb3BVcmwodXJsKSArICcvJylcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDQntCx0YDQtdC30LDQtdGCIFVSTCAo0YPQtNCw0LvRj9C10YIg0L/RgNC+0YLQvtC60L7QuylcclxuICpcclxuICogQHBhcmFtIHVybFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyb3BVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczovLycsICcnKSA6ICcnXHJcbiAgdXJsID0gdXJsID8gdXJsLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwczonLCAnJykgOiAnJ1xyXG4gIHVybCA9IHVybCA/IHVybC5yZXBsYWNlKCdodHRwOicsICcnKSA6ICcnXHJcbiAgcmV0dXJuIHVybFxyXG59XHJcblxyXG4vKipcclxuICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDRhNCw0LnQuyDQsiBiYXNlNjRcclxuICpcclxuICogQHBhcmFtIGZpbGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlNjRGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKVxyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpXHJcbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcilcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtC70YPRh9C40YLRjCDRhNCw0LnQuyDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQg0YEg0YDQsNC30LHQuNCy0LrQvtC5INC90LAg0LfQsNCz0L7Qu9C+0LLQvtC6INC4INC00LDQvdC90YvQtVxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZVxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhc2U2NEZpbGVMaWtlU3RyKGZpbGU6IEZpbGUpOiBQcm9taXNlPHtcclxuICBoZWFkZXI6IHN0cmluZyxcclxuICB2YWw6IHN0cmluZ1xyXG59IHwgdW5kZWZpbmVkPiB7XHJcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0QmFzZTY0RmlsZShmaWxlKVxyXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xyXG4gICAgY29uc3Qgc3BsaXQgPSByZXN1bHQuc3BsaXQoJywnKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyOiBzcGxpdFswXSxcclxuICAgICAgdmFsOiBzcGxpdFsxXVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gdW5kZWZpbmVkXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlQmFzZUFkZHJlc3ModXJsOiBzdHJpbmcsIGFkZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJycpIHtcclxuICAvLyBpZiAodXJsLnNlYXJjaCgnaHR0cHM6Ly8nKSAhPT0gMCAmJiB1cmwuc2VhcmNoKCdodHRwOi8vJykpIHtcclxuICAvLyAgIHVybCA9ICdodHRwczovLycgKyB1cmxcclxuICAvLyB9XHJcblxyXG4gIGlmIChhZGQgJiYgYWRkLmxlbmd0aCA+IDApIHtcclxuICAgIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgICB1cmwgPSB1cmwgKyAnLydcclxuICAgIH1cclxuXHJcbiAgICB1cmwgPSB1cmwgKyBhZGRcclxuICB9XHJcblxyXG4gIGlmICh1cmwubGFzdEluZGV4T2YoJy8nKSAhPT0gKHVybC5sZW5ndGggLSAxKSkge1xyXG4gICAgdXJsID0gdXJsICsgJy8nXHJcbiAgfVxyXG5cclxuICByZXR1cm4gdXJsXHJcbn0iXX0=
|
|
@@ -27,9 +27,8 @@ export class HttpServices extends BaseHttp {
|
|
|
27
27
|
}
|
|
28
28
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
29
29
|
if (this.session.getKeyAuth() === 'sessid') {
|
|
30
|
-
const body = this.getHttpParamsPost(paramsClone, new FormData(), [], settings);
|
|
31
30
|
const urlEncodedBody = new URLSearchParams();
|
|
32
|
-
Object.keys(
|
|
31
|
+
Object.keys(paramsClone).forEach((key) => {
|
|
33
32
|
const value = paramsClone[key];
|
|
34
33
|
if (typeof value === 'object' && value !== null) {
|
|
35
34
|
for (const subKey in value) {
|
|
@@ -73,4 +72,4 @@ export class HttpServices extends BaseHttp {
|
|
|
73
72
|
}));
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQTtBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNuRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFFOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFNUMsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBS3hDO1FBQ0UsS0FBSyxFQUFFLENBQUE7UUFITyxZQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFBO1FBSWhELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFFUSxRQUFRLENBQ2YsR0FBVyxFQUNYLFNBQWMsRUFBRSxFQUNoQixXQUErQixJQUFJLENBQUMsV0FBVztRQUUvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJ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QUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQzNELENBQUM7WUFFRCxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDOUQsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQTtZQUU1QyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDdEUsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcydcbmltcG9ydCB7IFNlc3Npb25LZXlTZXJ2aWNlcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvc2Vzc2lvbktleSdcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXG5pbXBvcnQgeyBCYXNlSHR0cCB9IGZyb20gJy4vYmFzZS9iYXNlJ1xuaW1wb3J0IHsgcHJlcGFyZUJhc2VBZGRyZXNzIH0gZnJvbSAnLi4vYmFzZSdcblxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlcyBleHRlbmRzIEJhc2VIdHRwIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXhpb3NJbnN0YW5jZTogQXhpb3NJbnN0YW5jZVxuICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uS2V5U2VydmljZXMoKVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmF4aW9zSW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoKVxuICB9XG5cbiAgb3ZlcnJpZGUgaHR0cFBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBhbnkgPSB7fSxcbiAgICBzZXR0aW5nczogaUh0dHBQYXJhbVNldHRpbmdzID0gdGhpcy5kZWZTZXR0aW5nc1xuICApOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBhdXRoID0gdGhpcy5zZXNzaW9uLmdldEF1dGhQYXJhbXMoKVxuICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcbiAgICBjb25zdCBwYXJhbXNDbG9uZSA9IGNsb25lKHBhcmFtcylcblxuICAgIGlmIChjaGVja0lzT24pIHtcbiAgICAgIGlmICghYXV0aCkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QXV0aEVycm9yKCdwb3N0JykpXG4gICAgICB9XG5cbiAgICAgIHBhcmFtc0Nsb25lW3RoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKCldID0gYXV0aFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGJhc2VVcmwpID0+IHtcbiAgICAgICAgaWYgKCFiYXNlVXJsKSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcigncG9zdCcpKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uLmdldEtleUF1dGgoKSA9PT0gJ3Nlc3NpZCcpIHtcbiAgICAgICAgICBjb25zdCB1cmxFbmNvZGVkQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuXG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zQ2xvbmUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNDbG9uZVtrZXldXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViS2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ViS2V5KSkge1xuICAgICAgICAgICAgICAgICAgdXJsRW5jb2RlZEJvZHkuYXBwZW5kKGAke2tleX1bJHtzdWJLZXl9XWAsIHZhbHVlW3N1YktleV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1cmxFbmNvZGVkQm9keS5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdDxUPihmdWxsVXJsLCB1cmxFbmNvZGVkQm9keS50b1N0cmluZygpLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChwYXJhbXNDbG9uZSwgbmV3IEZvcm1EYXRhKCksIFtdLCBzZXR0aW5ncylcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgdGhpcy5heGlvc0luc3RhbmNlLnBvc3Q8VD4oZnVsbFVybCwgYm9keSkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgb3ZlcnJpZGUgaHR0cEdldDxUPih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXG4gICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxuICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxuXG4gICAgaWYgKGNoZWNrSXNPbikge1xuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxuICAgICAgfVxuXG4gICAgICBwYXJhbXNDbG9uZVt0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXSA9IGF1dGhcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XG4gICAgICAgIGlmICghYmFzZVVybCkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zQ2xvbmUpLnRvU3RyaW5nKClcbiAgICAgICAgY29uc3QgZmluYWxVcmwgPSBgJHtmdWxsVXJsfT8ke3F1ZXJ5U3RyaW5nfWBcblxuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UuZ2V0PFQ+KGZpbmFsVXJsKS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
|
package/fesm2022/bx-rest.mjs
CHANGED
|
@@ -46,6 +46,17 @@ function instanceOfiBXRestAnswerSuccess(object) {
|
|
|
46
46
|
return 'result' in object;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
function toLocalAtom(date) {
|
|
50
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
51
|
+
const tzOffset = -date.getTimezoneOffset(); // минуты
|
|
52
|
+
const sign = tzOffset >= 0 ? '+' : '-';
|
|
53
|
+
const hh = pad(Math.floor(Math.abs(tzOffset) / 60));
|
|
54
|
+
const mm = pad(Math.abs(tzOffset) % 60);
|
|
55
|
+
return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}` +
|
|
56
|
+
`T${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}` +
|
|
57
|
+
`${sign}${hh}:${mm}`);
|
|
58
|
+
}
|
|
59
|
+
|
|
49
60
|
/**
|
|
50
61
|
* Преобразует значение в строку
|
|
51
62
|
*
|
|
@@ -289,6 +300,10 @@ function toDate(val, format, opt, throwError = true) {
|
|
|
289
300
|
/**
|
|
290
301
|
* Преобразует дату в строку с учетом временной зоны
|
|
291
302
|
*
|
|
303
|
+
* Форматирование делегировано toLocalAtom() — раньше здесь была вторая,
|
|
304
|
+
* независимая копия той же формулы (paddind + смещение таймзоны), которая
|
|
305
|
+
* могла разойтись с toLocalAtom() при правке одной из них и не другой.
|
|
306
|
+
*
|
|
292
307
|
* @param date
|
|
293
308
|
* @param throwError
|
|
294
309
|
*/
|
|
@@ -298,17 +313,7 @@ function toISOStringWithTimezone(date, throwError = true) {
|
|
|
298
313
|
throw new Error('Invalid value: not a valid Date object');
|
|
299
314
|
return '';
|
|
300
315
|
}
|
|
301
|
-
|
|
302
|
-
const diff = tzOffset >= 0 ? '+' : '-';
|
|
303
|
-
const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, '0');
|
|
304
|
-
return date.getFullYear() +
|
|
305
|
-
'-' + pad(date.getMonth() + 1) +
|
|
306
|
-
'-' + pad(date.getDate()) +
|
|
307
|
-
'T' + pad(date.getHours()) +
|
|
308
|
-
':' + pad(date.getMinutes()) +
|
|
309
|
-
':' + pad(date.getSeconds()) +
|
|
310
|
-
diff + pad(tzOffset / 60) +
|
|
311
|
-
':' + pad(tzOffset % 60);
|
|
316
|
+
return toLocalAtom(date);
|
|
312
317
|
}
|
|
313
318
|
/**
|
|
314
319
|
* Преобразует значение в булево значение
|
|
@@ -818,9 +823,8 @@ class HttpServices extends BaseHttp {
|
|
|
818
823
|
}
|
|
819
824
|
const fullUrl = prepareBaseAddress(baseUrl) + url;
|
|
820
825
|
if (this.session.getKeyAuth() === 'sessid') {
|
|
821
|
-
const body = this.getHttpParamsPost(paramsClone, new FormData(), [], settings);
|
|
822
826
|
const urlEncodedBody = new URLSearchParams();
|
|
823
|
-
Object.keys(
|
|
827
|
+
Object.keys(paramsClone).forEach((key) => {
|
|
824
828
|
const value = paramsClone[key];
|
|
825
829
|
if (typeof value === 'object' && value !== null) {
|
|
826
830
|
for (const subKey in value) {
|
|
@@ -8673,17 +8677,6 @@ class BXRestMapTimeMan {
|
|
|
8673
8677
|
}
|
|
8674
8678
|
}
|
|
8675
8679
|
|
|
8676
|
-
function toLocalAtom(date) {
|
|
8677
|
-
const pad = (n) => String(n).padStart(2, '0');
|
|
8678
|
-
const tzOffset = -date.getTimezoneOffset(); // минуты
|
|
8679
|
-
const sign = tzOffset >= 0 ? '+' : '-';
|
|
8680
|
-
const hh = pad(Math.floor(Math.abs(tzOffset) / 60));
|
|
8681
|
-
const mm = pad(Math.abs(tzOffset) % 60);
|
|
8682
|
-
return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}` +
|
|
8683
|
-
`T${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}` +
|
|
8684
|
-
`${sign}${hh}:${mm}`);
|
|
8685
|
-
}
|
|
8686
|
-
|
|
8687
8680
|
class BXRestNavvyTimemanNetworkRange {
|
|
8688
8681
|
constructor() {
|
|
8689
8682
|
this.Navvy = new Navvy();
|