siarashield_workspace 0.0.31 → 0.0.33
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/esm2022/lib/siara-shield-csp.mjs +80 -0
- package/esm2022/lib/siara-shield-loader.service.mjs +23 -0
- package/esm2022/lib/siara-shield-log-utils.mjs +103 -0
- package/esm2022/lib/siara-shield-script-utils.mjs +225 -0
- package/esm2022/lib/siara-shield-submit-guard.mjs +30 -0
- package/esm2022/lib/siara-shield.component.mjs +206 -0
- package/esm2022/lib/siara-shield.globals.mjs +7 -0
- package/esm2022/lib/siara-shield.mjs +164 -0
- package/esm2022/lib/siarashield-workspace.mjs +4 -0
- package/esm2022/public-api.mjs +10 -0
- package/esm2022/siarashield_workspace.mjs +5 -0
- package/fesm2022/siarashield_workspace.mjs +32 -9
- package/fesm2022/siarashield_workspace.mjs.map +1 -1
- package/index.d.ts +5 -0
- package/lib/siara-shield-csp.d.ts +14 -0
- package/lib/siara-shield-loader.service.d.ts +9 -0
- package/lib/siara-shield-log-utils.d.ts +6 -0
- package/lib/siara-shield-script-utils.d.ts +7 -0
- package/lib/siara-shield-submit-guard.d.ts +1 -0
- package/lib/siara-shield.component.d.ts +51 -0
- package/lib/siara-shield.d.ts +44 -0
- package/lib/siara-shield.globals.d.ts +13 -0
- package/lib/siarashield-workspace.d.ts +3 -0
- package/package.json +5 -3
- package/public-api.d.ts +6 -0
- package/siarashield_workspace-0.0.33.tgz +0 -0
- package/siarashield_workspace-0.0.31.tgz +0 -0
- package/types/siarashield_workspace.d.ts +0 -140
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';
|
|
3
|
+
import { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';
|
|
4
|
+
import { prepareScriptNonce } from './siara-shield-script-utils';
|
|
5
|
+
import { installCaptchaSubmitGuard } from './siara-shield-submit-guard';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./siara-shield-loader.service";
|
|
8
|
+
const JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';
|
|
9
|
+
const CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';
|
|
10
|
+
const VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';
|
|
11
|
+
const CAPTCHA_READY_TIMEOUT_MS = 8000;
|
|
12
|
+
function ensureAccessibilityPopupAliases() {
|
|
13
|
+
const g = globalThis;
|
|
14
|
+
const aliasNames = [
|
|
15
|
+
'RemoveAccesibilityPopup',
|
|
16
|
+
'_RemoveAccesibilityPopup',
|
|
17
|
+
'RemoveAccesiblityPopup',
|
|
18
|
+
'_RemoveAccesiblityPopup',
|
|
19
|
+
];
|
|
20
|
+
const existing = aliasNames
|
|
21
|
+
.map((name) => g[name])
|
|
22
|
+
.find((value) => typeof value === 'function');
|
|
23
|
+
const stableFn = existing ?? (() => undefined);
|
|
24
|
+
for (const name of aliasNames) {
|
|
25
|
+
g[name] = stableFn;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function runInRootZone(fn) {
|
|
29
|
+
const g = globalThis;
|
|
30
|
+
const zoneRootRun = g.Zone?.root?.run;
|
|
31
|
+
if (typeof zoneRootRun === 'function') {
|
|
32
|
+
return zoneRootRun.call(g.Zone?.root, fn);
|
|
33
|
+
}
|
|
34
|
+
return fn();
|
|
35
|
+
}
|
|
36
|
+
export class SiaraShieldComponent {
|
|
37
|
+
host;
|
|
38
|
+
loader;
|
|
39
|
+
publicKey;
|
|
40
|
+
loadJQuery = true;
|
|
41
|
+
cspNonce;
|
|
42
|
+
allowVendorConsoleLogs = false;
|
|
43
|
+
/**
|
|
44
|
+
* Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.
|
|
45
|
+
*/
|
|
46
|
+
token = new EventEmitter();
|
|
47
|
+
initialized = false;
|
|
48
|
+
constructor(host, loader) {
|
|
49
|
+
this.host = host;
|
|
50
|
+
this.loader = loader;
|
|
51
|
+
}
|
|
52
|
+
async ngAfterViewInit() {
|
|
53
|
+
await this.init({
|
|
54
|
+
publicKey: this.publicKey,
|
|
55
|
+
loadJQuery: this.loadJQuery,
|
|
56
|
+
cspNonce: this.cspNonce,
|
|
57
|
+
allowVendorConsoleLogs: this.allowVendorConsoleLogs,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async init(options) {
|
|
61
|
+
if (this.initialized)
|
|
62
|
+
return;
|
|
63
|
+
// Ensure the host element is in DOM before scripts run.
|
|
64
|
+
void this.host.nativeElement;
|
|
65
|
+
installCaptchaSubmitGuard();
|
|
66
|
+
if (!options.publicKey) {
|
|
67
|
+
throw new Error('SiaraShieldComponent: publicKey is required.');
|
|
68
|
+
}
|
|
69
|
+
const cspNonce = prepareScriptNonce(this.host.nativeElement.ownerDocument, options.cspNonce);
|
|
70
|
+
if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {
|
|
71
|
+
await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce: cspNonce });
|
|
72
|
+
}
|
|
73
|
+
await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, {
|
|
74
|
+
nonce: cspNonce,
|
|
75
|
+
});
|
|
76
|
+
await this.loader.loadScript(VALIDATION_SCRIPT_SRC, {
|
|
77
|
+
nonce: cspNonce,
|
|
78
|
+
});
|
|
79
|
+
const g = getSiaraShieldGlobals();
|
|
80
|
+
ensureAccessibilityPopupAliases();
|
|
81
|
+
this.preventDuplicateValidationBootstrap(g);
|
|
82
|
+
const initCaptchaFn = getInitCaptchaFn(g);
|
|
83
|
+
if (!initCaptchaFn) {
|
|
84
|
+
throw new Error('SiaraShield: InitCaptcha() is not available after loading scripts. Check whether CSP blocked vendor scripts or inline execution.');
|
|
85
|
+
}
|
|
86
|
+
if (!options.allowVendorConsoleLogs) {
|
|
87
|
+
suppressVendorConsoleWindow();
|
|
88
|
+
installVendorRuntimeErrorSuppression();
|
|
89
|
+
}
|
|
90
|
+
runInRootZone(() => initCaptchaFn(options.publicKey));
|
|
91
|
+
await this.waitForCheckCaptchaApi();
|
|
92
|
+
this.initialized = true;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Detect preloaded jQuery from global object or an existing script tag.
|
|
96
|
+
*/
|
|
97
|
+
isJQueryAlreadyAvailable() {
|
|
98
|
+
const g = getSiaraShieldGlobals();
|
|
99
|
+
if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector('script[src*="jquery"]');
|
|
103
|
+
return Boolean(existingJqueryScript);
|
|
104
|
+
}
|
|
105
|
+
preventDuplicateValidationBootstrap(g) {
|
|
106
|
+
const originalAppendValidation = g.AppendValidationJS;
|
|
107
|
+
if (typeof originalAppendValidation !== 'function') {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
g.AppendValidationJS = () => {
|
|
111
|
+
const existing = this.host.nativeElement.ownerDocument.querySelector(`script[src="${VALIDATION_SCRIPT_SRC}"]`);
|
|
112
|
+
if (existing) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
originalAppendValidation();
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS) {
|
|
119
|
+
const startedAt = Date.now();
|
|
120
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
121
|
+
if (getSiaraShieldGlobals().CheckCaptcha) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
125
|
+
}
|
|
126
|
+
throw new Error('SiaraShield: CheckCaptcha() was not available within timeout. This can happen when CSP blocks the captcha runtime.');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Calls the global `CheckCaptcha()` from SiaraShield script.
|
|
130
|
+
* Returns true when captcha is valid; emits token if available.
|
|
131
|
+
*/
|
|
132
|
+
checkCaptcha() {
|
|
133
|
+
const g = getSiaraShieldGlobals();
|
|
134
|
+
if (!g.CheckCaptcha) {
|
|
135
|
+
throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run, and is CSP allowing the captcha scripts?');
|
|
136
|
+
}
|
|
137
|
+
const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;
|
|
138
|
+
if (existingToken) {
|
|
139
|
+
this.token.emit(existingToken);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
if (!this.allowVendorConsoleLogs) {
|
|
143
|
+
suppressVendorConsoleWindow();
|
|
144
|
+
}
|
|
145
|
+
const ok = g.CheckCaptcha();
|
|
146
|
+
if (ok && typeof g.CyberSiaraToken === 'string') {
|
|
147
|
+
this.token.emit(g.CyberSiaraToken);
|
|
148
|
+
}
|
|
149
|
+
return ok;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Async-friendly captcha validation to avoid first-click timing issues.
|
|
153
|
+
* Performs one validation call and waits for token propagation.
|
|
154
|
+
*/
|
|
155
|
+
async checkCaptchaAsync(options) {
|
|
156
|
+
const timeoutMs = options?.timeoutMs ?? 2000;
|
|
157
|
+
const pollIntervalMs = options?.pollIntervalMs ?? 120;
|
|
158
|
+
const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;
|
|
159
|
+
const existingToken = getSiaraShieldGlobals().CyberSiaraToken;
|
|
160
|
+
if (typeof existingToken === 'string' && existingToken.length > 0) {
|
|
161
|
+
this.token.emit(existingToken);
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));
|
|
165
|
+
const ok = this.checkCaptcha();
|
|
166
|
+
if (!ok)
|
|
167
|
+
return false;
|
|
168
|
+
const g = getSiaraShieldGlobals();
|
|
169
|
+
if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
const startedAt = Date.now();
|
|
173
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
174
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
175
|
+
const token = getSiaraShieldGlobals().CyberSiaraToken;
|
|
176
|
+
if (typeof token === 'string' && token.length > 0) {
|
|
177
|
+
this.token.emit(token);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldComponent, deps: [{ token: i0.ElementRef }, { token: i1.SiaraShieldLoaderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SiaraShieldComponent, isStandalone: true, selector: "siara-shield", inputs: { publicKey: "publicKey", loadJQuery: "loadJQuery", cspNonce: "cspNonce", allowVendorConsoleLogs: "allowVendorConsoleLogs" }, outputs: { token: "token" }, ngImport: i0, template: `<div class="SiaraShield"></div>`, isInline: true, encapsulation: i0.ViewEncapsulation.None });
|
|
185
|
+
}
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldComponent, decorators: [{
|
|
187
|
+
type: Component,
|
|
188
|
+
args: [{
|
|
189
|
+
selector: 'siara-shield',
|
|
190
|
+
standalone: true,
|
|
191
|
+
template: `<div class="SiaraShield"></div>`,
|
|
192
|
+
encapsulation: ViewEncapsulation.None,
|
|
193
|
+
}]
|
|
194
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SiaraShieldLoaderService }], propDecorators: { publicKey: [{
|
|
195
|
+
type: Input,
|
|
196
|
+
args: [{ required: true }]
|
|
197
|
+
}], loadJQuery: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], cspNonce: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], allowVendorConsoleLogs: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], token: [{
|
|
204
|
+
type: Output
|
|
205
|
+
}] } });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUV4RSxNQUFNLG1CQUFtQixHQUFHLGtFQUFrRSxDQUFDO0FBQy9GLE1BQU0sa0JBQWtCLEdBQUcsc0VBQXNFLENBQUM7QUFDbEcsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0QyxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLENBQUMsR0FBRyxVQUF5RCxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHlCQUF5QjtLQUNqQixDQUFDO0lBRVgsTUFBTSxRQUFRLEdBQUcsVUFBVTtTQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQXVCLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQztJQUVyRSxNQUFNLFFBQVEsR0FBRyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBSSxFQUFXO0lBQ25DLE1BQU0sQ0FBQyxHQUFHLFVBQXVGLENBQUM7SUFDbEcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBQ3RDLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDdEMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBTSxDQUFDO0lBQ2pELENBQUM7SUFDRCxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQW1CRCxNQUFNLE9BQU8sb0JBQW9CO0lBY1o7SUFDQTtJQWRRLFNBQVMsQ0FBVTtJQUNyQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFFeEM7O09BRUc7SUFDTyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUVyQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRTVCLFlBQ21CLElBQTZCLEVBQzdCLE1BQWdDO1FBRGhDLFNBQUksR0FBSixJQUFJLENBQXlCO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQTBCO0lBQ2hELENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNuQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1NBQ3BELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQStCO1FBQ3hDLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBRTdCLHdEQUF3RDtRQUN4RCxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzdCLHlCQUF5QixFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtZQUMvQyxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFO1lBQ2xELEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDbEMsK0JBQStCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0lBQWtJLENBQ25JLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3BDLDJCQUEyQixFQUFFLENBQUM7WUFDOUIsb0NBQW9DLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLHdCQUF3QjtRQUM5QixNQUFNLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDaEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUM5RSx1QkFBdUIsQ0FDeEIsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLENBQTJDO1FBQ3JGLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQ3RELElBQUksT0FBTyx3QkFBd0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUVELENBQUMsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDbEUsZUFBZSxxQkFBcUIsSUFBSSxDQUN6QyxDQUFDO1lBQ0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPO1lBQ1QsQ0FBQztZQUVELHdCQUF3QixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsd0JBQXdCO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDMUMsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN6QyxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsTUFBTSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0dBQXdHLENBQUMsQ0FBQztRQUM1SCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1SCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQywyQkFBMkIsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQXNGO1FBQzVHLE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDO1FBQzdDLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksR0FBRyxDQUFDO1FBQ3RELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxFQUFFLGtCQUFrQixJQUFJLEdBQUcsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDLGVBQWUsQ0FBQztRQUM5RCxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXRCLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDbEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxlQUFlLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sS0FBSyxHQUFHLHFCQUFxQixFQUFFLENBQUMsZUFBZSxDQUFDO1lBQ3RELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3dHQTVLVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiwyT0FIckIsaUNBQWlDOzs0RkFHaEMsb0JBQW9CO2tCQU5oQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGlDQUFpQztvQkFDM0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDO3NIQUU0QixTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFLSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpYXJhU2hpZWxkTG9hZGVyU2VydmljZSB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLWxvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldEluaXRDYXB0Y2hhRm4sIGdldFNpYXJhU2hpZWxkR2xvYmFscyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLmdsb2JhbHMnO1xuaW1wb3J0IHsgaW5zdGFsbFZlbmRvclJ1bnRpbWVFcnJvclN1cHByZXNzaW9uLCBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3cgfSBmcm9tICcuL3NpYXJhLXNoaWVsZC1sb2ctdXRpbHMnO1xuaW1wb3J0IHsgcHJlcGFyZVNjcmlwdE5vbmNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc2NyaXB0LXV0aWxzJztcbmltcG9ydCB7IGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQgfSBmcm9tICcuL3NpYXJhLXNoaWVsZC1zdWJtaXQtZ3VhcmQnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG5mdW5jdGlvbiBlbnN1cmVBY2Nlc3NpYmlsaXR5UG9wdXBBbGlhc2VzKCk6IHZvaWQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBhbGlhc05hbWVzID0gW1xuICAgICdSZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ19SZW1vdmVBY2Nlc2liaWxpdHlQb3B1cCcsXG4gICAgJ1JlbW92ZUFjY2VzaWJsaXR5UG9wdXAnLFxuICAgICdfUmVtb3ZlQWNjZXNpYmxpdHlQb3B1cCcsXG4gIF0gYXMgY29uc3Q7XG5cbiAgY29uc3QgZXhpc3RpbmcgPSBhbGlhc05hbWVzXG4gICAgLm1hcCgobmFtZSkgPT4gZ1tuYW1lXSlcbiAgICAuZmluZCgodmFsdWUpOiB2YWx1ZSBpcyAoKSA9PiB2b2lkID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgY29uc3Qgc3RhYmxlRm4gPSBleGlzdGluZyA/PyAoKCkgPT4gdW5kZWZpbmVkKTtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGFsaWFzTmFtZXMpIHtcbiAgICBnW25hbWVdID0gc3RhYmxlRm47XG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuSW5Sb290Wm9uZTxUPihmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCBnID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHsgWm9uZT86IHsgcm9vdD86IHsgcnVuPzogPFU+KGNiOiAoKSA9PiBVKSA9PiBVIH0gfSB9O1xuICBjb25zdCB6b25lUm9vdFJ1biA9IGcuWm9uZT8ucm9vdD8ucnVuO1xuICBpZiAodHlwZW9mIHpvbmVSb290UnVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHpvbmVSb290UnVuLmNhbGwoZy5ab25lPy5yb290LCBmbikgYXMgVDtcbiAgfVxuICByZXR1cm4gZm4oKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWFyYVNoaWVsZEluaXRPcHRpb25zIHtcbiAgLyoqIFNpYXJhU2hpZWxkIHB1YmxpYyBrZXkuIFVzZSBcIlRFU1QtQ1lCRVJTSUFSQVwiIGZvciBzdGFnaW5nL2RldmVsb3BtZW50LiAqL1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgLyoqIExvYWRzIGpRdWVyeSBiZWZvcmUgU2lhcmFTaGllbGQgc2NyaXB0LiBEZWZhdWx0IGlzIHRydWUgZm9yIGVhc2llciBpbnRlZ3JhdGlvbi4gU2V0IHRvIGZhbHNlIG9ubHkgaWYgeW91ciBwYWdlIGFscmVhZHkgaW5jbHVkZXMgalF1ZXJ5LiAqL1xuICBsb2FkSlF1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqIENTUCBub25jZSBmb3Igc3RyaWN0IHBvbGljaWVzIChgc2NyaXB0LXNyYyAnbm9uY2UtLi4uJ2ApLiBQYWlyIHdpdGggYGdldFNpYXJhU2hpZWxkQ3NwUG9saWN5KClgLiAqL1xuICBjc3BOb25jZT86IHN0cmluZztcbiAgLyoqIFNldCB0cnVlIG9ubHkgd2hlbiBhY3RpdmVseSBkZWJ1Z2dpbmcgdmVuZG9yL3J1bnRpbWUgaW50ZXJuYWxzIGluIGJyb3dzZXIgY29uc29sZS4gKi9cbiAgYWxsb3dWZW5kb3JDb25zb2xlTG9ncz86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYXJhLXNoaWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIlNpYXJhU2hpZWxkXCI+PC9kaXY+YCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2lhcmFTaGllbGRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljS2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkSlF1ZXJ5ID0gdHJ1ZTtcbiAgQElucHV0KCkgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFsbG93VmVuZG9yQ29uc29sZUxvZ3MgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnQgYEN5YmVyU2lhcmFUb2tlbmAgcmlnaHQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBjaGVja0NhcHRjaGEoKWAuXG4gICAqL1xuICBAT3V0cHV0KCkgdG9rZW4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRlcjogU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlLFxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCh7XG4gICAgICBwdWJsaWNLZXk6IHRoaXMucHVibGljS2V5LFxuICAgICAgbG9hZEpRdWVyeTogdGhpcy5sb2FkSlF1ZXJ5LFxuICAgICAgY3NwTm9uY2U6IHRoaXMuY3NwTm9uY2UsXG4gICAgICBhbGxvd1ZlbmRvckNvbnNvbGVMb2dzOiB0aGlzLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0KG9wdGlvbnM6IFNpYXJhU2hpZWxkSW5pdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuXG4gICAgLy8gRW5zdXJlIHRoZSBob3N0IGVsZW1lbnQgaXMgaW4gRE9NIGJlZm9yZSBzY3JpcHRzIHJ1bi5cbiAgICB2b2lkIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O1xuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcblxuICAgIGlmICghb3B0aW9ucy5wdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2lhcmFTaGllbGRDb21wb25lbnQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG4gICAgY29uc3QgY3NwTm9uY2UgPSBwcmVwYXJlU2NyaXB0Tm9uY2UodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudCwgb3B0aW9ucy5jc3BOb25jZSk7XG5cbiAgICBpZiAoKG9wdGlvbnMubG9hZEpRdWVyeSA/PyB0cnVlKSAmJiAhdGhpcy5pc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkZXIubG9hZFNjcmlwdChKUVVFUllfRkFMTEJBQ0tfU1JDLCB7IG5vbmNlOiBjc3BOb25jZSB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmxvYWRlci5sb2FkU2NyaXB0KENBUFRDSEFfU0NSSVBUX1NSQywge1xuICAgICAgbm9uY2U6IGNzcE5vbmNlLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMubG9hZGVyLmxvYWRTY3JpcHQoVkFMSURBVElPTl9TQ1JJUFRfU1JDLCB7XG4gICAgICBub25jZTogY3NwTm9uY2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCBnID0gZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCk7XG4gICAgZW5zdXJlQWNjZXNzaWJpbGl0eVBvcHVwQWxpYXNlcygpO1xuICAgIHRoaXMucHJldmVudER1cGxpY2F0ZVZhbGlkYXRpb25Cb290c3RyYXAoZyk7XG4gICAgY29uc3QgaW5pdENhcHRjaGFGbiA9IGdldEluaXRDYXB0Y2hhRm4oZyk7XG4gICAgaWYgKCFpbml0Q2FwdGNoYUZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTaWFyYVNoaWVsZDogSW5pdENhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlIGFmdGVyIGxvYWRpbmcgc2NyaXB0cy4gQ2hlY2sgd2hldGhlciBDU1AgYmxvY2tlZCB2ZW5kb3Igc2NyaXB0cyBvciBpbmxpbmUgZXhlY3V0aW9uLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzKSB7XG4gICAgICBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3coKTtcbiAgICAgIGluc3RhbGxWZW5kb3JSdW50aW1lRXJyb3JTdXBwcmVzc2lvbigpO1xuICAgIH1cbiAgICBydW5JblJvb3Rab25lKCgpID0+IGluaXRDYXB0Y2hhRm4ob3B0aW9ucy5wdWJsaWNLZXkpKTtcbiAgICBhd2FpdCB0aGlzLndhaXRGb3JDaGVja0NhcHRjaGFBcGkoKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3QgcHJlbG9hZGVkIGpRdWVyeSBmcm9tIGdsb2JhbCBvYmplY3Qgb3IgYW4gZXhpc3Rpbmcgc2NyaXB0IHRhZy5cbiAgICovXG4gIHByaXZhdGUgaXNKUXVlcnlBbHJlYWR5QXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAodHlwZW9mIGcualF1ZXJ5ID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBnLiQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nSnF1ZXJ5U2NyaXB0ID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50PihcbiAgICAgICdzY3JpcHRbc3JjKj1cImpxdWVyeVwiXScsXG4gICAgKTtcbiAgICByZXR1cm4gQm9vbGVhbihleGlzdGluZ0pxdWVyeVNjcmlwdCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREdXBsaWNhdGVWYWxpZGF0aW9uQm9vdHN0cmFwKGc6IFJldHVyblR5cGU8dHlwZW9mIGdldFNpYXJhU2hpZWxkR2xvYmFscz4pOiB2b2lkIHtcbiAgICBjb25zdCBvcmlnaW5hbEFwcGVuZFZhbGlkYXRpb24gPSBnLkFwcGVuZFZhbGlkYXRpb25KUztcbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGcuQXBwZW5kVmFsaWRhdGlvbkpTID0gKCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgICAgICBgc2NyaXB0W3NyYz1cIiR7VkFMSURBVElPTl9TQ1JJUFRfU1JDfVwiXWAsXG4gICAgICApO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uKCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckNoZWNrQ2FwdGNoYUFwaSh0aW1lb3V0TXMgPSBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnRlZEF0IDwgdGltZW91dE1zKSB7XG4gICAgICBpZiAoZ2V0U2lhcmFTaGllbGRHbG9iYWxzKCkuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMCkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpYXJhU2hpZWxkOiBDaGVja0NhcHRjaGEoKSB3YXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGltZW91dC4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gQ1NQIGJsb2NrcyB0aGUgY2FwdGNoYSBydW50aW1lLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBnbG9iYWwgYENoZWNrQ2FwdGNoYSgpYCBmcm9tIFNpYXJhU2hpZWxkIHNjcmlwdC5cbiAgICogUmV0dXJucyB0cnVlIHdoZW4gY2FwdGNoYSBpcyB2YWxpZDsgZW1pdHMgdG9rZW4gaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgY2hlY2tDYXB0Y2hhKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgICBpZiAoIWcuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpYXJhU2hpZWxkOiBDaGVja0NhcHRjaGEoKSBpcyBub3QgYXZhaWxhYmxlLiBEaWQgaW5pdCgpIHJ1biwgYW5kIGlzIENTUCBhbGxvd2luZyB0aGUgY2FwdGNoYSBzY3JpcHRzPycpO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSB0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnICYmIGcuQ3liZXJTaWFyYVRva2VuLmxlbmd0aCA+IDAgPyBnLkN5YmVyU2lhcmFUb2tlbiA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhpc3RpbmdUb2tlbikge1xuICAgICAgdGhpcy50b2tlbi5lbWl0KGV4aXN0aW5nVG9rZW4pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MpIHtcbiAgICAgIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdygpO1xuICAgIH1cbiAgICBjb25zdCBvayA9IGcuQ2hlY2tDYXB0Y2hhKCk7XG4gICAgaWYgKG9rICYmIHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChnLkN5YmVyU2lhcmFUb2tlbik7XG4gICAgfVxuICAgIHJldHVybiBvaztcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luYy1mcmllbmRseSBjYXB0Y2hhIHZhbGlkYXRpb24gdG8gYXZvaWQgZmlyc3QtY2xpY2sgdGltaW5nIGlzc3Vlcy5cbiAgICogUGVyZm9ybXMgb25lIHZhbGlkYXRpb24gY2FsbCBhbmQgd2FpdHMgZm9yIHRva2VuIHByb3BhZ2F0aW9uLlxuICAgKi9cbiAgYXN5bmMgY2hlY2tDYXB0Y2hhQXN5bmMob3B0aW9ucz86IHsgdGltZW91dE1zPzogbnVtYmVyOyBwb2xsSW50ZXJ2YWxNcz86IG51bWJlcjsgYmVmb3JlQ2hlY2tEZWxheU1zPzogbnVtYmVyIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB0aW1lb3V0TXMgPSBvcHRpb25zPy50aW1lb3V0TXMgPz8gMjAwMDtcbiAgICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IDEyMDtcbiAgICBjb25zdCBiZWZvcmVDaGVja0RlbGF5TXMgPSBvcHRpb25zPy5iZWZvcmVDaGVja0RlbGF5TXMgPz8gMTQwO1xuICAgIGNvbnN0IGV4aXN0aW5nVG9rZW4gPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DeWJlclNpYXJhVG9rZW47XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZ1Rva2VuID09PSAnc3RyaW5nJyAmJiBleGlzdGluZ1Rva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudG9rZW4uZW1pdChleGlzdGluZ1Rva2VuKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiZWZvcmVDaGVja0RlbGF5TXMpKTtcbiAgICBjb25zdCBvayA9IHRoaXMuY2hlY2tDYXB0Y2hhKCk7XG4gICAgaWYgKCFvaykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGlmICh0eXBlb2YgZy5DeWJlclNpYXJhVG9rZW4gPT09ICdzdHJpbmcnICYmIGcuQ3liZXJTaWFyYVRva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgd2hpbGUgKERhdGUubm93KCkgLSBzdGFydGVkQXQgPCB0aW1lb3V0TXMpIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHBvbGxJbnRlcnZhbE1zKSk7XG4gICAgICBjb25zdCB0b2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnICYmIHRva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy50b2tlbi5lbWl0KHRva2VuKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function getSiaraShieldGlobals() {
|
|
2
|
+
return globalThis;
|
|
3
|
+
}
|
|
4
|
+
export function getInitCaptchaFn(g) {
|
|
5
|
+
return g.initCaptcha ?? g.InitCaptcha;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmdsb2JhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWFyYXNoaWVsZC13b3Jrc3BhY2Uvc3JjL2xpYi9zaWFyYS1zaGllbGQuZ2xvYmFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQVEsVUFBd0UsQ0FBQztBQUNuRixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLENBQXFCO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBJbml0Q2FwdGNoYUZuID0gKHB1YmxpY0tleTogc3RyaW5nKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgQ2hlY2tDYXB0Y2hhRm4gPSAoKSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpYXJhU2hpZWxkR2xvYmFscyB7XG4gIGluaXRDYXB0Y2hhPzogSW5pdENhcHRjaGFGbjtcbiAgSW5pdENhcHRjaGE/OiBJbml0Q2FwdGNoYUZuO1xuICBDaGVja0NhcHRjaGE/OiBDaGVja0NhcHRjaGFGbjtcbiAgQXBwZW5kVmFsaWRhdGlvbkpTPzogKCkgPT4gdm9pZDtcbiAgQ3liZXJTaWFyYVRva2VuPzogc3RyaW5nO1xuICBqUXVlcnk/OiB1bmtub3duO1xuICAkPzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpYXJhU2hpZWxkR2xvYmFscygpOiBTaWFyYVNoaWVsZEdsb2JhbHMge1xuICByZXR1cm4gKGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyB7IFtrOiBzdHJpbmddOiB1bmtub3duIH0pIGFzIFNpYXJhU2hpZWxkR2xvYmFscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRDYXB0Y2hhRm4oZzogU2lhcmFTaGllbGRHbG9iYWxzKTogSW5pdENhcHRjaGFGbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnLmluaXRDYXB0Y2hhID8/IGcuSW5pdENhcHRjaGE7XG59XG4iXX0=
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';
|
|
2
|
+
import { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';
|
|
3
|
+
import { loadScript, prepareScriptNonce } from './siara-shield-script-utils';
|
|
4
|
+
import { installCaptchaSubmitGuard } from './siara-shield-submit-guard';
|
|
5
|
+
const JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';
|
|
6
|
+
const CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';
|
|
7
|
+
const VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';
|
|
8
|
+
const CAPTCHA_READY_TIMEOUT_MS = 8000;
|
|
9
|
+
let pending = null;
|
|
10
|
+
let initialized = false;
|
|
11
|
+
function ensureAccessibilityPopupAliases() {
|
|
12
|
+
const g = globalThis;
|
|
13
|
+
const aliasNames = [
|
|
14
|
+
'RemoveAccesibilityPopup',
|
|
15
|
+
'_RemoveAccesibilityPopup',
|
|
16
|
+
'RemoveAccesiblityPopup',
|
|
17
|
+
'_RemoveAccesiblityPopup',
|
|
18
|
+
];
|
|
19
|
+
const existing = aliasNames
|
|
20
|
+
.map((name) => g[name])
|
|
21
|
+
.find((value) => typeof value === 'function');
|
|
22
|
+
const stableFn = existing ?? (() => undefined);
|
|
23
|
+
for (const name of aliasNames) {
|
|
24
|
+
g[name] = stableFn;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function isJQueryAlreadyAvailable() {
|
|
28
|
+
const g = getSiaraShieldGlobals();
|
|
29
|
+
if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
const existingJqueryScript = document.querySelector('script[src*="jquery"]');
|
|
33
|
+
return Boolean(existingJqueryScript);
|
|
34
|
+
}
|
|
35
|
+
function runInRootZone(fn) {
|
|
36
|
+
const g = globalThis;
|
|
37
|
+
const zoneRootRun = g.Zone?.root?.run;
|
|
38
|
+
if (typeof zoneRootRun === 'function') {
|
|
39
|
+
return zoneRootRun.call(g.Zone?.root, fn);
|
|
40
|
+
}
|
|
41
|
+
return fn();
|
|
42
|
+
}
|
|
43
|
+
function preventDuplicateValidationBootstrap(g) {
|
|
44
|
+
const originalAppendValidation = g.AppendValidationJS;
|
|
45
|
+
if (typeof originalAppendValidation !== 'function') {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
g.AppendValidationJS = () => {
|
|
49
|
+
const existing = document.querySelector(`script[src="${VALIDATION_SCRIPT_SRC}"]`);
|
|
50
|
+
if (existing) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
originalAppendValidation();
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS) {
|
|
57
|
+
const startedAt = Date.now();
|
|
58
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
59
|
+
if (getSiaraShieldGlobals().CheckCaptcha) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
63
|
+
}
|
|
64
|
+
throw new Error('SiaraShield: CheckCaptcha() was not available within timeout. This can happen when CSP blocks the captcha runtime.');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Drop-in initializer for SiaraShield.
|
|
68
|
+
* - Loads required scripts (optionally jQuery)
|
|
69
|
+
* - Calls global `initCaptcha(publicKey)`
|
|
70
|
+
*
|
|
71
|
+
* Requirements in your HTML/template:
|
|
72
|
+
* - You must render: `<div class="SiaraShield"></div>`
|
|
73
|
+
*/
|
|
74
|
+
export async function initSiaraShield(options) {
|
|
75
|
+
if (initialized)
|
|
76
|
+
return;
|
|
77
|
+
if (pending)
|
|
78
|
+
return pending;
|
|
79
|
+
if (!options?.publicKey) {
|
|
80
|
+
throw new Error('initSiaraShield: publicKey is required.');
|
|
81
|
+
}
|
|
82
|
+
pending = (async () => {
|
|
83
|
+
installCaptchaSubmitGuard();
|
|
84
|
+
const cspNonce = prepareScriptNonce(document, options.cspNonce);
|
|
85
|
+
if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {
|
|
86
|
+
await loadScript(document, JQUERY_FALLBACK_SRC, { nonce: cspNonce });
|
|
87
|
+
}
|
|
88
|
+
await loadScript(document, CAPTCHA_SCRIPT_SRC, {
|
|
89
|
+
nonce: cspNonce,
|
|
90
|
+
});
|
|
91
|
+
await loadScript(document, VALIDATION_SCRIPT_SRC, {
|
|
92
|
+
nonce: cspNonce,
|
|
93
|
+
});
|
|
94
|
+
const g = getSiaraShieldGlobals();
|
|
95
|
+
ensureAccessibilityPopupAliases();
|
|
96
|
+
preventDuplicateValidationBootstrap(g);
|
|
97
|
+
const initCaptchaFn = getInitCaptchaFn(g);
|
|
98
|
+
if (!initCaptchaFn) {
|
|
99
|
+
throw new Error('SiaraShield: InitCaptcha() is not available after loading scripts. Check whether CSP blocked vendor scripts or inline execution.');
|
|
100
|
+
}
|
|
101
|
+
if (!options.allowVendorConsoleLogs) {
|
|
102
|
+
suppressVendorConsoleWindow();
|
|
103
|
+
installVendorRuntimeErrorSuppression();
|
|
104
|
+
}
|
|
105
|
+
runInRootZone(() => initCaptchaFn(options.publicKey));
|
|
106
|
+
await waitForCheckCaptchaApi();
|
|
107
|
+
initialized = true;
|
|
108
|
+
})();
|
|
109
|
+
try {
|
|
110
|
+
await pending;
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
// keep `pending` cached for subsequent callers
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Calls global `CheckCaptcha()` and returns its boolean result.
|
|
118
|
+
* If successful, returns `{ ok: true, token?: string }`.
|
|
119
|
+
*/
|
|
120
|
+
export function checkSiaraShieldCaptcha(options) {
|
|
121
|
+
const g = getSiaraShieldGlobals();
|
|
122
|
+
if (!g.CheckCaptcha) {
|
|
123
|
+
throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run, and is CSP allowing the captcha scripts?');
|
|
124
|
+
}
|
|
125
|
+
const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;
|
|
126
|
+
if (existingToken) {
|
|
127
|
+
return { ok: true, token: existingToken };
|
|
128
|
+
}
|
|
129
|
+
if (!options?.allowVendorConsoleLogs) {
|
|
130
|
+
suppressVendorConsoleWindow();
|
|
131
|
+
}
|
|
132
|
+
const ok = g.CheckCaptcha();
|
|
133
|
+
const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;
|
|
134
|
+
return ok ? { ok: true, token } : { ok: false };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Async-friendly captcha check to handle delayed token population.
|
|
138
|
+
*/
|
|
139
|
+
export async function checkSiaraShieldCaptchaAsync(options) {
|
|
140
|
+
const timeoutMs = options?.timeoutMs ?? 1200;
|
|
141
|
+
const pollIntervalMs = options?.pollIntervalMs ?? 120;
|
|
142
|
+
const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;
|
|
143
|
+
const existingToken = getSiaraShieldGlobals().CyberSiaraToken;
|
|
144
|
+
if (typeof existingToken === 'string' && existingToken.length > 0) {
|
|
145
|
+
return { ok: true, token: existingToken };
|
|
146
|
+
}
|
|
147
|
+
await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));
|
|
148
|
+
const firstCheck = checkSiaraShieldCaptcha(); // one API call only
|
|
149
|
+
if (!firstCheck.ok)
|
|
150
|
+
return firstCheck;
|
|
151
|
+
if (firstCheck.token)
|
|
152
|
+
return firstCheck;
|
|
153
|
+
const startedAt = Date.now();
|
|
154
|
+
// Token can be assigned slightly after successful verification.
|
|
155
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
156
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
157
|
+
const token = getSiaraShieldGlobals().CyberSiaraToken;
|
|
158
|
+
if (typeof token === 'string' && token.length > 0) {
|
|
159
|
+
return { ok: true, token };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { ok: true };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lhcmFzaGllbGQtd29ya3NwYWNlL3NyYy9saWIvc2lhcmEtc2hpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLG1CQUFtQixHQUFHLGtFQUFrRSxDQUFDO0FBQy9GLE1BQU0sa0JBQWtCLEdBQUcsc0VBQXNFLENBQUM7QUFDbEcsTUFBTSxxQkFBcUIsR0FBRyx5RUFBeUUsQ0FBQztBQUN4RyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQWlCdEMsSUFBSSxPQUFPLEdBQXlCLElBQUksQ0FBQztBQUN6QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFFeEIsU0FBUywrQkFBK0I7SUFDdEMsTUFBTSxDQUFDLEdBQUcsVUFBeUQsQ0FBQztJQUNwRSxNQUFNLFVBQVUsR0FBRztRQUNqQix5QkFBeUI7UUFDekIsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4Qix5QkFBeUI7S0FDakIsQ0FBQztJQUVYLE1BQU0sUUFBUSxHQUFHLFVBQVU7U0FDeEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUF1QixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDLENBQUM7SUFFckUsTUFBTSxRQUFRLEdBQUcsUUFBUSxJQUFJ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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEluaXRDYXB0Y2hhRm4sIGdldFNpYXJhU2hpZWxkR2xvYmFscyB9IGZyb20gJy4vc2lhcmEtc2hpZWxkLmdsb2JhbHMnO1xuaW1wb3J0IHsgaW5zdGFsbFZlbmRvclJ1bnRpbWVFcnJvclN1cHByZXNzaW9uLCBzdXBwcmVzc1ZlbmRvckNvbnNvbGVXaW5kb3cgfSBmcm9tICcuL3NpYXJhLXNoaWVsZC1sb2ctdXRpbHMnO1xuaW1wb3J0IHsgbG9hZFNjcmlwdCwgcHJlcGFyZVNjcmlwdE5vbmNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtc2NyaXB0LXV0aWxzJztcbmltcG9ydCB7IGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQgfSBmcm9tICcuL3NpYXJhLXNoaWVsZC1zdWJtaXQtZ3VhcmQnO1xuXG5jb25zdCBKUVVFUllfRkFMTEJBQ0tfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9jYXBjaGEtdGVtcGxlL2pzL2pxdWVyeS5taW4uanMnO1xuY29uc3QgQ0FQVENIQV9TQ1JJUFRfU1JDID0gJ2h0dHBzOi8vZW1iZWRjZG4ubXljeWJlcnNpYXJhLmNvbS9DYXB0Y2hhRm9ybWF0ZS9DYXB0Y2hhUmVzb3VyY2VzLmpzJztcbmNvbnN0IFZBTElEQVRJT05fU0NSSVBUX1NSQyA9ICdodHRwczovL2VtYmVkLm15Y3liZXJzaWFyYS5jb20vQ2FwdGNoYUZvcm1hdGUvU2lhcmFTaGllbGRfVmFsaWRhdGlvbi5qcyc7XG5jb25zdCBDQVBUQ0hBX1JFQURZX1RJTUVPVVRfTVMgPSA4MDAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRTaWFyYVNoaWVsZE9wdGlvbnMge1xuICAvKiogU2lhcmFTaGllbGQgcHVibGljIGtleS4gVXNlIFwiVEVTVC1DWUJFUlNJQVJBXCIgZm9yIHN0YWdpbmcvZGV2ZWxvcG1lbnQuICovXG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICAvKipcbiAgICogTG9hZHMgalF1ZXJ5IGJlZm9yZSBTaWFyYVNoaWVsZCBzY3JpcHQuXG4gICAqIERlZmF1bHQgaXMgdHJ1ZSBmb3IgZWFzaWVyIGludGVncmF0aW9uLlxuICAgKiBTZXQgdG8gZmFsc2Ugb25seSBpZiB5b3VyIHNpdGUvYXBwIGFscmVhZHkgbG9hZHMgalF1ZXJ5LlxuICAgKi9cbiAgbG9hZEpRdWVyeT86IGJvb2xlYW47XG4gIC8qKiBDU1Agbm9uY2UgZm9yIHN0cmljdCBwb2xpY2llcyAoYHNjcmlwdC1zcmMgJ25vbmNlLS4uLidgKS4gUGFpciB3aXRoIGBnZXRTaWFyYVNoaWVsZENzcFBvbGljeSgpYC4gKi9cbiAgY3NwTm9uY2U/OiBzdHJpbmc7XG4gIC8qKiBTZXQgdHJ1ZSBvbmx5IHdoZW4gYWN0aXZlbHkgZGVidWdnaW5nIHZlbmRvci9ydW50aW1lIGludGVybmFscyBpbiBicm93c2VyIGNvbnNvbGUuICovXG4gIGFsbG93VmVuZG9yQ29uc29sZUxvZ3M/OiBib29sZWFuO1xufVxuXG5sZXQgcGVuZGluZzogUHJvbWlzZTx2b2lkPiB8IG51bGwgPSBudWxsO1xubGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGVuc3VyZUFjY2Vzc2liaWxpdHlQb3B1cEFsaWFzZXMoKTogdm9pZCB7XG4gIGNvbnN0IGcgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IGFsaWFzTmFtZXMgPSBbXG4gICAgJ1JlbW92ZUFjY2VzaWJpbGl0eVBvcHVwJyxcbiAgICAnX1JlbW92ZUFjY2VzaWJpbGl0eVBvcHVwJyxcbiAgICAnUmVtb3ZlQWNjZXNpYmxpdHlQb3B1cCcsXG4gICAgJ19SZW1vdmVBY2Nlc2libGl0eVBvcHVwJyxcbiAgXSBhcyBjb25zdDtcblxuICBjb25zdCBleGlzdGluZyA9IGFsaWFzTmFtZXNcbiAgICAubWFwKChuYW1lKSA9PiBnW25hbWVdKVxuICAgIC5maW5kKCh2YWx1ZSk6IHZhbHVlIGlzICgpID0+IHZvaWQgPT4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKTtcblxuICBjb25zdCBzdGFibGVGbiA9IGV4aXN0aW5nID8/ICgoKSA9PiB1bmRlZmluZWQpO1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgYWxpYXNOYW1lcykge1xuICAgIGdbbmFtZV0gPSBzdGFibGVGbjtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0pRdWVyeUFscmVhZHlBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gIGNvbnN0IGcgPSBnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKTtcbiAgaWYgKHR5cGVvZiBnLmpRdWVyeSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZy4kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBleGlzdGluZ0pxdWVyeVNjcmlwdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFNjcmlwdEVsZW1lbnQ+KCdzY3JpcHRbc3JjKj1cImpxdWVyeVwiXScpO1xuICByZXR1cm4gQm9vbGVhbihleGlzdGluZ0pxdWVyeVNjcmlwdCk7XG59XG5cbmZ1bmN0aW9uIHJ1bkluUm9vdFpvbmU8VD4oZm46ICgpID0+IFQpOiBUIHtcbiAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7IFpvbmU/OiB7IHJvb3Q/OiB7IHJ1bj86IDxVPihjYjogKCkgPT4gVSkgPT4gVSB9IH0gfTtcbiAgY29uc3Qgem9uZVJvb3RSdW4gPSBnLlpvbmU/LnJvb3Q/LnJ1bjtcbiAgaWYgKHR5cGVvZiB6b25lUm9vdFJ1biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB6b25lUm9vdFJ1bi5jYWxsKGcuWm9uZT8ucm9vdCwgZm4pIGFzIFQ7XG4gIH1cbiAgcmV0dXJuIGZuKCk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREdXBsaWNhdGVWYWxpZGF0aW9uQm9vdHN0cmFwKGc6IFJldHVyblR5cGU8dHlwZW9mIGdldFNpYXJhU2hpZWxkR2xvYmFscz4pOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uID0gZy5BcHBlbmRWYWxpZGF0aW9uSlM7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWxBcHBlbmRWYWxpZGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZy5BcHBlbmRWYWxpZGF0aW9uSlMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pihgc2NyaXB0W3NyYz1cIiR7VkFMSURBVElPTl9TQ1JJUFRfU1JDfVwiXWApO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9yaWdpbmFsQXBwZW5kVmFsaWRhdGlvbigpO1xuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yQ2hlY2tDYXB0Y2hhQXBpKHRpbWVvdXRNcyA9IENBUFRDSEFfUkVBRFlfVElNRU9VVF9NUyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCA8IHRpbWVvdXRNcykge1xuICAgIGlmIChnZXRTaWFyYVNoaWVsZEdsb2JhbHMoKS5DaGVja0NhcHRjaGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdTaWFyYVNoaWVsZDogQ2hlY2tDYXB0Y2hhKCkgd2FzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRpbWVvdXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIENTUCBibG9ja3MgdGhlIGNhcHRjaGEgcnVudGltZS4nKTtcbn1cblxuLyoqXG4gKiBEcm9wLWluIGluaXRpYWxpemVyIGZvciBTaWFyYVNoaWVsZC5cbiAqIC0gTG9hZHMgcmVxdWlyZWQgc2NyaXB0cyAob3B0aW9uYWxseSBqUXVlcnkpXG4gKiAtIENhbGxzIGdsb2JhbCBgaW5pdENhcHRjaGEocHVibGljS2V5KWBcbiAqXG4gKiBSZXF1aXJlbWVudHMgaW4geW91ciBIVE1ML3RlbXBsYXRlOlxuICogLSBZb3UgbXVzdCByZW5kZXI6IGA8ZGl2IGNsYXNzPVwiU2lhcmFTaGllbGRcIj48L2Rpdj5gXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0U2lhcmFTaGllbGQob3B0aW9uczogSW5pdFNpYXJhU2hpZWxkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nO1xuXG4gIGlmICghb3B0aW9ucz8ucHVibGljS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0U2lhcmFTaGllbGQ6IHB1YmxpY0tleSBpcyByZXF1aXJlZC4nKTtcbiAgfVxuXG4gIHBlbmRpbmcgPSAoYXN5bmMgKCkgPT4ge1xuICAgIGluc3RhbGxDYXB0Y2hhU3VibWl0R3VhcmQoKTtcbiAgICBjb25zdCBjc3BOb25jZSA9IHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudCwgb3B0aW9ucy5jc3BOb25jZSk7XG5cbiAgICBpZiAoKG9wdGlvbnMubG9hZEpRdWVyeSA/PyB0cnVlKSAmJiAhaXNKUXVlcnlBbHJlYWR5QXZhaWxhYmxlKCkpIHtcbiAgICAgIGF3YWl0IGxvYWRTY3JpcHQoZG9jdW1lbnQsIEpRVUVSWV9GQUxMQkFDS19TUkMsIHsgbm9uY2U6IGNzcE5vbmNlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IGxvYWRTY3JpcHQoZG9jdW1lbnQsIENBUFRDSEFfU0NSSVBUX1NSQywge1xuICAgICAgbm9uY2U6IGNzcE5vbmNlLFxuICAgIH0pO1xuICAgIGF3YWl0IGxvYWRTY3JpcHQoZG9jdW1lbnQsIFZBTElEQVRJT05fU0NSSVBUX1NSQywge1xuICAgICAgbm9uY2U6IGNzcE5vbmNlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICAgIGVuc3VyZUFjY2Vzc2liaWxpdHlQb3B1cEFsaWFzZXMoKTtcbiAgICBwcmV2ZW50RHVwbGljYXRlVmFsaWRhdGlvbkJvb3RzdHJhcChnKTtcbiAgICBjb25zdCBpbml0Q2FwdGNoYUZuID0gZ2V0SW5pdENhcHRjaGFGbihnKTtcbiAgICBpZiAoIWluaXRDYXB0Y2hhRm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1NpYXJhU2hpZWxkOiBJbml0Q2FwdGNoYSgpIGlzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgbG9hZGluZyBzY3JpcHRzLiBDaGVjayB3aGV0aGVyIENTUCBibG9ja2VkIHZlbmRvciBzY3JpcHRzIG9yIGlubGluZSBleGVjdXRpb24uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmFsbG93VmVuZG9yQ29uc29sZUxvZ3MpIHtcbiAgICAgIHN1cHByZXNzVmVuZG9yQ29uc29sZVdpbmRvdygpO1xuICAgICAgaW5zdGFsbFZlbmRvclJ1bnRpbWVFcnJvclN1cHByZXNzaW9uKCk7XG4gICAgfVxuICAgIHJ1bkluUm9vdFpvbmUoKCkgPT4gaW5pdENhcHRjaGFGbihvcHRpb25zLnB1YmxpY0tleSkpO1xuICAgIGF3YWl0IHdhaXRGb3JDaGVja0NhcHRjaGFBcGkoKTtcbiAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gIH0pKCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBwZW5kaW5nO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIGtlZXAgYHBlbmRpbmdgIGNhY2hlZCBmb3Igc3Vic2VxdWVudCBjYWxsZXJzXG4gIH1cbn1cblxuLyoqXG4gKiBDYWxscyBnbG9iYWwgYENoZWNrQ2FwdGNoYSgpYCBhbmQgcmV0dXJucyBpdHMgYm9vbGVhbiByZXN1bHQuXG4gKiBJZiBzdWNjZXNzZnVsLCByZXR1cm5zIGB7IG9rOiB0cnVlLCB0b2tlbj86IHN0cmluZyB9YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrU2lhcmFTaGllbGRDYXB0Y2hhKG9wdGlvbnM/OiB7IGFsbG93VmVuZG9yQ29uc29sZUxvZ3M/OiBib29sZWFuIH0pOiB7IG9rOiBib29sZWFuOyB0b2tlbj86IHN0cmluZyB9IHtcbiAgY29uc3QgZyA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpO1xuICBpZiAoIWcuQ2hlY2tDYXB0Y2hhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTaWFyYVNoaWVsZDogQ2hlY2tDYXB0Y2hhKCkgaXMgbm90IGF2YWlsYWJsZS4gRGlkIGluaXRTaWFyYVNoaWVsZCgpIHJ1biwgYW5kIGlzIENTUCBhbGxvd2luZyB0aGUgY2FwdGNoYSBzY3JpcHRzPycpO1xuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdUb2tlbiA9IHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycgJiYgZy5DeWJlclNpYXJhVG9rZW4ubGVuZ3RoID4gMCA/IGcuQ3liZXJTaWFyYVRva2VuIDogdW5kZWZpbmVkO1xuICBpZiAoZXhpc3RpbmdUb2tlbikge1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCB0b2tlbjogZXhpc3RpbmdUb2tlbiB9O1xuICB9XG5cbiAgaWYgKCFvcHRpb25zPy5hbGxvd1ZlbmRvckNvbnNvbGVMb2dzKSB7XG4gICAgc3VwcHJlc3NWZW5kb3JDb25zb2xlV2luZG93KCk7XG4gIH1cbiAgY29uc3Qgb2sgPSBnLkNoZWNrQ2FwdGNoYSgpO1xuICBjb25zdCB0b2tlbiA9IHR5cGVvZiBnLkN5YmVyU2lhcmFUb2tlbiA9PT0gJ3N0cmluZycgPyBnLkN5YmVyU2lhcmFUb2tlbiA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIG9rID8geyBvazogdHJ1ZSwgdG9rZW4gfSA6IHsgb2s6IGZhbHNlIH07XG59XG5cbi8qKlxuICogQXN5bmMtZnJpZW5kbHkgY2FwdGNoYSBjaGVjayB0byBoYW5kbGUgZGVsYXllZCB0b2tlbiBwb3B1bGF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tTaWFyYVNoaWVsZENhcHRjaGFBc3luYyhvcHRpb25zPzoge1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICBiZWZvcmVDaGVja0RlbGF5TXM/OiBudW1iZXI7XG59KTogUHJvbWlzZTx7IG9rOiBib29sZWFuOyB0b2tlbj86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHRpbWVvdXRNcyA9IG9wdGlvbnM/LnRpbWVvdXRNcyA/PyAxMjAwO1xuICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IDEyMDtcbiAgY29uc3QgYmVmb3JlQ2hlY2tEZWxheU1zID0gb3B0aW9ucz8uYmVmb3JlQ2hlY2tEZWxheU1zID8/IDE0MDtcbiAgY29uc3QgZXhpc3RpbmdUb2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgaWYgKHR5cGVvZiBleGlzdGluZ1Rva2VuID09PSAnc3RyaW5nJyAmJiBleGlzdGluZ1Rva2VuLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdG9rZW46IGV4aXN0aW5nVG9rZW4gfTtcbiAgfVxuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiZWZvcmVDaGVja0RlbGF5TXMpKTtcbiAgY29uc3QgZmlyc3RDaGVjayA9IGNoZWNrU2lhcmFTaGllbGRDYXB0Y2hhKCk7IC8vIG9uZSBBUEkgY2FsbCBvbmx5XG4gIGlmICghZmlyc3RDaGVjay5vaykgcmV0dXJuIGZpcnN0Q2hlY2s7XG4gIGlmIChmaXJzdENoZWNrLnRva2VuKSByZXR1cm4gZmlyc3RDaGVjaztcblxuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAvLyBUb2tlbiBjYW4gYmUgYXNzaWduZWQgc2xpZ2h0bHkgYWZ0ZXIgc3VjY2Vzc2Z1bCB2ZXJpZmljYXRpb24uXG4gIHdoaWxlIChEYXRlLm5vdygpIC0gc3RhcnRlZEF0IDwgdGltZW91dE1zKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgcG9sbEludGVydmFsTXMpKTtcbiAgICBjb25zdCB0b2tlbiA9IGdldFNpYXJhU2hpZWxkR2xvYmFscygpLkN5YmVyU2lhcmFUb2tlbjtcbiAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJyAmJiB0b2tlbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSwgdG9rZW4gfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBvazogdHJ1ZSB9O1xufVxuXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SiaraShieldComponent } from './siara-shield.component';
|
|
2
|
+
export { SiaraShieldLoaderService } from './siara-shield-loader.service';
|
|
3
|
+
export { getSiaraShieldGlobals } from './siara-shield.globals';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmFzaGllbGQtd29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lhcmFzaGllbGQtd29ya3NwYWNlL3NyYy9saWIvc2lhcmFzaGllbGQtd29ya3NwYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU2lhcmFTaGllbGRDb21wb25lbnQgfSBmcm9tICcuL3NpYXJhLXNoaWVsZC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2lhcmFTaGllbGRMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgZ2V0U2lhcmFTaGllbGRHbG9iYWxzIH0gZnJvbSAnLi9zaWFyYS1zaGllbGQuZ2xvYmFscyc7XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of siarashield-workspace
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/siarashield-workspace';
|
|
5
|
+
export * from './lib/siara-shield.component';
|
|
6
|
+
export * from './lib/siara-shield-loader.service';
|
|
7
|
+
export * from './lib/siara-shield.globals';
|
|
8
|
+
export * from './lib/siara-shield';
|
|
9
|
+
export * from './lib/siara-shield-csp';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzaWFyYXNoaWVsZC13b3Jrc3BhY2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWFyYXNoaWVsZC13b3Jrc3BhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lhcmEtc2hpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaWFyYS1zaGllbGQtbG9hZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lhcmEtc2hpZWxkLmdsb2JhbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2lhcmEtc2hpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NpYXJhLXNoaWVsZC1jc3AnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmFzaGllbGRfd29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2lhcmFzaGllbGQtd29ya3NwYWNlL3NyYy9zaWFyYXNoaWVsZF93b3Jrc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -83,8 +83,12 @@ function isLikelyVendorScriptRuntimeError(message, source) {
|
|
|
83
83
|
const normalizedMessage = String(message ?? '').trim().toLowerCase();
|
|
84
84
|
const normalizedSource = String(source ?? '').trim().toLowerCase();
|
|
85
85
|
const fromSiaraHost = normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');
|
|
86
|
+
const isKnownVendorDomError = normalizedMessage.includes("cannot read properties of null (reading 'removechild')") &&
|
|
87
|
+
(normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));
|
|
86
88
|
if (fromSiaraHost)
|
|
87
89
|
return true;
|
|
90
|
+
if (isKnownVendorDomError)
|
|
91
|
+
return true;
|
|
88
92
|
return normalizedMessage === 'script error.' || normalizedMessage === 'script error';
|
|
89
93
|
}
|
|
90
94
|
/**
|
|
@@ -282,8 +286,9 @@ function resolveCspNonce(documentRef, explicitNonce) {
|
|
|
282
286
|
function prepareScriptNonce(documentRef, explicitNonce) {
|
|
283
287
|
const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);
|
|
284
288
|
const patchState = getDynamicScriptNoncePatchState();
|
|
285
|
-
patchDynamicScriptInsertion();
|
|
286
289
|
if (resolvedNonce) {
|
|
290
|
+
// DOM patching is only needed when a CSP nonce must be propagated.
|
|
291
|
+
patchDynamicScriptInsertion();
|
|
287
292
|
patchState.nonceByDocument.set(documentRef, resolvedNonce);
|
|
288
293
|
ensureNonceMutationObserver(documentRef);
|
|
289
294
|
}
|
|
@@ -370,10 +375,10 @@ class SiaraShieldLoaderService {
|
|
|
370
375
|
loadScript(src, options) {
|
|
371
376
|
return loadScript(this.document, src, options);
|
|
372
377
|
}
|
|
373
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
374
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
378
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldLoaderService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
379
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldLoaderService, providedIn: 'root' });
|
|
375
380
|
}
|
|
376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldLoaderService, decorators: [{
|
|
377
382
|
type: Injectable,
|
|
378
383
|
args: [{ providedIn: 'root' }]
|
|
379
384
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
@@ -405,7 +410,7 @@ function runInRootZone$1(fn) {
|
|
|
405
410
|
const g = globalThis;
|
|
406
411
|
const zoneRootRun = g.Zone?.root?.run;
|
|
407
412
|
if (typeof zoneRootRun === 'function') {
|
|
408
|
-
return zoneRootRun(fn);
|
|
413
|
+
return zoneRootRun.call(g.Zone?.root, fn);
|
|
409
414
|
}
|
|
410
415
|
return fn();
|
|
411
416
|
}
|
|
@@ -510,6 +515,11 @@ class SiaraShieldComponent {
|
|
|
510
515
|
if (!g.CheckCaptcha) {
|
|
511
516
|
throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run, and is CSP allowing the captcha scripts?');
|
|
512
517
|
}
|
|
518
|
+
const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;
|
|
519
|
+
if (existingToken) {
|
|
520
|
+
this.token.emit(existingToken);
|
|
521
|
+
return true;
|
|
522
|
+
}
|
|
513
523
|
if (!this.allowVendorConsoleLogs) {
|
|
514
524
|
suppressVendorConsoleWindow();
|
|
515
525
|
}
|
|
@@ -527,6 +537,11 @@ class SiaraShieldComponent {
|
|
|
527
537
|
const timeoutMs = options?.timeoutMs ?? 2000;
|
|
528
538
|
const pollIntervalMs = options?.pollIntervalMs ?? 120;
|
|
529
539
|
const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;
|
|
540
|
+
const existingToken = getSiaraShieldGlobals().CyberSiaraToken;
|
|
541
|
+
if (typeof existingToken === 'string' && existingToken.length > 0) {
|
|
542
|
+
this.token.emit(existingToken);
|
|
543
|
+
return true;
|
|
544
|
+
}
|
|
530
545
|
await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));
|
|
531
546
|
const ok = this.checkCaptcha();
|
|
532
547
|
if (!ok)
|
|
@@ -546,10 +561,10 @@ class SiaraShieldComponent {
|
|
|
546
561
|
}
|
|
547
562
|
return true;
|
|
548
563
|
}
|
|
549
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
550
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
564
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldComponent, deps: [{ token: i0.ElementRef }, { token: SiaraShieldLoaderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
565
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SiaraShieldComponent, isStandalone: true, selector: "siara-shield", inputs: { publicKey: "publicKey", loadJQuery: "loadJQuery", cspNonce: "cspNonce", allowVendorConsoleLogs: "allowVendorConsoleLogs" }, outputs: { token: "token" }, ngImport: i0, template: `<div class="SiaraShield"></div>`, isInline: true, encapsulation: i0.ViewEncapsulation.None });
|
|
551
566
|
}
|
|
552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiaraShieldComponent, decorators: [{
|
|
553
568
|
type: Component,
|
|
554
569
|
args: [{
|
|
555
570
|
selector: 'siara-shield',
|
|
@@ -604,7 +619,7 @@ function runInRootZone(fn) {
|
|
|
604
619
|
const g = globalThis;
|
|
605
620
|
const zoneRootRun = g.Zone?.root?.run;
|
|
606
621
|
if (typeof zoneRootRun === 'function') {
|
|
607
|
-
return zoneRootRun(fn);
|
|
622
|
+
return zoneRootRun.call(g.Zone?.root, fn);
|
|
608
623
|
}
|
|
609
624
|
return fn();
|
|
610
625
|
}
|
|
@@ -690,6 +705,10 @@ function checkSiaraShieldCaptcha(options) {
|
|
|
690
705
|
if (!g.CheckCaptcha) {
|
|
691
706
|
throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run, and is CSP allowing the captcha scripts?');
|
|
692
707
|
}
|
|
708
|
+
const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;
|
|
709
|
+
if (existingToken) {
|
|
710
|
+
return { ok: true, token: existingToken };
|
|
711
|
+
}
|
|
693
712
|
if (!options?.allowVendorConsoleLogs) {
|
|
694
713
|
suppressVendorConsoleWindow();
|
|
695
714
|
}
|
|
@@ -704,6 +723,10 @@ async function checkSiaraShieldCaptchaAsync(options) {
|
|
|
704
723
|
const timeoutMs = options?.timeoutMs ?? 1200;
|
|
705
724
|
const pollIntervalMs = options?.pollIntervalMs ?? 120;
|
|
706
725
|
const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;
|
|
726
|
+
const existingToken = getSiaraShieldGlobals().CyberSiaraToken;
|
|
727
|
+
if (typeof existingToken === 'string' && existingToken.length > 0) {
|
|
728
|
+
return { ok: true, token: existingToken };
|
|
729
|
+
}
|
|
707
730
|
await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));
|
|
708
731
|
const firstCheck = checkSiaraShieldCaptcha(); // one API call only
|
|
709
732
|
if (!firstCheck.ok)
|