general-library-union 3.2.16 → 3.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
1
|
+
import { HostListener, Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "ngx-cookie-service";
|
|
5
5
|
export class UtilsService {
|
|
6
6
|
cookieService;
|
|
7
7
|
document;
|
|
8
|
+
lastClickPosition = { x: 0, y: 0 };
|
|
9
|
+
onDocumentClick(event) {
|
|
10
|
+
this.lastClickPosition = {
|
|
11
|
+
x: event.clientX,
|
|
12
|
+
y: event.clientY
|
|
13
|
+
};
|
|
14
|
+
console.log(this.lastClickPosition);
|
|
15
|
+
}
|
|
8
16
|
RESERVADAS_SQL_NOPUEDECONTENER = [';'];
|
|
9
17
|
reservadas = ['ALTER', 'DELETE', 'DROP', 'MODIFY', 'CREATE', 'DATABASE', 'TABLE', 'UPDATE', 'TRIGGER', 'GRANT', 'REVOKE', 'CALL', 'INSERT', 'TRUNCATE', 'USE', '--'];
|
|
10
18
|
constructor(cookieService, document) {
|
|
@@ -301,16 +309,18 @@ export class UtilsService {
|
|
|
301
309
|
let linkTema = this.document.getElementById('temaApp');
|
|
302
310
|
linkTema.href = `${tema}.css`;
|
|
303
311
|
}
|
|
304
|
-
calcularPosicionDialog(
|
|
305
|
-
|
|
312
|
+
calcularPosicionDialog() {
|
|
313
|
+
console.log('lastClickPosition');
|
|
314
|
+
console.log(this.lastClickPosition);
|
|
315
|
+
if (!this.lastClickPosition) {
|
|
306
316
|
return;
|
|
307
317
|
}
|
|
308
|
-
const elemento = event.target;
|
|
309
|
-
const elementoCoordenada = elemento.getBoundingClientRect();
|
|
318
|
+
//const elemento = event.target as HTMLElement;
|
|
319
|
+
//const elementoCoordenada = elemento.getBoundingClientRect();
|
|
310
320
|
const iframe = window.frameElement.getBoundingClientRect();
|
|
311
321
|
const iframeOffsetTop = iframe ? iframe.top : 0;
|
|
312
322
|
const dialog = document.querySelector('.p-dialog');
|
|
313
|
-
const topPosition =
|
|
323
|
+
const topPosition = this.lastClickPosition.y - iframeOffsetTop + 5;
|
|
314
324
|
if (dialog) {
|
|
315
325
|
dialog.style.top = `${topPosition}px`;
|
|
316
326
|
}
|
|
@@ -333,5 +343,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
333
343
|
}], ctorParameters: () => [{ type: i1.CookieService }, { type: Document, decorators: [{
|
|
334
344
|
type: Inject,
|
|
335
345
|
args: [DOCUMENT]
|
|
336
|
-
}] }]
|
|
337
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUszQyxNQUFNLE9BQU8sWUFBWTtJQUtIO0lBQXdEO0lBSHBFLDhCQUE4QixHQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0MsVUFBVSxHQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFbkwsWUFBb0IsYUFBNEIsRUFBNEIsUUFBa0I7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUM5RixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxVQUFVLEdBQUcsZ0VBQWdFLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxP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V1UsWUFBWSwrQ0FLbUMsUUFBUTsyR0FMdkQsWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNb0QsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcblxuICBwcml2YXRlIFJFU0VSVkFEQVNfU1FMX05PUFVFREVDT05URU5FUjogYW55W10gPSBbJzsnXVxuICBwcml2YXRlIHJlc2VydmFkYXM6IGFueVtdID0gWydBTFRFUicsICdERUxFVEUnLCAnRFJPUCcsICdNT0RJRlknLCAnQ1JFQVRFJywgJ0RBVEFCQVNFJywgJ1RBQkxFJywgJ1VQREFURScsICdUUklHR0VSJywgJ0dSQU5UJywgJ1JFVk9LRScsICdDQUxMJywgJ0lOU0VSVCcsICdUUlVOQ0FURScsICdVU0UnLCAnLS0nXVxuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwpe1xuICB9XG4gIFxuICBwdWJsaWMgZ2VuZXJhckxsYXZlKCkge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gMzI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzTGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cblxuXG4gIHB1YmxpYyBnZW5lcmFyUGluKGNhbnRpZGFkOiBudW1iZXIpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgY29uc3QgY2hhcmFjdGVycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYW50aWRhZDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2FudGlkYWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICByaWdodHBhZChzdHIsIGxlbmd0aCwgY2hhcikge1xuICAgIGlmIChzdHIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTG9zIGFyZ3VtZW50b3MgZGViZW4gc2VyIHVuYSBjYWRlbmEgeSB1biBuw7ptZXJvLicpO1xuICAgIH1cblxuICAgIGlmIChzdHIubGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBjaGFyID0gY2hhciB8fCAnICc7IC8vIFV0aWxpemEgdW4gZXNwYWNpbyBjb21vIGNhcsOhY3RlciBkZSByZWxsZW5vIHNpIG5vIHNlIHByb3BvcmNpb25hIHVub1xuXG4gICAgdmFyIHBhZExlbmd0aCA9IGxlbmd0aCAtIHN0ci5sZW5ndGg7XG4gICAgdmFyIHBhZGRpbmcgPSBjaGFyLnJlcGVhdChwYWRMZW5ndGgpO1xuXG4gICAgcmV0dXJuIHN0ciArIHBhZGRpbmc7XG4gIH1cblxuICB2YWxpZGFyQ2FtcG9OdW1lcmljbyhldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgcmVnZXggPSAvW14wLTldL2dpO1xuICAgIGlucHV0LnZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZShyZWdleCwgJycpO1xuICB9XG5cbiAgaXNOb3RCbGFuayhzdHI6IHN0cmluZyB8IFN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RyICE9IG51bGwgJiYgc3RyLnRyaW0oKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNCbGFuayhzdHI6IHN0cmluZyB8IFN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RyID09IG51bGwgfHwgc3RyPy50cmltKCkgPT09ICcnO1xuICB9XG5cbiAgdmFsaWRhckNhbXBvT2JsaWdhdG9yaW8odmFsb3IpOiBib29sZWFuIHtcbiAgICAvLyBWZXJpZmljYXIgc2kgZWwgdmFsb3Igbm8gZXMgbnVsbCBuaSB1bmRlZmluZWRcbiAgICBpZiAodmFsb3IgIT09IG51bGwgJiYgdmFsb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIHZhbG9yIG5vIGVzIHVuYSBjYWRlbmEgdmFjw61hIChlbiBjYXNvIGRlIHNlciB1bmEgY2FkZW5hKVxuICAgICAgaWYgKHR5cGVvZiB2YWxvciA9PT0gJ3N0cmluZycgJiYgdmFsb3IudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgdmFsb3Igbm8gZXMgdW4gYXJyZWdsbyB2YWPDrW8gKGVuIGNhc28gZGUgc2VyIHVuIGFycmVnbG8pXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxvcikgJiYgdmFsb3IubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8qaWYgKHR5cGVvZiB2YWxvciA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsb3IpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9Ki9cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjYXBpdGFsaXplRnVsbHkoaW5wdXRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCB3b3JkcyA9IGlucHV0U3RyaW5nLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgY2FwaXRhbGl6ZWRXb3JkcyA9IHdvcmRzLm1hcCh3b3JkID0+IHtcbiAgICAgIGlmICh3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gY2FwaXRhbGl6ZWRXb3Jkcy5qb2luKCcgJyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9yZGVuYXJTZWxlY3RJdGVtc0FsZmFiZXRpY2FtZW50ZShhcnJheURlT2JqZXRvczogYW55W10pOiBhbnlbXSB7XG4gICAgYXJyYXlEZU9iamV0b3Muc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3Qgbm9tYnJlQSA9IGEubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IG5vbWJyZUIgPSBiLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGlmIChub21icmVBIDwgbm9tYnJlQikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICBpZiAobm9tYnJlQSA+IG5vbWJyZUIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gYXJyYXlEZU9iamV0b3M7XG4gIH1cblxuICBvYnRlbmVyUGFyYW1ldHJvRGVVUkwodXJsU3RyaW5nOiBzdHJpbmcsIHBhcmFtZXRybzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh1cmxTdHJpbmcpO1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJsLnNlYXJjaCk7XG4gICAgcmV0dXJuIHNlYXJjaFBhcmFtcy5nZXQocGFyYW1ldHJvKTtcbiAgfVxuXG4gIHZhbGlkYXJFbWFpbChlbWFpbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGF0cm9uRW1haWwgPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XG4gICAgcmV0dXJuIHBhdHJvbkVtYWlsLnRlc3QoZW1haWwpO1xuICB9XG5cbiAgb2J0ZW5lckJhc2UoKTogKHN0cmluZyB8IG51bGwpIHtcblxuICAgIHZhciBiYXNlUG9ydGFsOiBzdHJpbmcgPSBudWxsO1xuICAgIHZhciBwYWdpbmFBY3R1YWw6IGFueSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgdmFyIHVybCA9IG5ldyBVUkwocGFnaW5hQWN0dWFsKTtcbiAgICB2YXIgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmwuc2VhcmNoKTtcbiAgICBpZiAocGFnaW5hQWN0dWFsLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1BvcnRhbFNhcmEnKSkge1xuICAgICAgZm9yICh2YXIgbWF0Y2ggb2YgcGFnaW5hQWN0dWFsLm1hdGNoQWxsKC8oPzxpbmljaW8+LiopXFwvKD88c2VndXJpZGFkPi4qKVxcLyg/PHNpdGlvPi4qKVxcLyg/PHBhZ2luYT4uKikvZykpIHtcbiAgICAgICAgYmFzZVBvcnRhbCA9IG1hdGNoLmdyb3Vwcz8uc2VndXJpZGFkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGFyYW1zPy5nZXQoJ3VzX2lkJykpIHtcbiAgICAgIHBhZ2luYUFjdHVhbCA9IHdpbmRvdy5wYXJlbnQubG9jYXRpb24uaHJlZjtcbiAgICAgIGZvciAodmFyIG1hdGNoIG9mIHBhZ2luYUFjdHVhbC5tYXRjaEFsbCgvKD88aW5pY2lvPi4qKVxcLyg/PHNlZ3VyaWRhZD4uKilcXC8oPzxzaXRpbz4uKilcXC8oPzxwYWdpbmE+LiopL2cpKSB7XG4gICAgICAgIGJhc2VQb3J0YWwgPSBtYXRjaC5ncm91cHM/LnNlZ3VyaWRhZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVnZXggPSAvXi4qP1xcL1xcLy4qP1xcLyguKj8pXFwvL2c7IC8vIEV4cHJlc2nDs24gcmVndWxhciBwYXJhIG9idGVuZXIgbGEgcHJpbWVyYSBwYXJ0ZSBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IG1hdGNoID0gQXJyYXkuZnJvbShwYWdpbmFBY3R1YWwubWF0Y2hBbGwocmVnZXgpKTtcblxuICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzBdICYmIG1hdGNoWzBdWzFdKSB7XG4gICAgICAgIGJhc2VQb3J0YWwgPSBtYXRjaFswXVsxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhc2VQb3J0YWw7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXJFc3BhY2lvKGNhcmFjdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWdleCA9IC9cXHMvOyAvLyBMYSBleHByZXNpw7NuIHJlZ3VsYXIgcGFyYSBlc3BhY2lvcyBlbiBibGFuY29cbiAgICByZXR1cm4gcmVnZXgudGVzdChjYXJhY3Rlcik7IC8vIERldnVlbHZlIHRydWUgc2kgZWwgY2Fyw6FjdGVyIGVzIHVuIGVzcGFjaW8gZW4gYmxhbmNvXG4gIH1cblxuICBwdWJsaWMgdmFsaWRhclRleHRvU1FMKHZhbG9yOiBzdHJpbmcsIG9ibGlnYXRvcmlvOiBib29sZWFuLCBzZWxlY3Q6IGJvb2xlYW4sIGxvbmdpdHVkOiBudW1iZXIsIHZhbGlkYXJTZW50ZW5jaWE6IGJvb2xlYW4pOiAoc3RyaW5nIHwgbnVsbCkge1xuICAgIC8vIFZlcmlmaWNhIG9ibGlnYXRvcmllZGFkXG4gICAgaWYgKG9ibGlnYXRvcmlvICYmICh2YWxvciA9PSBudWxsIHx8IHZhbG9yLnRyaW0oKS5sZW5ndGggPT0gMCB8fCB2YWxvciA9PSAnLS0nKSkge1xuICAgICAgcmV0dXJuICdPYmxpZ2F0b3Jpbyc7XG4gICAgfVxuICAgIC8vIFZlcmlmaWNhIGxvbmdpdHVkIG3DoXhpbWFcbiAgICBpZiAobG9uZ2l0dWQgPiAwKSB7XG4gICAgICBpZiAodmFsb3IgIT0gbnVsbCAmJiB2YWxvciAhPSAnLS0nICYmIHZhbG9yLmxlbmd0aCA+IGxvbmdpdHVkKSB7XG4gICAgICAgIHJldHVybiAnTG9uZ2l0dWQgbWF4aW1hIGRlICcgKyBsb25naXR1ZDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVhbGl6YSBsYXMgZGVtw6FzIHZhbGlkYWNpb24gc29sbyBlbiBlbCBjYXNvIGRlIHF1ZSBsYSBjYWRlbmEgU1FML3ZhbG9yIG5vIHNlYSB2YWNpYVxuICAgIGlmICh2YWxvciA9PSBudWxsIHx8IHZhbG9yLnRyaW0oKS5sZW5ndGggPT0gMCB8fCB2YWxvciA9PSAnLS0nKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAodmFsaWRhclNlbnRlbmNpYSkge1xuICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICBpZiAoIXZhbG9yLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnU0VMRUNUJykpIHtcbiAgICAgICAgICByZXR1cm4gJ0VsIHRleHRvIGRlYmUgaW5pY2lhciBjb24gbGEgcGFsYWJyYSBTZWxlY3QnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsb3IudG9VcHBlckNhc2UoKS5pbmNsdWRlcygnU0VMRUNUJykpIHtcbiAgICAgICAgICByZXR1cm4gJ05vIHB1ZWRlIGNvbnRlbmVyIGxhIHBhbGFicmEgU2VsZWN0JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW5kaWNlOiBudW1iZXI7XG4gICAgdmFyIG1lbnNhamU6IHN0cmluZztcbiAgICB0aGlzLlJFU0VSVkFEQVNfU1FMX05PUFVFREVDT05URU5FUi5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHZhbG9yLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgICAgIG1lbnNhamUgPSAnTm8gcHVlZGUgY29udGVuZXIgJyArIGl0ZW07XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLnJlc2VydmFkYXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICh2YWxvci50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGl0ZW0udG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgaW5kaWNlID0gKHZhbG9yLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihpdGVtLnRvVXBwZXJDYXNlKCkpKTtcbiAgICAgICAgaWYgKGluZGljZSA9PSAwIHx8ICh0aGlzLnZhbGlkYXJFc3BhY2lvKHZhbG9yLmNoYXJBdChpbmRpY2UgLSAxKSkgJiYgdGhpcy52YWxpZGFyRXNwYWNpbyh2YWxvci5jaGFyQXQoaXRlbS5sZW5ndGggKyBpbmRpY2UpKSkpIHtcbiAgICAgICAgICBtZW5zYWplID0gJ05vIHB1ZWRlIGNvbnRlbmVyICcgKyBpdGVtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbWVuc2FqZTtcbiAgfVxuXG4gIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIHZhbGlkYXJUZXh0b0FyY2hpdm9KYXNwZXIodGV4dG86IHN0cmluZyk6IChzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKHRleHRvLnRyaW0oKSA9PSAnJyB8fCB0ZXh0byA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBlc3RhciB2YWNpb1wiO1xuICAgIH1cbiAgICBpZiAodGV4dG8ubWF0Y2goXCJeW15cXFxcRF0uKlwiKSkge1xuICAgICAgcmV0dXJuIFwiRWwgY2FtcG8gbm8gcHVlZGUgaW5pY2lhciBjb24gbnVtZXJvc1wiO1xuICAgIH1cbiAgICBpZiAodGV4dG8ubWF0Y2goXCJeW15cXFxcU10uKlwiKSkge1xuICAgICAgcmV0dXJuIFwiRWwgY2FtcG8gbm8gcHVlZGUgaW5pY2lhciBjb24gY2FyYWN0ZXJlcyBlbiBibGFuY29cIjtcbiAgICB9XG4gICAgaWYgKCF0ZXh0by5tYXRjaChcIl5bXlxcXFxXXS4qXCIpKSB7XG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBpbmljaWFyIGNvbiBjYXJhY3RlcmVzIGVzcGVjaWFsZXNcIjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXNpemVXaW5kb3dJRnJhbWUoKSB7XG5cdFx0aWYgKCB3aW5kb3cuZnJhbWVFbGVtZW50ICE9IG51bGwpIHtcblx0XHRcdHRoaXMucmVzaXplSWZyYW1lS2VlcFBvc2l0aW9uKHdpbmRvdy5mcmFtZUVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEZ1bmNpb24gcGFyYSBtYW50ZW5lciBsYSBwb3NpY2nDs24gYWN0dWFsIGVuIGVsIGlmcmFtZS5cblx0ICogQHBhcmFtIG9iaiBlcyB1biBcIkZyYW1lRWxlbWVudFwiXG5cdCAqL1xuXHRwcml2YXRlIHJlc2l6ZUlmcmFtZUtlZXBQb3NpdGlvbihvYmopIHtcblx0XHRcblx0XHR2YXIgaWZybSA9IG9iajtcblx0XHR2YXIgZG9jID0gaWZybS5jb250ZW50RG9jdW1lbnQgPyBpZnJtLmNvbnRlbnREb2N1bWVudDogaWZybS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICAgIHZhciB0YW1hbmlvOiBudW1iZXI9ICB0aGlzLmdldERvY0hlaWdodCggZG9jICkgICsgNDBcblx0XHRpZnJtLnN0eWxlLmhlaWdodCA9IHRhbWFuaW8gKyBcInB4XCI7XG5cdH1cblxuXHRwcml2YXRlIGdldERvY0hlaWdodChkb2Mpe1xuICAgIGNvbnNvbGUubG9nKCdnZXREb2NIZWlnaHQnKVxuXHRcdGxldCBuYXZlZ2Fkb3IgPSB0aGlzLm9idGVuZXJOYXZlZ2Fkb3IoKS50b0xvd2VyQ2FzZSgpO1xuXHRcdHZhciBoZWlnaHQgPSAwO1xuXHRcdGRvYyA9IGRvYyB8fCBkb2N1bWVudDtcbiAgICBjb25zdCBhcHBSb290ID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ2FwcC1yb290Jyk7XG5cbiAgICBjb25zdCBzd2FsUG9wdXAgPSBkb2MucXVlcnlTZWxlY3RvcignLnN3YWwyLXBvcHVwJyk7XG4gICAgaWYgKHN3YWxQb3B1cCkge1xuICAgICAgICByZXR1cm4gc3dhbFBvcHVwLm9mZnNldEhlaWdodCArIDQwO1xuICAgIH1cblxuICAgIC8vIFNpIGVuY3VlbnRyYSBlbCBlbGVtZW50byA8YXBwLXJvb3Q+LCByZXRvcm5hIHN1IGFsdHVyYVxuICAgIGlmIChhcHBSb290KSB7XG4gICAgICAgIHJldHVybiBhcHBSb290Lm9mZnNldEhlaWdodDtcbiAgICB9XG5cdFx0Ly92YXIgYm9keSA9IGRvYy5ib2R5LCBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblx0XHQvL2hlaWdodCA9IE1hdGgubWF4KCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5vZmZzZXRIZWlnaHQsIFxuXHRcdC8vaHRtbC5jbGllbnRIZWlnaHQsIGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLm9mZnNldEhlaWdodCApO1xuXHRcdFxuXHRcdGlmIChuYXZlZ2Fkb3IuaW5kZXhPZignZmlyZWZveCcpICE9PSAtMSl7XG5cdFx0XHRpZihkb2MuZm9ybURldGFsbGVDb252b2NhdG9yaWEpe1xuXHRcdFx0XHRsZXQgY2FudGlkYWRNaWxlcyA9IGhlaWdodCAvIDEwMDA7XG5cdFx0XHRcdGhlaWdodCA9IGhlaWdodCArIDYwMCArIChjYW50aWRhZE1pbGVzKjQwKVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0Ly9cdGNvbnNvbGUud2FybignRkNPIDogbGxhbWEgYSBnZXREb2NIZWlnaHQnKTtcblx0XG5cdFx0cmV0dXJuIGhlaWdodDtcblx0fVxuXG5cdG9idGVuZXJOYXZlZ2Fkb3IoKXtcblx0XHR2YXIgdWE9IG5hdmlnYXRvci51c2VyQWdlbnQsIHRlbSwgXG5cdFx0TT0gdWEubWF0Y2goLyhvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZXx0cmlkZW50KD89XFwvKSlcXC8/XFxzKihcXGQrKS9pKSB8fCBbXTtcblx0XHRpZigvdHJpZGVudC9pLnRlc3QoTVsxXSkpe1xuXHRcdFx0dGVtPSAgL1xcYnJ2WyA6XSsoXFxkKykvZy5leGVjKHVhKSB8fCBbXTtcblx0XHRcdHJldHVybiAnSUUgJysodGVtWzFdIHx8ICcnKTtcblx0XHR9XG5cdFx0aWYoTVsxXT09PSAnQ2hyb21lJyl7XG5cdFx0XHR0ZW09IHVhLm1hdGNoKC9cXGIoT1BSfEVkZ2UpXFwvKFxcZCspLyk7XG5cdFx0XHRpZih0ZW0hPSBudWxsKSByZXR1cm4gdGVtLnNsaWNlKDEpLmpvaW4oJyAnKS5yZXBsYWNlKCdPUFInLCAnT3BlcmEnKTtcblx0XHR9XG5cdFx0TT0gTVsyXT8gW01bMV0sIE1bMl1dOiBbbmF2aWdhdG9yLmFwcE5hbWUsIG5hdmlnYXRvci5hcHBWZXJzaW9uLCAnLT8nXTtcblx0XHRpZigodGVtPSB1YS5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKSkhPSBudWxsKSBNLnNwbGljZSgxLCAxLCB0ZW1bMV0pO1xuXHRcdHJldHVybiBNLmpvaW4oJyAnKTtcblx0fVxuXG4gIG9idGVuZXJVcmxBcGkodXJsYXBpPzogc3RyaW5nICk6IHN0cmluZyB7XG4gICAgaWYgKHVybGFwaSl7XG4gICAgICByZXR1cm4gdXJsYXBpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRoaXMuZ2V0VG9rZW5LZXkoJ2FwbGljYWNpb24nKSkge1xuICAgICAgY2FzZSAnMSc6XG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICAgIGNhc2UgJzEzJzpcbiAgICAgICAgcmV0dXJuIHdpbmRvd1snZW52J11bJ3VybGFwaW1hbmEnXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaW1hbmEnXSA6IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgICAgY2FzZSAnMTAnOlxuICAgICAgICByZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpc2FyYSddID8gd2luZG93WydlbnYnXVsndXJsYXBpc2FyYSddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgICAgIC8vcmV0dXJuIHdpbmRvd1snZW52J11bJ3VybGFwaSddID8gd2luZG93WydlbnYnXVsndXJsYXBpJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICAgIGNhc2UgJzc3JzpcbiAgICAgICAgcmV0dXJuIHdpbmRvd1snZW52J11bJ3VybGFwaW1hbmFhcHMnXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaW1hbmFhcHMnXSA6IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuX2RlY29kZVRva2VuKCk7XG4gICAgICByZXR1cm4gZGF0YVtrZXldLnRvU3RyaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVjb2RlVG9rZW4oKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEl0ZW0oJ3Rva2VuJywgJycpO1xuICAgICAgY29uc3QgZGF0YSA9IHRva2VuLnNwbGl0KCcuJylbMV07XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKGRhdGEpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5vYnRlbmVyQmFzZSgpICsgJ18nICsgIGtleSkgPz8gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgY2FtYmlhclRlbWEodGVtYSA6ICgndGVtYUNsYXJvJyB8ICd0ZW1hT3NjdXJvJykpe1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMub2J0ZW5lckJhc2UoKSArICdfJyArJ3RlbWEnLCB0ZW1hKTtcbiAgICBsZXQgbGlua1RlbWEgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZW1hQXBwJykgYXMgSFRNTExpbmtFbGVtZW50O1xuICAgIGxpbmtUZW1hLmhyZWYgPSBgJHt0ZW1hfS5jc3NgXG4gIH1cblxuICBjYWxjdWxhclBvc2ljaW9uRGlhbG9nKGV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50byA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBlbGVtZW50b0Nvb3JkZW5hZGEgPSBlbGVtZW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGlmcmFtZSA9ICB3aW5kb3cuZnJhbWVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGlmcmFtZU9mZnNldFRvcCA9IGlmcmFtZSA/IGlmcmFtZS50b3AgOiAwO1xuXG4gICAgY29uc3QgZGlhbG9nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnAtZGlhbG9nJykgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCB0b3BQb3NpdGlvbiA9IGVsZW1lbnRvQ29vcmRlbmFkYS50b3AgLSBpZnJhbWVPZmZzZXRUb3AgKyBlbGVtZW50b0Nvb3JkZW5hZGEuaGVpZ2h0O1xuXG4gICAgaWYgKGRpYWxvZykge1xuICAgICAgZGlhbG9nLnN0eWxlLnRvcCA9IGAke3RvcFBvc2l0aW9ufXB4YDtcbiAgICB9XG4gIH1cbiAgXG4gIHZhbGlkYXJQYWxhYnJhKHRleHRvOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwbGV0cmFzID0gL15bYS16QS1aXVswLTlhLXpBLVpdKiQvO1xuICAgIHJldHVybiBwbGV0cmFzLnRlc3QodGV4dG8pO1xuICB9XG5cbiAgaXNOdW1lcmljKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKE51bWJlcih2YWx1ZSkpO1xuICB9XG4gIFxufSJdfQ==
|
|
346
|
+
}] }], propDecorators: { onDocumentClick: [{
|
|
347
|
+
type: HostListener,
|
|
348
|
+
args: ['document:click', ['$event']]
|
|
349
|
+
}] } });
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLFlBQVk7SUFnQkg7SUFBd0Q7SUFkcEUsaUJBQWlCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUczQyxlQUFlLENBQUMsS0FBaUI7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUNoQixDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDakIsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVPLDhCQUE4QixHQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0MsVUFBVSxHQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFbkwsWUFBb0IsYUFBNEIsRUFBNEIsUUFBa0I7UUFBMUUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUM5RixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7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QUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFdBQVcsSUFBSSxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUM7UUFDekMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7dUdBdFhVLFlBQVksK0NBZ0JtQyxRQUFROzJHQWhCdkQsWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQm9ELE1BQU07MkJBQUMsUUFBUTt5Q0FYbEUsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsc1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgbGFzdENsaWNrUG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubGFzdENsaWNrUG9zaXRpb24gPSB7XG4gICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgIH07XG4gICAgY29uc29sZS5sb2codGhpcy5sYXN0Q2xpY2tQb3NpdGlvbilcbiAgfVxuXG4gIHByaXZhdGUgUkVTRVJWQURBU19TUUxfTk9QVUVERUNPTlRFTkVSOiBhbnlbXSA9IFsnOyddXG4gIHByaXZhdGUgcmVzZXJ2YWRhczogYW55W10gPSBbJ0FMVEVSJywgJ0RFTEVURScsICdEUk9QJywgJ01PRElGWScsICdDUkVBVEUnLCAnREFUQUJBU0UnLCAnVEFCTEUnLCAnVVBEQVRFJywgJ1RSSUdHRVInLCAnR1JBTlQnLCAnUkVWT0tFJywgJ0NBTEwnLCAnSU5TRVJUJywgJ1RSVU5DQVRFJywgJ1VTRScsICctLSddXG4gIFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCl7XG4gIH1cbiAgXG4gIHB1YmxpYyBnZW5lcmFyTGxhdmUoKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSAzMjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXJhY3RlcnNMZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuXG5cbiAgcHVibGljIGdlbmVyYXJQaW4oY2FudGlkYWQ6IG51bWJlcikge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbnRpZGFkOyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjYW50aWRhZCkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHJpZ2h0cGFkKHN0ciwgbGVuZ3RoLCBjaGFyKSB7XG4gICAgaWYgKHN0ciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBsZW5ndGggIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMb3MgYXJndW1lbnRvcyBkZWJlbiBzZXIgdW5hIGNhZGVuYSB5IHVuIG7Dum1lcm8uJyk7XG4gICAgfVxuXG4gICAgaWYgKHN0ci5sZW5ndGggPj0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIGNoYXIgPSBjaGFyIHx8ICcgJzsgLy8gVXRpbGl6YSB1biBlc3BhY2lvIGNvbW8gY2Fyw6FjdGVyIGRlIHJlbGxlbm8gc2kgbm8gc2UgcHJvcG9yY2lvbmEgdW5vXG5cbiAgICB2YXIgcGFkTGVuZ3RoID0gbGVuZ3RoIC0gc3RyLmxlbmd0aDtcbiAgICB2YXIgcGFkZGluZyA9IGNoYXIucmVwZWF0KHBhZExlbmd0aCk7XG5cbiAgICByZXR1cm4gc3RyICsgcGFkZGluZztcbiAgfVxuXG4gIHZhbGlkYXJDYW1wb051bWVyaWNvKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCByZWdleCA9IC9bXjAtOV0vZ2k7XG4gICAgaW5wdXQudmFsdWUgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKHJlZ2V4LCAnJyk7XG4gIH1cblxuICBpc05vdEJsYW5rKHN0cjogc3RyaW5nIHwgU3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdHIgIT0gbnVsbCAmJiBzdHIudHJpbSgpLmxlbmd0aCA+IDA7XG4gIH1cblxuICBpc0JsYW5rKHN0cjogc3RyaW5nIHwgU3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdHIgPT0gbnVsbCB8fCBzdHI/LnRyaW0oKSA9PT0gJyc7XG4gIH1cblxuICB2YWxpZGFyQ2FtcG9PYmxpZ2F0b3Jpbyh2YWxvcik6IGJvb2xlYW4ge1xuICAgIC8vIFZlcmlmaWNhciBzaSBlbCB2YWxvciBubyBlcyBudWxsIG5pIHVuZGVmaW5lZFxuICAgIGlmICh2YWxvciAhPT0gbnVsbCAmJiB2YWxvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBWZXJpZmljYXIgc2kgZWwgdmFsb3Igbm8gZXMgdW5hIGNhZGVuYSB2YWPDrWEgKGVuIGNhc28gZGUgc2VyIHVuYSBjYWRlbmEpXG4gICAgICBpZiAodHlwZW9mIHZhbG9yID09PSAnc3RyaW5nJyAmJiB2YWxvci50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCB2YWxvciBubyBlcyB1biBhcnJlZ2xvIHZhY8OtbyAoZW4gY2FzbyBkZSBzZXIgdW4gYXJyZWdsbylcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbG9yKSAmJiB2YWxvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyppZiAodHlwZW9mIHZhbG9yID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWxvcikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0qL1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNhcGl0YWxpemVGdWxseShpbnB1dFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWlucHV0U3RyaW5nKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHdvcmRzID0gaW5wdXRTdHJpbmcuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBjYXBpdGFsaXplZFdvcmRzID0gd29yZHMubWFwKHdvcmQgPT4ge1xuICAgICAgaWYgKHdvcmQubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBjYXBpdGFsaXplZFdvcmRzLmpvaW4oJyAnKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb3JkZW5hclNlbGVjdEl0ZW1zQWxmYWJldGljYW1lbnRlKGFycmF5RGVPYmpldG9zOiBhbnlbXSk6IGFueVtdIHtcbiAgICBhcnJheURlT2JqZXRvcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBub21icmVBID0gYS5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3Qgbm9tYnJlQiA9IGIubGFiZWwudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKG5vbWJyZUEgPCBub21icmVCKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIGlmIChub21icmVBID4gbm9tYnJlQikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICAgIHJldHVybiBhcnJheURlT2JqZXRvcztcbiAgfVxuXG4gIG9idGVuZXJQYXJhbWV0cm9EZVVSTCh1cmxTdHJpbmc6IHN0cmluZywgcGFyYW1ldHJvOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHVybFN0cmluZyk7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmwuc2VhcmNoKTtcbiAgICByZXR1cm4gc2VhcmNoUGFyYW1zLmdldChwYXJhbWV0cm8pO1xuICB9XG5cbiAgdmFsaWRhckVtYWlsKGVtYWlsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXRyb25FbWFpbCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgICByZXR1cm4gcGF0cm9uRW1haWwudGVzdChlbWFpbCk7XG4gIH1cblxuICBvYnRlbmVyQmFzZSgpOiAoc3RyaW5nIHwgbnVsbCkge1xuXG4gICAgdmFyIGJhc2VQb3J0YWw6IHN0cmluZyA9IG51bGw7XG4gICAgdmFyIHBhZ2luYUFjdHVhbDogYW55ID0gd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICB2YXIgdXJsID0gbmV3IFVSTChwYWdpbmFBY3R1YWwpO1xuICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHVybC5zZWFyY2gpO1xuICAgIGlmIChwYWdpbmFBY3R1YWwudG9TdHJpbmcoKS5pbmNsdWRlcygnUG9ydGFsU2FyYScpKSB7XG4gICAgICBmb3IgKHZhciBtYXRjaCBvZiBwYWdpbmFBY3R1YWwubWF0Y2hBbGwoLyg/PGluaWNpbz4uKilcXC8oPzxzZWd1cmlkYWQ+LiopXFwvKD88c2l0aW8+LiopXFwvKD88cGFnaW5hPi4qKS9nKSkge1xuICAgICAgICBiYXNlUG9ydGFsID0gbWF0Y2guZ3JvdXBzPy5zZWd1cmlkYWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXJhbXM/LmdldCgndXNfaWQnKSkge1xuICAgICAgcGFnaW5hQWN0dWFsID0gd2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmO1xuICAgICAgZm9yICh2YXIgbWF0Y2ggb2YgcGFnaW5hQWN0dWFsLm1hdGNoQWxsKC8oPzxpbmljaW8+LiopXFwvKD88c2VndXJpZGFkPi4qKVxcLyg/PHNpdGlvPi4qKVxcLyg/PHBhZ2luYT4uKikvZykpIHtcbiAgICAgICAgYmFzZVBvcnRhbCA9IG1hdGNoLmdyb3Vwcz8uc2VndXJpZGFkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eLio/XFwvXFwvLio/XFwvKC4qPylcXC8vZzsgLy8gRXhwcmVzacOzbiByZWd1bGFyIHBhcmEgb2J0ZW5lciBsYSBwcmltZXJhIHBhcnRlIGRlIGxhIFVSTFxuICAgICAgY29uc3QgbWF0Y2ggPSBBcnJheS5mcm9tKHBhZ2luYUFjdHVhbC5tYXRjaEFsbChyZWdleCkpO1xuXG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0gJiYgbWF0Y2hbMF1bMV0pIHtcbiAgICAgICAgYmFzZVBvcnRhbCA9IG1hdGNoWzBdWzFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmFzZVBvcnRhbDtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhckVzcGFjaW8oY2FyYWN0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1xccy87IC8vIExhIGV4cHJlc2nDs24gcmVndWxhciBwYXJhIGVzcGFjaW9zIGVuIGJsYW5jb1xuICAgIHJldHVybiByZWdleC50ZXN0KGNhcmFjdGVyKTsgLy8gRGV2dWVsdmUgdHJ1ZSBzaSBlbCBjYXLDoWN0ZXIgZXMgdW4gZXNwYWNpbyBlbiBibGFuY29cbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGFyVGV4dG9TUUwodmFsb3I6IHN0cmluZywgb2JsaWdhdG9yaW86IGJvb2xlYW4sIHNlbGVjdDogYm9vbGVhbiwgbG9uZ2l0dWQ6IG51bWJlciwgdmFsaWRhclNlbnRlbmNpYTogYm9vbGVhbik6IChzdHJpbmcgfCBudWxsKSB7XG4gICAgLy8gVmVyaWZpY2Egb2JsaWdhdG9yaWVkYWRcbiAgICBpZiAob2JsaWdhdG9yaW8gJiYgKHZhbG9yID09IG51bGwgfHwgdmFsb3IudHJpbSgpLmxlbmd0aCA9PSAwIHx8IHZhbG9yID09ICctLScpKSB7XG4gICAgICByZXR1cm4gJ09ibGlnYXRvcmlvJztcbiAgICB9XG4gICAgLy8gVmVyaWZpY2EgbG9uZ2l0dWQgbcOheGltYVxuICAgIGlmIChsb25naXR1ZCA+IDApIHtcbiAgICAgIGlmICh2YWxvciAhPSBudWxsICYmIHZhbG9yICE9ICctLScgJiYgdmFsb3IubGVuZ3RoID4gbG9uZ2l0dWQpIHtcbiAgICAgICAgcmV0dXJuICdMb25naXR1ZCBtYXhpbWEgZGUgJyArIGxvbmdpdHVkO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZWFsaXphIGxhcyBkZW3DoXMgdmFsaWRhY2lvbiBzb2xvIGVuIGVsIGNhc28gZGUgcXVlIGxhIGNhZGVuYSBTUUwvdmFsb3Igbm8gc2VhIHZhY2lhXG4gICAgaWYgKHZhbG9yID09IG51bGwgfHwgdmFsb3IudHJpbSgpLmxlbmd0aCA9PSAwIHx8IHZhbG9yID09ICctLScpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGlmICh2YWxpZGFyU2VudGVuY2lhKSB7XG4gICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgIGlmICghdmFsb3IudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKCdTRUxFQ1QnKSkge1xuICAgICAgICAgIHJldHVybiAnRWwgdGV4dG8gZGViZSBpbmljaWFyIGNvbiBsYSBwYWxhYnJhIFNlbGVjdCc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWxvci50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKCdTRUxFQ1QnKSkge1xuICAgICAgICAgIHJldHVybiAnTm8gcHVlZGUgY29udGVuZXIgbGEgcGFsYWJyYSBTZWxlY3QnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpbmRpY2U6IG51bWJlcjtcbiAgICB2YXIgbWVuc2FqZTogc3RyaW5nO1xuICAgIHRoaXMuUkVTRVJWQURBU19TUUxfTk9QVUVERUNPTlRFTkVSLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodmFsb3IuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgbWVuc2FqZSA9ICdObyBwdWVkZSBjb250ZW5lciAnICsgaXRlbTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMucmVzZXJ2YWRhcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHZhbG9yLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoaXRlbS50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICBpbmRpY2UgPSAodmFsb3IudG9VcHBlckNhc2UoKS5pbmRleE9mKGl0ZW0udG9VcHBlckNhc2UoKSkpO1xuICAgICAgICBpZiAoaW5kaWNlID09IDAgfHwgKHRoaXMudmFsaWRhckVzcGFjaW8odmFsb3IuY2hhckF0KGluZGljZSAtIDEpKSAmJiB0aGlzLnZhbGlkYXJFc3BhY2lvKHZhbG9yLmNoYXJBdChpdGVtLmxlbmd0aCArIGluZGljZSkpKSkge1xuICAgICAgICAgIG1lbnNhamUgPSAnTm8gcHVlZGUgY29udGVuZXIgJyArIGl0ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBtZW5zYWplO1xuICB9XG5cbiAgc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG5cbiAgdmFsaWRhclRleHRvQXJjaGl2b0phc3Blcih0ZXh0bzogc3RyaW5nKTogKHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAodGV4dG8udHJpbSgpID09ICcnIHx8IHRleHRvID09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGVzdGFyIHZhY2lvXCI7XG4gICAgfVxuICAgIGlmICh0ZXh0by5tYXRjaChcIl5bXlxcXFxEXS4qXCIpKSB7XG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBpbmljaWFyIGNvbiBudW1lcm9zXCI7XG4gICAgfVxuICAgIGlmICh0ZXh0by5tYXRjaChcIl5bXlxcXFxTXS4qXCIpKSB7XG4gICAgICByZXR1cm4gXCJFbCBjYW1wbyBubyBwdWVkZSBpbmljaWFyIGNvbiBjYXJhY3RlcmVzIGVuIGJsYW5jb1wiO1xuICAgIH1cbiAgICBpZiAoIXRleHRvLm1hdGNoKFwiXlteXFxcXFddLipcIikpIHtcbiAgICAgIHJldHVybiBcIkVsIGNhbXBvIG5vIHB1ZWRlIGluaWNpYXIgY29uIGNhcmFjdGVyZXMgZXNwZWNpYWxlc1wiO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlc2l6ZVdpbmRvd0lGcmFtZSgpIHtcblx0XHRpZiAoIHdpbmRvdy5mcmFtZUVsZW1lbnQgIT0gbnVsbCkge1xuXHRcdFx0dGhpcy5yZXNpemVJZnJhbWVLZWVwUG9zaXRpb24od2luZG93LmZyYW1lRWxlbWVudCk7XG5cdFx0fVxuXHR9XG5cdFxuXHQvKipcblx0ICogRnVuY2lvbiBwYXJhIG1hbnRlbmVyIGxhIHBvc2ljacOzbiBhY3R1YWwgZW4gZWwgaWZyYW1lLlxuXHQgKiBAcGFyYW0gb2JqIGVzIHVuIFwiRnJhbWVFbGVtZW50XCJcblx0ICovXG5cdHByaXZhdGUgcmVzaXplSWZyYW1lS2VlcFBvc2l0aW9uKG9iaikge1xuXHRcdFxuXHRcdHZhciBpZnJtID0gb2JqO1xuXHRcdHZhciBkb2MgPSBpZnJtLmNvbnRlbnREb2N1bWVudCA/IGlmcm0uY29udGVudERvY3VtZW50OiBpZnJtLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gICAgdmFyIHRhbWFuaW86IG51bWJlcj0gIHRoaXMuZ2V0RG9jSGVpZ2h0KCBkb2MgKSAgKyA0MFxuXHRcdGlmcm0uc3R5bGUuaGVpZ2h0ID0gdGFtYW5pbyArIFwicHhcIjtcblx0fVxuXG5cdHByaXZhdGUgZ2V0RG9jSGVpZ2h0KGRvYyl7XG4gICAgY29uc29sZS5sb2coJ2dldERvY0hlaWdodCcpXG5cdFx0bGV0IG5hdmVnYWRvciA9IHRoaXMub2J0ZW5lck5hdmVnYWRvcigpLnRvTG93ZXJDYXNlKCk7XG5cdFx0dmFyIGhlaWdodCA9IDA7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuICAgIGNvbnN0IGFwcFJvb3QgPSBkb2MucXVlcnlTZWxlY3RvcignYXBwLXJvb3QnKTtcblxuICAgIGNvbnN0IHN3YWxQb3B1cCA9IGRvYy5xdWVyeVNlbGVjdG9yKCcuc3dhbDItcG9wdXAnKTtcbiAgICBpZiAoc3dhbFBvcHVwKSB7XG4gICAgICAgIHJldHVybiBzd2FsUG9wdXAub2Zmc2V0SGVpZ2h0ICsgNDA7XG4gICAgfVxuXG4gICAgLy8gU2kgZW5jdWVudHJhIGVsIGVsZW1lbnRvIDxhcHAtcm9vdD4sIHJldG9ybmEgc3UgYWx0dXJhXG4gICAgaWYgKGFwcFJvb3QpIHtcbiAgICAgICAgcmV0dXJuIGFwcFJvb3Qub2Zmc2V0SGVpZ2h0O1xuICAgIH1cblx0XHQvL3ZhciBib2R5ID0gZG9jLmJvZHksIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdC8vaGVpZ2h0ID0gTWF0aC5tYXgoIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5Lm9mZnNldEhlaWdodCwgXG5cdFx0Ly9odG1sLmNsaWVudEhlaWdodCwgaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwub2Zmc2V0SGVpZ2h0ICk7XG5cdFx0XG5cdFx0aWYgKG5hdmVnYWRvci5pbmRleE9mKCdmaXJlZm94JykgIT09IC0xKXtcblx0XHRcdGlmKGRvYy5mb3JtRGV0YWxsZUNvbnZvY2F0b3JpYSl7XG5cdFx0XHRcdGxldCBjYW50aWRhZE1pbGVzID0gaGVpZ2h0IC8gMTAwMDtcblx0XHRcdFx0aGVpZ2h0ID0gaGVpZ2h0ICsgNjAwICsgKGNhbnRpZGFkTWlsZXMqNDApXG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHQvL1x0Y29uc29sZS53YXJuKCdGQ08gOiBsbGFtYSBhIGdldERvY0hlaWdodCcpO1xuXHRcblx0XHRyZXR1cm4gaGVpZ2h0O1xuXHR9XG5cblx0b2J0ZW5lck5hdmVnYWRvcigpe1xuXHRcdHZhciB1YT0gbmF2aWdhdG9yLnVzZXJBZ2VudCwgdGVtLCBcblx0XHRNPSB1YS5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2kpIHx8IFtdO1xuXHRcdGlmKC90cmlkZW50L2kudGVzdChNWzFdKSl7XG5cdFx0XHR0ZW09ICAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModWEpIHx8IFtdO1xuXHRcdFx0cmV0dXJuICdJRSAnKyh0ZW1bMV0gfHwgJycpO1xuXHRcdH1cblx0XHRpZihNWzFdPT09ICdDaHJvbWUnKXtcblx0XHRcdHRlbT0gdWEubWF0Y2goL1xcYihPUFJ8RWRnZSlcXC8oXFxkKykvKTtcblx0XHRcdGlmKHRlbSE9IG51bGwpIHJldHVybiB0ZW0uc2xpY2UoMSkuam9pbignICcpLnJlcGxhY2UoJ09QUicsICdPcGVyYScpO1xuXHRcdH1cblx0XHRNPSBNWzJdPyBbTVsxXSwgTVsyXV06IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICctPyddO1xuXHRcdGlmKCh0ZW09IHVhLm1hdGNoKC92ZXJzaW9uXFwvKFxcZCspL2kpKSE9IG51bGwpIE0uc3BsaWNlKDEsIDEsIHRlbVsxXSk7XG5cdFx0cmV0dXJuIE0uam9pbignICcpO1xuXHR9XG5cbiAgb2J0ZW5lclVybEFwaSh1cmxhcGk/OiBzdHJpbmcgKTogc3RyaW5nIHtcbiAgICBpZiAodXJsYXBpKXtcbiAgICAgIHJldHVybiB1cmxhcGk7XG4gICAgfVxuICAgIHN3aXRjaCAodGhpcy5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpKSB7XG4gICAgICBjYXNlICcxJzpcbiAgICAgICAgcmV0dXJuIHdpbmRvd1snZW52J11bJ3VybGFwaXNhcmEnXSA/IHdpbmRvd1snZW52J11bJ3VybGFwaXNhcmEnXSA6IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgICAgY2FzZSAnMTMnOlxuICAgICAgICByZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYSddID8gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYSddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgICBjYXNlICcxMCc6XG4gICAgICAgIHJldHVybiB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGlzYXJhJ10gOiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKTtcbiAgICAgICAgLy9yZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpJ10gPyB3aW5kb3dbJ2VudiddWyd1cmxhcGknXSA6IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgICAgY2FzZSAnNzcnOlxuICAgICAgICByZXR1cm4gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYWFwcyddID8gd2luZG93WydlbnYnXVsndXJsYXBpbWFuYWFwcyddIDogdGhpcy5jb29raWVTZXJ2aWNlLmdldCgndXJsbnVjbGVvJyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gIHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5LZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGVjb2RlVG9rZW4oKTtcbiAgICAgIHJldHVybiBkYXRhW2tleV0udG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZWNvZGVUb2tlbigpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0SXRlbSgndG9rZW4nLCAnJyk7XG4gICAgICBjb25zdCBkYXRhID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IoZGF0YSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXRJdGVtKGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLm9idGVuZXJCYXNlKCkgKyAnXycgKyAga2V5KSA/PyBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBjYW1iaWFyVGVtYSh0ZW1hIDogKCd0ZW1hQ2xhcm8nIHwgJ3RlbWFPc2N1cm8nKSl7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5vYnRlbmVyQmFzZSgpICsgJ18nICsndGVtYScsIHRlbWEpO1xuICAgIGxldCBsaW5rVGVtYSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbWFBcHAnKSBhcyBIVE1MTGlua0VsZW1lbnQ7XG4gICAgbGlua1RlbWEuaHJlZiA9IGAke3RlbWF9LmNzc2BcbiAgfVxuXG4gIGNhbGN1bGFyUG9zaWNpb25EaWFsb2coKSB7XG4gICAgY29uc29sZS5sb2coJ2xhc3RDbGlja1Bvc2l0aW9uJylcbiAgICBjb25zb2xlLmxvZyh0aGlzLmxhc3RDbGlja1Bvc2l0aW9uKVxuICAgIGlmICghdGhpcy5sYXN0Q2xpY2tQb3NpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL2NvbnN0IGVsZW1lbnRvID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIC8vY29uc3QgZWxlbWVudG9Db29yZGVuYWRhID0gZWxlbWVudG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBpZnJhbWUgPSAgd2luZG93LmZyYW1lRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBpZnJhbWVPZmZzZXRUb3AgPSBpZnJhbWUgPyBpZnJhbWUudG9wIDogMDtcblxuICAgIGNvbnN0IGRpYWxvZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wLWRpYWxvZycpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgY29uc3QgdG9wUG9zaXRpb24gPSB0aGlzLmxhc3RDbGlja1Bvc2l0aW9uLnkgLSBpZnJhbWVPZmZzZXRUb3AgKyA1O1xuXG4gICAgaWYgKGRpYWxvZykge1xuICAgICAgZGlhbG9nLnN0eWxlLnRvcCA9IGAke3RvcFBvc2l0aW9ufXB4YDtcbiAgICB9XG4gIH1cbiAgXG4gIHZhbGlkYXJQYWxhYnJhKHRleHRvOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwbGV0cmFzID0gL15bYS16QS1aXVswLTlhLXpBLVpdKiQvO1xuICAgIHJldHVybiBwbGV0cmFzLnRlc3QodGV4dG8pO1xuICB9XG5cbiAgaXNOdW1lcmljKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIWlzTmFOKE51bWJlcih2YWx1ZSkpO1xuICB9XG4gIFxufSJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1 from '@angular/common/http';
|
|
2
2
|
import { HttpHeaders, HttpErrorResponse, HttpParams, HttpRequest, HttpEventType } from '@angular/common/http';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, Inject, Component, Input, HostBinding, ViewChild, Pipe, NgModule, EventEmitter, Output, inject, Renderer2, ElementRef, TemplateRef, ContentChild, ContentChildren,
|
|
4
|
+
import { Injectable, Inject, HostListener, Component, Input, HostBinding, ViewChild, Pipe, NgModule, EventEmitter, Output, inject, Renderer2, ElementRef, TemplateRef, ContentChild, ContentChildren, forwardRef, Directive, ViewContainerRef, ViewChildren } from '@angular/core';
|
|
5
5
|
import { map, catchError, Subject, of, TimeoutError, throwError, BehaviorSubject, Subscription, filter as filter$1, from, EMPTY, lastValueFrom, firstValueFrom } from 'rxjs';
|
|
6
6
|
import * as CryptoJS from 'crypto-js';
|
|
7
7
|
import { jwtDecode } from 'jwt-decode';
|
|
@@ -1524,6 +1524,14 @@ class AuthenticationError extends Error {
|
|
|
1524
1524
|
class UtilsService {
|
|
1525
1525
|
cookieService;
|
|
1526
1526
|
document;
|
|
1527
|
+
lastClickPosition = { x: 0, y: 0 };
|
|
1528
|
+
onDocumentClick(event) {
|
|
1529
|
+
this.lastClickPosition = {
|
|
1530
|
+
x: event.clientX,
|
|
1531
|
+
y: event.clientY
|
|
1532
|
+
};
|
|
1533
|
+
console.log(this.lastClickPosition);
|
|
1534
|
+
}
|
|
1527
1535
|
RESERVADAS_SQL_NOPUEDECONTENER = [';'];
|
|
1528
1536
|
reservadas = ['ALTER', 'DELETE', 'DROP', 'MODIFY', 'CREATE', 'DATABASE', 'TABLE', 'UPDATE', 'TRIGGER', 'GRANT', 'REVOKE', 'CALL', 'INSERT', 'TRUNCATE', 'USE', '--'];
|
|
1529
1537
|
constructor(cookieService, document) {
|
|
@@ -1820,16 +1828,18 @@ class UtilsService {
|
|
|
1820
1828
|
let linkTema = this.document.getElementById('temaApp');
|
|
1821
1829
|
linkTema.href = `${tema}.css`;
|
|
1822
1830
|
}
|
|
1823
|
-
calcularPosicionDialog(
|
|
1824
|
-
|
|
1831
|
+
calcularPosicionDialog() {
|
|
1832
|
+
console.log('lastClickPosition');
|
|
1833
|
+
console.log(this.lastClickPosition);
|
|
1834
|
+
if (!this.lastClickPosition) {
|
|
1825
1835
|
return;
|
|
1826
1836
|
}
|
|
1827
|
-
const elemento = event.target;
|
|
1828
|
-
const elementoCoordenada = elemento.getBoundingClientRect();
|
|
1837
|
+
//const elemento = event.target as HTMLElement;
|
|
1838
|
+
//const elementoCoordenada = elemento.getBoundingClientRect();
|
|
1829
1839
|
const iframe = window.frameElement.getBoundingClientRect();
|
|
1830
1840
|
const iframeOffsetTop = iframe ? iframe.top : 0;
|
|
1831
1841
|
const dialog = document.querySelector('.p-dialog');
|
|
1832
|
-
const topPosition =
|
|
1842
|
+
const topPosition = this.lastClickPosition.y - iframeOffsetTop + 5;
|
|
1833
1843
|
if (dialog) {
|
|
1834
1844
|
dialog.style.top = `${topPosition}px`;
|
|
1835
1845
|
}
|
|
@@ -1852,7 +1862,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
|
|
|
1852
1862
|
}], ctorParameters: () => [{ type: i3.CookieService }, { type: Document, decorators: [{
|
|
1853
1863
|
type: Inject,
|
|
1854
1864
|
args: [DOCUMENT]
|
|
1855
|
-
}] }]
|
|
1865
|
+
}] }], propDecorators: { onDocumentClick: [{
|
|
1866
|
+
type: HostListener,
|
|
1867
|
+
args: ['document:click', ['$event']]
|
|
1868
|
+
}] } });
|
|
1856
1869
|
|
|
1857
1870
|
class StorageService {
|
|
1858
1871
|
utilsService;
|