@annalib/anna-core 31.6.0 → 31.7.0

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.
@@ -20,6 +20,19 @@ export class AnnaNumberFormatService {
20
20
  }
21
21
  return value.toLocaleString("en-IN");
22
22
  }
23
+ static GetRoundedValueWithUnitsAndDollarSymbol(inputValue, digitsToRoundDecimalPoint = 2) {
24
+ if (inputValue === 0)
25
+ return "-";
26
+ const result = AnnaNumberFormatService.GetValueInUnits(Math.abs(inputValue));
27
+ let value = result[0];
28
+ const unit = result[1];
29
+ value = +(+value).toFixed(digitsToRoundDecimalPoint);
30
+ if (inputValue < 0) {
31
+ value *= -1;
32
+ }
33
+ const dollarSymbol = value < 0 ? "-$" : "$";
34
+ return dollarSymbol + value.toString() + unit;
35
+ }
23
36
  static GetRoundedImpressionsWithUnits(inputValue, digitsToRoundDecimalPoint = 0) {
24
37
  const result = this.GetValueInUnits(Math.abs(inputValue));
25
38
  let value = result[0];
@@ -64,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
64
77
  providedIn: "root",
65
78
  }]
66
79
  }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1udW1iZXItZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLW51bWJlci1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUFrQixFQUFFLHlCQUF5QixHQUFHLENBQUM7UUFDcEYsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMvQixpR0FBaUc7SUFDckcsQ0FBQztJQUNNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxVQUFrQixFQUFFLHlCQUF5QixHQUFHLENBQUM7UUFDeEYsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sTUFBTSxDQUFDLDhCQUE4QixDQUFDLFVBQWtCLEVBQUUsNEJBQW9DLENBQUM7UUFDbEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QixLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDZixJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksZUFBZSxHQUFHLHlCQUF5QixDQUFDO1FBQ2hELElBQUkseUJBQXlCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BGLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakcsK0ZBQStGO0lBQ25HLENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQWtCO1FBQzVDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFDO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDeEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBRTNCLElBQUksVUFBVSxJQUFJLFFBQVEsSUFBSSxVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDakQsaUJBQWlCLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQztZQUMxQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2YsQ0FBQzthQUFNLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSSxVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDdkQsaUJBQWlCLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQztZQUN6QyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2YsQ0FBQzthQUFNLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQy9CLGlCQUFpQixHQUFHLFVBQVUsR0FBRyxPQUFPLENBQUM7WUFDekMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0EzRFEsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7NEZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbm5hTnVtYmVyRm9ybWF0U2VydmljZSB7XHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFJvdW5kZWRWYWx1ZVdpdGhVbml0cyhpbnB1dFZhbHVlOiBudW1iZXIsIGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQgPSAyKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gQW5uYU51bWJlckZvcm1hdFNlcnZpY2UuR2V0VmFsdWVJblVuaXRzKE1hdGguYWJzKGlucHV0VmFsdWUpKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSByZXN1bHRbMF07XHJcbiAgICAgICAgY29uc3QgdW5pdCA9IHJlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgdmFsdWUgPSArKCt2YWx1ZSkudG9GaXhlZChkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50KTtcclxuICAgICAgICBpZiAoaW5wdXRWYWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgdmFsdWUgKj0gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpICsgdW5pdDtcclxuICAgICAgICAvLyAgIHJldHVybiAoTWF0aC5Sb3VuZCh2YWx1ZSwgZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludCwgTWlkcG9pbnRSb3VuZGluZy5Bd2F5RnJvbVplcm8pICsgdW5pdCk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFJvdW5kZWRWYWx1ZXNXaXRob3V0VW5pdHMoaW5wdXRWYWx1ZTogbnVtYmVyLCBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50ID0gMikge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGlucHV0VmFsdWU7XHJcbiAgICAgICAgdmFsdWUgPSArKCt2YWx1ZSkudG9GaXhlZChkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50KTtcclxuICAgICAgICBpZiAoaW5wdXRWYWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgdmFsdWUgKj0gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZVN0cmluZyhcImVuLUlOXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0Um91bmRlZEltcHJlc3Npb25zV2l0aFVuaXRzKGlucHV0VmFsdWU6IG51bWJlciwgZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuR2V0VmFsdWVJblVuaXRzKE1hdGguYWJzKGlucHV0VmFsdWUpKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSByZXN1bHRbMF07XHJcbiAgICAgICAgY29uc3QgdW5pdCA9IHJlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgdmFsdWUgPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlICo9IC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGRpZ2l0VG9Sb3VuZE9mZiA9IGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQ7XHJcbiAgICAgICAgaWYgKGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQgPT09IDAgJiYgKHVuaXQgPT09IFwiTVwiIHx8IHVuaXQgPT09IFwiQlwiIHx8IHVuaXQgPT09IFwiS1wiKSkge1xyXG4gICAgICAgICAgICBkaWdpdFRvUm91bmRPZmYgPSAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpICsgdW5pdCA6IHZhbHVlLnRvRml4ZWQoZGlnaXRUb1JvdW5kT2ZmKSArIHVuaXQ7XHJcbiAgICAgICAgLy8gcmV0dXJuIChNYXRoLnJvdW5kKHZhbHVlLCBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50LCBNaWRwb2ludFJvdW5kaW5nLkF3YXlGcm9tWmVybykgKyB1bml0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFZhbHVlSW5Vbml0cyhpbnB1dFZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgdW5pdCA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcclxuICAgICAgICBjb25zdCB0aG91c2FuZCA9IDEwMDA7XHJcbiAgICAgICAgY29uc3QgbWlsbGlvbiA9IDEwMDAwMDA7XHJcbiAgICAgICAgY29uc3QgYmlsbGlvbiA9IDEwMDAwMDAwMDA7XHJcblxyXG4gICAgICAgIGlmIChpbnB1dFZhbHVlID49IHRob3VzYW5kICYmIGlucHV0VmFsdWUgPCBtaWxsaW9uKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZSAvIHRob3VzYW5kO1xyXG4gICAgICAgICAgICB1bml0ID0gXCJLXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlID49IG1pbGxpb24gJiYgaW5wdXRWYWx1ZSA8IGJpbGxpb24pIHtcclxuICAgICAgICAgICAgdXBkYXRlZElucHV0VmFsdWUgPSBpbnB1dFZhbHVlIC8gbWlsbGlvbjtcclxuICAgICAgICAgICAgdW5pdCA9IFwiTVwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSA+PSBiaWxsaW9uKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZSAvIGJpbGxpb247XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIkJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbdXBkYXRlZElucHV0VmFsdWUsIHVuaXRdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5uYS1udW1iZXItZm9ybWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvcmUvc3JjL2xpYi9hbm5hLWNvcmUtc2hhcmVkLWxpYi9zZXJ2aWNlcy9hbm5hLW51bWJlci1mb3JtYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxVQUFrQixFQUFFLHlCQUF5QixHQUFHLENBQUM7UUFDcEYsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMvQixpR0FBaUc7SUFDckcsQ0FBQztJQUNNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxVQUFrQixFQUFFLHlCQUF5QixHQUFHLENBQUM7UUFDeEYsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUs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Q0FBQztRQUNmLENBQUM7YUFBTSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUMvQixpQkFBaUIsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDO1lBQ3pDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBekVRLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07OzRGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5uYU51bWJlckZvcm1hdFNlcnZpY2Uge1xyXG4gICAgcHVibGljIHN0YXRpYyBHZXRSb3VuZGVkVmFsdWVXaXRoVW5pdHMoaW5wdXRWYWx1ZTogbnVtYmVyLCBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50ID0gMikge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEFubmFOdW1iZXJGb3JtYXRTZXJ2aWNlLkdldFZhbHVlSW5Vbml0cyhNYXRoLmFicyhpbnB1dFZhbHVlKSk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gcmVzdWx0WzBdO1xyXG4gICAgICAgIGNvbnN0IHVuaXQgPSByZXN1bHRbMV07XHJcblxyXG4gICAgICAgIHZhbHVlID0gKygrdmFsdWUpLnRvRml4ZWQoZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludCk7XHJcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlICo9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKSArIHVuaXQ7XHJcbiAgICAgICAgLy8gICByZXR1cm4gKE1hdGguUm91bmQodmFsdWUsIGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQsIE1pZHBvaW50Um91bmRpbmcuQXdheUZyb21aZXJvKSArIHVuaXQpO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBHZXRSb3VuZGVkVmFsdWVzV2l0aG91dFVuaXRzKGlucHV0VmFsdWU6IG51bWJlciwgZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludCA9IDIpIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBpbnB1dFZhbHVlO1xyXG4gICAgICAgIHZhbHVlID0gKygrdmFsdWUpLnRvRml4ZWQoZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludCk7XHJcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlICo9IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWUudG9Mb2NhbGVTdHJpbmcoXCJlbi1JTlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFJvdW5kZWRWYWx1ZVdpdGhVbml0c0FuZERvbGxhclN5bWJvbChpbnB1dFZhbHVlOiBudW1iZXIsIGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQgPSAyKSB7XHJcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgPT09IDApIHJldHVybiBcIi1cIjtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBBbm5hTnVtYmVyRm9ybWF0U2VydmljZS5HZXRWYWx1ZUluVW5pdHMoTWF0aC5hYnMoaW5wdXRWYWx1ZSkpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHJlc3VsdFswXTtcclxuICAgICAgICBjb25zdCB1bml0ID0gcmVzdWx0WzFdO1xyXG5cclxuICAgICAgICB2YWx1ZSA9ICsoK3ZhbHVlKS50b0ZpeGVkKGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQpO1xyXG4gICAgICAgIGlmIChpbnB1dFZhbHVlIDwgMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSAqPSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZG9sbGFyU3ltYm9sID0gdmFsdWUgPCAwID8gXCItJFwiIDogXCIkXCI7XHJcbiAgICAgICAgcmV0dXJuIGRvbGxhclN5bWJvbCArIHZhbHVlLnRvU3RyaW5nKCkgKyB1bml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0Um91bmRlZEltcHJlc3Npb25zV2l0aFVuaXRzKGlucHV0VmFsdWU6IG51bWJlciwgZGlnaXRzVG9Sb3VuZERlY2ltYWxQb2ludDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuR2V0VmFsdWVJblVuaXRzKE1hdGguYWJzKGlucHV0VmFsdWUpKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSByZXN1bHRbMF07XHJcbiAgICAgICAgY29uc3QgdW5pdCA9IHJlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgdmFsdWUgPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlICo9IC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGRpZ2l0VG9Sb3VuZE9mZiA9IGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQ7XHJcbiAgICAgICAgaWYgKGRpZ2l0c1RvUm91bmREZWNpbWFsUG9pbnQgPT09IDAgJiYgKHVuaXQgPT09IFwiTVwiIHx8IHVuaXQgPT09IFwiQlwiIHx8IHVuaXQgPT09IFwiS1wiKSkge1xyXG4gICAgICAgICAgICBkaWdpdFRvUm91bmRPZmYgPSAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgPyB2YWx1ZS50b1N0cmluZygpICsgdW5pdCA6IHZhbHVlLnRvRml4ZWQoZGlnaXRUb1JvdW5kT2ZmKSArIHVuaXQ7XHJcbiAgICAgICAgLy8gcmV0dXJuIChNYXRoLnJvdW5kKHZhbHVlLCBkaWdpdHNUb1JvdW5kRGVjaW1hbFBvaW50LCBNaWRwb2ludFJvdW5kaW5nLkF3YXlGcm9tWmVybykgKyB1bml0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFZhbHVlSW5Vbml0cyhpbnB1dFZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgdW5pdCA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcclxuICAgICAgICBjb25zdCB0aG91c2FuZCA9IDEwMDA7XHJcbiAgICAgICAgY29uc3QgbWlsbGlvbiA9IDEwMDAwMDA7XHJcbiAgICAgICAgY29uc3QgYmlsbGlvbiA9IDEwMDAwMDAwMDA7XHJcblxyXG4gICAgICAgIGlmIChpbnB1dFZhbHVlID49IHRob3VzYW5kICYmIGlucHV0VmFsdWUgPCBtaWxsaW9uKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZSAvIHRob3VzYW5kO1xyXG4gICAgICAgICAgICB1bml0ID0gXCJLXCI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dFZhbHVlID49IG1pbGxpb24gJiYgaW5wdXRWYWx1ZSA8IGJpbGxpb24pIHtcclxuICAgICAgICAgICAgdXBkYXRlZElucHV0VmFsdWUgPSBpbnB1dFZhbHVlIC8gbWlsbGlvbjtcclxuICAgICAgICAgICAgdW5pdCA9IFwiTVwiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSA+PSBiaWxsaW9uKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZSAvIGJpbGxpb247XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIkJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBbdXBkYXRlZElucHV0VmFsdWUsIHVuaXRdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==