@esfaenza/extensions 15.2.46 → 16.2.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.
- package/{esm2020 → esm2022}/esfaenza-extensions.mjs +4 -4
- package/esm2022/lib/models/CallResult.mjs +24 -0
- package/esm2022/lib/models/CsvHeaders.mjs +26 -0
- package/{esm2020 → esm2022}/lib/models/ExportConsts.mjs +31 -31
- package/esm2022/lib/models/ExtensionsModuleConfig.mjs +10 -0
- package/esm2022/lib/models/GenericItem.mjs +10 -0
- package/{esm2020 → esm2022}/lib/models/InboundMessageTypes.mjs +6 -6
- package/esm2022/lib/models/InterComMessage.mjs +16 -0
- package/{esm2020 → esm2022}/lib/models/TypeCode.mjs +24 -24
- package/{esm2020 → esm2022}/lib/modules/extensions.module.mjs +32 -32
- package/esm2022/lib/pipes/loc_date.pipe.mjs +38 -0
- package/esm2022/lib/services/extensions.base.mjs +30 -0
- package/esm2022/lib/services/extensions.clipboard.service.mjs +221 -0
- package/esm2022/lib/services/extensions.dates.service.mjs +244 -0
- package/esm2022/lib/services/extensions.embedding.service.mjs +213 -0
- package/esm2022/lib/services/extensions.exports.service.mjs +617 -0
- package/esm2022/lib/services/extensions.hashing.service.mjs +308 -0
- package/esm2022/lib/services/extensions.intercom.service.mjs +52 -0
- package/esm2022/lib/services/extensions.messages.service.mjs +450 -0
- package/esm2022/lib/services/extensions.utilities.service.mjs +250 -0
- package/{esm2020 → esm2022}/lib/tokens.mjs +11 -11
- package/{esm2020 → esm2022}/public-api.mjs +21 -21
- package/{fesm2020 → fesm2022}/esfaenza-extensions.mjs +2509 -2441
- package/{fesm2020 → fesm2022}/esfaenza-extensions.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/models/CallResult.d.ts +23 -23
- package/lib/models/CsvHeaders.d.ts +25 -25
- package/lib/models/ExportConsts.d.ts +31 -31
- package/lib/models/ExtensionsModuleConfig.d.ts +9 -9
- package/lib/models/GenericItem.d.ts +9 -9
- package/lib/models/InboundMessageTypes.d.ts +5 -5
- package/lib/models/InterComMessage.d.ts +12 -12
- package/lib/models/TypeCode.d.ts +23 -23
- package/lib/modules/extensions.module.d.ts +11 -11
- package/lib/pipes/loc_date.pipe.d.ts +24 -24
- package/lib/services/extensions.base.d.ts +22 -22
- package/lib/services/extensions.clipboard.service.d.ts +54 -54
- package/lib/services/extensions.dates.service.d.ts +99 -99
- package/lib/services/extensions.embedding.service.d.ts +28 -28
- package/lib/services/extensions.exports.service.d.ts +234 -234
- package/lib/services/extensions.hashing.service.d.ts +121 -121
- package/lib/services/extensions.intercom.service.d.ts +28 -28
- package/lib/services/extensions.messages.service.d.ts +195 -195
- package/lib/services/extensions.utilities.service.d.ts +107 -107
- package/lib/tokens.d.ts +11 -11
- package/package.json +13 -19
- package/public-api.d.ts +18 -18
- package/esm2020/lib/models/CallResult.mjs +0 -6
- package/esm2020/lib/models/CsvHeaders.mjs +0 -6
- package/esm2020/lib/models/ExtensionsModuleConfig.mjs +0 -4
- package/esm2020/lib/models/GenericItem.mjs +0 -6
- package/esm2020/lib/models/InterComMessage.mjs +0 -14
- package/esm2020/lib/pipes/loc_date.pipe.mjs +0 -37
- package/esm2020/lib/services/extensions.base.mjs +0 -29
- package/esm2020/lib/services/extensions.clipboard.service.mjs +0 -219
- package/esm2020/lib/services/extensions.dates.service.mjs +0 -242
- package/esm2020/lib/services/extensions.embedding.service.mjs +0 -208
- package/esm2020/lib/services/extensions.exports.service.mjs +0 -615
- package/esm2020/lib/services/extensions.hashing.service.mjs +0 -310
- package/esm2020/lib/services/extensions.intercom.service.mjs +0 -54
- package/esm2020/lib/services/extensions.messages.service.mjs +0 -433
- package/esm2020/lib/services/extensions.utilities.service.mjs +0 -252
- package/fesm2015/esfaenza-extensions.mjs +0 -2513
- package/fesm2015/esfaenza-extensions.mjs.map +0 -1
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Service che fornisce alcuni semplici funzioni di Hashing / GUID / ecc...
|
|
6
|
-
*/
|
|
7
|
-
export class HashingService {
|
|
8
|
-
constructor() {
|
|
9
|
-
/**
|
|
10
|
-
* Blacklist dei tipi da ignorare quando si effettua l'hashing degli oggetti
|
|
11
|
-
*/
|
|
12
|
-
this.objBlacklist = {
|
|
13
|
-
"NgForm": true, "ElementRef": true, "ExtensionsService": true, "ToastrService": true, "LocaleService": true, "AppState": true, "Router": true,
|
|
14
|
-
"ActivatedRoute": true, "HTTPService": true, "Location": true, "CanvasComponent": true, "ModalDirective": true, "ChangeDetectorRef": true,
|
|
15
|
-
"DateService": true, "EventEmitter": true, "ViewRef_": true, "Subscriber": true, "ItemLocalization": true
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Array dei possibili valori di un simbolo esadecimale
|
|
19
|
-
*/
|
|
20
|
-
this.hex_chr = '0123456789abcdef'.split('');
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Generazione di un GUID pseudo-univoco
|
|
24
|
-
*
|
|
25
|
-
* @returns {string} il GUID generato
|
|
26
|
-
*/
|
|
27
|
-
getGUID() {
|
|
28
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
|
|
29
|
-
var r = Math.random() * 16 | 0, v = c == "x" ? r : (r & 0x3 | 0x8);
|
|
30
|
-
return v.toString(16);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Calcolo dell'hash su un oggetto
|
|
35
|
-
*
|
|
36
|
-
* @param {any} o Oggetto di cui calcolare l'hash
|
|
37
|
-
* @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
|
|
38
|
-
* @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
|
|
39
|
-
*
|
|
40
|
-
* @returns {string} Hash generato per l'oggetto in questione
|
|
41
|
-
*/
|
|
42
|
-
hashObject(o, level = 0, navigateFullDepth = false, precise = false) {
|
|
43
|
-
var strDef = this.stringify(o, level, navigateFullDepth);
|
|
44
|
-
var hash = precise ? this.md5(strDef) : this.simpleHash(strDef);
|
|
45
|
-
return hash;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Hash più semplice e più veloce dell'md5, ma meno sicuro
|
|
49
|
-
*
|
|
50
|
-
* Vedi https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript
|
|
51
|
-
*
|
|
52
|
-
* @param {string} str Stringa di cui calcolare l'hash
|
|
53
|
-
*/
|
|
54
|
-
simpleHash(str, seed = 0) {
|
|
55
|
-
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
|
|
56
|
-
for (let i = 0, ch; i < str.length; i++) {
|
|
57
|
-
ch = str.charCodeAt(i);
|
|
58
|
-
h1 = Math.imul(h1 ^ ch, 2654435761);
|
|
59
|
-
h2 = Math.imul(h2 ^ ch, 1597334677);
|
|
60
|
-
}
|
|
61
|
-
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
62
|
-
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
63
|
-
return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Genera una stringa che identifica univocamente l'oggetto in questione
|
|
67
|
-
*
|
|
68
|
-
* @param {any} o Oggetto di cui calcolare la stringa univoca
|
|
69
|
-
* @param {number} level Livello di ricorsione nel caso venga effettuato l'hash di un oggetto che contiene altri oggetti
|
|
70
|
-
* @param {boolean} navigateFullDepth Indica se navigare l'oggetto per l'intera lunghezza. In caso contrario si ferma al secondo livello
|
|
71
|
-
*/
|
|
72
|
-
stringify(o, level, navigateFullDepth) {
|
|
73
|
-
var i, r;
|
|
74
|
-
if (o === null)
|
|
75
|
-
return "n";
|
|
76
|
-
if (o === true)
|
|
77
|
-
return "t";
|
|
78
|
-
if (o === false)
|
|
79
|
-
return "f";
|
|
80
|
-
if (o instanceof Date)
|
|
81
|
-
return 'd:' + o.valueOf().toString();
|
|
82
|
-
i = typeof o;
|
|
83
|
-
if (i === "string")
|
|
84
|
-
return "s:" + o;
|
|
85
|
-
if (i === "number")
|
|
86
|
-
return "n:" + o;
|
|
87
|
-
if (o instanceof Function)
|
|
88
|
-
return "m:" + o.toString();
|
|
89
|
-
if (o instanceof Array) {
|
|
90
|
-
r = [];
|
|
91
|
-
for (i = 0; i < o.length; i++) {
|
|
92
|
-
let res = this.stringify(o[i], level, navigateFullDepth);
|
|
93
|
-
if (res)
|
|
94
|
-
r.push(res);
|
|
95
|
-
}
|
|
96
|
-
return r.length > 0 ? "a:" + r.join(";") : "";
|
|
97
|
-
}
|
|
98
|
-
r = [];
|
|
99
|
-
//Se è oggetto, escludo tutti quelli di sistema/inutili
|
|
100
|
-
if (o) {
|
|
101
|
-
var name = o.__proto__.constructor.name;
|
|
102
|
-
if (!this.objBlacklist[name]) {
|
|
103
|
-
for (i in o) {
|
|
104
|
-
if (o.hasOwnProperty(i) && (level <= 2 || navigateFullDepth)) {
|
|
105
|
-
let res = this.stringify(o[i], level + 1, navigateFullDepth);
|
|
106
|
-
if (res)
|
|
107
|
-
r.push(i + ":" + res);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return r.length > 0 ? "o:" + r.join(";") : "";
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Data una stringa restituisce l'md5
|
|
116
|
-
*
|
|
117
|
-
* @param {string} s Stringa di cui calcolare l'md5
|
|
118
|
-
* @returns {string} md5 della stringa **s**
|
|
119
|
-
*/
|
|
120
|
-
md5(s) {
|
|
121
|
-
return this.hex(this.md51(s));
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* @ignore
|
|
125
|
-
*
|
|
126
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
127
|
-
*/
|
|
128
|
-
md5cycle(x, k) {
|
|
129
|
-
var a = x[0], b = x[1], c = x[2], d = x[3];
|
|
130
|
-
a = this.ff(a, b, c, d, k[0], 7, -680876936);
|
|
131
|
-
d = this.ff(d, a, b, c, k[1], 12, -389564586);
|
|
132
|
-
c = this.ff(c, d, a, b, k[2], 17, 606105819);
|
|
133
|
-
b = this.ff(b, c, d, a, k[3], 22, -1044525330);
|
|
134
|
-
a = this.ff(a, b, c, d, k[4], 7, -176418897);
|
|
135
|
-
d = this.ff(d, a, b, c, k[5], 12, 1200080426);
|
|
136
|
-
c = this.ff(c, d, a, b, k[6], 17, -1473231341);
|
|
137
|
-
b = this.ff(b, c, d, a, k[7], 22, -45705983);
|
|
138
|
-
a = this.ff(a, b, c, d, k[8], 7, 1770035416);
|
|
139
|
-
d = this.ff(d, a, b, c, k[9], 12, -1958414417);
|
|
140
|
-
c = this.ff(c, d, a, b, k[10], 17, -42063);
|
|
141
|
-
b = this.ff(b, c, d, a, k[11], 22, -1990404162);
|
|
142
|
-
a = this.ff(a, b, c, d, k[12], 7, 1804603682);
|
|
143
|
-
d = this.ff(d, a, b, c, k[13], 12, -40341101);
|
|
144
|
-
c = this.ff(c, d, a, b, k[14], 17, -1502002290);
|
|
145
|
-
b = this.ff(b, c, d, a, k[15], 22, 1236535329);
|
|
146
|
-
a = this.gg(a, b, c, d, k[1], 5, -165796510);
|
|
147
|
-
d = this.gg(d, a, b, c, k[6], 9, -1069501632);
|
|
148
|
-
c = this.gg(c, d, a, b, k[11], 14, 643717713);
|
|
149
|
-
b = this.gg(b, c, d, a, k[0], 20, -373897302);
|
|
150
|
-
a = this.gg(a, b, c, d, k[5], 5, -701558691);
|
|
151
|
-
d = this.gg(d, a, b, c, k[10], 9, 38016083);
|
|
152
|
-
c = this.gg(c, d, a, b, k[15], 14, -660478335);
|
|
153
|
-
b = this.gg(b, c, d, a, k[4], 20, -405537848);
|
|
154
|
-
a = this.gg(a, b, c, d, k[9], 5, 568446438);
|
|
155
|
-
d = this.gg(d, a, b, c, k[14], 9, -1019803690);
|
|
156
|
-
c = this.gg(c, d, a, b, k[3], 14, -187363961);
|
|
157
|
-
b = this.gg(b, c, d, a, k[8], 20, 1163531501);
|
|
158
|
-
a = this.gg(a, b, c, d, k[13], 5, -1444681467);
|
|
159
|
-
d = this.gg(d, a, b, c, k[2], 9, -51403784);
|
|
160
|
-
c = this.gg(c, d, a, b, k[7], 14, 1735328473);
|
|
161
|
-
b = this.gg(b, c, d, a, k[12], 20, -1926607734);
|
|
162
|
-
a = this.hh(a, b, c, d, k[5], 4, -378558);
|
|
163
|
-
d = this.hh(d, a, b, c, k[8], 11, -2022574463);
|
|
164
|
-
c = this.hh(c, d, a, b, k[11], 16, 1839030562);
|
|
165
|
-
b = this.hh(b, c, d, a, k[14], 23, -35309556);
|
|
166
|
-
a = this.hh(a, b, c, d, k[1], 4, -1530992060);
|
|
167
|
-
d = this.hh(d, a, b, c, k[4], 11, 1272893353);
|
|
168
|
-
c = this.hh(c, d, a, b, k[7], 16, -155497632);
|
|
169
|
-
b = this.hh(b, c, d, a, k[10], 23, -1094730640);
|
|
170
|
-
a = this.hh(a, b, c, d, k[13], 4, 681279174);
|
|
171
|
-
d = this.hh(d, a, b, c, k[0], 11, -358537222);
|
|
172
|
-
c = this.hh(c, d, a, b, k[3], 16, -722521979);
|
|
173
|
-
b = this.hh(b, c, d, a, k[6], 23, 76029189);
|
|
174
|
-
a = this.hh(a, b, c, d, k[9], 4, -640364487);
|
|
175
|
-
d = this.hh(d, a, b, c, k[12], 11, -421815835);
|
|
176
|
-
c = this.hh(c, d, a, b, k[15], 16, 530742520);
|
|
177
|
-
b = this.hh(b, c, d, a, k[2], 23, -995338651);
|
|
178
|
-
a = this.ii(a, b, c, d, k[0], 6, -198630844);
|
|
179
|
-
d = this.ii(d, a, b, c, k[7], 10, 1126891415);
|
|
180
|
-
c = this.ii(c, d, a, b, k[14], 15, -1416354905);
|
|
181
|
-
b = this.ii(b, c, d, a, k[5], 21, -57434055);
|
|
182
|
-
a = this.ii(a, b, c, d, k[12], 6, 1700485571);
|
|
183
|
-
d = this.ii(d, a, b, c, k[3], 10, -1894986606);
|
|
184
|
-
c = this.ii(c, d, a, b, k[10], 15, -1051523);
|
|
185
|
-
b = this.ii(b, c, d, a, k[1], 21, -2054922799);
|
|
186
|
-
a = this.ii(a, b, c, d, k[8], 6, 1873313359);
|
|
187
|
-
d = this.ii(d, a, b, c, k[15], 10, -30611744);
|
|
188
|
-
c = this.ii(c, d, a, b, k[6], 15, -1560198380);
|
|
189
|
-
b = this.ii(b, c, d, a, k[13], 21, 1309151649);
|
|
190
|
-
a = this.ii(a, b, c, d, k[4], 6, -145523070);
|
|
191
|
-
d = this.ii(d, a, b, c, k[11], 10, -1120210379);
|
|
192
|
-
c = this.ii(c, d, a, b, k[2], 15, 718787259);
|
|
193
|
-
b = this.ii(b, c, d, a, k[9], 21, -343485551);
|
|
194
|
-
x[0] = this.add32(a, x[0]);
|
|
195
|
-
x[1] = this.add32(b, x[1]);
|
|
196
|
-
x[2] = this.add32(c, x[2]);
|
|
197
|
-
x[3] = this.add32(d, x[3]);
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* @ignore
|
|
201
|
-
*
|
|
202
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
203
|
-
*/
|
|
204
|
-
cmn(q, a, b, x, s, t) {
|
|
205
|
-
a = this.add32(this.add32(a, q), this.add32(x, t));
|
|
206
|
-
return this.add32((a << s) | (a >>> (32 - s)), b);
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* @ignore
|
|
210
|
-
*
|
|
211
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
212
|
-
*/
|
|
213
|
-
ff(a, b, c, d, x, s, t) {
|
|
214
|
-
return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* @ignore
|
|
218
|
-
*
|
|
219
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
220
|
-
*/
|
|
221
|
-
gg(a, b, c, d, x, s, t) {
|
|
222
|
-
return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* @ignore
|
|
226
|
-
*
|
|
227
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
228
|
-
*/
|
|
229
|
-
hh(a, b, c, d, x, s, t) {
|
|
230
|
-
return this.cmn(b ^ c ^ d, a, b, x, s, t);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* @ignore
|
|
234
|
-
*
|
|
235
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
236
|
-
*/
|
|
237
|
-
ii(a, b, c, d, x, s, t) {
|
|
238
|
-
return this.cmn(c ^ (b | (~d)), a, b, x, s, t);
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* @ignore
|
|
242
|
-
*
|
|
243
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
244
|
-
*/
|
|
245
|
-
md51(s) {
|
|
246
|
-
var n = s.length, state = [1732584193, -271733879, -1732584194, 271733878], i;
|
|
247
|
-
for (i = 64; i <= s.length; i += 64)
|
|
248
|
-
this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));
|
|
249
|
-
s = s.substring(i - 64);
|
|
250
|
-
var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
|
251
|
-
for (i = 0; i < s.length; i++)
|
|
252
|
-
tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
|
|
253
|
-
tail[i >> 2] |= 0x80 << ((i % 4) << 3);
|
|
254
|
-
if (i > 55) {
|
|
255
|
-
this.md5cycle(state, tail);
|
|
256
|
-
for (i = 0; i < 16; i++)
|
|
257
|
-
tail[i] = 0;
|
|
258
|
-
}
|
|
259
|
-
tail[14] = n * 8;
|
|
260
|
-
this.md5cycle(state, tail);
|
|
261
|
-
return state;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* @ignore
|
|
265
|
-
*
|
|
266
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
267
|
-
*/
|
|
268
|
-
md5blk(s) {
|
|
269
|
-
var md5blks = [], i;
|
|
270
|
-
for (i = 0; i < 64; i += 4)
|
|
271
|
-
md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
|
|
272
|
-
return md5blks;
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* @ignore
|
|
276
|
-
*
|
|
277
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
278
|
-
*/
|
|
279
|
-
rhex(n) {
|
|
280
|
-
var s = '', j = 0;
|
|
281
|
-
for (; j < 4; j++)
|
|
282
|
-
s += this.hex_chr[(n >> (j * 8 + 4)) & 0x0F] + this.hex_chr[(n >> (j * 8)) & 0x0F];
|
|
283
|
-
return s;
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* @ignore
|
|
287
|
-
*
|
|
288
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
289
|
-
*/
|
|
290
|
-
hex(x) {
|
|
291
|
-
for (var i = 0; i < x.length; i++)
|
|
292
|
-
x[i] = this.rhex(x[i]);
|
|
293
|
-
return x.join('');
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* @ignore
|
|
297
|
-
*
|
|
298
|
-
* Metodo di utilità per il calcolo dell'md5
|
|
299
|
-
*/
|
|
300
|
-
add32(a, b) {
|
|
301
|
-
return (a + b) & 0xFFFFFFFF;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
HashingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HashingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
305
|
-
HashingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HashingService, providedIn: "root" });
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HashingService, decorators: [{
|
|
307
|
-
type: Injectable,
|
|
308
|
-
args: [{ providedIn: "root" }]
|
|
309
|
-
}] });
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFpREk7O1dBRUc7UUFDSyxpQkFBWSxHQUFHO1lBQ25CLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUk7WUFDN0ksZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUk7WUFDekksYUFBYSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJO1NBQzVHLENBQUM7UUE0TkY7O1dBRUc7UUFDSyxZQUFPLEdBQWEsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBaUM1RDtJQXJURzs7OztPQUlHO0lBQ0ksT0FBTztRQUNWLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRTtZQUMvRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENB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RUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEQsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLElBQUksQ0FBQyxDQUFTO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlELENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLENBQUM7UUFDWixJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBT0Q7Ozs7T0FJRztJQUNLLElBQUksQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNiLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2RixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssR0FBRyxDQUFDLENBQUM7UUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQzs7MkdBdFRRLGNBQWM7K0dBQWQsY0FBYyxjQURGLE1BQU07MkZBQ2xCLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBhbGN1bmkgc2VtcGxpY2kgZnVuemlvbmkgZGkgSGFzaGluZyAvIEdVSUQgLyBlY2MuLi5cclxuICovXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXHJcbmV4cG9ydCBjbGFzcyBIYXNoaW5nU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF6aW9uZSBkaSB1biBHVUlEIHBzZXVkby11bml2b2NvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IGlsIEdVSUQgZ2VuZXJhdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEdVSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKC9beHldL2csIGMgPT4ge1xyXG4gICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09IFwieFwiID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY29sbyBkZWxsJ2hhc2ggc3UgdW4gb2dnZXR0b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbyBPZ2dldHRvIGRpIGN1aSBjYWxjb2xhcmUgbCdoYXNoXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwgTGl2ZWxsbyBkaSByaWNvcnNpb25lIG5lbCBjYXNvIHZlbmdhIGVmZmV0dHVhdG8gbCdoYXNoIGRpIHVuIG9nZ2V0dG8gY2hlIGNvbnRpZW5lIGFsdHJpIG9nZ2V0dGlcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbmF2aWdhdGVGdWxsRGVwdGggSW5kaWNhIHNlIG5hdmlnYXJlIGwnb2dnZXR0byBwZXIgbCdpbnRlcmEgbHVuZ2hlenphLiBJbiBjYXNvIGNvbnRyYXJpbyBzaSBmZXJtYSBhbCBzZWNvbmRvIGxpdmVsbG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gSGFzaCBnZW5lcmF0byBwZXIgbCdvZ2dldHRvIGluIHF1ZXN0aW9uZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFzaE9iamVjdChvOiBhbnksIGxldmVsOiBudW1iZXIgPSAwLCBuYXZpZ2F0ZUZ1bGxEZXB0aDogYm9vbGVhbiA9IGZhbHNlLCBwcmVjaXNlOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBzdHJEZWYgPSB0aGlzLnN0cmluZ2lmeShvLCBsZXZlbCwgbmF2aWdhdGVGdWxsRGVwdGgpO1xyXG4gICAgICAgIHZhciBoYXNoOiBzdHJpbmcgPSBwcmVjaXNlID8gdGhpcy5tZDUoc3RyRGVmKSA6IHRoaXMuc2ltcGxlSGFzaChzdHJEZWYpO1xyXG4gICAgICAgIHJldHVybiBoYXNoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFzaCBwacO5IHNlbXBsaWNlIGUgcGnDuSB2ZWxvY2UgZGVsbCdtZDUsIG1hIG1lbm8gc2ljdXJvXHJcbiAgICAgKiBcclxuICAgICAqIFZlZGkgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzYxNjQ2MS9nZW5lcmF0ZS1hLWhhc2gtZnJvbS1zdHJpbmctaW4tamF2YXNjcmlwdFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nYSBkaSBjdWkgY2FsY29sYXJlIGwnaGFzaFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNpbXBsZUhhc2goc3RyOiBzdHJpbmcsIHNlZWQgPSAwKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgaDEgPSAweGRlYWRiZWVmIF4gc2VlZCwgaDIgPSAweDQxYzZjZTU3IF4gc2VlZDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgY2g7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY2ggPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgaDEgPSBNYXRoLmltdWwoaDEgXiBjaCwgMjY1NDQzNTc2MSk7XHJcbiAgICAgICAgICAgIGgyID0gTWF0aC5pbXVsKGgyIF4gY2gsIDE1OTczMzQ2NzcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoMSA9IE1hdGguaW11bChoMSBeIChoMT4+PjE2KSwgMjI0NjgyMjUwNykgXiBNYXRoLmltdWwoaDIgXiAoaDI+Pj4xMyksIDMyNjY0ODk5MDkpO1xyXG4gICAgICAgIGgyID0gTWF0aC5pbXVsKGgyIF4gKGgyPj4+MTYpLCAyMjQ2ODIyNTA3KSBeIE1hdGguaW11bChoMSBeIChoMT4+PjEzKSwgMzI2NjQ4OTkwOSk7XHJcbiAgICAgICAgcmV0dXJuICg0Mjk0OTY3Mjk2ICogKDIwOTcxNTEgJiBoMikgKyAoaDE+Pj4wKSkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJsYWNrbGlzdCBkZWkgdGlwaSBkYSBpZ25vcmFyZSBxdWFuZG8gc2kgZWZmZXR0dWEgbCdoYXNoaW5nIGRlZ2xpIG9nZ2V0dGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvYmpCbGFja2xpc3QgPSB7XHJcbiAgICAgICAgXCJOZ0Zvcm1cIjogdHJ1ZSwgXCJFbGVtZW50UmVmXCI6IHRydWUsIFwiRXh0ZW5zaW9uc1NlcnZpY2VcIjogdHJ1ZSwgXCJUb2FzdHJTZXJ2aWNlXCI6IHRydWUsIFwiTG9jYWxlU2VydmljZVwiOiB0cnVlLCBcIkFwcFN0YXRlXCI6IHRydWUsIFwiUm91dGVyXCI6IHRydWUsXHJcbiAgICAgICAgXCJBY3RpdmF0ZWRSb3V0ZVwiOiB0cnVlLCBcIkhUVFBTZXJ2aWNlXCI6IHRydWUsIFwiTG9jYXRpb25cIjogdHJ1ZSwgXCJDYW52YXNDb21wb25lbnRcIjogdHJ1ZSwgXCJNb2RhbERpcmVjdGl2ZVwiOiB0cnVlLCBcIkNoYW5nZURldGVjdG9yUmVmXCI6IHRydWUsXHJcbiAgICAgICAgXCJEYXRlU2VydmljZVwiOiB0cnVlLCBcIkV2ZW50RW1pdHRlclwiOiB0cnVlLCBcIlZpZXdSZWZfXCI6IHRydWUsIFwiU3Vic2NyaWJlclwiOiB0cnVlLCBcIkl0ZW1Mb2NhbGl6YXRpb25cIjogdHJ1ZVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYSB1bmEgc3RyaW5nYSBjaGUgaWRlbnRpZmljYSB1bml2b2NhbWVudGUgbCdvZ2dldHRvIGluIHF1ZXN0aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbyBPZ2dldHRvIGRpIGN1aSBjYWxjb2xhcmUgbGEgc3RyaW5nYSB1bml2b2NhXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwgTGl2ZWxsbyBkaSByaWNvcnNpb25lIG5lbCBjYXNvIHZlbmdhIGVmZmV0dHVhdG8gbCdoYXNoIGRpIHVuIG9nZ2V0dG8gY2hlIGNvbnRpZW5lIGFsdHJpIG9nZ2V0dGlcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbmF2aWdhdGVGdWxsRGVwdGggSW5kaWNhIHNlIG5hdmlnYXJlIGwnb2dnZXR0byBwZXIgbCdpbnRlcmEgbHVuZ2hlenphLiBJbiBjYXNvIGNvbnRyYXJpbyBzaSBmZXJtYSBhbCBzZWNvbmRvIGxpdmVsbG9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdHJpbmdpZnkobzogYW55LCBsZXZlbDogbnVtYmVyLCBuYXZpZ2F0ZUZ1bGxEZXB0aDogYm9vbGVhbikge1xyXG4gICAgICAgIHZhciBpOiBhbnksIHI6IGFueTtcclxuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIFwiblwiO1xyXG4gICAgICAgIGlmIChvID09PSB0cnVlKSByZXR1cm4gXCJ0XCI7XHJcbiAgICAgICAgaWYgKG8gPT09IGZhbHNlKSByZXR1cm4gXCJmXCI7XHJcbiAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gJ2Q6Jysgby52YWx1ZU9mKCkudG9TdHJpbmcoKTtcclxuICAgICAgICBpID0gdHlwZW9mIG87XHJcbiAgICAgICAgaWYgKGkgPT09IFwic3RyaW5nXCIpIHJldHVybiBcInM6XCIgKyBvO1xyXG4gICAgICAgIGlmIChpID09PSBcIm51bWJlclwiKSByZXR1cm4gXCJuOlwiICsgbztcclxuICAgICAgICBpZiAobyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSByZXR1cm4gXCJtOlwiICsgby50b1N0cmluZygpO1xyXG4gICAgICAgIGlmIChvIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgciA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgby5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuc3RyaW5naWZ5KG9baV0sIGxldmVsLCBuYXZpZ2F0ZUZ1bGxEZXB0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzKSByLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwID8gXCJhOlwiICsgci5qb2luKFwiO1wiKSA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIgPSBbXTtcclxuXHJcbiAgICAgICAgLy9TZSDDqCBvZ2dldHRvLCBlc2NsdWRvIHR1dHRpIHF1ZWxsaSBkaSBzaXN0ZW1hL2ludXRpbGlcclxuICAgICAgICBpZiAobykge1xyXG4gICAgICAgICAgICB2YXIgbmFtZSA9IG8uX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWU7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMub2JqQmxhY2tsaXN0W25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvLmhhc093blByb3BlcnR5KGkpICYmIChsZXZlbCA8PSAyIHx8IG5hdmlnYXRlRnVsbERlcHRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gdGhpcy5zdHJpbmdpZnkob1tpXSwgbGV2ZWwgKyAxLCBuYXZpZ2F0ZUZ1bGxEZXB0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHIucHVzaChpICsgXCI6XCIgKyByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwID8gXCJvOlwiICsgci5qb2luKFwiO1wiKSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRhIHVuYSBzdHJpbmdhIHJlc3RpdHVpc2NlIGwnbWQ1XHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIFN0cmluZ2EgZGkgY3VpIGNhbGNvbGFyZSBsJ21kNVxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gbWQ1IGRlbGxhIHN0cmluZ2EgKipzKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1kNShzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhleCh0aGlzLm1kNTEocykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBNZXRvZG8gZGkgdXRpbGl0w6AgcGVyIGlsIGNhbGNvbG8gZGVsbCdtZDVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtZDVjeWNsZSh4LCBrKSB7XHJcbiAgICAgICAgdmFyIGEgPSB4WzBdLCBiID0geFsxXSwgYyA9IHhbMl0sIGQgPSB4WzNdO1xyXG5cclxuICAgICAgICBhID0gdGhpcy5mZihhLCBiLCBjLCBkLCBrWzBdLCA3LCAtNjgwODc2OTM2KTtcclxuICAgICAgICBkID0gdGhpcy5mZihkLCBhLCBiLCBjLCBrWzFdLCAxMiwgLTM4OTU2NDU4Nik7XHJcbiAgICAgICAgYyA9IHRoaXMuZmYoYywgZCwgYSwgYiwga1syXSwgMTcsIDYwNjEwNTgxOSk7XHJcbiAgICAgICAgYiA9IHRoaXMuZmYoYiwgYywgZCwgYSwga1szXSwgMjIsIC0xMDQ0NTI1MzMwKTtcclxuICAgICAgICBhID0gdGhpcy5mZihhLCBiLCBjLCBkLCBrWzRdLCA3LCAtMTc2NDE4ODk3KTtcclxuICAgICAgICBkID0gdGhpcy5mZihkLCBhLCBiLCBjLCBrWzVdLCAxMiwgMTIwMDA4MDQyNik7XHJcbiAgICAgICAgYyA9IHRoaXMuZmYoYywgZCwgYSwgYiwga1s2XSwgMTcsIC0xNDczMjMxMzQxKTtcclxuICAgICAgICBiID0gdGhpcy5mZihiLCBjLCBkLCBhLCBrWzddLCAyMiwgLTQ1NzA1OTgzKTtcclxuICAgICAgICBhID0gdGhpcy5mZihhLCBiLCBjLCBkLCBrWzhdLCA3LCAxNzcwMDM1NDE2KTtcclxuICAgICAgICBkID0gdGhpcy5mZihkLCBhLCBiLCBjLCBrWzldLCAxMiwgLTE5NTg0MTQ0MTcpO1xyXG4gICAgICAgIGMgPSB0aGlzLmZmKGMsIGQsIGEsIGIsIGtbMTBdLCAxNywgLTQyMDYzKTtcclxuICAgICAgICBiID0gdGhpcy5mZihiLCBjLCBkLCBhLCBrWzExXSwgMjIsIC0xOTkwNDA0MTYyKTtcclxuICAgICAgICBhID0gdGhpcy5mZihhLCBiLCBjLCBkLCBrWzEyXSwgNywgMTgwNDYwMzY4Mik7XHJcbiAgICAgICAgZCA9IHRoaXMuZmYoZCwgYSwgYiwgYywga1sxM10sIDEyLCAtNDAzNDExMDEpO1xyXG4gICAgICAgIGMgPSB0aGlzLmZmKGMsIGQsIGEsIGIsIGtbMTRdLCAxNywgLTE1MDIwMDIyOTApO1xyXG4gICAgICAgIGIgPSB0aGlzLmZmKGIsIGMsIGQsIGEsIGtbMTVdLCAyMiwgMTIzNjUzNTMyOSk7XHJcblxyXG4gICAgICAgIGEgPSB0aGlzLmdnKGEsIGIsIGMsIGQsIGtbMV0sIDUsIC0xNjU3OTY1MTApO1xyXG4gICAgICAgIGQgPSB0aGlzLmdnKGQsIGEsIGIsIGMsIGtbNl0sIDksIC0xMDY5NTAxNjMyKTtcclxuICAgICAgICBjID0gdGhpcy5nZyhjLCBkLCBhLCBiLCBrWzExXSwgMTQsIDY0MzcxNzcxMyk7XHJcbiAgICAgICAgYiA9IHRoaXMuZ2coYiwgYywgZCwgYSwga1swXSwgMjAsIC0zNzM4OTczMDIpO1xyXG4gICAgICAgIGEgPSB0aGlzLmdnKGEsIGIsIGMsIGQsIGtbNV0sIDUsIC03MDE1NTg2OTEpO1xyXG4gICAgICAgIGQgPSB0aGlzLmdnKGQsIGEsIGIsIGMsIGtbMTBdLCA5LCAzODAxNjA4Myk7XHJcbiAgICAgICAgYyA9IHRoaXMuZ2coYywgZCwgYSwgYiwga1sxNV0sIDE0LCAtNjYwNDc4MzM1KTtcclxuICAgICAgICBiID0gdGhpcy5nZyhiLCBjLCBkLCBhLCBrWzRdLCAyMCwgLTQwNTUzNzg0OCk7XHJcbiAgICAgICAgYSA9IHRoaXMuZ2coYSwgYiwgYywgZCwga1s5XSwgNSwgNTY4NDQ2NDM4KTtcclxuICAgICAgICBkID0gdGhpcy5nZyhkLCBhLCBiLCBjLCBrWzE0XSwgOSwgLTEwMTk4MDM2OTApO1xyXG4gICAgICAgIGMgPSB0aGlzLmdnKGMsIGQsIGEsIGIsIGtbM10sIDE0LCAtMTg3MzYzOTYxKTtcclxuICAgICAgICBiID0gdGhpcy5nZyhiLCBjLCBkLCBhLCBrWzhdLCAyMCwgMTE2MzUzMTUwMSk7XHJcbiAgICAgICAgYSA9IHRoaXMuZ2coYSwgYiwgYywgZCwga1sxM10sIDUsIC0xNDQ0NjgxNDY3KTtcclxuICAgICAgICBkID0gdGhpcy5nZyhkLCBhLCBiLCBjLCBrWzJdLCA5LCAtNTE0MDM3ODQpO1xyXG4gICAgICAgIGMgPSB0aGlzLmdnKGMsIGQsIGEsIGIsIGtbN10sIDE0LCAxNzM1MzI4NDczKTtcclxuICAgICAgICBiID0gdGhpcy5nZyhiLCBjLCBkLCBhLCBrWzEyXSwgMjAsIC0xOTI2NjA3NzM0KTtcclxuXHJcbiAgICAgICAgYSA9IHRoaXMuaGgoYSwgYiwgYywgZCwga1s1XSwgNCwgLTM3ODU1OCk7XHJcbiAgICAgICAgZCA9IHRoaXMuaGgoZCwgYSwgYiwgYywga1s4XSwgMTEsIC0yMDIyNTc0NDYzKTtcclxuICAgICAgICBjID0gdGhpcy5oaChjLCBkLCBhLCBiLCBrWzExXSwgMTYsIDE4MzkwMzA1NjIpO1xyXG4gICAgICAgIGIgPSB0aGlzLmhoKGIsIGMsIGQsIGEsIGtbMTRdLCAyMywgLTM1MzA5NTU2KTtcclxuICAgICAgICBhID0gdGhpcy5oaChhLCBiLCBjLCBkLCBrWzFdLCA0LCAtMTUzMDk5MjA2MCk7XHJcbiAgICAgICAgZCA9IHRoaXMuaGgoZCwgYSwgYiwgYywga1s0XSwgMTEsIDEyNzI4OTMzNTMpO1xyXG4gICAgICAgIGMgPSB0aGlzLmhoKGMsIGQsIGEsIGIsIGtbN10sIDE2LCAtMTU1NDk3NjMyKTtcclxuICAgICAgICBiID0gdGhpcy5oaChiLCBjLCBkLCBhLCBrWzEwXSwgMjMsIC0xMDk0NzMwNjQwKTtcclxuICAgICAgICBhID0gdGhpcy5oaChhLCBiLCBjLCBkLCBrWzEzXSwgNCwgNjgxMjc5MTc0KTtcclxuICAgICAgICBkID0gdGhpcy5oaChkLCBhLCBiLCBjLCBrWzBdLCAxMSwgLTM1ODUzNzIyMik7XHJcbiAgICAgICAgYyA9IHRoaXMuaGgoYywgZCwgYSwgYiwga1szXSwgMTYsIC03MjI1MjE5NzkpO1xyXG4gICAgICAgIGIgPSB0aGlzLmhoKGIsIGMsIGQsIGEsIGtbNl0sIDIzLCA3NjAyOTE4OSk7XHJcbiAgICAgICAgYSA9IHRoaXMuaGgoYSwgYiwgYywgZCwga1s5XSwgNCwgLTY0MDM2NDQ4Nyk7XHJcbiAgICAgICAgZCA9IHRoaXMuaGgoZCwgYSwgYiwgYywga1sxMl0sIDExLCAtNDIxODE1ODM1KTtcclxuICAgICAgICBjID0gdGhpcy5oaChjLCBkLCBhLCBiLCBrWzE1XSwgMTYsIDUzMDc0MjUyMCk7XHJcbiAgICAgICAgYiA9IHRoaXMuaGgoYiwgYywgZCwgYSwga1syXSwgMjMsIC05OTUzMzg2NTEpO1xyXG5cclxuICAgICAgICBhID0gdGhpcy5paShhLCBiLCBjLCBkLCBrWzBdLCA2LCAtMTk4NjMwODQ0KTtcclxuICAgICAgICBkID0gdGhpcy5paShkLCBhLCBiLCBjLCBrWzddLCAxMCwgMTEyNjg5MTQxNSk7XHJcbiAgICAgICAgYyA9IHRoaXMuaWkoYywgZCwgYSwgYiwga1sxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XHJcbiAgICAgICAgYiA9IHRoaXMuaWkoYiwgYywgZCwgYSwga1s1XSwgMjEsIC01NzQzNDA1NSk7XHJcbiAgICAgICAgYSA9IHRoaXMuaWkoYSwgYiwgYywgZCwga1sxMl0sIDYsIDE3MDA0ODU1NzEpO1xyXG4gICAgICAgIGQgPSB0aGlzLmlpKGQsIGEsIGIsIGMsIGtbM10sIDEwLCAtMTg5NDk4NjYwNik7XHJcbiAgICAgICAgYyA9IHRoaXMuaWkoYywgZCwgYSwgYiwga1sxMF0sIDE1LCAtMTA1MTUyMyk7XHJcbiAgICAgICAgYiA9IHRoaXMuaWkoYiwgYywgZCwgYSwga1sxXSwgMjEsIC0yMDU0OTIyNzk5KTtcclxuICAgICAgICBhID0gdGhpcy5paShhLCBiLCBjLCBkLCBrWzhdLCA2LCAxODczMzEzMzU5KTtcclxuICAgICAgICBkID0gdGhpcy5paShkLCBhLCBiLCBjLCBrWzE1XSwgMTAsIC0zMDYxMTc0NCk7XHJcbiAgICAgICAgYyA9IHRoaXMuaWkoYywgZCwgYSwgYiwga1s2XSwgMTUsIC0xNTYwMTk4MzgwKTtcclxuICAgICAgICBiID0gdGhpcy5paShiLCBjLCBkLCBhLCBrWzEzXSwgMjEsIDEzMDkxNTE2NDkpO1xyXG4gICAgICAgIGEgPSB0aGlzLmlpKGEsIGIsIGMsIGQsIGtbNF0sIDYsIC0xNDU1MjMwNzApO1xyXG4gICAgICAgIGQgPSB0aGlzLmlpKGQsIGEsIGIsIGMsIGtbMTFdLCAxMCwgLTExMjAyMTAzNzkpO1xyXG4gICAgICAgIGMgPSB0aGlzLmlpKGMsIGQsIGEsIGIsIGtbMl0sIDE1LCA3MTg3ODcyNTkpO1xyXG4gICAgICAgIGIgPSB0aGlzLmlpKGIsIGMsIGQsIGEsIGtbOV0sIDIxLCAtMzQzNDg1NTUxKTtcclxuXHJcbiAgICAgICAgeFswXSA9IHRoaXMuYWRkMzIoYSwgeFswXSk7XHJcbiAgICAgICAgeFsxXSA9IHRoaXMuYWRkMzIoYiwgeFsxXSk7XHJcbiAgICAgICAgeFsyXSA9IHRoaXMuYWRkMzIoYywgeFsyXSk7XHJcbiAgICAgICAgeFszXSA9IHRoaXMuYWRkMzIoZCwgeFszXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKiBcclxuICAgICAqIE1ldG9kbyBkaSB1dGlsaXTDoCBwZXIgaWwgY2FsY29sbyBkZWxsJ21kNVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNtbihxLCBhLCBiLCB4LCBzLCB0KSB7XHJcbiAgICAgICAgYSA9IHRoaXMuYWRkMzIodGhpcy5hZGQzMihhLCBxKSwgdGhpcy5hZGQzMih4LCB0KSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkMzIoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqIFxyXG4gICAgICogTWV0b2RvIGRpIHV0aWxpdMOgIHBlciBpbCBjYWxjb2xvIGRlbGwnbWQ1XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmYoYSwgYiwgYywgZCwgeCwgcywgdCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNtbigoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKiBcclxuICAgICAqIE1ldG9kbyBkaSB1dGlsaXTDoCBwZXIgaWwgY2FsY29sbyBkZWxsJ21kNVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdnKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbW4oKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBNZXRvZG8gZGkgdXRpbGl0w6AgcGVyIGlsIGNhbGNvbG8gZGVsbCdtZDVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBoaChhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY21uKGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKiBcclxuICAgICAqIE1ldG9kbyBkaSB1dGlsaXTDoCBwZXIgaWwgY2FsY29sbyBkZWxsJ21kNVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbW4oYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBNZXRvZG8gZGkgdXRpbGl0w6AgcGVyIGlsIGNhbGNvbG8gZGVsbCdtZDVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtZDUxKHM6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBuID0gcy5sZW5ndGgsIHN0YXRlID0gWzE3MzI1ODQxOTMsIC0yNzE3MzM4NzksIC0xNzMyNTg0MTk0LCAyNzE3MzM4NzhdLCBpO1xyXG5cclxuICAgICAgICBmb3IgKGkgPSA2NDsgaSA8PSBzLmxlbmd0aDsgaSArPSA2NClcclxuICAgICAgICAgICAgdGhpcy5tZDVjeWNsZShzdGF0ZSwgdGhpcy5tZDVibGsocy5zdWJzdHJpbmcoaSAtIDY0LCBpKSkpO1xyXG5cclxuICAgICAgICBzID0gcy5zdWJzdHJpbmcoaSAtIDY0KTtcclxuICAgICAgICB2YXIgdGFpbCA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgdGFpbFtpID4+IDJdIHw9IHMuY2hhckNvZGVBdChpKSA8PCAoKGkgJSA0KSA8PCAzKTtcclxuICAgICAgICB0YWlsW2kgPj4gMl0gfD0gMHg4MCA8PCAoKGkgJSA0KSA8PCAzKTtcclxuICAgICAgICBpZiAoaSA+IDU1KSB7XHJcbiAgICAgICAgICAgIHRoaXMubWQ1Y3ljbGUoc3RhdGUsIHRhaWwpO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgdGFpbFtpXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhaWxbMTRdID0gbiAqIDg7XHJcbiAgICAgICAgdGhpcy5tZDVjeWNsZShzdGF0ZSwgdGFpbCk7XHJcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBNZXRvZG8gZGkgdXRpbGl0w6AgcGVyIGlsIGNhbGNvbG8gZGVsbCdtZDVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBtZDVibGsocykge1xyXG4gICAgICAgIHZhciBtZDVibGtzID0gW10sIGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyBpICs9IDQpXHJcbiAgICAgICAgICAgIG1kNWJsa3NbaSA+PiAyXSA9IHMuY2hhckNvZGVBdChpKSArIChzLmNoYXJDb2RlQXQoaSArIDEpIDw8IDgpICsgKHMuY2hhckNvZGVBdChpICsgMikgPDwgMTYpICsgKHMuY2hhckNvZGVBdChpICsgMykgPDwgMjQpO1xyXG4gICAgICAgIHJldHVybiBtZDVibGtzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgZGVpIHBvc3NpYmlsaSB2YWxvcmkgZGkgdW4gc2ltYm9sbyBlc2FkZWNpbWFsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhleF9jaHI6IHN0cmluZ1tdID0gJzAxMjM0NTY3ODlhYmNkZWYnLnNwbGl0KCcnKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqIFxyXG4gICAgICogTWV0b2RvIGRpIHV0aWxpdMOgIHBlciBpbCBjYWxjb2xvIGRlbGwnbWQ1XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmhleChuKSB7XHJcbiAgICAgICAgdmFyIHMgPSAnJywgaiA9IDA7XHJcbiAgICAgICAgZm9yICg7IGogPCA0OyBqKyspXHJcbiAgICAgICAgICAgIHMgKz0gdGhpcy5oZXhfY2hyWyhuID4+IChqICogOCArIDQpKSAmIDB4MEZdICsgdGhpcy5oZXhfY2hyWyhuID4+IChqICogOCkpICYgMHgwRl07XHJcbiAgICAgICAgcmV0dXJuIHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKiBcclxuICAgICAqIE1ldG9kbyBkaSB1dGlsaXTDoCBwZXIgaWwgY2FsY29sbyBkZWxsJ21kNVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhleCh4KSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICB4W2ldID0gdGhpcy5yaGV4KHhbaV0pO1xyXG4gICAgICAgIHJldHVybiB4LmpvaW4oJycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBNZXRvZG8gZGkgdXRpbGl0w6AgcGVyIGlsIGNhbGNvbG8gZGVsbCdtZDVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhZGQzMihhLCBiKSB7XHJcbiAgICAgICAgcmV0dXJuIChhICsgYikgJiAweEZGRkZGRkZGO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
// Librerie
|
|
4
|
-
import { Subject } from "rxjs";
|
|
5
|
-
// Modelli
|
|
6
|
-
import { InterComMessage } from "../models/InterComMessage";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/** Service che si occupa di gestire la comunicazione fra i moduli interni ed esterni dell'applicativo */
|
|
9
|
-
export class InterComService {
|
|
10
|
-
constructor() {
|
|
11
|
-
/** Messaggi in uscita, uno per ogni recipient registratosi dall'entrypoint **register** */
|
|
12
|
-
this.outbounds = {};
|
|
13
|
-
/** Messaggi in entrata, unico per applicazione principale */
|
|
14
|
-
this.inbounds = new Subject();
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Metodo che permette di inviare un messaggio dall'applicazione ad un modulo esterno o viceversa
|
|
18
|
-
*
|
|
19
|
-
* @param {any} messageType Tipologia di messaggio. Sarà di tipo **InboundMessageTypes** per tutti i messaggi inbound, dinamico per tutti i mesaggi outbound (il tipo dipenderà dagli enum dei messaggi dei moduli esterni)
|
|
20
|
-
* @param {any} message Messaggio da inviare che può essere un dto in casi complessi ma dovrà essere gestito a dovere lato implementativo
|
|
21
|
-
* @param {string} recipient Destinatario del messaggio. Per i messaggi inbound dev'essere lasciato vuoto, per i messaggi outbound sarà valorizzato alla chiave del modulo a cui si vuole inviare il messaggio
|
|
22
|
-
*/
|
|
23
|
-
send(messageType, message, recipient) {
|
|
24
|
-
let msg = new InterComMessage(messageType, message);
|
|
25
|
-
// Se non c'è un recipient significa che è un modulo esterno che invia messaggi al modulo main (quindi messaggio in entrata - inbound)
|
|
26
|
-
// Altrimenti significa che è il modulo main ad inviare messaggi ai moduli esterni (messaggio in uscita - outbound)
|
|
27
|
-
if (!recipient) {
|
|
28
|
-
this.inbounds.next(msg);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
if (!this.outbounds[recipient])
|
|
32
|
-
console.warn("@esfaenza/extensions - InterComService: Impossibile inviare il messaggio al recipient " + recipient + " assicurarsi che il modulo sia caricato e che effettui la chiamata al metodo 'regisster'");
|
|
33
|
-
else
|
|
34
|
-
this.outbounds[recipient].next(msg);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Permette di registrare un modulo esterno alla lista dei moduli in listening sulla coda di messaggi
|
|
39
|
-
*
|
|
40
|
-
* @param {string} key Chiave del modulo da registrare. Tutti i messaggi inbound saranno inviati dall'applicazione principale su questa chiave
|
|
41
|
-
*/
|
|
42
|
-
register(key) {
|
|
43
|
-
if (this.outbounds[key])
|
|
44
|
-
throw "@esfaenza/extensions - InterComService: Impossibile registrare più volte lo stesso modulo";
|
|
45
|
-
this.outbounds[key] = new Subject();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
InterComService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InterComService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
49
|
-
InterComService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InterComService, providedIn: "root" });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InterComService, decorators: [{
|
|
51
|
-
type: Injectable,
|
|
52
|
-
args: [{ providedIn: "root" }]
|
|
53
|
-
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5pbnRlcmNvbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuaW50ZXJjb20uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxXQUFXO0FBQ1gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixVQUFVO0FBQ1YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUU1RCx5R0FBeUc7QUFFekcsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFHSSwyRkFBMkY7UUFDcEYsY0FBUyxHQUErQyxFQUFFLENBQUM7UUFDbEUsNkRBQTZEO1FBQ3RELGFBQVEsR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7S0FtQzlFO0lBakNHOzs7Ozs7T0FNRztJQUNJLElBQUksQ0FBQyxXQUFnQixFQUFFLE9BQVksRUFBRSxTQUFrQjtRQUMxRCxJQUFJLEdBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFcEQsc0lBQXNJO1FBQ3RJLG1IQUFtSDtRQUNuSCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDM0I7YUFDSTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyx3RkFBd0YsR0FBRyxTQUFTLEdBQUcsMEZBQTBGLENBQUMsQ0FBQzs7Z0JBRWhOLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsR0FBVztRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ25CLE1BQU0sMkZBQTJGLENBQUM7UUFDdEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztJQUN6RCxDQUFDOzs0R0F2Q1EsZUFBZTtnSEFBZixlQUFlLGNBREgsTUFBTTsyRkFDbEIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTGlicmVyaWVcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEludGVyQ29tTWVzc2FnZSB9IGZyb20gXCIuLi9tb2RlbHMvSW50ZXJDb21NZXNzYWdlXCI7XHJcblxyXG4vKiogU2VydmljZSBjaGUgc2kgb2NjdXBhIGRpIGdlc3RpcmUgbGEgY29tdW5pY2F6aW9uZSBmcmEgaSBtb2R1bGkgaW50ZXJuaSBlZCBlc3Rlcm5pIGRlbGwnYXBwbGljYXRpdm8gKi9cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46IFwicm9vdFwifSlcclxuZXhwb3J0IGNsYXNzIEludGVyQ29tU2VydmljZSB7XHJcblxyXG4gICAgLyoqIE1lc3NhZ2dpIGluIHVzY2l0YSwgdW5vIHBlciBvZ25pIHJlY2lwaWVudCByZWdpc3RyYXRvc2kgZGFsbCdlbnRyeXBvaW50ICoqcmVnaXN0ZXIqKiAqL1xyXG4gICAgcHVibGljIG91dGJvdW5kczogeyBbaWQ6IHN0cmluZ106IFN1YmplY3Q8SW50ZXJDb21NZXNzYWdlPiB9ID0ge307XHJcbiAgICAvKiogTWVzc2FnZ2kgaW4gZW50cmF0YSwgdW5pY28gcGVyIGFwcGxpY2F6aW9uZSBwcmluY2lwYWxlICovXHJcbiAgICBwdWJsaWMgaW5ib3VuZHM6IFN1YmplY3Q8SW50ZXJDb21NZXNzYWdlPiA9IG5ldyBTdWJqZWN0PEludGVyQ29tTWVzc2FnZT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgcGVybWV0dGUgZGkgaW52aWFyZSB1biBtZXNzYWdnaW8gZGFsbCdhcHBsaWNhemlvbmUgYWQgdW4gbW9kdWxvIGVzdGVybm8gbyB2aWNldmVyc2FcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IG1lc3NhZ2VUeXBlIFRpcG9sb2dpYSBkaSBtZXNzYWdnaW8uIFNhcsOgIGRpIHRpcG8gKipJbmJvdW5kTWVzc2FnZVR5cGVzKiogcGVyIHR1dHRpIGkgbWVzc2FnZ2kgaW5ib3VuZCwgZGluYW1pY28gcGVyIHR1dHRpIGkgbWVzYWdnaSBvdXRib3VuZCAoaWwgdGlwbyBkaXBlbmRlcsOgIGRhZ2xpIGVudW0gZGVpIG1lc3NhZ2dpIGRlaSBtb2R1bGkgZXN0ZXJuaSlcclxuICAgICAqIEBwYXJhbSB7YW55fSBtZXNzYWdlIE1lc3NhZ2dpbyBkYSBpbnZpYXJlIGNoZSBwdcOyIGVzc2VyZSB1biBkdG8gaW4gY2FzaSBjb21wbGVzc2kgbWEgZG92csOgIGVzc2VyZSBnZXN0aXRvIGEgZG92ZXJlIGxhdG8gaW1wbGVtZW50YXRpdm9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWNpcGllbnQgRGVzdGluYXRhcmlvIGRlbCBtZXNzYWdnaW8uIFBlciBpIG1lc3NhZ2dpIGluYm91bmQgZGV2J2Vzc2VyZSBsYXNjaWF0byB2dW90bywgcGVyIGkgbWVzc2FnZ2kgb3V0Ym91bmQgc2Fyw6AgdmFsb3JpenphdG8gYWxsYSBjaGlhdmUgZGVsIG1vZHVsbyBhIGN1aSBzaSB2dW9sZSBpbnZpYXJlIGlsIG1lc3NhZ2dpb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VuZChtZXNzYWdlVHlwZTogYW55LCBtZXNzYWdlOiBhbnksIHJlY2lwaWVudD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGxldCBtc2cgPSBuZXcgSW50ZXJDb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTtcclxuXHJcbiAgICAgICAgLy8gU2Ugbm9uIGMnw6ggdW4gcmVjaXBpZW50IHNpZ25pZmljYSBjaGUgw6ggdW4gbW9kdWxvIGVzdGVybm8gY2hlIGludmlhIG1lc3NhZ2dpIGFsIG1vZHVsbyBtYWluIChxdWluZGkgbWVzc2FnZ2lvIGluIGVudHJhdGEgLSBpbmJvdW5kKVxyXG4gICAgICAgIC8vIEFsdHJpbWVudGkgc2lnbmlmaWNhIGNoZSDDqCBpbCBtb2R1bG8gbWFpbiBhZCBpbnZpYXJlIG1lc3NhZ2dpIGFpIG1vZHVsaSBlc3Rlcm5pIChtZXNzYWdnaW8gaW4gdXNjaXRhIC0gb3V0Ym91bmQpXHJcbiAgICAgICAgaWYgKCFyZWNpcGllbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbmJvdW5kcy5uZXh0KG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMub3V0Ym91bmRzW3JlY2lwaWVudF0pXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJAZXNmYWVuemEvZXh0ZW5zaW9ucyAtIEludGVyQ29tU2VydmljZTogSW1wb3NzaWJpbGUgaW52aWFyZSBpbCBtZXNzYWdnaW8gYWwgcmVjaXBpZW50IFwiICsgcmVjaXBpZW50ICsgXCIgYXNzaWN1cmFyc2kgY2hlIGlsIG1vZHVsbyBzaWEgY2FyaWNhdG8gZSBjaGUgZWZmZXR0dWkgbGEgY2hpYW1hdGEgYWwgbWV0b2RvICdyZWdpc3N0ZXInXCIpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLm91dGJvdW5kc1tyZWNpcGllbnRdLm5leHQobXNnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHJlZ2lzdHJhcmUgdW4gbW9kdWxvIGVzdGVybm8gYWxsYSBsaXN0YSBkZWkgbW9kdWxpIGluIGxpc3RlbmluZyBzdWxsYSBjb2RhIGRpIG1lc3NhZ2dpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRlbCBtb2R1bG8gZGEgcmVnaXN0cmFyZS4gVHV0dGkgaSBtZXNzYWdnaSBpbmJvdW5kIHNhcmFubm8gaW52aWF0aSBkYWxsJ2FwcGxpY2F6aW9uZSBwcmluY2lwYWxlIHN1IHF1ZXN0YSBjaGlhdmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3V0Ym91bmRzW2tleV0pXHJcbiAgICAgICAgICAgIHRocm93IFwiQGVzZmFlbnphL2V4dGVuc2lvbnMgLSBJbnRlckNvbVNlcnZpY2U6IEltcG9zc2liaWxlIHJlZ2lzdHJhcmUgcGnDuSB2b2x0ZSBsbyBzdGVzc28gbW9kdWxvXCI7XHJcbiAgICAgICAgdGhpcy5vdXRib3VuZHNba2V5XSA9IG5ldyBTdWJqZWN0PEludGVyQ29tTWVzc2FnZT4oKTtcclxuICAgIH1cclxufSJdfQ==
|