ato-water-lib 0.0.90 → 0.0.92

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. package/{esm2022 → esm2020}/lib/ato-water-lib.component.mjs +5 -5
  2. package/{esm2022 → esm2020}/lib/ato-water-lib.module.mjs +15 -15
  3. package/{esm2022 → esm2020}/lib/ato-water-lib.service.mjs +5 -5
  4. package/esm2020/lib/components/asset-flow/asset-flow.component.mjs +165 -0
  5. package/{esm2022 → esm2020}/lib/components/asset-params-view/asset-params-view.component.mjs +9 -7
  6. package/esm2020/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +54 -0
  7. package/esm2020/lib/constants/components-group-const.mjs +3687 -0
  8. package/esm2020/lib/directive/ato-loading.directive.mjs +55 -0
  9. package/esm2020/lib/directive/ng-var.directive.mjs +31 -0
  10. package/esm2020/lib/models/default-gojs-editor.model.mjs +3589 -0
  11. package/esm2020/lib/models/gojs-data.model.mjs +6 -0
  12. package/esm2020/lib/models/gojs-editor.model.mjs +1822 -0
  13. package/esm2020/lib/services/utils/utils.service.mjs +133 -0
  14. package/fesm2015/ato-water-lib.mjs +9810 -0
  15. package/fesm2015/ato-water-lib.mjs.map +1 -0
  16. package/{fesm2022 → fesm2020}/ato-water-lib.mjs +1980 -568
  17. package/fesm2020/ato-water-lib.mjs.map +1 -0
  18. package/lib/components/asset-flow/asset-flow.component.d.ts +1 -1
  19. package/lib/components/asset-params-view/asset-params-view.component.d.ts +1 -1
  20. package/lib/components/flow-diagram-lib/flow-diagram-lib.component.d.ts +1 -1
  21. package/lib/constants/components-group-const.d.ts +710 -115
  22. package/lib/directive/ato-loading.directive.d.ts +1 -1
  23. package/lib/directive/ng-var.directive.d.ts +1 -1
  24. package/lib/models/default-gojs-editor.model.d.ts +2 -2
  25. package/lib/models/gojs-editor.model.d.ts +12 -5
  26. package/package.json +13 -7
  27. package/esm2022/lib/components/asset-flow/asset-flow.component.mjs +0 -174
  28. package/esm2022/lib/components/flow-diagram-lib/flow-diagram-lib.component.mjs +0 -55
  29. package/esm2022/lib/constants/components-group-const.mjs +0 -2291
  30. package/esm2022/lib/directive/ato-loading.directive.mjs +0 -59
  31. package/esm2022/lib/directive/ng-var.directive.mjs +0 -33
  32. package/esm2022/lib/models/default-gojs-editor.model.mjs +0 -3582
  33. package/esm2022/lib/models/gojs-data.model.mjs +0 -10
  34. package/esm2022/lib/models/gojs-editor.model.mjs +0 -1799
  35. package/esm2022/lib/services/utils/utils.service.mjs +0 -133
  36. package/fesm2022/ato-water-lib.mjs.map +0 -1
  37. /package/{esm2022 → esm2020}/ato-water-lib.mjs +0 -0
  38. /package/{esm2022 → esm2020}/lib/constants/applicable-prefixes-const.mjs +0 -0
  39. /package/{esm2022 → esm2020}/lib/constants/base64.const.mjs +0 -0
  40. /package/{esm2022 → esm2020}/lib/constants/icon-base64.const.mjs +0 -0
  41. /package/{esm2022 → esm2020}/lib/constants/key.const.mjs +0 -0
  42. /package/{esm2022 → esm2020}/lib/constants/plant.constant.mjs +0 -0
  43. /package/{esm2022 → esm2020}/lib/constants/value.const.mjs +0 -0
  44. /package/{esm2022 → esm2020}/lib/models/ato-asset-flow.model.mjs +0 -0
  45. /package/{esm2022 → esm2020}/public-api.mjs +0 -0
@@ -1,133 +0,0 @@
1
- import { DecimalPipe } from '@angular/common';
2
- import { Injectable } from '@angular/core';
3
- import { ATO_ABBREVIATION, APPLICABLE_PREFIXES, ROUNDED_NUMBER, } from '../../constants/applicable-prefixes-const';
4
- import { v4 as uuidV4 } from 'uuid';
5
- import _ from 'lodash';
6
- import * as i0 from "@angular/core";
7
- export class UtilsService {
8
- static convertPrefixesData(data) {
9
- if (!data?.unit || (!+data?.value && data?.value !== '0')) {
10
- return {
11
- shortenedNumber: data?.value ?? '0',
12
- unitPrefixes: '',
13
- };
14
- }
15
- const [unitToConvert, suffixUnit] = data?.unit?.split('/');
16
- if (unitToConvert === ATO_ABBREVIATION.kWh) {
17
- return this.getDataFormatSpecialKwh(data?.value, data?.isChangeUnitKwh);
18
- }
19
- return this.getDataFormatUnit(data?.value, unitToConvert);
20
- }
21
- static getDataFormatSpecialKwh(value, isChangeUnitKwh) {
22
- const _DecimalPipe = new DecimalPipe('en');
23
- if (!!isChangeUnitKwh) {
24
- // 1.000.000 KWh => 1 GWh
25
- if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
26
- return {
27
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
28
- unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.BILLION],
29
- };
30
- }
31
- // 1000 KWh => 1 MWh
32
- if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
33
- return {
34
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
35
- unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.MILLION],
36
- };
37
- }
38
- }
39
- if (Math.abs(value) >= ROUNDED_NUMBER.BILLION) {
40
- return {
41
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
42
- unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.BILLION],
43
- };
44
- }
45
- if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
46
- return {
47
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
48
- unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.MILLION],
49
- };
50
- }
51
- if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
52
- return {
53
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
54
- unitPrefixes: APPLICABLE_PREFIXES?.[ATO_ABBREVIATION.kWh]?.[ROUNDED_NUMBER.THOUSAND],
55
- };
56
- }
57
- return {
58
- shortenedNumber: _DecimalPipe.transform(+value ?? 0, '1.0-2') ?? '0',
59
- unitPrefixes: '',
60
- };
61
- }
62
- static getDataFormatUnit(value, unit) {
63
- const _DecimalPipe = new DecimalPipe('en');
64
- if (Math.abs(value) >= ROUNDED_NUMBER.BILLION) {
65
- return {
66
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.BILLION) ?? 0, '1.0-2'),
67
- unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.BILLION],
68
- };
69
- }
70
- if (Math.abs(value) >= ROUNDED_NUMBER.MILLION) {
71
- return {
72
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.MILLION) ?? 0, '1.0-2'),
73
- unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.MILLION],
74
- };
75
- }
76
- if (Math.abs(value) >= ROUNDED_NUMBER.THOUSAND) {
77
- return {
78
- shortenedNumber: _DecimalPipe.transform(+(value / ROUNDED_NUMBER.THOUSAND) ?? 0, '1.0-2'),
79
- unitPrefixes: APPLICABLE_PREFIXES?.[unit]?.[ROUNDED_NUMBER.THOUSAND],
80
- };
81
- }
82
- return {
83
- shortenedNumber: _DecimalPipe.transform(+value ?? 0, '1.0-2') ?? '0',
84
- unitPrefixes: '',
85
- };
86
- }
87
- static convertSpecialUnit(unit, unitPrefixes) {
88
- switch (unit) {
89
- case ATO_ABBREVIATION.kWh: {
90
- return unitPrefixes ? ATO_ABBREVIATION.Wh : ATO_ABBREVIATION.kWh;
91
- }
92
- case ATO_ABBREVIATION.m3: {
93
- return ATO_ABBREVIATION.m3_Special;
94
- }
95
- case ATO_ABBREVIATION.m3_unit: {
96
- return ATO_ABBREVIATION.m3_unit_Special;
97
- }
98
- case ATO_ABBREVIATION.degC: {
99
- return ATO_ABBREVIATION.degC_unit_Special;
100
- }
101
- case ATO_ABBREVIATION.degF: {
102
- return ATO_ABBREVIATION.degF_unit_Special;
103
- }
104
- default: {
105
- unit = UtilsService.replaceAll(unit ?? '', ATO_ABBREVIATION.m3, ATO_ABBREVIATION.m3_Special);
106
- return UtilsService.replaceAll(unit ?? '', ATO_ABBREVIATION.CO2, ATO_ABBREVIATION.CO2_Special);
107
- }
108
- }
109
- }
110
- static generateUUID() {
111
- const id = UtilsService.replaceAll(uuidV4(), '-', '').toUpperCase();
112
- const randomPosition = _.random(0, 32);
113
- const randomNumber = _.random(0, 9).toString();
114
- const leftChar = id.slice(0, randomPosition);
115
- const rightChar = id.slice(randomPosition);
116
- return `${leftChar}${randomNumber}${rightChar}`;
117
- }
118
- static replaceAll(text, find, replace) {
119
- function escapeRegExp(str) {
120
- return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
121
- }
122
- return text.replace(new RegExp(escapeRegExp(find), 'g'), replace);
123
- }
124
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
125
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, providedIn: 'root' });
126
- }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UtilsService, decorators: [{
128
- type: Injectable,
129
- args: [{
130
- providedIn: 'root',
131
- }]
132
- }] });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F0by13YXRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy91dGlscy91dGlscy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEdBQUcsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuSCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFxRjtRQUk1RyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPO2dCQUNILGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLEdBQUc7Z0JBQ25DLFlBQVksRUFBRSxFQUFFO2FBQ25CLENBQUM7UUFDTixDQUFDO1FBRUQsTUFBTSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzRCxJQUFJLGFBQWEsS0FBSyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsT0FBTyxJ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ZW50IjpbImltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFUT19BQkJSRVZJQVRJT04sIEFQUExJQ0FCTEVfUFJFRklYRVMsIFJPVU5ERURfTlVNQkVSLCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcHBsaWNhYmxlLXByZWZpeGVzLWNvbnN0JztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcbiAgICBzdGF0aWMgY29udmVydFByZWZpeGVzRGF0YShkYXRhOiB7IHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBhbnk7IHVuaXQ6IHN0cmluZyB8IGFueTsgaXNDaGFuZ2VVbml0S3doPzogYm9vbGVhbiB9KToge1xuICAgICAgICBzaG9ydGVuZWROdW1iZXI6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gICAgICAgIHVuaXRQcmVmaXhlczogbnVtYmVyIHwgbnVsbCB8IHN0cmluZztcbiAgICB9IHtcbiAgICAgICAgaWYgKCFkYXRhPy51bml0IHx8ICghK2RhdGE/LnZhbHVlICYmIGRhdGE/LnZhbHVlICE9PSAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogZGF0YT8udmFsdWUgPz8gJzAnLFxuICAgICAgICAgICAgICAgIHVuaXRQcmVmaXhlczogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW3VuaXRUb0NvbnZlcnQsIHN1ZmZpeFVuaXRdID0gZGF0YT8udW5pdD8uc3BsaXQoJy8nKTtcblxuICAgICAgICBpZiAodW5pdFRvQ29udmVydCA9PT0gQVRPX0FCQlJFVklBVElPTi5rV2gpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGFGb3JtYXRTcGVjaWFsS3doKGRhdGE/LnZhbHVlLCBkYXRhPy5pc0NoYW5nZVVuaXRLd2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YUZvcm1hdFVuaXQoZGF0YT8udmFsdWUsIHVuaXRUb0NvbnZlcnQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXREYXRhRm9ybWF0U3BlY2lhbEt3aCh2YWx1ZTogYW55LCBpc0NoYW5nZVVuaXRLd2g6IGFueSkge1xuICAgICAgICBjb25zdCBfRGVjaW1hbFBpcGUgPSBuZXcgRGVjaW1hbFBpcGUoJ2VuJyk7XG5cbiAgICAgICAgaWYgKCEhaXNDaGFuZ2VVbml0S3doKSB7XG4gICAgICAgICAgICAvLyAxLjAwMC4wMDAgS1doID0+IDEgR1doXG4gICAgICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpID49IFJPVU5ERURfTlVNQkVSLk1JTExJT04pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLk1JTExJT04pID8/IDAsICcxLjAtMicpLFxuICAgICAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IEFQUExJQ0FCTEVfUFJFRklYRVM/LltBVE9fQUJCUkVWSUFUSU9OLmtXaF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMTAwMCBLV2ggPT4gMSBNV2hcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh2YWx1ZSkgPj0gUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLlRIT1VTQU5EKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuTUlMTElPTl0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnModmFsdWUpID49IFJPVU5ERURfTlVNQkVSLkJJTExJT04pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2hvcnRlbmVkTnVtYmVyOiBfRGVjaW1hbFBpcGUudHJhbnNmb3JtKCsodmFsdWUgLyBST1VOREVEX05VTUJFUi5NSUxMSU9OKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IEFQUExJQ0FCTEVfUFJFRklYRVM/LltBVE9fQUJCUkVWSUFUSU9OLmtXaF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5NSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuTUlMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuTUlMTElPTl0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyh2YWx1ZSkgPj0gUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2hvcnRlbmVkTnVtYmVyOiBfRGVjaW1hbFBpcGUudHJhbnNmb3JtKCsodmFsdWUgLyBST1VOREVEX05VTUJFUi5USE9VU0FORCkgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiBBUFBMSUNBQkxFX1BSRUZJWEVTPy5bQVRPX0FCQlJFVklBVElPTi5rV2hdPy5bUk9VTkRFRF9OVU1CRVIuVEhPVVNBTkRdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oK3ZhbHVlID8/IDAsICcxLjAtMicpID8/ICcwJyxcbiAgICAgICAgICAgIHVuaXRQcmVmaXhlczogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldERhdGFGb3JtYXRVbml0KHZhbHVlOiBhbnksIHVuaXQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBfRGVjaW1hbFBpcGUgPSBuZXcgRGVjaW1hbFBpcGUoJ2VuJyk7XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5CSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuQklMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAoQVBQTElDQUJMRV9QUkVGSVhFUyBhcyBhbnkpPy5bdW5pdF0/LltST1VOREVEX05VTUJFUi5CSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5NSUxMSU9OKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrKHZhbHVlIC8gUk9VTkRFRF9OVU1CRVIuTUlMTElPTikgPz8gMCwgJzEuMC0yJyksXG4gICAgICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAoQVBQTElDQUJMRV9QUkVGSVhFUyBhcyBhbnkpPy5bdW5pdF0/LltST1VOREVEX05VTUJFUi5NSUxMSU9OXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHZhbHVlKSA+PSBST1VOREVEX05VTUJFUi5USE9VU0FORCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaG9ydGVuZWROdW1iZXI6IF9EZWNpbWFsUGlwZS50cmFuc2Zvcm0oKyh2YWx1ZSAvIFJPVU5ERURfTlVNQkVSLlRIT1VTQU5EKSA/PyAwLCAnMS4wLTInKSxcbiAgICAgICAgICAgICAgICB1bml0UHJlZml4ZXM6IChBUFBMSUNBQkxFX1BSRUZJWEVTIGFzIGFueSk/Llt1bml0XT8uW1JPVU5ERURfTlVNQkVSLlRIT1VTQU5EXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3J0ZW5lZE51bWJlcjogX0RlY2ltYWxQaXBlLnRyYW5zZm9ybSgrdmFsdWUgPz8gMCwgJzEuMC0yJykgPz8gJzAnLFxuICAgICAgICAgICAgdW5pdFByZWZpeGVzOiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY29udmVydFNwZWNpYWxVbml0KHVuaXQ6IHN0cmluZywgdW5pdFByZWZpeGVzPzogYW55KSB7XG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLmtXaDoge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bml0UHJlZml4ZXMgPyBBVE9fQUJCUkVWSUFUSU9OLldoIDogQVRPX0FCQlJFVklBVElPTi5rV2g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFUT19BQkJSRVZJQVRJT04ubTM6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5tM19TcGVjaWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLm0zX3VuaXQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5tM191bml0X1NwZWNpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFUT19BQkJSRVZJQVRJT04uZGVnQzoge1xuICAgICAgICAgICAgICAgIHJldHVybiBBVE9fQUJCUkVWSUFUSU9OLmRlZ0NfdW5pdF9TcGVjaWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBVE9fQUJCUkVWSUFUSU9OLmRlZ0Y6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQVRPX0FCQlJFVklBVElPTi5kZWdGX3VuaXRfU3BlY2lhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB1bml0ID0gVXRpbHNTZXJ2aWNlLnJlcGxhY2VBbGwodW5pdCA/PyAnJywgQVRPX0FCQlJFVklBVElPTi5tMywgQVRPX0FCQlJFVklBVElPTi5tM19TcGVjaWFsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHNTZXJ2aWNlLnJlcGxhY2VBbGwodW5pdCA/PyAnJywgQVRPX0FCQlJFVklBVElPTi5DTzIsIEFUT19BQkJSRVZJQVRJT04uQ08yX1NwZWNpYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGdlbmVyYXRlVVVJRCgpIHtcbiAgICAgICAgY29uc3QgaWQgPSBVdGlsc1NlcnZpY2UucmVwbGFjZUFsbCh1dWlkVjQoKSwgJy0nLCAnJykudG9VcHBlckNhc2UoKTtcbiAgICAgICAgY29uc3QgcmFuZG9tUG9zaXRpb24gPSBfLnJhbmRvbSgwLCAzMik7XG4gICAgICAgIGNvbnN0IHJhbmRvbU51bWJlciA9IF8ucmFuZG9tKDAsIDkpLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGxlZnRDaGFyID0gaWQuc2xpY2UoMCwgcmFuZG9tUG9zaXRpb24pO1xuICAgICAgICBjb25zdCByaWdodENoYXIgPSBpZC5zbGljZShyYW5kb21Qb3NpdGlvbik7XG4gICAgICAgIHJldHVybiBgJHtsZWZ0Q2hhcn0ke3JhbmRvbU51bWJlcn0ke3JpZ2h0Q2hhcn1gO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXBsYWNlQWxsKHRleHQ6IGFueSwgZmluZDogYW55LCByZXBsYWNlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFxcW1xcXVxcL1xcXFxdKS9nLCAnXFxcXCQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChmaW5kKSwgJ2cnKSwgcmVwbGFjZSk7XG4gICAgfVxufVxuIl19