@annalib/anna-core 30.3.2 → 30.3.4

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.
@@ -1,6 +1,34 @@
1
1
  import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  export class GTTableRelatedCommonFunctionsService {
4
+ static GetDollarRoundedValue(inputValue, digitsToRoundDecimalPoint = 2) {
5
+ const dollarSign = inputValue < 0 ? "-$" : "$";
6
+ const valueUnitArr = this.GetValueInUnits(Math.abs(inputValue));
7
+ let value = valueUnitArr[0];
8
+ const unit = valueUnitArr[1];
9
+ value = Math.round(+value * 10 ** digitsToRoundDecimalPoint) / 10 ** digitsToRoundDecimalPoint;
10
+ return dollarSign + value.toString() + unit;
11
+ }
12
+ static GetValueInUnits(inputValue) {
13
+ let unit = "";
14
+ const thousand = 1000;
15
+ const million = 1000000;
16
+ const billion = 1000000000;
17
+ let updatedInputValue = inputValue;
18
+ if (inputValue >= thousand && inputValue < million) {
19
+ updatedInputValue = inputValue / thousand;
20
+ unit = "K";
21
+ }
22
+ else if (inputValue >= million && inputValue < billion) {
23
+ updatedInputValue = inputValue / million;
24
+ unit = "M";
25
+ }
26
+ else if (inputValue >= billion) {
27
+ updatedInputValue = inputValue / billion;
28
+ unit = "B";
29
+ }
30
+ return [updatedInputValue, unit];
31
+ }
4
32
  static returnTooltipsAsHtmlLiTagList(svgOrIconTooltipMsgs) {
5
33
  if (!svgOrIconTooltipMsgs || !svgOrIconTooltipMsgs?.length)
6
34
  return null;
@@ -57,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
57
85
  providedIn: "root",
58
86
  }]
59
87
  }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3QtdGFibGUtcmVsYXRlZC1jb21tb24tZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL3NlcnZpY2VzL2d0LXRhYmxlLXJlbGF0ZWQtY29tbW9uLWZ1bmN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsTUFBTSxDQUFDLDZCQUE2QixDQUFDLG9CQUE4QjtRQUMvRCxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEUsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxTQUFTLEdBQVcsTUFBTSxDQUFDO1FBQy9CLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLFNBQVMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUNyQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHdDQUF3QztJQUN4QyxNQUFNLENBQUMsa0NBQWtDLENBQUMsR0FBYTtRQUNuRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRWpDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7UUFDeEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRTtnQkFDcEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjthQUNwQztpQkFBTTtnQkFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzVELEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtTQUNKO1FBQ0Qsc0JBQXNCO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU1RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxPQUFjO1FBQy9DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsUUFBUSxHQUFHLEdBQUcsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQzlDO2lCQUFNO2dCQUNILFFBQVEsR0FBRyxHQUFHLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUM3QztTQUNKO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzsrR0FoRFEsb0NBQW9DO21IQUFwQyxvQ0FBb0MsY0FGakMsTUFBTTs7NEZBRVQsb0NBQW9DO2tCQUhoRCxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHVFRhYmxlUmVsYXRlZENvbW1vbkZ1bmN0aW9uc1NlcnZpY2Uge1xyXG4gICAgc3RhdGljIHJldHVyblRvb2x0aXBzQXNIdG1sTGlUYWdMaXN0KHN2Z09ySWNvblRvb2x0aXBNc2dzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFzdmdPckljb25Ub29sdGlwTXNncyB8fCAhc3ZnT3JJY29uVG9vbHRpcE1zZ3M/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKHN2Z09ySWNvblRvb2x0aXBNc2dzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHN2Z09ySWNvblRvb2x0aXBNc2dzWzBdO1xyXG5cclxuICAgICAgICBsZXQgbGlzdEl0ZW1zOiBzdHJpbmcgPSBgPHVsPmA7XHJcbiAgICAgICAgc3ZnT3JJY29uVG9vbHRpcE1zZ3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsaXN0SXRlbXMgKz0gYDxsaT4ke2l0ZW19PC9saT5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxpc3RJdGVtcyArPSBgPC91bD5gO1xyXG4gICAgICAgIHJldHVybiBsaXN0SXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2VuZXJpYyBmdW5jdGlvbiB0byBmb3JtYXQgYW4gYXJyYXkgb2YgbnVtYmVycyBhcyByYW5nZXNcclxuICAgIC8vICBpbnB1dCBbMSwyLDMsNCw5XSA9PiBvdXRwdXQgWzEtNCwgOV1cclxuICAgIHN0YXRpYyBmb3JtYXRBcnJheUFzUmFuZ2VzV2l0aEh5cGhlblZhbHVlKGFycjogbnVtYmVyW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSByZXR1cm4gXCItXCI7XHJcblxyXG4gICAgICAgIGFyci5zb3J0KChhLCBiKSA9PiBhIC0gYik7IC8vIEVuc3VyZSB0aGUgYXJyYXkgaXMgc29ydGVkXHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGxldCBzdGFydCA9IGFyclswXTtcclxuICAgICAgICBsZXQgZW5kID0gYXJyWzBdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoYXJyW2ldID09PSBlbmQgKyAxKSB7XHJcbiAgICAgICAgICAgICAgICBlbmQgPSBhcnJbaV07IC8vIEV4dGVuZCB0aGUgcmFuZ2VcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN0YXJ0ID09PSBlbmQgPyBgJHtzdGFydH1gIDogYCR7c3RhcnR9LSR7ZW5kfWApO1xyXG4gICAgICAgICAgICAgICAgc3RhcnQgPSBhcnJbaV07XHJcbiAgICAgICAgICAgICAgICBlbmQgPSBhcnJbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUHVzaCB0aGUgbGFzdCByYW5nZVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKHN0YXJ0ID09PSBlbmQgPyBgJHtzdGFydH1gIDogYCR7c3RhcnR9LSR7ZW5kfWApO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0LmpvaW4oXCIsIFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udmVydFRvQ29tbWFTZXBlcmF0ZWRTdHJpbmcoYXJyTGlzdDogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBuYW1lTGlzdCA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChpICE9PSBhcnJMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIG5hbWVMaXN0ID0gYCR7bmFtZUxpc3R9IOKAmCR7YXJyTGlzdFtpXX3igJksIGA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lTGlzdCA9IGAke25hbWVMaXN0fSDigJgke2Fyckxpc3RbaV194oCZIGA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5hbWVMaXN0O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3QtdGFibGUtcmVsYXRlZC1jb21tb24tZnVuY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWdlbmVyaWMtdGFibGUtbGliL3NlcnZpY2VzL2d0LXRhYmxlLXJlbGF0ZWQtY29tbW9uLWZ1bmN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFVBQWtCLEVBQUUseUJBQXlCLEdBQUcsQ0FBQztRQUMxRSxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsSUFBSSx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSx5QkFBeUIsQ0FBQztRQUMvRixPQUFPLFVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQWtCO1FBQzVDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxPQUFP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QUMsT0FBYztRQUMvQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLFFBQVEsR0FBRyxHQUFHLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUM5QztpQkFBTTtnQkFDSCxRQUFRLEdBQUcsR0FBRyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDN0M7U0FDSjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7K0dBOUVRLG9DQUFvQzttSEFBcEMsb0NBQW9DLGNBRmpDLE1BQU07OzRGQUVULG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR1RUYWJsZVJlbGF0ZWRDb21tb25GdW5jdGlvbnNTZXJ2aWNlIHtcclxuICAgIHN0YXRpYyBHZXREb2xsYXJSb3VuZGVkVmFsdWUoaW5wdXRWYWx1ZTogbnVtYmVyLCBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50ID0gMikge1xyXG4gICAgICAgIGNvbnN0IGRvbGxhclNpZ24gPSBpbnB1dFZhbHVlIDwgMCA/IFwiLSRcIiA6IFwiJFwiO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlVW5pdEFyciA9IHRoaXMuR2V0VmFsdWVJblVuaXRzKE1hdGguYWJzKGlucHV0VmFsdWUpKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZVVuaXRBcnJbMF07XHJcbiAgICAgICAgY29uc3QgdW5pdCA9IHZhbHVlVW5pdEFyclsxXTtcclxuICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoK3ZhbHVlICogMTAgKiogZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludCkgLyAxMCAqKiBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50O1xyXG4gICAgICAgIHJldHVybiBkb2xsYXJTaWduICsgdmFsdWUudG9TdHJpbmcoKSArIHVuaXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBHZXRWYWx1ZUluVW5pdHMoaW5wdXRWYWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IHVuaXQgPSBcIlwiO1xyXG4gICAgICAgIGNvbnN0IHRob3VzYW5kID0gMTAwMDtcclxuICAgICAgICBjb25zdCBtaWxsaW9uID0gMTAwMDAwMDtcclxuICAgICAgICBjb25zdCBiaWxsaW9uID0gMTAwMDAwMDAwMDtcclxuXHJcbiAgICAgICAgbGV0IHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcclxuICAgICAgICBpZiAoaW5wdXRWYWx1ZSA+PSB0aG91c2FuZCAmJiBpbnB1dFZhbHVlIDwgbWlsbGlvbikge1xyXG4gICAgICAgICAgICB1cGRhdGVkSW5wdXRWYWx1ZSA9IGlucHV0VmFsdWUgLyB0aG91c2FuZDtcclxuICAgICAgICAgICAgdW5pdCA9IFwiS1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSA+PSBtaWxsaW9uICYmIGlucHV0VmFsdWUgPCBiaWxsaW9uKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZSAvIG1pbGxpb247XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIk1cIjtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0VmFsdWUgPj0gYmlsbGlvbikge1xyXG4gICAgICAgICAgICB1cGRhdGVkSW5wdXRWYWx1ZSA9IGlucHV0VmFsdWUgLyBiaWxsaW9uO1xyXG4gICAgICAgICAgICB1bml0ID0gXCJCXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gW3VwZGF0ZWRJbnB1dFZhbHVlLCB1bml0XTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmV0dXJuVG9vbHRpcHNBc0h0bWxMaVRhZ0xpc3Qoc3ZnT3JJY29uVG9vbHRpcE1zZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXN2Z09ySWNvblRvb2x0aXBNc2dzIHx8ICFzdmdPckljb25Ub29sdGlwTXNncz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAoc3ZnT3JJY29uVG9vbHRpcE1zZ3MubGVuZ3RoID09PSAxKSByZXR1cm4gc3ZnT3JJY29uVG9vbHRpcE1zZ3NbMF07XHJcblxyXG4gICAgICAgIGxldCBsaXN0SXRlbXM6IHN0cmluZyA9IGA8dWw+YDtcclxuICAgICAgICBzdmdPckljb25Ub29sdGlwTXNncy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGxpc3RJdGVtcyArPSBgPGxpPiR7aXRlbX08L2xpPmA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGlzdEl0ZW1zICs9IGA8L3VsPmA7XHJcbiAgICAgICAgcmV0dXJuIGxpc3RJdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBnZW5lcmljIGZ1bmN0aW9uIHRvIGZvcm1hdCBhbiBhcnJheSBvZiBudW1iZXJzIGFzIHJhbmdlc1xyXG4gICAgLy8gIGlucHV0IFsxLDIsMyw0LDldID0+IG91dHB1dCBbMS00LCA5XVxyXG4gICAgc3RhdGljIGZvcm1hdEFycmF5QXNSYW5nZXNXaXRoSHlwaGVuVmFsdWUoYXJyOiBudW1iZXJbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGFyci5sZW5ndGggPT09IDApIHJldHVybiBcIi1cIjtcclxuXHJcbiAgICAgICAgYXJyLnNvcnQoKGEsIGIpID0+IGEgLSBiKTsgLy8gRW5zdXJlIHRoZSBhcnJheSBpcyBzb3J0ZWRcclxuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gYXJyWzBdO1xyXG4gICAgICAgIGxldCBlbmQgPSBhcnJbMF07XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChhcnJbaV0gPT09IGVuZCArIDEpIHtcclxuICAgICAgICAgICAgICAgIGVuZCA9IGFycltpXTsgLy8gRXh0ZW5kIHRoZSByYW5nZVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3RhcnQgPT09IGVuZCA/IGAke3N0YXJ0fWAgOiBgJHtzdGFydH0tJHtlbmR9YCk7XHJcbiAgICAgICAgICAgICAgICBzdGFydCA9IGFycltpXTtcclxuICAgICAgICAgICAgICAgIGVuZCA9IGFycltpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBQdXNoIHRoZSBsYXN0IHJhbmdlXHJcbiAgICAgICAgcmVzdWx0LnB1c2goc3RhcnQgPT09IGVuZCA/IGAke3N0YXJ0fWAgOiBgJHtzdGFydH0tJHtlbmR9YCk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbihcIiwgXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjb252ZXJ0VG9Db21tYVNlcGVyYXRlZFN0cmluZyhhcnJMaXN0OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG5hbWVMaXN0ID0gXCJcIjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyckxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGkgIT09IGFyckxpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QgPSBgJHtuYW1lTGlzdH0g4oCYJHthcnJMaXN0W2ldfeKAmSwgYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5hbWVMaXN0ID0gYCR7bmFtZUxpc3R9IOKAmCR7YXJyTGlzdFtpXX3igJkgYDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZUxpc3Q7XHJcbiAgICB9XHJcbn1cclxuIl19