siarashield_workspace 0.0.42 → 0.0.43
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.
|
@@ -53,6 +53,21 @@ export function applyScriptNonce(script, nonce) {
|
|
|
53
53
|
}
|
|
54
54
|
script.setAttribute('nonce', resolvedNonce);
|
|
55
55
|
script.nonce = resolvedNonce;
|
|
56
|
+
// Some vendor HTML fragments include inline scripts that execute immediately during insertion.
|
|
57
|
+
// In strict CSP mode these run with a nonce, but can still race DOM insertion and crash
|
|
58
|
+
// (e.g. `null.querySelector(...)`). We defensively retry once on failure.
|
|
59
|
+
if (!script.src) {
|
|
60
|
+
const body = script.textContent ?? '';
|
|
61
|
+
if (body && !body.includes('__siaraShieldInlineRetry__')) {
|
|
62
|
+
script.textContent = `(function(){\n` +
|
|
63
|
+
` var __siaraShieldInlineRetry__ = true;\n` +
|
|
64
|
+
` function __run(){\n${body}\n }\n` +
|
|
65
|
+
` try { __run(); } catch (e) {\n` +
|
|
66
|
+
` try { setTimeout(function(){ try { __run(); } catch (_e) {} }, 0); } catch (_t) {}\n` +
|
|
67
|
+
` }\n` +
|
|
68
|
+
`})();`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
56
71
|
}
|
|
57
72
|
function applyStyleNonce(style, nonce) {
|
|
58
73
|
const resolvedNonce = normalizeNonce(nonce);
|
|
@@ -300,4 +315,4 @@ export function loadScript(documentRef, src, options) {
|
|
|
300
315
|
pendingBySrc.set(src, pending);
|
|
301
316
|
return pending;
|
|
302
317
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFDakQsV0FBVyxDQUFDLDhCQUE4QixDQUFDLEdBQUc7WUFDNUMsZUFBZSxFQUFFLElBQUksT0FBTyxFQUFvQjtZQUNoRCxrQkFBa0IsRUFBRSxJQUFJLE9BQU8sRUFBOEI7WUFDN0QsNkJBQTZCLEVBQUUsSUFBSSxPQUFPLEVBQXlCO1lBQ25FLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUFxQjtJQUMzQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDOUIsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFVO0lBQ2pDLE9BQU8sSUFBSSxZQUFZLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBVTtJQUNoQyxPQUFPLElBQUksWUFBWSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUM7QUFDM0UsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsSUFBVTtJQUN6QyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN4RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0QsT0FBTyxHQUFHLEtBQUssWUFBWSxDQUFDO0FBQzlCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBeUIsRUFBRSxLQUFjO0lBQ3hFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBdUIsRUFBRSxLQUFjO0lBQzlELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBcUIsRUFBRSxLQUFjO0lBQzNELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxQyxxREFBcUQ7SUFDcEQsSUFBNkMsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVUsRUFBRSxLQUFjO0lBQ2xELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDMUIsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVU7SUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRywrQkFBK0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakYsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFdBQXFCO0lBQzNELE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDckQsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDbkMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLHNDQUFzQyxDQUFDLElBQVU7SUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBVSxFQUFFLEtBQWM7SUFDbkQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPO0lBRW5CLHVDQUF1QztJQUN2QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuRixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTztJQUNULENBQUM7SUFFRCw2RkFBNkY7SUFDN0YsSUFBSSxJQUFJLFlBQVksT0FBTyxJQUFJLElBQUksWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZGLEtBQUssTUFBTSxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsZ0JBQWdCLENBQUMsRUFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFDLFdBQXFCO0lBQ3hELE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFDckQsSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDbkQsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDaEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsNkZBQTZGO0lBQzdGLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxlQUFlLElBQUksV0FBVyxDQUFDO0lBQ3hELFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBQyxXQUFxQjtJQUMxRCxNQUFNLFVBQVUsR0FBRywrQkFBK0IsRUFBRSxDQUFDO0lBQ3JELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEUsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPO0lBQ3RCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQVksRUFBRSxLQUFhO0lBQ3RELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRWhDLDJDQUEyQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxXQUFXLGFBQWEsR0FBRyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBdUIsRUFBRSxFQUFFO1FBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ2hELGtDQUFrQztZQUNsQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGLG1EQUFtRDtJQUNuRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztJQUN0QyxNQUFNLHdCQUF3QixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNuQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoRCxJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBRUQsU0FBUywyQkFBMkI7SUFDbEMsTUFBTSxVQUFVLEdBQUcsK0JBQStCLEVBQUUsQ0FBQztJQUNyRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUN6RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3pELE1BQU0sMEJBQTBCLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztJQUV4RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxVQUEwQixJQUFPO1FBQzVELG9HQUFvRztRQUNwRyxJQUFJLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBTSxDQUFDO0lBQ25ELENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQTBCLElBQU8sRUFBRSxLQUFrQjtRQUNqRixJQUFJLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQU0sQ0FBQztJQUMzRCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUEwQixJQUFVLEVBQUUsS0FBUTtRQUMxRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBTSxDQUFDO0lBQzNELENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxRQUF3QixFQUFFLElBQVk7UUFDckYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDcEYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRSxPQUFPLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQztJQUVGLFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzVCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFdBQXdDLEVBQUUsYUFBc0I7SUFDOUYsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBb0IsZUFBZSxDQUFDLENBQUM7SUFDdEYsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQWtCLHdCQUF3QixDQUFDLENBQUM7SUFDdkYsT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsV0FBd0MsRUFBRSxhQUFzQjtJQUNqRyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sVUFBVSxHQUFHLCtCQUErQixFQUFFLENBQUM7SUFFckQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixtRUFBbUU7UUFDbkUsMkJBQTJCLEVBQUUsQ0FBQztRQUM5QixNQUFNLG9CQUFvQixHQUFHLFdBQVcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNwRSwyQkFBMkIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0MsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxXQUFxQixFQUFFLEdBQVcsRUFBRSxPQUEyQjtJQUN4RixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBb0IsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRXRGLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQixZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsZ0RBQWdELENBQUMsQ0FBQyxDQUFDO1FBQ25HLENBQUMsQ0FBQztRQUNGLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBRUgsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0IsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgU2NyaXB0U3RhdHVzID0gJ2xvYWRpbmcnIHwgJ2xvYWRlZCcgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdExvYWRPcHRpb25zIHtcbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgbm9uY2VCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+O1xuICBvYnNlcnZlckJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIE11dGF0aW9uT2JzZXJ2ZXI+O1xuICBpbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+O1xuICBwYXRjaGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4+KCk7XG5jb25zdCBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVCA9IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+Pj4oKTtcbmNvbnN0IERZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWSA9ICdfX3NpYXJhU2hpZWxkRHluYW1pY1NjcmlwdE5vbmNlU3RhdGVfXyc7XG5cbmZ1bmN0aW9uIGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4ge1xuICBsZXQgc3RhdHVzQnlTcmMgPSBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghc3RhdHVzQnlTcmMpIHtcbiAgICBzdGF0dXNCeVNyYyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRTdGF0dXM+KCk7XG4gICAgU0NSSVBUX1NUQVRVU19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHN0YXR1c0J5U3JjKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0dXNCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IHBlbmRpbmdCeVNyYyA9IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghcGVuZGluZ0J5U3JjKSB7XG4gICAgcGVuZGluZ0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICAgU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBwZW5kaW5nQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpOiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICAgIFtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldPzogRHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZTtcbiAgfTtcblxuICBpZiAoIWdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0pIHtcbiAgICBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldID0ge1xuICAgICAgbm9uY2VCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgc3RyaW5nPigpLFxuICAgICAgb2JzZXJ2ZXJCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj4oKSxcbiAgICAgIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+KCksXG4gICAgICBwYXRjaGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5vbmNlKG5vbmNlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRyaW1tZWQgPSBub25jZT8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCA/IHRyaW1tZWQgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzU2NyaXB0RWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MU2NyaXB0RWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTdHlsZUVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZSc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVzaGVldExpbmtFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxMaW5rRWxlbWVudCB7XG4gIGlmICghKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2xpbmsnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlbCA9IChub2RlLmdldEF0dHJpYnV0ZSgncmVsJykgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiByZWwgPT09ICdzdHlsZXNoZWV0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcbiAgaWYgKCFyZXNvbHZlZE5vbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlTdHlsZU5vbmNlKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XG4gIHN0eWxlLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlMaW5rTm9uY2UobGluazogSFRNTExpbmtFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaW5rLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgLy8gYEhUTUxMaW5rRWxlbWVudC5ub25jZWAgZXhpc3RzIGluIG1vZGVybiBicm93c2Vycy5cbiAgKGxpbmsgYXMgSFRNTExpbmtFbGVtZW50ICYgeyBub25jZT86IHN0cmluZyB9KS5ub25jZSA9IHJlc29sdmVkTm9uY2U7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Tm9uY2VUb05vZGUobm9kZTogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzU2NyaXB0RWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZUVsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseVN0eWxlTm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseUxpbmtOb25jZShub2RlLCBub25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBhcHBseU5vbmNlVG9Ob2RlKG5vZGUsIG5vbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgbGV0IHRyYWNrZWRTY3JpcHRzID0gcGF0Y2hTdGF0ZS5pbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIXRyYWNrZWRTY3JpcHRzKSB7XG4gICAgdHJhY2tlZFNjcmlwdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgdHJhY2tlZFNjcmlwdHMpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNrZWRTY3JpcHRzO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gIGlmICghaXNTY3JpcHRFbGVtZW50KG5vZGUpIHx8IEJvb2xlYW4obm9kZS5zcmMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0Qm9keSA9IChub2RlLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIGlmICghc2NyaXB0Qm9keSB8fCAhc2NyaXB0Qm9keS5pbmNsdWRlcygnY3VycmVudExhbmdDb2RlJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHRyYWNrZWRTY3JpcHRzID0gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmKTtcbiAgaWYgKHRyYWNrZWRTY3JpcHRzLmhhcyhzY3JpcHRCb2R5KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJhY2tlZFNjcmlwdHMuYWRkKHNjcmlwdEJvZHkpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdhbGtBbmRBcHBseU5vbmNlKHJvb3Q6IE5vZGUsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghbm9uY2UpIHJldHVybjtcblxuICAvLyBGYXN0IHBhdGg6IHJvb3QgaXRzZWxmIGlzIG5vbmNlYWJsZS5cbiAgaWYgKGlzU2NyaXB0RWxlbWVudChyb290KSB8fCBpc1N0eWxlRWxlbWVudChyb290KSB8fCBpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChyb290KSkge1xuICAgIGFwcGx5Tm9uY2VUb05vZGUocm9vdCwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbW1vbiBwYXRoIGZvciBqUXVlcnk6IGFwcGVuZCBEb2N1bWVudEZyYWdtZW50IGNvbnRhaW5pbmcgbm9kZXMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxuICBpZiAocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb25zdCBub25jZWFibGUgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2NyaXB0LHN0eWxlLGxpbmtbcmVsPVwic3R5bGVzaGVldFwiXScpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZWwgb2Ygbm9uY2VhYmxlKSB7XG4gICAgICBhcHBseU5vbmNlVG9Ob2RlKGVsIGFzIHVua25vd24gYXMgTm9kZSwgbm9uY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVOb25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgIGNvbnN0IG5vbmNlID0gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgICBpZiAoIW5vbmNlKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVjb3JkLmFkZGVkTm9kZXMpIHtcbiAgICAgICAgd2Fsa0FuZEFwcGx5Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gT2JzZXJ2ZSB0aGUgZnVsbCBkb2N1bWVudCBiZWNhdXNlIHNjcmlwdHMgY2FuIGJlIGluamVjdGVkIGludG8gYm9keS9oZWFkIGJ5IHZlbmRvci9qUXVlcnkuXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudFJlZi5kb2N1bWVudEVsZW1lbnQgPz8gZG9jdW1lbnRSZWY7XG4gIG9ic2VydmVyLm9ic2VydmUocm9vdCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgb2JzZXJ2ZXIpO1xufVxuXG5mdW5jdGlvbiB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgY29uc3Qgb2JzZXJ2ZXIgPSBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIW9ic2VydmVyKSByZXR1cm47XG4gIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Tm9uY2VJbnRvSHRtbChodG1sOiBzdHJpbmcsIG5vbmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHJldHVybiBodG1sO1xuXG4gIC8vIElmIHRhZyBhbHJlYWR5IGluY2x1ZGVzIG5vbmNlLCBsZWF2ZSBpdC5cbiAgY29uc3Qgd2l0aE5vbmNlQXR0ciA9IGAgbm9uY2U9XCIke3Jlc29sdmVkTm9uY2V9XCJgO1xuXG4gIGNvbnN0IGFkZE5vbmNlVG9UYWcgPSAodGFnOiAnc2NyaXB0JyB8ICdzdHlsZScpID0+IHtcbiAgICBjb25zdCBvcGVuVGFnID0gbmV3IFJlZ0V4cChgPCR7dGFnfShcXFxcc1tePl0qPyk/PmAsICdnaScpO1xuICAgIHJldHVybiAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICAgIGlucHV0LnJlcGxhY2Uob3BlblRhZywgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAvLyBJbnNlcnQgbm9uY2UgYmVmb3JlIGNsb3NpbmcgYD5gXG4gICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLy8gRm9yIGxpbmsgcmVsPXN0eWxlc2hlZXQsIGFkZCBub25jZSB3aGVuIG1pc3NpbmcuXG4gIGNvbnN0IGxpbmtPcGVuVGFnID0gLzxsaW5rXFxiW14+XSo+L2dpO1xuICBjb25zdCBhZGROb25jZVRvU3R5bGVzaGVldExpbmsgPSAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICBpbnB1dC5yZXBsYWNlKGxpbmtPcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgaWYgKCEvXFxicmVsXFxzKj1cXHMqW1wiJ10/c3R5bGVzaGVldFtcIiddPy9pLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rKGFkZE5vbmNlVG9UYWcoJ3N0eWxlJykoYWRkTm9uY2VUb1RhZygnc2NyaXB0JykoaHRtbCkpKTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBpZiAocGF0Y2hTdGF0ZS5wYXRjaGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRDaGlsZCA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO1xuICBjb25zdCBvcmlnaW5hbEluc2VydEJlZm9yZSA9IE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXBsYWNlQ2hpbGQgPSBOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MID0gRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MO1xuXG4gIE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBUKTogVCB7XG4gICAgLy8gVmVuZG9yIGNhcHRjaGEgaW5qZWN0cyBhbiBpbmxpbmUgc25pcHBldCB3aXRoIGBjdXJyZW50TGFuZ0NvZGVgIHRoYXQgY3Jhc2hlcyB3aGVuIGFwcGVuZGVkIHR3aWNlLlxuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEFwcGVuZENoaWxkLmNhbGwodGhpcywgbm9kZSkgYXMgVDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQsIGNoaWxkOiBOb2RlIHwgbnVsbCk6IFQge1xuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEJlZm9yZS5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogTm9kZSwgY2hpbGQ6IFQpOiBUIHtcbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlQ2hpbGQuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcbiAgfTtcblxuICBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwgPSBmdW5jdGlvbiAocG9zaXRpb246IEluc2VydFBvc2l0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJlZiA9IHRoaXMub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBub25jZSA9IGRvY3VtZW50UmVmID8gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwYXRjaGVkVGV4dCA9IG5vbmNlID8gaW5qZWN0Tm9uY2VJbnRvSHRtbCh0ZXh0LCBub25jZSkgOiB0ZXh0O1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEFkamFjZW50SFRNTC5jYWxsKHRoaXMsIHBvc2l0aW9uLCBwYXRjaGVkVGV4dCk7XG4gIH07XG5cbiAgcGF0Y2hTdGF0ZS5wYXRjaGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRFeHBsaWNpdE5vbmNlID0gbm9ybWFsaXplTm9uY2UoZXhwbGljaXROb25jZSk7XG4gIGlmIChyZXNvbHZlZEV4cGxpY2l0Tm9uY2UpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRFeHBsaWNpdE5vbmNlO1xuICB9XG5cbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzY3JpcHRXaXRoTm9uY2UgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pignc2NyaXB0W25vbmNlXScpO1xuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcbiAgaWYgKG5vbmNlRnJvbVNjcmlwdCkge1xuICAgIHJldHVybiBub25jZUZyb21TY3JpcHQ7XG4gIH1cblxuICBjb25zdCBub25jZU1ldGEgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxNZXRhRWxlbWVudD4oJ21ldGFbbmFtZT1cImNzcC1ub25jZVwiXScpO1xuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZiwgZXhwbGljaXROb25jZSk7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG5cbiAgaWYgKHJlc29sdmVkTm9uY2UpIHtcbiAgICAvLyBET00gcGF0Y2hpbmcgaXMgb25seSBuZWVkZWQgd2hlbiBhIENTUCBub25jZSBtdXN0IGJlIHByb3BhZ2F0ZWQuXG4gICAgcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk7XG4gICAgY29uc3QgZWZmZWN0aXZlRG9jdW1lbnRSZWYgPSBkb2N1bWVudFJlZiA/PyBnbG9iYWxUaGlzLmRvY3VtZW50O1xuICAgIGlmIChlZmZlY3RpdmVEb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuc2V0KGVmZmVjdGl2ZURvY3VtZW50UmVmLCByZXNvbHZlZE5vbmNlKTtcbiAgICAgIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihlZmZlY3RpdmVEb2N1bWVudFJlZik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbiAgICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWROb25jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoZG9jdW1lbnRSZWY6IERvY3VtZW50LCBzcmM6IHN0cmluZywgb3B0aW9ucz86IFNjcmlwdExvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG5vbmNlID0gbm9ybWFsaXplTm9uY2Uob3B0aW9ucz8ubm9uY2UpO1xuICBjb25zdCBzdGF0dXNCeVNyYyA9IGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgcGVuZGluZ0J5U3JjID0gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2UoZXhpc3RpbmcsIG5vbmNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAoc3RhdHVzID09PSAnbG9hZGVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nQnlTcmMuZ2V0KHNyYyk7XG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHN0YXR1c0J5U3JjLnNldChzcmMsICdsb2FkaW5nJyk7XG5cbiAgY29uc3QgcGVuZGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudFJlZi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgYXBwbHlTY3JpcHROb25jZShzY3JpcHQsIG5vbmNlKTtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRlZCcpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH07XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnZXJyb3InKTtcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHNjcmlwdDogJHtzcmN9LiBDaGVjayBDU1AgYWxsb3dsaXN0IGFuZCBub25jZSBjb25maWd1cmF0aW9uLmApKTtcbiAgICB9O1xuICAgIGRvY3VtZW50UmVmLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfSk7XG5cbiAgcGVuZGluZ0J5U3JjLnNldChzcmMsIHBlbmRpbmcpO1xuICByZXR1cm4gcGVuZGluZztcbn1cbiJdfQ==
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lhcmEtc2hpZWxkLXNjcmlwdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpYXJhc2hpZWxkLXdvcmtzcGFjZS9zcmMvbGliL3NpYXJhLXNoaWVsZC1zY3JpcHQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBdUMsQ0FBQztBQUNyRixNQUFNLDBCQUEwQixHQUFHLElBQUksT0FBTyxFQUF3QyxDQUFDO0FBQ3ZGLE1BQU0sOEJBQThCLEdBQUcsd0NBQXdDLENBQUM7QUFFaEYsU0FBUyxjQUFjLENBQUMsV0FBcUI7SUFDM0MsSUFBSSxXQUFXLEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFDOUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFdBQXFCO0lBQzVDLElBQUksWUFBWSxHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsWUFBWSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ2hELDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxTQUFTLCtCQUErQjtJQUN0QyxNQUFNLFdBQVcsR0FBRyxVQUVuQixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7UUFD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QUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgU2NyaXB0U3RhdHVzID0gJ2xvYWRpbmcnIHwgJ2xvYWRlZCcgfCAnZXJyb3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdExvYWRPcHRpb25zIHtcbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgbm9uY2VCeURvY3VtZW50OiBXZWFrTWFwPERvY3VtZW50LCBzdHJpbmc+O1xuICBvYnNlcnZlckJ5RG9jdW1lbnQ6IFdlYWtNYXA8RG9jdW1lbnQsIE11dGF0aW9uT2JzZXJ2ZXI+O1xuICBpbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudDogV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+O1xuICBwYXRjaGVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5UID0gbmV3IFdlYWtNYXA8RG9jdW1lbnQsIE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4+KCk7XG5jb25zdCBTQ1JJUFRfUEVORElOR19CWV9ET0NVTUVOVCA9IG5ldyBXZWFrTWFwPERvY3VtZW50LCBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+Pj4oKTtcbmNvbnN0IERZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWSA9ICdfX3NpYXJhU2hpZWxkRHluYW1pY1NjcmlwdE5vbmNlU3RhdGVfXyc7XG5cbmZ1bmN0aW9uIGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFNjcmlwdFN0YXR1cz4ge1xuICBsZXQgc3RhdHVzQnlTcmMgPSBTQ1JJUFRfU1RBVFVTX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghc3RhdHVzQnlTcmMpIHtcbiAgICBzdGF0dXNCeVNyYyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRTdGF0dXM+KCk7XG4gICAgU0NSSVBUX1NUQVRVU19CWV9ET0NVTUVOVC5zZXQoZG9jdW1lbnRSZWYsIHN0YXR1c0J5U3JjKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0dXNCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IHBlbmRpbmdCeVNyYyA9IFNDUklQVF9QRU5ESU5HX0JZX0RPQ1VNRU5ULmdldChkb2N1bWVudFJlZik7XG4gIGlmICghcGVuZGluZ0J5U3JjKSB7XG4gICAgcGVuZGluZ0J5U3JjID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICAgU0NSSVBUX1BFTkRJTkdfQllfRE9DVU1FTlQuc2V0KGRvY3VtZW50UmVmLCBwZW5kaW5nQnlTcmMpO1xuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdCeVNyYztcbn1cblxuZnVuY3Rpb24gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpOiBEeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICAgIFtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldPzogRHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZTtcbiAgfTtcblxuICBpZiAoIWdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV0pIHtcbiAgICBnbG9iYWxTdGF0ZVtEWU5BTUlDX1NDUklQVF9OT05DRV9TVEFURV9LRVldID0ge1xuICAgICAgbm9uY2VCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgc3RyaW5nPigpLFxuICAgICAgb2JzZXJ2ZXJCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgTXV0YXRpb25PYnNlcnZlcj4oKSxcbiAgICAgIGlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50OiBuZXcgV2Vha01hcDxEb2N1bWVudCwgU2V0PHN0cmluZz4+KCksXG4gICAgICBwYXRjaGVkOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW0RZTkFNSUNfU0NSSVBUX05PTkNFX1NUQVRFX0tFWV07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5vbmNlKG5vbmNlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRyaW1tZWQgPSBub25jZT8udHJpbSgpO1xuICByZXR1cm4gdHJpbW1lZCA/IHRyaW1tZWQgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzU2NyaXB0RWxlbWVudChub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MU2NyaXB0RWxlbWVudCB7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NjcmlwdCc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxTdHlsZUVsZW1lbnQge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdHlsZSc7XG59XG5cbmZ1bmN0aW9uIGlzU3R5bGVzaGVldExpbmtFbGVtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIEhUTUxMaW5rRWxlbWVudCB7XG4gIGlmICghKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB8fCBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ2xpbmsnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHJlbCA9IChub2RlLmdldEF0dHJpYnV0ZSgncmVsJykgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiByZWwgPT09ICdzdHlsZXNoZWV0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2NyaXB0Tm9uY2Uoc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IG5vcm1hbGl6ZU5vbmNlKG5vbmNlKTtcbiAgaWYgKCFyZXNvbHZlZE5vbmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgc2NyaXB0Lm5vbmNlID0gcmVzb2x2ZWROb25jZTtcblxuICAvLyBTb21lIHZlbmRvciBIVE1MIGZyYWdtZW50cyBpbmNsdWRlIGlubGluZSBzY3JpcHRzIHRoYXQgZXhlY3V0ZSBpbW1lZGlhdGVseSBkdXJpbmcgaW5zZXJ0aW9uLlxuICAvLyBJbiBzdHJpY3QgQ1NQIG1vZGUgdGhlc2UgcnVuIHdpdGggYSBub25jZSwgYnV0IGNhbiBzdGlsbCByYWNlIERPTSBpbnNlcnRpb24gYW5kIGNyYXNoXG4gIC8vIChlLmcuIGBudWxsLnF1ZXJ5U2VsZWN0b3IoLi4uKWApLiBXZSBkZWZlbnNpdmVseSByZXRyeSBvbmNlIG9uIGZhaWx1cmUuXG4gIGlmICghc2NyaXB0LnNyYykge1xuICAgIGNvbnN0IGJvZHkgPSBzY3JpcHQudGV4dENvbnRlbnQgPz8gJyc7XG4gICAgaWYgKGJvZHkgJiYgIWJvZHkuaW5jbHVkZXMoJ19fc2lhcmFTaGllbGRJbmxpbmVSZXRyeV9fJykpIHtcbiAgICAgIHNjcmlwdC50ZXh0Q29udGVudCA9IGAoZnVuY3Rpb24oKXtcXG5gICtcbiAgICAgICAgYCAgdmFyIF9fc2lhcmFTaGllbGRJbmxpbmVSZXRyeV9fID0gdHJ1ZTtcXG5gICtcbiAgICAgICAgYCAgZnVuY3Rpb24gX19ydW4oKXtcXG4ke2JvZHl9XFxuICB9XFxuYCArXG4gICAgICAgIGAgIHRyeSB7IF9fcnVuKCk7IH0gY2F0Y2ggKGUpIHtcXG5gICtcbiAgICAgICAgYCAgICB0cnkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRyeSB7IF9fcnVuKCk7IH0gY2F0Y2ggKF9lKSB7fSB9LCAwKTsgfSBjYXRjaCAoX3QpIHt9XFxuYCArXG4gICAgICAgIGAgIH1cXG5gICtcbiAgICAgICAgYH0pKCk7YDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlTdHlsZU5vbmNlKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgcmVzb2x2ZWROb25jZSk7XG4gIHN0eWxlLm5vbmNlID0gcmVzb2x2ZWROb25jZTtcbn1cblxuZnVuY3Rpb24gYXBwbHlMaW5rTm9uY2UobGluazogSFRNTExpbmtFbGVtZW50LCBub25jZT86IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaW5rLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCByZXNvbHZlZE5vbmNlKTtcbiAgLy8gYEhUTUxMaW5rRWxlbWVudC5ub25jZWAgZXhpc3RzIGluIG1vZGVybiBicm93c2Vycy5cbiAgKGxpbmsgYXMgSFRNTExpbmtFbGVtZW50ICYgeyBub25jZT86IHN0cmluZyB9KS5ub25jZSA9IHJlc29sdmVkTm9uY2U7XG59XG5cbmZ1bmN0aW9uIGFwcGx5Tm9uY2VUb05vZGUobm9kZTogTm9kZSwgbm9uY2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGlzU2NyaXB0RWxlbWVudChub2RlKSkge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZUVsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseVN0eWxlTm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNTdHlsZXNoZWV0TGlua0VsZW1lbnQobm9kZSkpIHtcbiAgICBhcHBseUxpbmtOb25jZShub2RlLCBub25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUcmFja2VkTm9uY2Uobm9kZTogTm9kZSk6IHZvaWQge1xuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vbmNlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpLm5vbmNlQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBhcHBseU5vbmNlVG9Ob2RlKG5vZGUsIG5vbmNlKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmOiBEb2N1bWVudCk6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgbGV0IHRyYWNrZWRTY3JpcHRzID0gcGF0Y2hTdGF0ZS5pbmxpbmVDYXB0Y2hhU2NyaXB0QnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIXRyYWNrZWRTY3JpcHRzKSB7XG4gICAgdHJhY2tlZFNjcmlwdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBwYXRjaFN0YXRlLmlubGluZUNhcHRjaGFTY3JpcHRCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgdHJhY2tlZFNjcmlwdHMpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNrZWRTY3JpcHRzO1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlOiBOb2RlKTogYm9vbGVhbiB7XG4gIGlmICghaXNTY3JpcHRFbGVtZW50KG5vZGUpIHx8IEJvb2xlYW4obm9kZS5zcmMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc2NyaXB0Qm9keSA9IChub2RlLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIGlmICghc2NyaXB0Qm9keSB8fCAhc2NyaXB0Qm9keS5pbmNsdWRlcygnY3VycmVudExhbmdDb2RlJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkb2N1bWVudFJlZiA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHRyYWNrZWRTY3JpcHRzID0gZ2V0VHJhY2tlZElubGluZUNhcHRjaGFTY3JpcHRzKGRvY3VtZW50UmVmKTtcbiAgaWYgKHRyYWNrZWRTY3JpcHRzLmhhcyhzY3JpcHRCb2R5KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdHJhY2tlZFNjcmlwdHMuYWRkKHNjcmlwdEJvZHkpO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdhbGtBbmRBcHBseU5vbmNlKHJvb3Q6IE5vZGUsIG5vbmNlPzogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghbm9uY2UpIHJldHVybjtcblxuICAvLyBGYXN0IHBhdGg6IHJvb3QgaXRzZWxmIGlzIG5vbmNlYWJsZS5cbiAgaWYgKGlzU2NyaXB0RWxlbWVudChyb290KSB8fCBpc1N0eWxlRWxlbWVudChyb290KSB8fCBpc1N0eWxlc2hlZXRMaW5rRWxlbWVudChyb290KSkge1xuICAgIGFwcGx5Tm9uY2VUb05vZGUocm9vdCwgbm9uY2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbW1vbiBwYXRoIGZvciBqUXVlcnk6IGFwcGVuZCBEb2N1bWVudEZyYWdtZW50IGNvbnRhaW5pbmcgbm9kZXMgY3JlYXRlZCB2aWEgSFRNTCBwYXJzaW5nLlxuICBpZiAocm9vdCBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgcm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb25zdCBub25jZWFibGUgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2NyaXB0LHN0eWxlLGxpbmtbcmVsPVwic3R5bGVzaGVldFwiXScpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZWwgb2Ygbm9uY2VhYmxlKSB7XG4gICAgICBhcHBseU5vbmNlVG9Ob2RlKGVsIGFzIHVua25vd24gYXMgTm9kZSwgbm9uY2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnN1cmVOb25jZU11dGF0aW9uT2JzZXJ2ZXIoZG9jdW1lbnRSZWY6IERvY3VtZW50KTogdm9pZCB7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG4gIGlmIChwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigocmVjb3JkcykgPT4ge1xuICAgIGNvbnN0IG5vbmNlID0gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKTtcbiAgICBpZiAoIW5vbmNlKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVjb3JkLmFkZGVkTm9kZXMpIHtcbiAgICAgICAgd2Fsa0FuZEFwcGx5Tm9uY2Uobm9kZSwgbm9uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gT2JzZXJ2ZSB0aGUgZnVsbCBkb2N1bWVudCBiZWNhdXNlIHNjcmlwdHMgY2FuIGJlIGluamVjdGVkIGludG8gYm9keS9oZWFkIGJ5IHZlbmRvci9qUXVlcnkuXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudFJlZi5kb2N1bWVudEVsZW1lbnQgPz8gZG9jdW1lbnRSZWY7XG4gIG9ic2VydmVyLm9ic2VydmUocm9vdCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIHBhdGNoU3RhdGUub2JzZXJ2ZXJCeURvY3VtZW50LnNldChkb2N1bWVudFJlZiwgb2JzZXJ2ZXIpO1xufVxuXG5mdW5jdGlvbiB0ZWFyZG93bk5vbmNlTXV0YXRpb25PYnNlcnZlcihkb2N1bWVudFJlZjogRG9jdW1lbnQpOiB2b2lkIHtcbiAgY29uc3QgcGF0Y2hTdGF0ZSA9IGdldER5bmFtaWNTY3JpcHROb25jZVBhdGNoU3RhdGUoKTtcbiAgY29uc3Qgb2JzZXJ2ZXIgPSBwYXRjaFN0YXRlLm9ic2VydmVyQnlEb2N1bWVudC5nZXQoZG9jdW1lbnRSZWYpO1xuICBpZiAoIW9ic2VydmVyKSByZXR1cm47XG4gIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgcGF0Y2hTdGF0ZS5vYnNlcnZlckJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Tm9uY2VJbnRvSHRtbChodG1sOiBzdHJpbmcsIG5vbmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZE5vbmNlID0gbm9ybWFsaXplTm9uY2Uobm9uY2UpO1xuICBpZiAoIXJlc29sdmVkTm9uY2UpIHJldHVybiBodG1sO1xuXG4gIC8vIElmIHRhZyBhbHJlYWR5IGluY2x1ZGVzIG5vbmNlLCBsZWF2ZSBpdC5cbiAgY29uc3Qgd2l0aE5vbmNlQXR0ciA9IGAgbm9uY2U9XCIke3Jlc29sdmVkTm9uY2V9XCJgO1xuXG4gIGNvbnN0IGFkZE5vbmNlVG9UYWcgPSAodGFnOiAnc2NyaXB0JyB8ICdzdHlsZScpID0+IHtcbiAgICBjb25zdCBvcGVuVGFnID0gbmV3IFJlZ0V4cChgPCR7dGFnfShcXFxcc1tePl0qPyk/PmAsICdnaScpO1xuICAgIHJldHVybiAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICAgIGlucHV0LnJlcGxhY2Uob3BlblRhZywgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAvLyBJbnNlcnQgbm9uY2UgYmVmb3JlIGNsb3NpbmcgYD5gXG4gICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKC8+JC8sIGAke3dpdGhOb25jZUF0dHJ9PmApO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLy8gRm9yIGxpbmsgcmVsPXN0eWxlc2hlZXQsIGFkZCBub25jZSB3aGVuIG1pc3NpbmcuXG4gIGNvbnN0IGxpbmtPcGVuVGFnID0gLzxsaW5rXFxiW14+XSo+L2dpO1xuICBjb25zdCBhZGROb25jZVRvU3R5bGVzaGVldExpbmsgPSAoaW5wdXQ6IHN0cmluZykgPT5cbiAgICBpbnB1dC5yZXBsYWNlKGxpbmtPcGVuVGFnLCAobWF0Y2gpID0+IHtcbiAgICAgIGlmICgvW1xcc1wiJ11ub25jZVxccyo9Ly50ZXN0KG1hdGNoKSkgcmV0dXJuIG1hdGNoO1xuICAgICAgaWYgKCEvXFxicmVsXFxzKj1cXHMqW1wiJ10/c3R5bGVzaGVldFtcIiddPy9pLnRlc3QobWF0Y2gpKSByZXR1cm4gbWF0Y2g7XG4gICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgvPiQvLCBgJHt3aXRoTm9uY2VBdHRyfT5gKTtcbiAgICB9KTtcblxuICByZXR1cm4gYWRkTm9uY2VUb1N0eWxlc2hlZXRMaW5rKGFkZE5vbmNlVG9UYWcoJ3N0eWxlJykoYWRkTm9uY2VUb1RhZygnc2NyaXB0JykoaHRtbCkpKTtcbn1cblxuZnVuY3Rpb24gcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk6IHZvaWQge1xuICBjb25zdCBwYXRjaFN0YXRlID0gZ2V0RHluYW1pY1NjcmlwdE5vbmNlUGF0Y2hTdGF0ZSgpO1xuICBpZiAocGF0Y2hTdGF0ZS5wYXRjaGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxBcHBlbmRDaGlsZCA9IE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkO1xuICBjb25zdCBvcmlnaW5hbEluc2VydEJlZm9yZSA9IE5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtcbiAgY29uc3Qgb3JpZ2luYWxSZXBsYWNlQ2hpbGQgPSBOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ7XG4gIGNvbnN0IG9yaWdpbmFsSW5zZXJ0QWRqYWNlbnRIVE1MID0gRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRIVE1MO1xuXG4gIE5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkID0gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOb2RlPihub2RlOiBUKTogVCB7XG4gICAgLy8gVmVuZG9yIGNhcHRjaGEgaW5qZWN0cyBhbiBpbmxpbmUgc25pcHBldCB3aXRoIGBjdXJyZW50TGFuZ0NvZGVgIHRoYXQgY3Jhc2hlcyB3aGVuIGFwcGVuZGVkIHR3aWNlLlxuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEFwcGVuZENoaWxkLmNhbGwodGhpcywgbm9kZSkgYXMgVDtcbiAgfTtcblxuICBOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiA8VCBleHRlbmRzIE5vZGU+KG5vZGU6IFQsIGNoaWxkOiBOb2RlIHwgbnVsbCk6IFQge1xuICAgIGlmIChzaG91bGRTa2lwRHVwbGljYXRlSW5saW5lQ2FwdGNoYVNjcmlwdChub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGFwcGx5VHJhY2tlZE5vbmNlKG5vZGUpO1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEJlZm9yZS5jYWxsKHRoaXMsIG5vZGUsIGNoaWxkKSBhcyBUO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgTm9kZT4obm9kZTogTm9kZSwgY2hpbGQ6IFQpOiBUIHtcbiAgICBhcHBseVRyYWNrZWROb25jZShub2RlKTtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlQ2hpbGQuY2FsbCh0aGlzLCBub2RlLCBjaGlsZCkgYXMgVDtcbiAgfTtcblxuICBFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwgPSBmdW5jdGlvbiAocG9zaXRpb246IEluc2VydFBvc2l0aW9uLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkb2N1bWVudFJlZiA9IHRoaXMub3duZXJEb2N1bWVudDtcbiAgICBjb25zdCBub25jZSA9IGRvY3VtZW50UmVmID8gcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZ2V0KGRvY3VtZW50UmVmKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwYXRjaGVkVGV4dCA9IG5vbmNlID8gaW5qZWN0Tm9uY2VJbnRvSHRtbCh0ZXh0LCBub25jZSkgOiB0ZXh0O1xuICAgIHJldHVybiBvcmlnaW5hbEluc2VydEFkamFjZW50SFRNTC5jYWxsKHRoaXMsIHBvc2l0aW9uLCBwYXRjaGVkVGV4dCk7XG4gIH07XG5cbiAgcGF0Y2hTdGF0ZS5wYXRjaGVkID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWRFeHBsaWNpdE5vbmNlID0gbm9ybWFsaXplTm9uY2UoZXhwbGljaXROb25jZSk7XG4gIGlmIChyZXNvbHZlZEV4cGxpY2l0Tm9uY2UpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRFeHBsaWNpdE5vbmNlO1xuICB9XG5cbiAgaWYgKCFkb2N1bWVudFJlZikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzY3JpcHRXaXRoTm9uY2UgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pignc2NyaXB0W25vbmNlXScpO1xuICBjb25zdCBub25jZUZyb21TY3JpcHQgPSBub3JtYWxpemVOb25jZShzY3JpcHRXaXRoTm9uY2U/LmdldEF0dHJpYnV0ZSgnbm9uY2UnKSA/PyBzY3JpcHRXaXRoTm9uY2U/Lm5vbmNlKTtcbiAgaWYgKG5vbmNlRnJvbVNjcmlwdCkge1xuICAgIHJldHVybiBub25jZUZyb21TY3JpcHQ7XG4gIH1cblxuICBjb25zdCBub25jZU1ldGEgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxNZXRhRWxlbWVudD4oJ21ldGFbbmFtZT1cImNzcC1ub25jZVwiXScpO1xuICByZXR1cm4gbm9ybWFsaXplTm9uY2Uobm9uY2VNZXRhPy5jb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVTY3JpcHROb25jZShkb2N1bWVudFJlZjogRG9jdW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBleHBsaWNpdE5vbmNlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmVzb2x2ZWROb25jZSA9IHJlc29sdmVDc3BOb25jZShkb2N1bWVudFJlZiwgZXhwbGljaXROb25jZSk7XG4gIGNvbnN0IHBhdGNoU3RhdGUgPSBnZXREeW5hbWljU2NyaXB0Tm9uY2VQYXRjaFN0YXRlKCk7XG5cbiAgaWYgKHJlc29sdmVkTm9uY2UpIHtcbiAgICAvLyBET00gcGF0Y2hpbmcgaXMgb25seSBuZWVkZWQgd2hlbiBhIENTUCBub25jZSBtdXN0IGJlIHByb3BhZ2F0ZWQuXG4gICAgcGF0Y2hEeW5hbWljU2NyaXB0SW5zZXJ0aW9uKCk7XG4gICAgY29uc3QgZWZmZWN0aXZlRG9jdW1lbnRSZWYgPSBkb2N1bWVudFJlZiA/PyBnbG9iYWxUaGlzLmRvY3VtZW50O1xuICAgIGlmIChlZmZlY3RpdmVEb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuc2V0KGVmZmVjdGl2ZURvY3VtZW50UmVmLCByZXNvbHZlZE5vbmNlKTtcbiAgICAgIGVuc3VyZU5vbmNlTXV0YXRpb25PYnNlcnZlcihlZmZlY3RpdmVEb2N1bWVudFJlZik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkb2N1bWVudFJlZikge1xuICAgICAgcGF0Y2hTdGF0ZS5ub25jZUJ5RG9jdW1lbnQuZGVsZXRlKGRvY3VtZW50UmVmKTtcbiAgICAgIHRlYXJkb3duTm9uY2VNdXRhdGlvbk9ic2VydmVyKGRvY3VtZW50UmVmKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWROb25jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoZG9jdW1lbnRSZWY6IERvY3VtZW50LCBzcmM6IHN0cmluZywgb3B0aW9ucz86IFNjcmlwdExvYWRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG5vbmNlID0gbm9ybWFsaXplTm9uY2Uob3B0aW9ucz8ubm9uY2UpO1xuICBjb25zdCBzdGF0dXNCeVNyYyA9IGdldFN0YXR1c0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgcGVuZGluZ0J5U3JjID0gZ2V0UGVuZGluZ0J5U3JjKGRvY3VtZW50UmVmKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBkb2N1bWVudFJlZi5xdWVyeVNlbGVjdG9yPEhUTUxTY3JpcHRFbGVtZW50Pihgc2NyaXB0W3NyYz1cIiR7c3JjfVwiXWApO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIGFwcGx5U2NyaXB0Tm9uY2UoZXhpc3RpbmcsIG5vbmNlKTtcbiAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNCeVNyYy5nZXQoc3JjKTtcbiAgICBpZiAoc3RhdHVzID09PSAnbG9hZGVkJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nQnlTcmMuZ2V0KHNyYyk7XG4gICAgaWYgKHBlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHN0YXR1c0J5U3JjLnNldChzcmMsICdsb2FkaW5nJyk7XG5cbiAgY29uc3QgcGVuZGluZyA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudFJlZi5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgYXBwbHlTY3JpcHROb25jZShzY3JpcHQsIG5vbmNlKTtcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgc3RhdHVzQnlTcmMuc2V0KHNyYywgJ2xvYWRlZCcpO1xuICAgICAgcGVuZGluZ0J5U3JjLmRlbGV0ZShzcmMpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH07XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBzdGF0dXNCeVNyYy5zZXQoc3JjLCAnZXJyb3InKTtcbiAgICAgIHBlbmRpbmdCeVNyYy5kZWxldGUoc3JjKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHNjcmlwdDogJHtzcmN9LiBDaGVjayBDU1AgYWxsb3dsaXN0IGFuZCBub25jZSBjb25maWd1cmF0aW9uLmApKTtcbiAgICB9O1xuICAgIGRvY3VtZW50UmVmLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfSk7XG5cbiAgcGVuZGluZ0J5U3JjLnNldChzcmMsIHBlbmRpbmcpO1xuICByZXR1cm4gcGVuZGluZztcbn1cbiJdfQ==
|
|
@@ -197,6 +197,21 @@ function applyScriptNonce(script, nonce) {
|
|
|
197
197
|
}
|
|
198
198
|
script.setAttribute('nonce', resolvedNonce);
|
|
199
199
|
script.nonce = resolvedNonce;
|
|
200
|
+
// Some vendor HTML fragments include inline scripts that execute immediately during insertion.
|
|
201
|
+
// In strict CSP mode these run with a nonce, but can still race DOM insertion and crash
|
|
202
|
+
// (e.g. `null.querySelector(...)`). We defensively retry once on failure.
|
|
203
|
+
if (!script.src) {
|
|
204
|
+
const body = script.textContent ?? '';
|
|
205
|
+
if (body && !body.includes('__siaraShieldInlineRetry__')) {
|
|
206
|
+
script.textContent = `(function(){\n` +
|
|
207
|
+
` var __siaraShieldInlineRetry__ = true;\n` +
|
|
208
|
+
` function __run(){\n${body}\n }\n` +
|
|
209
|
+
` try { __run(); } catch (e) {\n` +
|
|
210
|
+
` try { setTimeout(function(){ try { __run(); } catch (_e) {} }, 0); } catch (_t) {}\n` +
|
|
211
|
+
` }\n` +
|
|
212
|
+
`})();`;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
200
215
|
}
|
|
201
216
|
function applyStyleNonce(style, nonce) {
|
|
202
217
|
const resolvedNonce = normalizeNonce(nonce);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'style';\n}\n\nfunction isStylesheetLinkElement(node: Node): node is HTMLLinkElement {\n if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {\n return false;\n }\n const rel = (node.getAttribute('rel') ?? '').toLowerCase();\n return rel === 'stylesheet';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n}\n\nfunction applyStyleNonce(style: HTMLStyleElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n style.setAttribute('nonce', resolvedNonce);\n style.nonce = resolvedNonce;\n}\n\nfunction applyLinkNonce(link: HTMLLinkElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n link.setAttribute('nonce', resolvedNonce);\n // `HTMLLinkElement.nonce` exists in modern browsers.\n (link as HTMLLinkElement & { nonce?: string }).nonce = resolvedNonce;\n}\n\nfunction applyNonceToNode(node: Node, nonce?: string): void {\n if (isScriptElement(node)) {\n applyScriptNonce(node, nonce);\n return;\n }\n if (isStyleElement(node)) {\n applyStyleNonce(node, nonce);\n return;\n }\n if (isStylesheetLinkElement(node)) {\n applyLinkNonce(node, nonce);\n }\n}\n\nfunction applyTrackedNonce(node: Node): void {\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyNonceToNode(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is nonceable.\n if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {\n applyNonceToNode(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const nonceable = root.querySelectorAll?.('script,style,link[rel=\"stylesheet\"]') ?? [];\n for (const el of nonceable) {\n applyNonceToNode(el as unknown as Node, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction injectNonceIntoHtml(html: string, nonce: string): string {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) return html;\n\n // If tag already includes nonce, leave it.\n const withNonceAttr = ` nonce=\"${resolvedNonce}\"`;\n\n const addNonceToTag = (tag: 'script' | 'style') => {\n const openTag = new RegExp(`<${tag}(\\\\s[^>]*?)?>`, 'gi');\n return (input: string) =>\n input.replace(openTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n // Insert nonce before closing `>`\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n };\n\n // For link rel=stylesheet, add nonce when missing.\n const linkOpenTag = /<link\\b[^>]*>/gi;\n const addNonceToStylesheetLink = (input: string) =>\n input.replace(linkOpenTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n if (!/\\brel\\s*=\\s*[\"']?stylesheet[\"']?/i.test(match)) return match;\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n\n return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n Element.prototype.insertAdjacentHTML = function (position: InsertPosition, text: string): void {\n const documentRef = this.ownerDocument;\n const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;\n const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;\n return originalInsertAdjacentHTML.call(this, position, patchedText);\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n if (!documentRef) {\n return undefined;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n const effectiveDocumentRef = documentRef ?? globalThis.document;\n if (effectiveDocumentRef) {\n patchState.nonceByDocument.set(effectiveDocumentRef, resolvedNonce);\n ensureNonceMutationObserver(effectiveDocumentRef);\n }\n } else {\n if (documentRef) {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\nconst CAPTCHA_CONTAINER_READY_TIMEOUT_MS = 2000;\nconst CAPTCHA_CONTAINER_POLL_MS = 50;\n\nasync function waitForCaptchaContainer(documentRef: Document, timeoutMs = CAPTCHA_CONTAINER_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (documentRef.querySelector('.SiaraShield')) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, CAPTCHA_CONTAINER_POLL_MS));\n }\n}\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument ?? globalThis.document ?? null;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if (documentRef) {\n // Vendor scripts often query `.SiaraShield` immediately; ensure it's present in DOM.\n await waitForCaptchaContainer(documentRef);\n }\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\nconst CAPTCHA_CONTAINER_READY_TIMEOUT_MS = 2000;\nconst CAPTCHA_CONTAINER_POLL_MS = 50;\n\nasync function waitForCaptchaContainer(timeoutMs = CAPTCHA_CONTAINER_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (document.querySelector('.SiaraShield')) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, CAPTCHA_CONTAINER_POLL_MS));\n }\n}\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n await waitForCaptchaContainer();\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","CAPTCHA_CONTAINER_READY_TIMEOUT_MS","CAPTCHA_CONTAINER_POLL_MS","waitForCaptchaContainer","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"siarashield_workspace.mjs","sources":["../../../projects/siarashield-workspace/src/lib/siara-shield.globals.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-log-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-submit-guard.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-script-utils.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-vendor-runtime.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-loader.service.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.component.ts","../../../projects/siarashield-workspace/src/lib/siara-shield.ts","../../../projects/siarashield-workspace/src/lib/siara-shield-csp.ts","../../../projects/siarashield-workspace/src/public-api.ts","../../../projects/siarashield-workspace/src/siarashield_workspace.ts"],"sourcesContent":["export type InitCaptchaFn = (publicKey: string) => void;\nexport type CheckCaptchaFn = () => boolean;\n\nexport interface SiaraShieldGlobals {\n initCaptcha?: InitCaptchaFn;\n InitCaptcha?: InitCaptchaFn;\n CheckCaptcha?: CheckCaptchaFn;\n AppendValidationJS?: () => void;\n CyberSiaraToken?: string;\n jQuery?: unknown;\n $?: unknown;\n}\n\nexport function getSiaraShieldGlobals(): SiaraShieldGlobals {\n return (globalThis as unknown as { [k: string]: unknown }) as SiaraShieldGlobals;\n}\n\nexport function getInitCaptchaFn(g: SiaraShieldGlobals): InitCaptchaFn | undefined {\n return g.initCaptcha ?? g.InitCaptcha;\n}\n","interface ConsolePatchState {\n depth: number;\n originalLog: Console['log'];\n originalInfo: Console['info'];\n originalWarn: Console['warn'];\n originalDebug: Console['debug'];\n originalError: Console['error'];\n}\n\ninterface VendorRuntimeErrorPatchState {\n installed: boolean;\n originalOnError: OnErrorEventHandler | null;\n}\n\nconst CONSOLE_PATCH_STATE_KEY = '__siaraShieldConsolePatchState__';\nconst VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY = '__siaraShieldVendorRuntimeErrorPatchState__';\nconst DEFAULT_SUPPRESS_WINDOW_MS = 2000;\n\nfunction getConsolePatchState(): ConsolePatchState {\n const globalState = globalThis as typeof globalThis & {\n [CONSOLE_PATCH_STATE_KEY]?: ConsolePatchState;\n };\n\n if (!globalState[CONSOLE_PATCH_STATE_KEY]) {\n globalState[CONSOLE_PATCH_STATE_KEY] = {\n depth: 0,\n originalLog: console.log.bind(console),\n originalInfo: console.info.bind(console),\n originalWarn: console.warn.bind(console),\n originalDebug: console.debug.bind(console),\n originalError: console.error.bind(console),\n };\n }\n\n return globalState[CONSOLE_PATCH_STATE_KEY];\n}\n\nfunction muteConsole(): void {\n const patchState = getConsolePatchState();\n patchState.depth += 1;\n if (patchState.depth > 1) return;\n\n console.log = () => undefined;\n console.info = () => undefined;\n console.warn = () => undefined;\n console.debug = () => undefined;\n console.error = (...args: unknown[]) => {\n const normalized = args\n .map((arg) => (typeof arg === 'string' ? arg : arg instanceof Error ? arg.message : ''))\n .join(' ')\n .toLowerCase();\n\n // Known noisy upstream vendor runtime error path from CaptchaResources.js bootstrap.\n if (\n normalized.includes('an errorevent with no error occurred') ||\n normalized.includes('script error') ||\n normalized.includes('captcharesources.js') ||\n normalized.includes('getcybersiara')\n ) {\n return;\n }\n\n patchState.originalError(...args);\n };\n}\n\nfunction unmuteConsole(): void {\n const patchState = getConsolePatchState();\n if (patchState.depth === 0) return;\n patchState.depth -= 1;\n if (patchState.depth > 0) return;\n\n console.log = patchState.originalLog;\n console.info = patchState.originalInfo;\n console.warn = patchState.originalWarn;\n console.debug = patchState.originalDebug;\n console.error = patchState.originalError;\n}\n\nexport function suppressVendorConsoleWindow(windowMs = DEFAULT_SUPPRESS_WINDOW_MS): void {\n muteConsole();\n setTimeout(() => {\n unmuteConsole();\n }, windowMs);\n}\n\nfunction getVendorRuntimeErrorPatchState(): VendorRuntimeErrorPatchState {\n const globalState = globalThis as typeof globalThis & {\n [VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]?: VendorRuntimeErrorPatchState;\n };\n\n if (!globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY]) {\n globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY] = {\n installed: false,\n originalOnError: globalThis.onerror ?? null,\n };\n }\n\n return globalState[VENDOR_RUNTIME_ERROR_PATCH_STATE_KEY];\n}\n\nfunction isLikelyVendorScriptRuntimeError(message: unknown, source: unknown): boolean {\n const normalizedMessage = String(message ?? '').trim().toLowerCase();\n const normalizedSource = String(source ?? '').trim().toLowerCase();\n const fromSiaraHost =\n normalizedSource.includes('embed.mycybersiara.com') || normalizedSource.includes('embedcdn.mycybersiara.com');\n const isKnownVendorDomError =\n normalizedMessage.includes(\"cannot read properties of null (reading 'removechild')\") &&\n (normalizedSource.includes('jquery') || normalizedSource.includes('captcharesources'));\n\n if (fromSiaraHost) return true;\n if (isKnownVendorDomError) return true;\n return normalizedMessage === 'script error.' || normalizedMessage === 'script error';\n}\n\n/**\n * Suppresses noisy cross-origin vendor runtime script errors so Angular does not\n * surface them as unhandled `ErrorEvent` crashes in the console.\n */\nexport function installVendorRuntimeErrorSuppression(): void {\n const patchState = getVendorRuntimeErrorPatchState();\n if (patchState.installed) return;\n\n const previousOnError = patchState.originalOnError;\n globalThis.onerror = (message, source, lineno, colno, error) => {\n if (isLikelyVendorScriptRuntimeError(message, source)) {\n return true;\n }\n\n if (typeof previousOnError === 'function') {\n return previousOnError.call(globalThis, message, source, lineno, colno, error);\n }\n\n return false;\n };\n\n patchState.installed = true;\n}\n\n","const SUBMIT_GUARD_STATE_KEY = '__siaraShieldSubmitGuardInstalled__';\nconst SYNTHETIC_CLICK_GUARD_WINDOW_MS = 1200;\n\nexport function installCaptchaSubmitGuard(): void {\n const globalState = globalThis as typeof globalThis & {\n [SUBMIT_GUARD_STATE_KEY]?: boolean;\n };\n\n if (globalState[SUBMIT_GUARD_STATE_KEY]) return;\n\n const lastSyntheticClickByButton = new WeakMap<EventTarget, number>();\n\n document.addEventListener(\n 'click',\n (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n\n const submitButton = target.closest('.CaptchaSubmit');\n if (!submitButton) return;\n\n // Vendor runtime can emit synthetic clicks on .CaptchaSubmit.\n // Allow one synthetic click (needed for vendor auto-submit) but block rapid duplicates.\n if (!event.isTrusted) {\n const now = Date.now();\n const lastSyntheticClickAt = lastSyntheticClickByButton.get(submitButton) ?? 0;\n if (now - lastSyntheticClickAt < SYNTHETIC_CLICK_GUARD_WINDOW_MS) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n lastSyntheticClickByButton.set(submitButton, now);\n }\n },\n true,\n );\n\n globalState[SUBMIT_GUARD_STATE_KEY] = true;\n}\n\n","type ScriptStatus = 'loading' | 'loaded' | 'error';\n\nexport interface ScriptLoadOptions {\n nonce?: string;\n}\n\ninterface DynamicScriptNoncePatchState {\n nonceByDocument: WeakMap<Document, string>;\n observerByDocument: WeakMap<Document, MutationObserver>;\n inlineCaptchaScriptByDocument: WeakMap<Document, Set<string>>;\n patched: boolean;\n}\n\nconst SCRIPT_STATUS_BY_DOCUMENT = new WeakMap<Document, Map<string, ScriptStatus>>();\nconst SCRIPT_PENDING_BY_DOCUMENT = new WeakMap<Document, Map<string, Promise<void>>>();\nconst DYNAMIC_SCRIPT_NONCE_STATE_KEY = '__siaraShieldDynamicScriptNonceState__';\n\nfunction getStatusBySrc(documentRef: Document): Map<string, ScriptStatus> {\n let statusBySrc = SCRIPT_STATUS_BY_DOCUMENT.get(documentRef);\n if (!statusBySrc) {\n statusBySrc = new Map<string, ScriptStatus>();\n SCRIPT_STATUS_BY_DOCUMENT.set(documentRef, statusBySrc);\n }\n\n return statusBySrc;\n}\n\nfunction getPendingBySrc(documentRef: Document): Map<string, Promise<void>> {\n let pendingBySrc = SCRIPT_PENDING_BY_DOCUMENT.get(documentRef);\n if (!pendingBySrc) {\n pendingBySrc = new Map<string, Promise<void>>();\n SCRIPT_PENDING_BY_DOCUMENT.set(documentRef, pendingBySrc);\n }\n\n return pendingBySrc;\n}\n\nfunction getDynamicScriptNoncePatchState(): DynamicScriptNoncePatchState {\n const globalState = globalThis as typeof globalThis & {\n [DYNAMIC_SCRIPT_NONCE_STATE_KEY]?: DynamicScriptNoncePatchState;\n };\n\n if (!globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY]) {\n globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY] = {\n nonceByDocument: new WeakMap<Document, string>(),\n observerByDocument: new WeakMap<Document, MutationObserver>(),\n inlineCaptchaScriptByDocument: new WeakMap<Document, Set<string>>(),\n patched: false,\n };\n }\n\n return globalState[DYNAMIC_SCRIPT_NONCE_STATE_KEY];\n}\n\nfunction normalizeNonce(nonce?: string | null): string | undefined {\n const trimmed = nonce?.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction isScriptElement(node: Node): node is HTMLScriptElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'script';\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return node instanceof Element && node.tagName.toLowerCase() === 'style';\n}\n\nfunction isStylesheetLinkElement(node: Node): node is HTMLLinkElement {\n if (!(node instanceof Element) || node.tagName.toLowerCase() !== 'link') {\n return false;\n }\n const rel = (node.getAttribute('rel') ?? '').toLowerCase();\n return rel === 'stylesheet';\n}\n\nexport function applyScriptNonce(script: HTMLScriptElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n script.setAttribute('nonce', resolvedNonce);\n script.nonce = resolvedNonce;\n\n // Some vendor HTML fragments include inline scripts that execute immediately during insertion.\n // In strict CSP mode these run with a nonce, but can still race DOM insertion and crash\n // (e.g. `null.querySelector(...)`). We defensively retry once on failure.\n if (!script.src) {\n const body = script.textContent ?? '';\n if (body && !body.includes('__siaraShieldInlineRetry__')) {\n script.textContent = `(function(){\\n` +\n ` var __siaraShieldInlineRetry__ = true;\\n` +\n ` function __run(){\\n${body}\\n }\\n` +\n ` try { __run(); } catch (e) {\\n` +\n ` try { setTimeout(function(){ try { __run(); } catch (_e) {} }, 0); } catch (_t) {}\\n` +\n ` }\\n` +\n `})();`;\n }\n }\n}\n\nfunction applyStyleNonce(style: HTMLStyleElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n style.setAttribute('nonce', resolvedNonce);\n style.nonce = resolvedNonce;\n}\n\nfunction applyLinkNonce(link: HTMLLinkElement, nonce?: string): void {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) {\n return;\n }\n\n link.setAttribute('nonce', resolvedNonce);\n // `HTMLLinkElement.nonce` exists in modern browsers.\n (link as HTMLLinkElement & { nonce?: string }).nonce = resolvedNonce;\n}\n\nfunction applyNonceToNode(node: Node, nonce?: string): void {\n if (isScriptElement(node)) {\n applyScriptNonce(node, nonce);\n return;\n }\n if (isStyleElement(node)) {\n applyStyleNonce(node, nonce);\n return;\n }\n if (isStylesheetLinkElement(node)) {\n applyLinkNonce(node, nonce);\n }\n}\n\nfunction applyTrackedNonce(node: Node): void {\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return;\n }\n\n const nonce = getDynamicScriptNoncePatchState().nonceByDocument.get(documentRef);\n applyNonceToNode(node, nonce);\n}\n\nfunction getTrackedInlineCaptchaScripts(documentRef: Document): Set<string> {\n const patchState = getDynamicScriptNoncePatchState();\n let trackedScripts = patchState.inlineCaptchaScriptByDocument.get(documentRef);\n if (!trackedScripts) {\n trackedScripts = new Set<string>();\n patchState.inlineCaptchaScriptByDocument.set(documentRef, trackedScripts);\n }\n\n return trackedScripts;\n}\n\nfunction shouldSkipDuplicateInlineCaptchaScript(node: Node): boolean {\n if (!isScriptElement(node) || Boolean(node.src)) {\n return false;\n }\n\n const scriptBody = (node.textContent ?? '').trim();\n if (!scriptBody || !scriptBody.includes('currentLangCode')) {\n return false;\n }\n\n const documentRef = node.ownerDocument;\n if (!documentRef) {\n return false;\n }\n\n const trackedScripts = getTrackedInlineCaptchaScripts(documentRef);\n if (trackedScripts.has(scriptBody)) {\n return true;\n }\n\n trackedScripts.add(scriptBody);\n return false;\n}\n\nfunction walkAndApplyNonce(root: Node, nonce?: string): void {\n if (!nonce) return;\n\n // Fast path: root itself is nonceable.\n if (isScriptElement(root) || isStyleElement(root) || isStylesheetLinkElement(root)) {\n applyNonceToNode(root, nonce);\n return;\n }\n\n // Common path for jQuery: append DocumentFragment containing nodes created via HTML parsing.\n if (root instanceof Element || root instanceof DocumentFragment) {\n const nonceable = root.querySelectorAll?.('script,style,link[rel=\"stylesheet\"]') ?? [];\n for (const el of nonceable) {\n applyNonceToNode(el as unknown as Node, nonce);\n }\n }\n}\n\nfunction ensureNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.observerByDocument.get(documentRef)) {\n return;\n }\n\n const observer = new MutationObserver((records) => {\n const nonce = patchState.nonceByDocument.get(documentRef);\n if (!nonce) return;\n\n for (const record of records) {\n for (const node of record.addedNodes) {\n walkAndApplyNonce(node, nonce);\n }\n }\n });\n\n // Observe the full document because scripts can be injected into body/head by vendor/jQuery.\n const root = documentRef.documentElement ?? documentRef;\n observer.observe(root, { childList: true, subtree: true });\n patchState.observerByDocument.set(documentRef, observer);\n}\n\nfunction teardownNonceMutationObserver(documentRef: Document): void {\n const patchState = getDynamicScriptNoncePatchState();\n const observer = patchState.observerByDocument.get(documentRef);\n if (!observer) return;\n observer.disconnect();\n patchState.observerByDocument.delete(documentRef);\n}\n\nfunction injectNonceIntoHtml(html: string, nonce: string): string {\n const resolvedNonce = normalizeNonce(nonce);\n if (!resolvedNonce) return html;\n\n // If tag already includes nonce, leave it.\n const withNonceAttr = ` nonce=\"${resolvedNonce}\"`;\n\n const addNonceToTag = (tag: 'script' | 'style') => {\n const openTag = new RegExp(`<${tag}(\\\\s[^>]*?)?>`, 'gi');\n return (input: string) =>\n input.replace(openTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n // Insert nonce before closing `>`\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n };\n\n // For link rel=stylesheet, add nonce when missing.\n const linkOpenTag = /<link\\b[^>]*>/gi;\n const addNonceToStylesheetLink = (input: string) =>\n input.replace(linkOpenTag, (match) => {\n if (/[\\s\"']nonce\\s*=/.test(match)) return match;\n if (!/\\brel\\s*=\\s*[\"']?stylesheet[\"']?/i.test(match)) return match;\n return match.replace(/>$/, `${withNonceAttr}>`);\n });\n\n return addNonceToStylesheetLink(addNonceToTag('style')(addNonceToTag('script')(html)));\n}\n\nfunction patchDynamicScriptInsertion(): void {\n const patchState = getDynamicScriptNoncePatchState();\n if (patchState.patched) {\n return;\n }\n\n const originalAppendChild = Node.prototype.appendChild;\n const originalInsertBefore = Node.prototype.insertBefore;\n const originalReplaceChild = Node.prototype.replaceChild;\n const originalInsertAdjacentHTML = Element.prototype.insertAdjacentHTML;\n\n Node.prototype.appendChild = function <T extends Node>(node: T): T {\n // Vendor captcha injects an inline snippet with `currentLangCode` that crashes when appended twice.\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalAppendChild.call(this, node) as T;\n };\n\n Node.prototype.insertBefore = function <T extends Node>(node: T, child: Node | null): T {\n if (shouldSkipDuplicateInlineCaptchaScript(node)) {\n return node;\n }\n applyTrackedNonce(node);\n return originalInsertBefore.call(this, node, child) as T;\n };\n\n Node.prototype.replaceChild = function <T extends Node>(node: Node, child: T): T {\n applyTrackedNonce(node);\n return originalReplaceChild.call(this, node, child) as T;\n };\n\n Element.prototype.insertAdjacentHTML = function (position: InsertPosition, text: string): void {\n const documentRef = this.ownerDocument;\n const nonce = documentRef ? patchState.nonceByDocument.get(documentRef) : undefined;\n const patchedText = nonce ? injectNonceIntoHtml(text, nonce) : text;\n return originalInsertAdjacentHTML.call(this, position, patchedText);\n };\n\n patchState.patched = true;\n}\n\nexport function resolveCspNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedExplicitNonce = normalizeNonce(explicitNonce);\n if (resolvedExplicitNonce) {\n return resolvedExplicitNonce;\n }\n\n if (!documentRef) {\n return undefined;\n }\n\n const scriptWithNonce = documentRef.querySelector<HTMLScriptElement>('script[nonce]');\n const nonceFromScript = normalizeNonce(scriptWithNonce?.getAttribute('nonce') ?? scriptWithNonce?.nonce);\n if (nonceFromScript) {\n return nonceFromScript;\n }\n\n const nonceMeta = documentRef.querySelector<HTMLMetaElement>('meta[name=\"csp-nonce\"]');\n return normalizeNonce(nonceMeta?.content);\n}\n\nexport function prepareScriptNonce(documentRef: Document | null | undefined, explicitNonce?: string): string | undefined {\n const resolvedNonce = resolveCspNonce(documentRef, explicitNonce);\n const patchState = getDynamicScriptNoncePatchState();\n\n if (resolvedNonce) {\n // DOM patching is only needed when a CSP nonce must be propagated.\n patchDynamicScriptInsertion();\n const effectiveDocumentRef = documentRef ?? globalThis.document;\n if (effectiveDocumentRef) {\n patchState.nonceByDocument.set(effectiveDocumentRef, resolvedNonce);\n ensureNonceMutationObserver(effectiveDocumentRef);\n }\n } else {\n if (documentRef) {\n patchState.nonceByDocument.delete(documentRef);\n teardownNonceMutationObserver(documentRef);\n }\n }\n\n return resolvedNonce;\n}\n\nexport function loadScript(documentRef: Document, src: string, options?: ScriptLoadOptions): Promise<void> {\n const nonce = normalizeNonce(options?.nonce);\n const statusBySrc = getStatusBySrc(documentRef);\n const pendingBySrc = getPendingBySrc(documentRef);\n const existing = documentRef.querySelector<HTMLScriptElement>(`script[src=\"${src}\"]`);\n\n if (existing) {\n applyScriptNonce(existing, nonce);\n const status = statusBySrc.get(src);\n if (status === 'loaded') {\n return Promise.resolve();\n }\n\n const pending = pendingBySrc.get(src);\n if (pending) {\n return pending;\n }\n\n return Promise.resolve();\n }\n\n statusBySrc.set(src, 'loading');\n\n const pending = new Promise<void>((resolve, reject) => {\n const script = documentRef.createElement('script');\n script.src = src;\n script.async = true;\n applyScriptNonce(script, nonce);\n script.onload = () => {\n statusBySrc.set(src, 'loaded');\n pendingBySrc.delete(src);\n resolve();\n };\n script.onerror = () => {\n statusBySrc.set(src, 'error');\n pendingBySrc.delete(src);\n reject(new Error(`Failed to load script: ${src}. Check CSP allowlist and nonce configuration.`));\n };\n documentRef.head.appendChild(script);\n });\n\n pendingBySrc.set(src, pending);\n return pending;\n}\n","import { getSiaraShieldGlobals } from './siara-shield.globals';\r\n\r\nconst VENDOR_RUNTIME_PATCH_KEY = '__siaraShieldVendorRuntimePatchInstalled__';\r\nconst VENDOR_TOKEN_BRIDGE_KEY = '__siaraShieldVendorTokenBridgeInstalled__';\r\nconst WRAPPED_FN_PREFIX = '__siaraShieldWrappedVendorFn__';\r\n\r\ntype VendorFnName = 'Open_Pluin' | 'Open_Plugin' | 'Open_Plugin_';\r\ntype OptionalVendorFnName = VendorFnName | 'OpenCaptchaSlid' | 'GetCyberSiara';\r\ntype VendorFn = (...args: unknown[]) => unknown;\r\n\r\nfunction isKnownVendorNullDomError(error: unknown): boolean {\r\n const msg = error instanceof Error ? error.message.toLowerCase() : String(error ?? '').toLowerCase();\r\n return (\r\n msg.includes(\"cannot read properties of null (reading 'style')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'queryselector')\") ||\r\n msg.includes(\"cannot read properties of null (reading 'removechild')\")\r\n );\r\n}\r\n\r\nfunction runFallbackChallengeOpen(excluding: OptionalVendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const candidates: OptionalVendorFnName[] = ['OpenCaptchaSlid', 'GetCyberSiara', 'Open_Pluin', 'Open_Plugin', 'Open_Plugin_'];\r\n\r\n for (const name of candidates) {\r\n if (name === excluding) continue;\r\n const fn = globals[name];\r\n if (typeof fn !== 'function') continue;\r\n try {\r\n (fn as VendorFn)();\r\n return;\r\n } catch {\r\n // Try next candidate.\r\n }\r\n }\r\n}\r\n\r\nfunction wrapVendorOpenFunction(name: VendorFnName): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & Record<string, unknown>;\r\n const marker = `${WRAPPED_FN_PREFIX}${name}`;\r\n if (globals[marker] === true) return;\r\n\r\n const candidate = globals[name];\r\n if (typeof candidate !== 'function') return;\r\n\r\n const original = candidate as VendorFn;\r\n globals[name] = ((...args: unknown[]) => {\r\n try {\r\n return original(...args);\r\n } catch (error) {\r\n if (!isKnownVendorNullDomError(error)) {\r\n throw error;\r\n }\r\n\r\n // Vendor challenge opener hit a missing DOM node.\r\n // Try alternative open functions so challenge can still render.\r\n runFallbackChallengeOpen(name);\r\n return undefined;\r\n }\r\n }) as unknown;\r\n globals[marker] = true;\r\n}\r\n\r\nfunction installVerifiedSubmitTokenBridge(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_TOKEN_BRIDGE_KEY]?: boolean;\r\n JQuryName?: { ajax?: (...args: unknown[]) => unknown };\r\n $?: { ajax?: (...args: unknown[]) => unknown };\r\n CyberSiaraToken?: string;\r\n };\r\n if (globals[VENDOR_TOKEN_BRIDGE_KEY]) return;\r\n\r\n const patchAjaxOwner = (owner: { ajax?: (...args: unknown[]) => unknown } | undefined): void => {\r\n if (!owner || typeof owner.ajax !== 'function') return;\r\n const originalAjax = owner.ajax.bind(owner);\r\n\r\n owner.ajax = ((...args: unknown[]) => {\r\n const firstArg = args[0];\r\n if (!firstArg || typeof firstArg !== 'object') {\r\n return originalAjax(...args);\r\n }\r\n\r\n const options = firstArg as Record<string, unknown>;\r\n const url = String(options['url'] ?? '').toLowerCase();\r\n const originalSuccess = options['success'];\r\n if (!url.includes('/submitcaptcha/verifiedsubmit') || typeof originalSuccess !== 'function') {\r\n return originalAjax(options);\r\n }\r\n\r\n options['success'] = ((response: unknown, ...rest: unknown[]) => {\r\n const payload = response as { data?: unknown; Data?: unknown } | null;\r\n const maybeTokenRaw = payload?.data ?? payload?.Data;\r\n if (typeof maybeTokenRaw === 'string' && maybeTokenRaw.trim()) {\r\n globals.CyberSiaraToken = maybeTokenRaw.trim();\r\n }\r\n\r\n return (originalSuccess as (...fnArgs: unknown[]) => unknown)(response, ...rest);\r\n }) as unknown;\r\n\r\n return originalAjax(options);\r\n }) as typeof owner.ajax;\r\n };\r\n\r\n patchAjaxOwner(globals.$);\r\n patchAjaxOwner(globals.JQuryName);\r\n globals[VENDOR_TOKEN_BRIDGE_KEY] = true;\r\n}\r\n\r\nexport function installVendorChallengeRuntimePatch(): void {\r\n const globals = getSiaraShieldGlobals() as typeof globalThis & {\r\n [VENDOR_RUNTIME_PATCH_KEY]?: boolean;\r\n };\r\n if (globals[VENDOR_RUNTIME_PATCH_KEY]) return;\r\n\r\n wrapVendorOpenFunction('Open_Pluin');\r\n wrapVendorOpenFunction('Open_Plugin');\r\n wrapVendorOpenFunction('Open_Plugin_');\r\n installVerifiedSubmitTokenBridge();\r\n globals[VENDOR_RUNTIME_PATCH_KEY] = true;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { loadScript, type ScriptLoadOptions } from './siara-shield-script-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SiaraShieldLoaderService {\n constructor(@Inject(DOCUMENT) private readonly document: Document) {}\n\n loadScript(src: string, options?: ScriptLoadOptions): Promise<void> {\n return loadScript(this.document, src, options);\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { SiaraShieldLoaderService } from './siara-shield-loader.service';\nimport { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { prepareScriptNonce } from './siara-shield-script-utils';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\nconst CAPTCHA_CONTAINER_READY_TIMEOUT_MS = 2000;\nconst CAPTCHA_CONTAINER_POLL_MS = 50;\n\nasync function waitForCaptchaContainer(documentRef: Document, timeoutMs = CAPTCHA_CONTAINER_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (documentRef.querySelector('.SiaraShield')) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, CAPTCHA_CONTAINER_POLL_MS));\n }\n}\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nexport interface SiaraShieldInitOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /** Loads jQuery before SiaraShield script. Default is true for easier integration. Set to false only if your page already includes jQuery. */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\n@Component({\n selector: 'siara-shield',\n standalone: true,\n template: `<div class=\"SiaraShield\"></div>`,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SiaraShieldComponent implements AfterViewInit {\n @Input({ required: true }) publicKey!: string;\n @Input() loadJQuery = true;\n @Input() cspNonce?: string;\n @Input() allowVendorConsoleLogs = false;\n\n /**\n * Emits the current `CyberSiaraToken` right after a successful `checkCaptcha()`.\n */\n @Output() token = new EventEmitter<string>();\n\n private initialized = false;\n\n constructor(\n private readonly host: ElementRef<HTMLElement>,\n private readonly loader: SiaraShieldLoaderService,\n ) {}\n\n async ngAfterViewInit(): Promise<void> {\n await this.init({\n publicKey: this.publicKey,\n loadJQuery: this.loadJQuery,\n cspNonce: this.cspNonce,\n allowVendorConsoleLogs: this.allowVendorConsoleLogs,\n });\n }\n\n async init(options: SiaraShieldInitOptions): Promise<void> {\n if (this.initialized) return;\n\n // Ensure the host element is in DOM before scripts run.\n void this.host.nativeElement;\n installCaptchaSubmitGuard();\n\n if (!options.publicKey) {\n throw new Error('SiaraShieldComponent: publicKey is required.');\n }\n\n // Prepare CSP nonce propagation so any vendor-injected child scripts get the same nonce.\n const documentRef = this.host.nativeElement.ownerDocument ?? globalThis.document ?? null;\n const nonce = prepareScriptNonce(documentRef, options.cspNonce);\n if (documentRef) {\n // Vendor scripts often query `.SiaraShield` immediately; ensure it's present in DOM.\n await waitForCaptchaContainer(documentRef);\n }\n if ((options.loadJQuery ?? true) && !this.isJQueryAlreadyAvailable()) {\n await this.loader.loadScript(JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await this.loader.loadScript(CAPTCHA_SCRIPT_SRC, { nonce });\n await this.loader.loadScript(VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n this.preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await this.waitForCheckCaptchaApi();\n this.initialized = true;\n }\n\n /**\n * Detect preloaded jQuery from global object or an existing script tag.\n */\n private isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n 'script[src*=\"jquery\"]',\n );\n return Boolean(existingJqueryScript);\n }\n\n private preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = this.host.nativeElement.ownerDocument.querySelector<HTMLScriptElement>(\n `script[src=\"${VALIDATION_SCRIPT_SRC}\"]`,\n );\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n }\n\n private async waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n }\n\n /**\n * Calls the global `CheckCaptcha()` from SiaraShield script.\n * Returns true when captcha is valid; emits token if available.\n */\n checkCaptcha(): boolean {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did init() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n this.token.emit(existingToken);\n return true;\n }\n\n if (!this.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n if (ok && typeof g.CyberSiaraToken === 'string') {\n this.token.emit(g.CyberSiaraToken);\n }\n return ok;\n }\n\n /**\n * Async-friendly captcha validation to avoid first-click timing issues.\n * Performs one validation call and waits for token propagation.\n */\n async checkCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n }): Promise<boolean> {\n const timeoutMs = options?.timeoutMs ?? 2000;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n this.token.emit(existingToken);\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let ok = this.checkCaptcha();\n // Optional retry for integrations that observe late vendor-state settling.\n if (!ok && retryOnFalseMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n ok = this.checkCaptcha();\n }\n if (!ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n return false;\n }\n\n const g = getSiaraShieldGlobals();\n if (typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0) {\n return true;\n }\n\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n this.token.emit(token);\n return true;\n }\n }\n\n return true;\n }\n}\n\n","import { getInitCaptchaFn, getSiaraShieldGlobals } from './siara-shield.globals';\nimport { installVendorRuntimeErrorSuppression, suppressVendorConsoleWindow } from './siara-shield-log-utils';\nimport { loadScript, prepareScriptNonce } from './siara-shield-script-utils';\nimport { installCaptchaSubmitGuard } from './siara-shield-submit-guard';\nimport { installVendorChallengeRuntimePatch } from './siara-shield-vendor-runtime';\n\nconst JQUERY_FALLBACK_SRC = 'https://embedcdn.mycybersiara.com/capcha-temple/js/jquery.min.js';\nconst CAPTCHA_SCRIPT_SRC = 'https://embedcdn.mycybersiara.com/CaptchaFormate/CaptchaResources.js';\nconst VALIDATION_SCRIPT_SRC = 'https://embed.mycybersiara.com/CaptchaFormate/SiaraShield_Validation.js';\nconst CAPTCHA_READY_TIMEOUT_MS = 8000;\nconst CAPTCHA_CONTAINER_READY_TIMEOUT_MS = 2000;\nconst CAPTCHA_CONTAINER_POLL_MS = 50;\n\nasync function waitForCaptchaContainer(timeoutMs = CAPTCHA_CONTAINER_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (document.querySelector('.SiaraShield')) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, CAPTCHA_CONTAINER_POLL_MS));\n }\n}\n\nexport interface InitSiaraShieldOptions {\n /** SiaraShield public key. Use \"TEST-CYBERSIARA\" for staging/development. */\n publicKey: string;\n /**\n * Loads jQuery before SiaraShield script.\n * Default is true for easier integration.\n * Set to false only if your site/app already loads jQuery.\n */\n loadJQuery?: boolean;\n /**\n * CSP nonce value (without the `'nonce-'` prefix).\n * If omitted, we attempt to resolve it from existing `script[nonce]` or `meta[name=\"csp-nonce\"]`.\n */\n cspNonce?: string;\n /** Set true only when actively debugging vendor/runtime internals in browser console. */\n allowVendorConsoleLogs?: boolean;\n}\n\nlet pending: Promise<void> | null = null;\nlet initialized = false;\n\nfunction ensureAccessibilityPopupAliases(): void {\n const g = globalThis as typeof globalThis & Record<string, unknown>;\n const aliasNames = [\n 'RemoveAccesibilityPopup',\n '_RemoveAccesibilityPopup',\n 'RemoveAccesiblityPopup',\n '_RemoveAccesiblityPopup',\n ] as const;\n\n const existing = aliasNames\n .map((name) => g[name])\n .find((value): value is () => void => typeof value === 'function');\n\n const stableFn = existing ?? (() => undefined);\n for (const name of aliasNames) {\n g[name] = stableFn;\n }\n}\n\nfunction isJQueryAlreadyAvailable(): boolean {\n const g = getSiaraShieldGlobals();\n if (typeof g.jQuery === 'function' || typeof g.$ === 'function') {\n return true;\n }\n\n const existingJqueryScript = document.querySelector<HTMLScriptElement>('script[src*=\"jquery\"]');\n return Boolean(existingJqueryScript);\n}\n\nfunction runInRootZone<T>(fn: () => T): T {\n const g = globalThis as typeof globalThis & { Zone?: { root?: { run?: <U>(cb: () => U) => U } } };\n const zoneRootRun = g.Zone?.root?.run;\n if (typeof zoneRootRun === 'function') {\n return zoneRootRun.call(g.Zone?.root, fn) as T;\n }\n return fn();\n}\n\nfunction preventDuplicateValidationBootstrap(g: ReturnType<typeof getSiaraShieldGlobals>): void {\n const originalAppendValidation = g.AppendValidationJS;\n if (typeof originalAppendValidation !== 'function') {\n return;\n }\n\n g.AppendValidationJS = () => {\n const existing = document.querySelector<HTMLScriptElement>(`script[src=\"${VALIDATION_SCRIPT_SRC}\"]`);\n if (existing) {\n return;\n }\n\n originalAppendValidation();\n };\n}\n\nasync function waitForCheckCaptchaApi(timeoutMs = CAPTCHA_READY_TIMEOUT_MS): Promise<void> {\n const startedAt = Date.now();\n while (Date.now() - startedAt < timeoutMs) {\n if (getSiaraShieldGlobals().CheckCaptcha) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n throw new Error('SiaraShield: CheckCaptcha() was not available within timeout.');\n}\n\n/**\n * Drop-in initializer for SiaraShield.\n * - Loads required scripts (optionally jQuery)\n * - Calls global `initCaptcha(publicKey)`\n *\n * Requirements in your HTML/template:\n * - You must render: `<div class=\"SiaraShield\"></div>`\n */\nexport async function initSiaraShield(options: InitSiaraShieldOptions): Promise<void> {\n if (initialized) return;\n if (pending) return pending;\n\n if (!options?.publicKey) {\n throw new Error('initSiaraShield: publicKey is required.');\n }\n\n pending = (async () => {\n installCaptchaSubmitGuard();\n const nonce = prepareScriptNonce(document, options.cspNonce);\n await waitForCaptchaContainer();\n if ((options.loadJQuery ?? true) && !isJQueryAlreadyAvailable()) {\n await loadScript(document, JQUERY_FALLBACK_SRC, { nonce });\n }\n\n await loadScript(document, CAPTCHA_SCRIPT_SRC, { nonce });\n await loadScript(document, VALIDATION_SCRIPT_SRC, { nonce });\n\n const g = getSiaraShieldGlobals();\n ensureAccessibilityPopupAliases();\n preventDuplicateValidationBootstrap(g);\n installVendorChallengeRuntimePatch();\n const initCaptchaFn = getInitCaptchaFn(g);\n if (!initCaptchaFn) {\n throw new Error(\n 'SiaraShield: InitCaptcha() is not available after loading scripts.',\n );\n }\n\n if (!options.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n installVendorRuntimeErrorSuppression();\n }\n runInRootZone(() => initCaptchaFn(options.publicKey));\n await waitForCheckCaptchaApi();\n initialized = true;\n })();\n\n try {\n await pending;\n } finally {\n // keep `pending` cached for subsequent callers\n }\n}\n\n/**\n * Calls global `CheckCaptcha()` and returns its boolean result.\n * If successful, returns `{ ok: true, token?: string }`.\n */\nexport function checkSiaraShieldCaptcha(options?: { allowVendorConsoleLogs?: boolean }): { ok: boolean; token?: string } {\n const g = getSiaraShieldGlobals();\n if (!g.CheckCaptcha) {\n throw new Error('SiaraShield: CheckCaptcha() is not available. Did initSiaraShield() run?');\n }\n\n const existingToken = typeof g.CyberSiaraToken === 'string' && g.CyberSiaraToken.length > 0 ? g.CyberSiaraToken : undefined;\n if (existingToken) {\n return { ok: true, token: existingToken };\n }\n\n if (!options?.allowVendorConsoleLogs) {\n suppressVendorConsoleWindow();\n }\n const ok = g.CheckCaptcha();\n const token = typeof g.CyberSiaraToken === 'string' ? g.CyberSiaraToken : undefined;\n return ok ? { ok: true, token } : { ok: false };\n}\n\n/**\n * Async-friendly captcha check to handle delayed token population.\n */\nexport async function checkSiaraShieldCaptchaAsync(options?: {\n timeoutMs?: number;\n pollIntervalMs?: number;\n beforeCheckDelayMs?: number;\n retryOnFalseMs?: number;\n falseResultTokenWaitMs?: number;\n}): Promise<{ ok: boolean; token?: string }> {\n const timeoutMs = options?.timeoutMs ?? 1200;\n const pollIntervalMs = options?.pollIntervalMs ?? 120;\n const beforeCheckDelayMs = options?.beforeCheckDelayMs ?? 140;\n const retryOnFalseMs = options?.retryOnFalseMs ?? 0;\n const falseResultTokenWaitMs = options?.falseResultTokenWaitMs ?? 900;\n const existingToken = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof existingToken === 'string' && existingToken.length > 0) {\n return { ok: true, token: existingToken };\n }\n await new Promise((resolve) => setTimeout(resolve, beforeCheckDelayMs));\n let firstCheck = checkSiaraShieldCaptcha(); // one API call only\n if (!firstCheck.ok && retryOnFalseMs > 0) {\n // Optional retry for integrations that observe late vendor-state settling.\n await new Promise((resolve) => setTimeout(resolve, retryOnFalseMs));\n firstCheck = checkSiaraShieldCaptcha();\n }\n if (!firstCheck.ok) {\n // Some vendor flows return false first, then set token shortly after.\n const falseStartedAt = Date.now();\n while (Date.now() - falseStartedAt < falseResultTokenWaitMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n return firstCheck;\n }\n if (firstCheck.token) return firstCheck;\n\n const startedAt = Date.now();\n // Token can be assigned slightly after successful verification.\n while (Date.now() - startedAt < timeoutMs) {\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n const token = getSiaraShieldGlobals().CyberSiaraToken;\n if (typeof token === 'string' && token.length > 0) {\n return { ok: true, token };\n }\n }\n\n return { ok: true };\n}\n\n","export interface SiaraShieldCspOptions {\n /** Server-generated nonce value without the `'nonce-'` prefix. */\n nonce?: string;\n /** Optional if the customer still loads jQuery from Google's CDN. */\n includeGoogleApis?: boolean;\n /** Include `script-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineScript?: boolean;\n /** Include `style-src 'unsafe-inline'` (not recommended for production). */\n includeUnsafeInlineStyle?: boolean;\n}\n\nexport type SiaraShieldCspDirectives = Record<string, string[]>;\n\nconst SELF = \"'self'\";\nconst DATA = 'data:';\nconst UNSAFE_INLINE = \"'unsafe-inline'\";\n\nconst SCRIPT_HOSTS = ['https://embedcdn.mycybersiara.com', 'https://embed.mycybersiara.com'] as const;\nconst OPTIONAL_SCRIPT_HOSTS = ['https://ajax.googleapis.com'] as const;\nconst CONNECT_HOSTS = ['https://embed.mycybersiara.com', 'https://embedcdn.mycybersiara.com'] as const;\nconst STYLE_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://mycybersiara.com',\n 'https://fonts.googleapis.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst FONT_HOSTS = [\n 'https://fonts.gstatic.com',\n 'https://mycybersiara.com',\n 'https://cdnjs.cloudflare.com',\n] as const;\nconst IMG_HOSTS = [\n 'https://embed.mycybersiara.com',\n 'https://embedcdn.mycybersiara.com',\n 'https://mycybersiara.com',\n] as const;\n\nfunction unique(values: Array<string | undefined>): string[] {\n return [...new Set(values.filter((value): value is string => Boolean(value && value.trim())))];\n}\n\nfunction nonceSource(nonce?: string): string | undefined {\n return nonce ? `'nonce-${nonce}'` : undefined;\n}\n\nfunction serializeDirective(name: string, values: string[]): string {\n return values.length > 0 ? `${name} ${values.join(' ')}` : name;\n}\n\nfunction parsePolicy(policy: string): Map<string, string[]> {\n const directives = new Map<string, string[]>();\n\n for (const rawDirective of policy.split(';')) {\n const directive = rawDirective.trim();\n if (!directive) {\n continue;\n }\n\n const parts = directive.split(/\\s+/).filter(Boolean);\n const [name, ...values] = parts;\n if (!name) {\n continue;\n }\n\n directives.set(name, values);\n }\n\n return directives;\n}\n\nexport function getSiaraShieldCspDirectives(options?: SiaraShieldCspOptions): SiaraShieldCspDirectives {\n const includeGoogleApis = options?.includeGoogleApis ?? false;\n // Default to strict/safe CSP. Customers can explicitly opt-in if they accept the risk.\n const includeUnsafeInlineScript = options?.includeUnsafeInlineScript ?? false;\n const includeUnsafeInlineStyle = options?.includeUnsafeInlineStyle ?? false;\n const nonce = nonceSource(options?.nonce);\n const scriptHosts = includeGoogleApis ? [...SCRIPT_HOSTS, ...OPTIONAL_SCRIPT_HOSTS] : [...SCRIPT_HOSTS];\n const styleSources = unique([SELF, nonce, ...STYLE_HOSTS]);\n\n return {\n 'default-src': unique([SELF]),\n 'script-src': unique([SELF, nonce, ...scriptHosts, includeUnsafeInlineScript ? UNSAFE_INLINE : undefined]),\n 'script-src-elem': unique([SELF, nonce, ...scriptHosts]),\n 'connect-src': unique([SELF, ...CONNECT_HOSTS]),\n 'img-src': unique([SELF, DATA, ...IMG_HOSTS]),\n /**\n * CSP note:\n * - A nonce allows `<style nonce=\"...\">...</style>` but does NOT allow `style=\"\"` attributes / `element.style=...`.\n * - Vendor/jQuery uses style attributes in some flows, so we scope `'unsafe-inline'` to *attributes only*.\n * - This keeps scripts strict while restoring compatibility without requiring `style-src 'unsafe-inline'`.\n */\n 'style-src': unique([...styleSources, includeUnsafeInlineStyle ? UNSAFE_INLINE : undefined]),\n 'style-src-elem': unique(styleSources),\n 'style-src-attr': unique([SELF, includeUnsafeInlineStyle ? UNSAFE_INLINE : \"'unsafe-inline'\"]),\n 'font-src': unique([SELF, ...FONT_HOSTS, DATA]),\n };\n}\n\nexport function getSiaraShieldCspPolicy(options?: SiaraShieldCspOptions): string {\n return Object.entries(getSiaraShieldCspDirectives(options))\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n\nexport function mergeSiaraShieldCspPolicy(existingPolicy: string, options?: SiaraShieldCspOptions): string {\n const directives = parsePolicy(existingPolicy);\n const recommended = getSiaraShieldCspDirectives(options);\n\n for (const [name, values] of Object.entries(recommended)) {\n directives.set(name, unique([...(directives.get(name) ?? []), ...values]));\n }\n\n return [...directives.entries()]\n .map(([name, values]) => serializeDirective(name, values))\n .join('; ');\n}\n","/*\n * Public API Surface of siarashield-workspace\n */\n\nexport * from './lib/siarashield-workspace';\nexport * from './lib/siara-shield.component';\nexport * from './lib/siara-shield-loader.service';\nexport * from './lib/siara-shield.globals';\nexport * from './lib/siara-shield';\nexport * from './lib/siara-shield-csp';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["JQUERY_FALLBACK_SRC","CAPTCHA_SCRIPT_SRC","VALIDATION_SCRIPT_SRC","CAPTCHA_READY_TIMEOUT_MS","CAPTCHA_CONTAINER_READY_TIMEOUT_MS","CAPTCHA_CONTAINER_POLL_MS","waitForCaptchaContainer","ensureAccessibilityPopupAliases","runInRootZone","i1.SiaraShieldLoaderService"],"mappings":"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"}
|