kinect/litrature/S2212017312002502.pdf

2508 lines
159 KiB
Plaintext
Raw Normal View History

2024-03-06 13:36:27 +00:00
<!doctype html>
<!--[if IE 9]><html class="ie9" lang={defaultLocale}><![endif]-->
<html lang="en-US">
<head>
<meta name="citation_pii" content="S2212017312002502" />
<meta name="citation_issn" content="2212-0173" />
<meta name="citation_volume" content="3" />
<meta name="citation_lastpage" content="204" />
<meta name="citation_publisher" content="Elsevier" />
<meta name="citation_firstpage" content="196" />
<meta name="citation_fulltext_world_readable" content />
<meta name="citation_journal_title" content="Procedia Technology" />
<meta name="citation_type" content="JOUR" />
<meta name="citation_doi" content="10.1016/j.protcy.2012.03.021" />
<meta name="dc.identifier" content="10.1016/j.protcy.2012.03.021" />
<meta name="citation_article_type" content="Full-length article" />
<meta property="og:description" content="In order to optimize the movements of a robot, every object found in the work environment must not just be identified, but located in reference to the …" />
<meta property="og:image" content="https://ars.els-cdn.com/content/image/1-s2.0-S2212017312X00045-cov150h.gif" />
<meta name="citation_title" content="Detecting objects using color and depth segmentation with Kinect sensor" />
<meta property="og:title" content="Detecting objects using color and depth segmentation with Kinect sensor" />
<meta name="citation_publication_date" content="2012/01/01" />
<meta name="citation_online_date" content="2012/05/23" />
<meta name="robots" content="INDEX,FOLLOW,NOARCHIVE,NOCACHE,NOODP,NOYDIR" />
<title>Detecting objects using color and depth segmentation with Kinect sensor - ScienceDirect</title>
<link rel="canonical" href="https://www.sciencedirect.com/science/article/pii/S2212017312002502" />
<meta property="og:type" content="article" />
<meta name="viewport" content="initial-scale=1" />
<meta name="SDTech" content="Proudly brought to you by the SD Technology team in London, Dayton, and Amsterdam" />
<script type="980a3173744142363f9804a3-text/javascript">(function newRelicBrowserProSPA() {
;
window.NREUM || (NREUM = {});
NREUM.init = {
privacy: {
cookies_enabled: false
},
ajax: {
deny_list: ["bam-cell.nr-data.net"]
}
};
;
NREUM.loader_config = {
accountID: "2128461",
trustKey: "2038175",
agentID: "1118783207",
licenseKey: "7ac4127487",
applicationID: "814813181"
};
;
NREUM.info = {
beacon: "bam.nr-data.net",
errorBeacon: "bam.nr-data.net",
licenseKey: "7ac4127487",
applicationID: "814813181",
sa: 1
};
; /*! For license information please see nr-loader-spa-1.238.0.min.js.LICENSE.txt */
(() => {
"use strict";
var e,
t,
r = {
5763: (e, t, r) => {
r.d(t, {
P_: () => f,
Mt: () => p,
C5: () => s,
DL: () => v,
OP: () => T,
lF: () => D,
Yu: () => y,
Dg: () => h,
CX: () => c,
GE: () => b,
sU: () => _
});
var n = r(8632),
i = r(9567);
const o = {
beacon: n.ce.beacon,
errorBeacon: n.ce.errorBeacon,
licenseKey: void 0,
applicationID: void 0,
sa: void 0,
queueTime: void 0,
applicationTime: void 0,
ttGuid: void 0,
user: void 0,
account: void 0,
product: void 0,
extra: void 0,
jsAttributes: {},
userAttributes: void 0,
atts: void 0,
transactionName: void 0,
tNamePlain: void 0
},
a = {};
function s(e) {
if (!e) throw new Error("All info objects require an agent identifier!");
if (!a[e]) throw new Error("Info for ".concat(e, " was never set"));
return a[e];
}
function c(e, t) {
if (!e) throw new Error("All info objects require an agent identifier!");
a[e] = (0, i.D)(t, o), (0, n.Qy)(e, a[e], "info");
}
var u = r(7056);
const d = () => {
const e = {
blockSelector: "[data-nr-block]",
maskInputOptions: {
password: !0
}
};
return {
allow_bfcache: !0,
privacy: {
cookies_enabled: !0
},
ajax: {
deny_list: void 0,
block_internal: !0,
enabled: !0,
harvestTimeSeconds: 10
},
distributed_tracing: {
enabled: void 0,
exclude_newrelic_header: void 0,
cors_use_newrelic_header: void 0,
cors_use_tracecontext_headers: void 0,
allowed_origins: void 0
},
session: {
domain: void 0,
expiresMs: u.oD,
inactiveMs: u.Hb
},
ssl: void 0,
obfuscate: void 0,
jserrors: {
enabled: !0,
harvestTimeSeconds: 10
},
metrics: {
enabled: !0
},
page_action: {
enabled: !0,
harvestTimeSeconds: 30
},
page_view_event: {
enabled: !0
},
page_view_timing: {
enabled: !0,
harvestTimeSeconds: 30,
long_task: !1
},
session_trace: {
enabled: !0,
harvestTimeSeconds: 10
},
harvest: {
tooManyRequestsDelay: 60
},
session_replay: {
enabled: !1,
harvestTimeSeconds: 60,
sampleRate: .1,
errorSampleRate: .1,
maskTextSelector: "*",
maskAllInputs: !0,
get blockClass() {
return "nr-block";
},
get ignoreClass() {
return "nr-ignore";
},
get maskTextClass() {
return "nr-mask";
},
get blockSelector() {
return e.blockSelector;
},
set blockSelector(t) {
e.blockSelector += ",".concat(t);
},
get maskInputOptions() {
return e.maskInputOptions;
},
set maskInputOptions(t) {
e.maskInputOptions = {
...t,
password: !0
};
}
},
spa: {
enabled: !0,
harvestTimeSeconds: 10
}
};
},
l = {};
function f(e) {
if (!e) throw new Error("All configuration objects require an agent identifier!");
if (!l[e]) throw new Error("Configuration for ".concat(e, " was never set"));
return l[e];
}
function h(e, t) {
if (!e) throw new Error("All configuration objects require an agent identifier!");
l[e] = (0, i.D)(t, d()), (0, n.Qy)(e, l[e], "config");
}
function p(e, t) {
if (!e) throw new Error("All configuration objects require an agent identifier!");
var r = f(e);
if (r) {
for (var n = t.split("."), i = 0; i < n.length - 1; i++) if ("object" != typeof (r = r[n[i]])) return;
r = r[n[n.length - 1]];
}
return r;
}
const g = {
accountID: void 0,
trustKey: void 0,
agentID: void 0,
licenseKey: void 0,
applicationID: void 0,
xpid: void 0
},
m = {};
function v(e) {
if (!e) throw new Error("All loader-config objects require an agent identifier!");
if (!m[e]) throw new Error("LoaderConfig for ".concat(e, " was never set"));
return m[e];
}
function b(e, t) {
if (!e) throw new Error("All loader-config objects require an agent identifier!");
m[e] = (0, i.D)(t, g), (0, n.Qy)(e, m[e], "loader_config");
}
const y = (0, n.mF)().o;
var w = r(385),
A = r(6818);
const x = {
buildEnv: A.Re,
bytesSent: {},
queryBytesSent: {},
customTransaction: void 0,
disabled: !1,
distMethod: A.gF,
isolatedBacklog: !1,
loaderType: void 0,
maxBytes: 3e4,
offset: Math.floor(w._A?.performance?.timeOrigin || w._A?.performance?.timing?.navigationStart || Date.now()),
onerror: void 0,
origin: "" + w._A.location,
ptid: void 0,
releaseIds: {},
session: void 0,
xhrWrappable: "function" == typeof w._A.XMLHttpRequest?.prototype?.addEventListener,
version: A.q4,
denyList: void 0
},
E = {};
function T(e) {
if (!e) throw new Error("All runtime objects require an agent identifier!");
if (!E[e]) throw new Error("Runtime for ".concat(e, " was never set"));
return E[e];
}
function _(e, t) {
if (!e) throw new Error("All runtime objects require an agent identifier!");
E[e] = (0, i.D)(t, x), (0, n.Qy)(e, E[e], "runtime");
}
function D(e) {
return function (e) {
try {
const t = s(e);
return !!t.licenseKey && !!t.errorBeacon && !!t.applicationID;
} catch (e) {
return !1;
}
}(e);
}
},
9567: (e, t, r) => {
r.d(t, {
D: () => i
});
var n = r(50);
function i(e, t) {
try {
if (!e || "object" != typeof e) return (0, n.Z)("Setting a Configurable requires an object as input");
if (!t || "object" != typeof t) return (0, n.Z)("Setting a Configurable requires a model to set its initial properties");
const r = Object.create(Object.getPrototypeOf(t), Object.getOwnPropertyDescriptors(t)),
o = 0 === Object.keys(r).length ? e : r;
for (let a in o) if (void 0 !== e[a]) try {
"object" == typeof e[a] && "object" == typeof t[a] ? r[a] = i(e[a], t[a]) : r[a] = e[a];
} catch (e) {
(0, n.Z)("An error occurred while setting a property of a Configurable", e);
}
return r;
} catch (e) {
(0, n.Z)("An error occured while setting a Configurable", e);
}
}
},
6818: (e, t, r) => {
r.d(t, {
Re: () => i,
gF: () => o,
q4: () => n
});
const n = "1.238.0",
i = "PROD",
o = "CDN";
},
385: (e, t, r) => {
r.d(t, {
FN: () => a,
IF: () => u,
Nk: () => l,
Tt: () => s,
_A: () => o,
il: () => n,
pL: () => c,
v6: () => i,
w1: () => d
});
const n = "undefined" != typeof window && !!window.document,
i = "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self.navigator instanceof WorkerNavigator || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis.navigator instanceof WorkerNavigator),
o = n ? window : "undefined" != typeof WorkerGlobalScope && ("undefined" != typeof self && self instanceof WorkerGlobalScope && self || "undefined" != typeof globalThis && globalThis instanceof WorkerGlobalScope && globalThis),
a = "" + o?.location,
s = /iPad|iPhone|iPod/.test(navigator.userAgent),
c = s && "undefined" == typeof SharedWorker,
u = (() => {
const e = navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);
return Array.isArray(e) && e.length >= 2 ? +e[1] : 0;
})(),
d = Boolean(n && window.document.documentMode),
l = !!navigator.sendBeacon;
},
1117: (e, t, r) => {
r.d(t, {
w: () => o
});
var n = r(50);
const i = {
agentIdentifier: "",
ee: void 0
};
class o {
constructor(e) {
try {
if ("object" != typeof e) return (0, n.Z)("shared context requires an object as input");
this.sharedContext = {}, Object.assign(this.sharedContext, i), Object.entries(e).forEach(e => {
let [t, r] = e;
Object.keys(i).includes(t) && (this.sharedContext[t] = r);
});
} catch (e) {
(0, n.Z)("An error occured while setting SharedContext", e);
}
}
}
},
8e3: (e, t, r) => {
r.d(t, {
L: () => d,
R: () => c
});
var n = r(8325),
i = r(1284),
o = r(4322),
a = r(3325);
const s = {};
function c(e, t) {
const r = {
staged: !1,
priority: a.p[t] || 0
};
u(e), s[e].get(t) || s[e].set(t, r);
}
function u(e) {
e && (s[e] || (s[e] = new Map()));
}
function d() {
let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "feature";
if (u(e), !e || !s[e].get(t)) return a(t);
s[e].get(t).staged = !0;
const r = [...s[e]];
function a(t) {
const r = e ? n.ee.get(e) : n.ee,
a = o.X.handlers;
if (r.backlog && a) {
var s = r.backlog[t],
c = a[t];
if (c) {
for (var u = 0; s && u < s.length; ++u) l(s[u], c);
(0, i.D)(c, function (e, t) {
(0, i.D)(t, function (t, r) {
r[0].on(e, r[1]);
});
});
}
delete a[t], r.backlog[t] = null, r.emit("drain-" + t, []);
}
}
r.every(e => {
let [t, r] = e;
return r.staged;
}) && (r.sort((e, t) => e[1].priority - t[1].priority), r.forEach(e => {
let [t] = e;
a(t);
}));
}
function l(e, t) {
var r = e[1];
(0, i.D)(t[r], function (t, r) {
var n = e[0];
if (r[0] === n) {
var i = r[1],
o = e[3],
a = e[2];
i.apply(o, a);
}
});
}
},
8325: (e, t, r) => {
r.d(t, {
A: () => c,
ee: () => u
});
var n = r(8632),
i = r(2210),
o = r(5763);
class a {
constructor(e) {
this.contextId = e;
}
}
var s = r(3117);
const c = "nr@context:".concat(s.a),
u = function e(t, r) {
var n = {},
s = {},
d = {},
f = !1;
try {
f = 16 === r.length && (0, o.OP)(r).isolatedBacklog;
} catch (e) {}
var h = {
on: g,
addEventListener: g,
removeEventListener: function (e, t) {
var r = n[e];
if (!r) return;
for (var i = 0; i < r.length; i++) r[i] === t && r.splice(i, 1);
},
emit: function (e, r, n, i, o) {
!1 !== o && (o = !0);
if (u.aborted && !i) return;
t && o && t.emit(e, r, n);
for (var a = p(n), c = m(e), d = c.length, l = 0; l < d; l++) c[l].apply(a, r);
var f = b()[s[e]];
f && f.push([h, e, r, a]);
return a;
},
get: v,
listeners: m,
context: p,
buffer: function (e, t) {
const r = b();
if (t = t || "feature", h.aborted) return;
Object.entries(e || {}).forEach(e => {
let [n, i] = e;
s[i] = t, t in r || (r[t] = []);
});
},
abort: l,
aborted: !1,
isBuffering: function (e) {
return !!b()[s[e]];
},
debugId: r,
backlog: f ? {} : t && "object" == typeof t.backlog ? t.backlog : {}
};
return h;
function p(e) {
return e && e instanceof a ? e : e ? (0, i.X)(e, c, () => new a(c)) : new a(c);
}
function g(e, t) {
n[e] = m(e).concat(t);
}
function m(e) {
return n[e] || [];
}
function v(t) {
return d[t] = d[t] || e(h, t);
}
function b() {
return h.backlog;
}
}(void 0, "globalEE"),
d = (0, n.fP)();
function l() {
u.aborted = !0, u.backlog = {};
}
d.ee || (d.ee = u);
},
5546: (e, t, r) => {
r.d(t, {
E: () => n,
p: () => i
});
var n = r(8325).ee.get("handle");
function i(e, t, r, i, o) {
o ? (o.buffer([e], i), o.emit(e, t, r)) : (n.buffer([e], i), n.emit(e, t, r));
}
},
4322: (e, t, r) => {
r.d(t, {
X: () => o
});
var n = r(5546);
o.on = a;
var i = o.handlers = {};
function o(e, t, r, o) {
a(o || n.E, i, e, t, r);
}
function a(e, t, r, i, o) {
o || (o = "feature"), e || (e = n.E);
var a = t[o] = t[o] || {};
(a[r] = a[r] || []).push([e, i]);
}
},
3239: (e, t, r) => {
r.d(t, {
bP: () => s,
iz: () => c,
m$: () => a
});
var n = r(385);
let i = !1,
o = !1;
try {
const e = {
get passive() {
return i = !0, !1;
},
get signal() {
return o = !0, !1;
}
};
n._A.addEventListener("test", null, e), n._A.removeEventListener("test", null, e);
} catch (e) {}
function a(e, t) {
return i || o ? {
capture: !!e,
passive: i,
signal: t
} : !!e;
}
function s(e, t) {
let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
n = arguments.length > 3 ? arguments[3] : void 0;
window.addEventListener(e, t, a(r, n));
}
function c(e, t) {
let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
n = arguments.length > 3 ? arguments[3] : void 0;
document.addEventListener(e, t, a(r, n));
}
},
3117: (e, t, r) => {
r.d(t, {
a: () => n
});
const n = (0, r(4402).Rl)();
},
4402: (e, t, r) => {
r.d(t, {
Ht: () => u,
M: () => c,
Rl: () => a,
ky: () => s
});
var n = r(385);
const i = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
function o(e, t) {
return e ? 15 & e[t] : 16 * Math.random() | 0;
}
function a() {
const e = n._A?.crypto || n._A?.msCrypto;
let t,
r = 0;
return e && e.getRandomValues && (t = e.getRandomValues(new Uint8Array(31))), i.split("").map(e => "x" === e ? o(t, ++r).toString(16) : "y" === e ? (3 & o() | 8).toString(16) : e).join("");
}
function s(e) {
const t = n._A?.crypto || n._A?.msCrypto;
let r,
i = 0;
t && t.getRandomValues && (r = t.getRandomValues(new Uint8Array(31)));
const a = [];
for (var s = 0; s < e; s++) a.push(o(r, ++i).toString(16));
return a.join("");
}
function c() {
return s(16);
}
function u() {
return s(32);
}
},
7056: (e, t, r) => {
r.d(t, {
Bq: () => n,
Hb: () => o,
oD: () => i
});
const n = "NRBA",
i = 144e5,
o = 18e5;
},
7894: (e, t, r) => {
function n() {
return Math.round(performance.now());
}
r.d(t, {
z: () => n
});
},
7243: (e, t, r) => {
r.d(t, {
e: () => o
});
var n = r(385),
i = {};
function o(e) {
if (e in i) return i[e];
if (0 === (e || "").indexOf("data:")) return {
protocol: "data"
};
let t;
var r = n._A?.location,
o = {};
if (n.il) t = document.createElement("a"), t.href = e;else try {
t = new URL(e, r.href);
} catch (e) {
return o;
}
o.port = t.port;
var a = t.href.split("://");
!o.port && a[1] && (o.port = a[1].split("/")[0].split("@").pop().split(":")[1]), o.port && "0" !== o.port || (o.port = "https" === a[0] ? "443" : "80"), o.hostname = t.hostname || r.hostname, o.pathname = t.pathname, o.protocol = a[0], "/" !== o.pathname.charAt(0) && (o.pathname = "/" + o.pathname);
var s = !t.protocol || ":" === t.protocol || t.protocol === r.protocol,
c = t.hostname === r.hostname && t.port === r.port;
return o.sameOrigin = s && (!t.hostname || c), "/" === o.pathname && (i[e] = o), o;
}
},
50: (e, t, r) => {
function n(e, t) {
"function" == typeof console.warn && (console.warn("New Relic: ".concat(e)), t && console.warn(t));
}
r.d(t, {
Z: () => n
});
},
2587: (e, t, r) => {
r.d(t, {
N: () => c,
T: () => u
});
var n = r(8325),
i = r(5546),
o = r(8e3),
a = r(3325);
const s = {
stn: [a.D.sessionTrace],
err: [a.D.jserrors, a.D.metrics],
ins: [a.D.pageAction],
spa: [a.D.spa],
sr: [a.D.sessionReplay, a.D.sessionTrace]
};
function c(e, t) {
const r = n.ee.get(t);
e && "object" == typeof e && (Object.entries(e).forEach(e => {
let [t, n] = e;
void 0 === u[t] && (s[t] ? s[t].forEach(e => {
n ? (0, i.p)("feat-" + t, [], void 0, e, r) : (0, i.p)("block-" + t, [], void 0, e, r), (0, i.p)("rumresp-" + t, [Boolean(n)], void 0, e, r);
}) : n && (0, i.p)("feat-" + t, [], void 0, void 0, r), u[t] = Boolean(n));
}), Object.keys(s).forEach(e => {
void 0 === u[e] && (s[e]?.forEach(t => (0, i.p)("rumresp-" + e, [!1], void 0, t, r)), u[e] = !1);
}), (0, o.L)(t, a.D.pageViewEvent));
}
const u = {};
},
2210: (e, t, r) => {
r.d(t, {
X: () => i
});
var n = Object.prototype.hasOwnProperty;
function i(e, t, r) {
if (n.call(e, t)) return e[t];
var i = r();
if (Object.defineProperty && Object.keys) try {
return Object.defineProperty(e, t, {
value: i,
writable: !0,
enumerable: !1
}), i;
} catch (e) {}
return e[t] = i, i;
}
},
1284: (e, t, r) => {
r.d(t, {
D: () => n
});
const n = (e, t) => Object.entries(e || {}).map(e => {
let [r, n] = e;
return t(r, n);
});
},
4351: (e, t, r) => {
r.d(t, {
P: () => o
});
var n = r(8325);
const i = () => {
const e = new WeakSet();
return (t, r) => {
if ("object" == typeof r && null !== r) {
if (e.has(r)) return;
e.add(r);
}
return r;
};
};
function o(e) {
try {
return JSON.stringify(e, i());
} catch (e) {
try {
n.ee.emit("internal-error", [e]);
} catch (e) {}
}
}
},
3960: (e, t, r) => {
r.d(t, {
K: () => a,
b: () => o
});
var n = r(3239);
function i() {
return "undefined" == typeof document || "complete" === document.readyState;
}
function o(e, t) {
if (i()) return e();
(0, n.bP)("load", e, t);
}
function a(e) {
if (i()) return e();
(0, n.iz)("DOMContentLoaded", e);
}
},
8632: (e, t, r) => {
r.d(t, {
EZ: () => u,
Qy: () => c,
ce: () => o,
fP: () => a,
gG: () => d,
mF: () => s
});
var n = r(7894),
i = r(385);
const o = {
beacon: "bam.nr-data.net",
errorBeacon: "bam.nr-data.net"
};
function a() {
return i._A.NREUM || (i._A.NREUM = {}), void 0 === i._A.newrelic && (i._A.newrelic = i._A.NREUM), i._A.NREUM;
}
function s() {
let e = a();
return e.o || (e.o = {
ST: i._A.setTimeout,
SI: i._A.setImmediate,
CT: i._A.clearTimeout,
XHR: i._A.XMLHttpRequest,
REQ: i._A.Request,
EV: i._A.Event,
PR: i._A.Promise,
MO: i._A.MutationObserver,
FETCH: i._A.fetch
}), e;
}
function c(e, t, r) {
let i = a();
const o = i.initializedAgents || {},
s = o[e] || {};
return Object.keys(s).length || (s.initializedAt = {
ms: (0, n.z)(),
date: new Date()
}), i.initializedAgents = {
...o,
[e]: {
...s,
[r]: t
}
}, i;
}
function u(e, t) {
a()[e] = t;
}
function d() {
return function () {
let e = a();
const t = e.info || {};
e.info = {
beacon: o.beacon,
errorBeacon: o.errorBeacon,
...t
};
}(), function () {
let e = a();
const t = e.init || {};
e.init = {
...t
};
}(), s(), function () {
let e = a();
const t = e.loader_config || {};
e.loader_config = {
...t
};
}(), a();
}
},
7956: (e, t, r) => {
r.d(t, {
N: () => i
});
var n = r(3239);
function i(e) {
let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
r = arguments.length > 2 ? arguments[2] : void 0,
i = arguments.length > 3 ? arguments[3] : void 0;
return void (0, n.iz)("visibilitychange", function () {
if (t) return void ("hidden" == document.visibilityState && e());
e(document.visibilityState);
}, r, i);
}
},
1214: (e, t, r) => {
r.d(t, {
em: () => b,
u5: () => j,
QU: () => O,
_L: () => I,
Gm: () => H,
Lg: () => L,
BV: () => G,
Kf: () => K
});
var n = r(8325),
i = r(3117);
const o = "nr@original:".concat(i.a);
var a = Object.prototype.hasOwnProperty,
s = !1;
function c(e, t) {
return e || (e = n.ee), r.inPlace = function (e, t, n, i, o) {
n || (n = "");
const a = "-" === n.charAt(0);
for (let s = 0; s < t.length; s++) {
const c = t[s],
u = e[c];
d(u) || (e[c] = r(u, a ? c + n : n, i, c, o));
}
}, r.flag = o, r;
function r(t, r, n, s, c) {
return d(t) ? t : (r || (r = ""), nrWrapper[o] = t, function (e, t, r) {
if (Object.defineProperty && Object.keys) try {
return Object.keys(e).forEach(function (r) {
Object.defineProperty(t, r, {
get: function () {
return e[r];
},
set: function (t) {
return e[r] = t, t;
}
});
}), t;
} catch (e) {
u([e], r);
}
for (var n in e) a.call(e, n) && (t[n] = e[n]);
}(t, nrWrapper, e), nrWrapper);
function nrWrapper() {
var o, a, d, l;
try {
a = this, o = [...arguments], d = "function" == typeof n ? n(o, a) : n || {};
} catch (t) {
u([t, "", [o, a, s], d], e);
}
i(r + "start", [o, a, s], d, c);
try {
return l = t.apply(a, o);
} catch (e) {
throw i(r + "err", [o, a, e], d, c), e;
} finally {
i(r + "end", [o, a, l], d, c);
}
}
}
function i(r, n, i, o) {
if (!s || t) {
var a = s;
s = !0;
try {
e.emit(r, n, i, t, o);
} catch (t) {
u([t, r, n, i], e);
}
s = a;
}
}
}
function u(e, t) {
t || (t = n.ee);
try {
t.emit("internal-error", e);
} catch (e) {}
}
function d(e) {
return !(e && e instanceof Function && e.apply && !e[o]);
}
var l = r(2210),
f = r(385);
const h = {},
p = f._A.XMLHttpRequest,
g = "addEventListener",
m = "removeEventListener",
v = "nr@wrapped:".concat(n.A);
function b(e) {
var t = function (e) {
return (e || n.ee).get("events");
}(e);
if (h[t.debugId]++) return t;
h[t.debugId] = 1;
var r = c(t, !0);
function i(e) {
r.inPlace(e, [g, m], "-", o);
}
function o(e, t) {
return e[1];
}
return "getPrototypeOf" in Object && (f.il && y(document, i), y(f._A, i), y(p.prototype, i)), t.on(g + "-start", function (e, t) {
var n = e[1];
if (null !== n && ("function" == typeof n || "object" == typeof n)) {
var i = (0, l.X)(n, v, function () {
var e = {
object: function () {
if ("function" != typeof n.handleEvent) return;
return n.handleEvent.apply(n, arguments);
},
function: n
}[typeof n];
return e ? r(e, "fn-", null, e.name || "anonymous") : n;
});
this.wrapped = e[1] = i;
}
}), t.on(m + "-start", function (e) {
e[1] = this.wrapped || e[1];
}), t;
}
function y(e, t) {
let r = e;
for (; "object" == typeof r && !Object.prototype.hasOwnProperty.call(r, g);) r = Object.getPrototypeOf(r);
for (var n = arguments.length, i = new Array(n > 2 ? n - 2 : 0), o = 2; o < n; o++) i[o - 2] = arguments[o];
r && t(r, ...i);
}
var w = "fetch-",
A = w + "body-",
x = ["arrayBuffer", "blob", "json", "text", "formData"],
E = f._A.Request,
T = f._A.Response,
_ = "prototype";
const D = {};
function j(e) {
const t = function (e) {
return (e || n.ee).get("fetch");
}(e);
if (!(E && T && f._A.fetch)) return t;
if (D[t.debugId]++) return t;
function r(e, r, i) {
var o = e[r];
"function" == typeof o && (e[r] = function () {
var e,
r = [...arguments],
a = {};
t.emit(i + "before-start", [r], a), a[n.A] && a[n.A].dt && (e = a[n.A].dt);
var s = o.apply(this, r);
return t.emit(i + "start", [r, e], s), s.then(function (e) {
return t.emit(i + "end", [null, e], s), e;
}, function (e) {
throw t.emit(i + "end", [e], s), e;
});
});
}
return D[t.debugId] = 1, x.forEach(e => {
r(E[_], e, A), r(T[_], e, A);
}), r(f._A, "fetch", w), t.on(w + "end", function (e, r) {
var n = this;
if (r) {
var i = r.headers.get("content-length");
null !== i && (n.rxSize = i), t.emit(w + "done", [null, r], n);
} else t.emit(w + "done", [e], n);
}), t;
}
const C = {},
N = ["pushState", "replaceState"];
function O(e) {
const t = function (e) {
return (e || n.ee).get("history");
}(e);
return !f.il || C[t.debugId]++ || (C[t.debugId] = 1, c(t).inPlace(window.history, N, "-")), t;
}
var S = r(3239);
const P = {},
R = ["appendChild", "insertBefore", "replaceChild"];
function I(e) {
const t = function (e) {
return (e || n.ee).get("jsonp");
}(e);
if (!f.il || P[t.debugId]) return t;
P[t.debugId] = !0;
var r = c(t),
i = /[?&](?:callback|cb)=([^&#]+)/,
o = /(.*)\.([^.]+)/,
a = /^(\w+)(\.|$)(.*)$/;
function s(e, t) {
if (!e) return t;
const r = e.match(a),
n = r[1];
return s(r[3], t[n]);
}
return r.inPlace(Node.prototype, R, "dom-"), t.on("dom-start", function (e) {
!function (e) {
if (!e || "string" != typeof e.nodeName || "script" !== e.nodeName.toLowerCase()) return;
if ("function" != typeof e.addEventListener) return;
var n = (a = e.src, c = a.match(i), c ? c[1] : null);
var a, c;
if (!n) return;
var u = function (e) {
var t = e.match(o);
if (t && t.length >= 3) return {
key: t[2],
parent: s(t[1], window)
};
return {
key: e,
parent: window
};
}(n);
if ("function" != typeof u.parent[u.key]) return;
var d = {};
function l() {
t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, S.m$)(!1)), e.removeEventListener("error", f, (0, S.m$)(!1));
}
function f() {
t.emit("jsonp-error", [], d), t.emit("jsonp-end", [], d), e.removeEventListener("load", l, (0, S.m$)(!1)), e.removeEventListener("error", f, (0, S.m$)(!1));
}
r.inPlace(u.parent, [u.key], "cb-", d), e.addEventListener("load", l, (0, S.m$)(!1)), e.addEventListener("error", f, (0, S.m$)(!1)), t.emit("new-jsonp", [e.src], d);
}(e[0]);
}), t;
}
const k = {};
function H(e) {
const t = function (e) {
return (e || n.ee).get("mutation");
}(e);
if (!f.il || k[t.debugId]) return t;
k[t.debugId] = !0;
var r = c(t),
i = f._A.MutationObserver;
return i && (window.MutationObserver = function (e) {
return this instanceof i ? new i(r(e, "fn-")) : i.apply(this, arguments);
}, MutationObserver.prototype = i.prototype), t;
}
const z = {};
function L(e) {
const t = function (e) {
return (e || n.ee).get("promise");
}(e);
if (z[t.debugId]) return t;
z[t.debugId] = !0;
var r = t.context,
i = c(t),
a = f._A.Promise;
return a && function () {
function e(r) {
var n = t.context(),
o = i(r, "executor-", n, null, !1);
const s = Reflect.construct(a, [o], e);
return t.context(s).getCtx = function () {
return n;
}, s;
}
f._A.Promise = e, Object.defineProperty(e, "name", {
value: "Promise"
}), e.toString = function () {
return a.toString();
}, Object.setPrototypeOf(e, a), ["all", "race"].forEach(function (r) {
const n = a[r];
e[r] = function (e) {
let i = !1;
[...(e || [])].forEach(e => {
this.resolve(e).then(a("all" === r), a(!1));
});
const o = n.apply(this, arguments);
return o;
function a(e) {
return function () {
t.emit("propagate", [null, !i], o, !1, !1), i = i || !e;
};
}
};
}), ["resolve", "reject"].forEach(function (r) {
const n = a[r];
e[r] = function (e) {
const r = n.apply(this, arguments);
return e !== r && t.emit("propagate", [e, !0], r, !1, !1), r;
};
}), e.prototype = a.prototype;
const n = a.prototype.then;
a.prototype.then = function () {
var e = this,
o = r(e);
o.promise = e;
for (var a = arguments.length, s = new Array(a), c = 0; c < a; c++) s[c] = arguments[c];
s[0] = i(s[0], "cb-", o, null, !1), s[1] = i(s[1], "cb-", o, null, !1);
const u = n.apply(this, s);
return o.nextPromise = u, t.emit("propagate", [e, !0], u, !1, !1), u;
}, a.prototype.then[o] = n, t.on("executor-start", function (e) {
e[0] = i(e[0], "resolve-", this, null, !1), e[1] = i(e[1], "resolve-", this, null, !1);
}), t.on("executor-err", function (e, t, r) {
e[1](r);
}), t.on("cb-end", function (e, r, n) {
t.emit("propagate", [n, !0], this.nextPromise, !1, !1);
}), t.on("propagate", function (e, r, n) {
this.getCtx && !r || (this.getCtx = function () {
if (e instanceof Promise) var r = t.context(e);
return r && r.getCtx ? r.getCtx() : this;
});
});
}(), t;
}
const M = {},
B = "setTimeout",
F = "setInterval",
U = "clearTimeout",
q = "-start",
Z = "-",
V = [B, "setImmediate", F, U, "clearImmediate"];
function G(e) {
const t = function (e) {
return (e || n.ee).get("timer");
}(e);
if (M[t.debugId]++) return t;
M[t.debugId] = 1;
var r = c(t);
return r.inPlace(f._A, V.slice(0, 2), B + Z), r.inPlace(f._A, V.slice(2, 3), F + Z), r.inPlace(f._A, V.slice(3), U + Z), t.on(F + q, function (e, t, n) {
e[0] = r(e[0], "fn-", null, n);
}), t.on(B + q, function (e, t, n) {
this.method = n, this.timerDuration = isNaN(e[1]) ? 0 : +e[1], e[0] = r(e[0], "fn-", this, n);
}), t;
}
var W = r(50);
const X = {},
Q = ["open", "send"];
function K(e) {
var t = e || n.ee;
const r = function (e) {
return (e || n.ee).get("xhr");
}(t);
if (X[r.debugId]++) return r;
X[r.debugId] = 1, b(t);
var i = c(r),
o = f._A.XMLHttpRequest,
a = f._A.MutationObserver,
s = f._A.Promise,
u = f._A.setInterval,
d = "readystatechange",
l = ["onload", "onerror", "onabort", "onloadstart", "onloadend", "onprogress", "ontimeout"],
h = [],
p = f._A.XMLHttpRequest = function (e) {
const t = new o(e),
n = r.context(t);
try {
r.emit("new-xhr", [t], n), t.addEventListener(d, (a = n, function () {
var e = this;
e.readyState > 3 && !a.resolved && (a.resolved = !0, r.emit("xhr-resolved", [], e)), i.inPlace(e, l, "fn-", A);
}), (0, S.m$)(!1));
} catch (e) {
(0, W.Z)("An error occurred while intercepting XHR", e);
try {
r.emit("internal-error", [e]);
} catch (e) {}
}
var a;
return t;
};
function g(e, t) {
i.inPlace(t, ["onreadystatechange"], "fn-", A);
}
if (function (e, t) {
for (var r in e) t[r] = e[r];
}(o, p), p.prototype = o.prototype, i.inPlace(p.prototype, Q, "-xhr-", A), r.on("send-xhr-start", function (e, t) {
g(e, t), function (e) {
h.push(e), a && (m ? m.then(w) : u ? u(w) : (v = -v, y.data = v));
}(t);
}), r.on("open-xhr-start", g), a) {
var m = s && s.resolve();
if (!u && !s) {
var v = 1,
y = document.createTextNode(v);
new a(w).observe(y, {
characterData: !0
});
}
} else t.on("fn-end", function (e) {
e[0] && e[0].type === d || w();
});
function w() {
for (var e = 0; e < h.length; e++) g(0, h[e]);
h.length && (h = []);
}
function A(e, t) {
return t;
}
return r;
}
},
7825: (e, t, r) => {
r.d(t, {
t: () => n
});
const n = r(3325).D.ajax;
},
6660: (e, t, r) => {
r.d(t, {
t: () => n
});
const n = r(3325).D.jserrors;
},
3081: (e, t, r) => {
r.d(t, {
gF: () => o,
mY: () => i,
t9: () => n,
vz: () => s,
xS: () => a
});
const n = r(3325).D.metrics,
i = "sm",
o = "cm",
a = "storeSupportabilityMetrics",
s = "storeEventMetrics";
},
4649: (e, t, r) => {
r.d(t, {
t: () => n
});
const n = r(3325).D.pageAction;
},
7633: (e, t, r) => {
r.d(t, {
Dz: () => i,
OJ: () => a,
qw: () => o,
t9: () => n
});
const n = r(3325).D.pageViewEvent,
i = "firstbyte",
o = "domcontent",
a = "windowload";
},
9251: (e, t, r) => {
r.d(t, {
t: () => n
});
const n = r(3325).D.pageViewTiming;
},
3614: (e, t, r) => {
r.d(t, {
BST_RESOURCE: () => i,
END: () => s,
FEATURE_NAME: () => n,
FN_END: () => u,
FN_START: () => c,
PUSH_STATE: () => d,
RESOURCE: () => o,
START: () => a
});
const n = r(3325).D.sessionTrace,
i = "bstResource",
o = "resource",
a = "-start",
s = "-end",
c = "fn" + a,
u = "fn" + s,
d = "pushState";
},
7836: (e, t, r) => {
r.d(t, {
BODY: () => x,
CB_END: () => E,
CB_START: () => u,
END: () => A,
FEATURE_NAME: () => i,
FETCH: () => _,
FETCH_BODY: () => v,
FETCH_DONE: () => m,
FETCH_START: () => g,
FN_END: () => c,
FN_START: () => s,
INTERACTION: () => f,
INTERACTION_API: () => d,
INTERACTION_EVENTS: () => o,
JSONP_END: () => b,
JSONP_NODE: () => p,
JS_TIME: () => T,
MAX_TIMER_BUDGET: () => a,
REMAINING: () => l,
SPA_NODE: () => h,
START: () => w,
originalSetTimeout: () => y
});
var n = r(5763);
const i = r(3325).D.spa,
o = ["click", "submit", "keypress", "keydown", "keyup", "change"],
a = 999,
s = "fn-start",
c = "fn-end",
u = "cb-start",
d = "api-ixn-",
l = "remaining",
f = "interaction",
h = "spaNode",
p = "jsonpNode",
g = "fetch-start",
m = "fetch-done",
v = "fetch-body-",
b = "jsonp-end",
y = n.Yu.ST,
w = "-start",
A = "-end",
x = "-body",
E = "cb" + A,
T = "jsTime",
_ = "fetch";
},
5938: (e, t, r) => {
r.d(t, {
W: () => o
});
var n = r(5763),
i = r(8325);
class o {
constructor(e, t, r) {
this.agentIdentifier = e, this.aggregator = t, this.ee = i.ee.get(e, (0, n.OP)(this.agentIdentifier).isolatedBacklog), this.featureName = r, this.blocked = !1;
}
}
},
9144: (e, t, r) => {
r.d(t, {
j: () => m
});
var n = r(3325),
i = r(5763),
o = r(5546),
a = r(8325),
s = r(7894),
c = r(8e3),
u = r(3960),
d = r(385),
l = r(50),
f = r(3081),
h = r(8632);
function p() {
const e = (0, h.gG)();
["setErrorHandler", "finished", "addToTrace", "inlineHit", "addRelease", "addPageAction", "setCurrentRouteName", "setPageViewName", "setCustomAttribute", "interaction", "noticeError", "setUserId", "setApplicationVersion"].forEach(t => {
e[t] = function () {
for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++) n[i] = arguments[i];
return function (t) {
for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i];
let o = [];
return Object.values(e.initializedAgents).forEach(e => {
e.exposed && e.api[t] && o.push(e.api[t](...n));
}), o.length > 1 ? o : o[0];
}(t, ...n);
};
});
}
var g = r(2587);
function m(e) {
let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
m = arguments.length > 2 ? arguments[2] : void 0,
v = arguments.length > 3 ? arguments[3] : void 0,
{
init: b,
info: y,
loader_config: w,
runtime: A = {
loaderType: m
},
exposed: x = !0
} = t;
const E = (0, h.gG)();
y || (b = E.init, y = E.info, w = E.loader_config), (0, i.Dg)(e, b || {}), (0, i.GE)(e, w || {}), y.jsAttributes ??= {}, d.v6 && (y.jsAttributes.isWorker = !0), (0, i.CX)(e, y);
const T = (0, i.P_)(e);
A.denyList = [...(T.ajax?.deny_list || []), ...(T.ajax?.block_internal ? [y.beacon, y.errorBeacon] : [])], (0, i.sU)(e, A), p();
const _ = function (e, t) {
t || (0, c.R)(e, "api");
const h = {};
var p = a.ee.get(e),
g = p.get("tracer"),
m = "api-",
v = m + "ixn-";
function b(t, r, n, o) {
const a = (0, i.C5)(e);
return null === r ? delete a.jsAttributes[t] : (0, i.CX)(e, {
...a,
jsAttributes: {
...a.jsAttributes,
[t]: r
}
}), A(m, n, !0, o || null === r ? "session" : void 0)(t, r);
}
function y() {}
["setErrorHandler", "finished", "addToTrace", "inlineHit", "addRelease"].forEach(e => h[e] = A(m, e, !0, "api")), h.addPageAction = A(m, "addPageAction", !0, n.D.pageAction), h.setCurrentRouteName = A(m, "routeName", !0, n.D.spa), h.setPageViewName = function (t, r) {
if ("string" == typeof t) return "/" !== t.charAt(0) && (t = "/" + t), (0, i.OP)(e).customTransaction = (r || "http://custom.transaction") + t, A(m, "setPageViewName", !0)();
}, h.setCustomAttribute = function (e, t) {
let r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
if ("string" == typeof e) {
if (["string", "number"].includes(typeof t) || null === t) return b(e, t, "setCustomAttribute", r);
(0, l.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of <".concat(typeof t, "> was provided."));
} else (0, l.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof e, "> was provided."));
}, h.setUserId = function (e) {
if ("string" == typeof e || null === e) return b("enduser.id", e, "setUserId", !0);
(0, l.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof e, "> was provided."));
}, h.setApplicationVersion = function (e) {
if ("string" == typeof e || null === e) return b("application.version", e, "setApplicationVersion", !1);
(0, l.Z)("Failed to execute setApplicationVersion. Expected <String | null>, but got <".concat(typeof e, ">."));
}, h.interaction = function () {
return new y().get();
};
var w = y.prototype = {
createTracer: function (e, t) {
var r = {},
i = this,
a = "function" == typeof t;
return (0, o.p)(v + "tracer", [(0, s.z)(), e, r], i, n.D.spa, p), function () {
if (g.emit((a ? "" : "no-") + "fn-start", [(0, s.z)(), i, a], r), a) try {
return t.apply(this, arguments);
} catch (e) {
throw g.emit("fn-err", [arguments, this, e], r), e;
} finally {
g.emit("fn-end", [(0, s.z)()], r);
}
};
}
};
function A(e, t, r, i) {
return function () {
return (0, o.p)(f.xS, ["API/" + t + "/called"], void 0, n.D.metrics, p), i && (0, o.p)(e + t, [(0, s.z)(), ...arguments], r ? null : this, i, p), r ? void 0 : this;
};
}
function x() {
r.e(111).then(r.bind(r, 7438)).then(t => {
let {
setAPI: r
} = t;
r(e), (0, c.L)(e, "api");
}).catch(() => (0, l.Z)("Downloading runtime APIs failed..."));
}
return ["actionText", "setName", "setAttribute", "save", "ignore", "onEnd", "getContext", "end", "get"].forEach(e => {
w[e] = A(v, e, void 0, n.D.spa);
}), h.noticeError = function (e, t) {
"string" == typeof e && (e = new Error(e)), (0, o.p)(f.xS, ["API/noticeError/called"], void 0, n.D.metrics, p), (0, o.p)("err", [e, (0, s.z)(), !1, t], void 0, n.D.jserrors, p);
}, d.il ? (0, u.b)(() => x(), !0) : x(), h;
}(e, v);
return (0, h.Qy)(e, _, "api"), (0, h.Qy)(e, x, "exposed"), (0, h.EZ)("activatedFeatures", g.T), _;
}
},
3325: (e, t, r) => {
r.d(t, {
D: () => n,
p: () => i
});
const n = {
ajax: "ajax",
jserrors: "jserrors",
metrics: "metrics",
pageAction: "page_action",
pageViewEvent: "page_view_event",
pageViewTiming: "page_view_timing",
sessionReplay: "session_replay",
sessionTrace: "session_trace",
spa: "spa"
},
i = {
[n.pageViewEvent]: 1,
[n.pageViewTiming]: 2,
[n.metrics]: 3,
[n.jserrors]: 4,
[n.ajax]: 5,
[n.sessionTrace]: 6,
[n.pageAction]: 7,
[n.spa]: 8,
[n.sessionReplay]: 9
};
}
},
n = {};
function i(e) {
var t = n[e];
if (void 0 !== t) return t.exports;
var o = n[e] = {
exports: {}
};
return r[e](o, o.exports, i), o.exports;
}
i.m = r, i.d = (e, t) => {
for (var r in t) i.o(t, r) && !i.o(e, r) && Object.defineProperty(e, r, {
enumerable: !0,
get: t[r]
});
}, i.f = {}, i.e = e => Promise.all(Object.keys(i.f).reduce((t, r) => (i.f[r](e, t), t), [])), i.u = e => "nr-spa.1097a448-1.238.0.min.js", i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), e = {}, t = "NRBA-1.238.0.PROD:", i.l = (r, n, o, a) => {
if (e[r]) e[r].push(n);else {
var s, c;
if (void 0 !== o) for (var u = document.getElementsByTagName("script"), d = 0; d < u.length; d++) {
var l = u[d];
if (l.getAttribute("src") == r || l.getAttribute("data-webpack") == t + o) {
s = l;
break;
}
}
s || (c = !0, (s = document.createElement("script")).charset = "utf-8", s.timeout = 120, i.nc && s.setAttribute("nonce", i.nc), s.setAttribute("data-webpack", t + o), s.src = r), e[r] = [n];
var f = (t, n) => {
s.onerror = s.onload = null, clearTimeout(h);
var i = e[r];
if (delete e[r], s.parentNode && s.parentNode.removeChild(s), i && i.forEach(e => e(n)), t) return t(n);
},
h = setTimeout(f.bind(null, void 0, {
type: "timeout",
target: s
}), 12e4);
s.onerror = f.bind(null, s.onerror), s.onload = f.bind(null, s.onload), c && document.head.appendChild(s);
}
}, i.r = e => {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(e, "__esModule", {
value: !0
});
}, i.p = "https://js-agent.newrelic.com/", (() => {
var e = {
801: 0,
92: 0
};
i.f.j = (t, r) => {
var n = i.o(e, t) ? e[t] : void 0;
if (0 !== n) if (n) r.push(n[2]);else {
var o = new Promise((r, i) => n = e[t] = [r, i]);
r.push(n[2] = o);
var a = i.p + i.u(t),
s = new Error();
i.l(a, r => {
if (i.o(e, t) && (0 !== (n = e[t]) && (e[t] = void 0), n)) {
var o = r && ("load" === r.type ? "missing" : r.type),
a = r && r.target && r.target.src;
s.message = "Loading chunk " + t + " failed.\n(" + o + ": " + a + ")", s.name = "ChunkLoadError", s.type = o, s.request = a, n[1](s);
}
}, "chunk-" + t, t);
}
};
var t = (t, r) => {
var n,
o,
[a, s, c] = r,
u = 0;
if (a.some(t => 0 !== e[t])) {
for (n in s) i.o(s, n) && (i.m[n] = s[n]);
if (c) c(i);
}
for (t && t(r); u < a.length; u++) o = a[u], i.o(e, o) && e[o] && e[o][0](), e[o] = 0;
},
r = self["webpackChunk:NRBA-1.238.0.PROD"] = self["webpackChunk:NRBA-1.238.0.PROD"] || [];
r.forEach(t.bind(null, 0)), r.push = t.bind(null, r.push.bind(r));
})(), (() => {
var e = i(50);
class t {
addPageAction(t, r) {
(0, e.Z)("Call to agent api addPageAction failed. The session trace feature is not currently initialized.");
}
setPageViewName(t, r) {
(0, e.Z)("Call to agent api setPageViewName failed. The page view feature is not currently initialized.");
}
setCustomAttribute(t, r, n) {
(0, e.Z)("Call to agent api setCustomAttribute failed. The js errors feature is not currently initialized.");
}
noticeError(t, r) {
(0, e.Z)("Call to agent api noticeError failed. The js errors feature is not currently initialized.");
}
setUserId(t) {
(0, e.Z)("Call to agent api setUserId failed. The js errors feature is not currently initialized.");
}
setApplicationVersion(t) {
(0, e.Z)("Call to agent api setApplicationVersion failed. The agent is not currently initialized.");
}
setErrorHandler(t) {
(0, e.Z)("Call to agent api setErrorHandler failed. The js errors feature is not currently initialized.");
}
finished(t) {
(0, e.Z)("Call to agent api finished failed. The page action feature is not currently initialized.");
}
addRelease(t, r) {
(0, e.Z)("Call to agent api addRelease failed. The agent is not currently initialized.");
}
}
var r = i(3325),
n = i(5763);
const o = Object.values(r.D);
function a(e) {
const t = {};
return o.forEach(r => {
t[r] = function (e, t) {
return !1 !== (0, n.Mt)(t, "".concat(e, ".enabled"));
}(r, e);
}), t;
}
var s = i(9144);
var c = i(5546),
u = i(385),
d = i(8e3),
l = i(5938),
f = i(3960);
class h extends l.W {
constructor(e, t, r) {
let n = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];
super(e, t, r), this.auto = n, this.abortHandler, this.featAggregate, this.onAggregateImported, n && (0, d.R)(e, r);
}
importAggregator() {
let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
if (this.featAggregate || !this.auto) return;
const r = u.il && !0 === (0, n.Mt)(this.agentIdentifier, "privacy.cookies_enabled");
let o;
this.onAggregateImported = new Promise(e => {
o = e;
});
const a = async () => {
let n;
try {
if (r) {
const {
setupAgentSession: e
} = await i.e(111).then(i.bind(i, 3228));
n = e(this.agentIdentifier);
}
} catch (t) {
(0, e.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.", t);
}
try {
if (!this.shouldImportAgg(this.featureName, n)) return (0, d.L)(this.agentIdentifier, this.featureName), void o(!1);
const {
lazyFeatureLoader: e
} = await i.e(111).then(i.bind(i, 8582)),
{
Aggregate: r
} = await e(this.featureName, "aggregate");
this.featAggregate = new r(this.agentIdentifier, this.aggregator, t), o(!0);
} catch (t) {
(0, e.Z)("Downloading and initializing ".concat(this.featureName, " failed..."), t), this.abortHandler?.(), o(!1);
}
};
u.il ? (0, f.b)(() => a(), !0) : a();
}
shouldImportAgg(e, t) {
return e !== r.D.sessionReplay || !!n.Yu.MO && !1 !== (0, n.Mt)(this.agentIdentifier, "session_trace.enabled") && (!!t?.isNew || !!t?.state.sessionReplay);
}
}
var p = i(7633),
g = i(7894);
class m extends h {
static featureName = p.t9;
constructor(e, t) {
let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
if (super(e, t, p.t9, i), ("undefined" == typeof PerformanceNavigationTiming || u.Tt) && "undefined" != typeof PerformanceTiming) {
const t = (0, n.OP)(e);
t[p.Dz] = Math.max(Date.now() - t.offset, 0), (0, f.K)(() => t[p.qw] = Math.max((0, g.z)() - t[p.Dz], 0)), (0, f.b)(() => {
const e = (0, g.z)();
t[p.OJ] = Math.max(e - t[p.Dz], 0), (0, c.p)("timing", ["load", e], void 0, r.D.pageViewTiming, this.ee);
});
}
this.importAggregator();
}
}
var v = i(1117),
b = i(1284);
class y extends v.w {
constructor(e) {
super(e), this.aggregatedData = {};
}
store(e, t, r, n, i) {
var o = this.getBucket(e, t, r, i);
return o.metrics = function (e, t) {
t || (t = {
count: 0
});
return t.count += 1, (0, b.D)(e, function (e, r) {
t[e] = w(r, t[e]);
}), t;
}(n, o.metrics), o;
}
merge(e, t, r, n, i) {
var o = this.getBucket(e, t, n, i);
if (o.metrics) {
var a = o.metrics;
a.count += r.count, (0, b.D)(r, function (e, t) {
if ("count" !== e) {
var n = a[e],
i = r[e];
i && !i.c ? a[e] = w(i.t, n) : a[e] = function (e, t) {
if (!t) return e;
t.c || (t = A(t.t));
return t.min = Math.min(e.min, t.min), t.max = Math.max(e.max, t.max), t.t += e.t, t.sos += e.sos, t.c += e.c, t;
}(i, a[e]);
}
});
} else o.metrics = r;
}
storeMetric(e, t, r, n) {
var i = this.getBucket(e, t, r);
return i.stats = w(n, i.stats), i;
}
getBucket(e, t, r, n) {
this.aggregatedData[e] || (this.aggregatedData[e] = {});
var i = this.aggregatedData[e][t];
return i || (i = this.aggregatedData[e][t] = {
params: r || {}
}, n && (i.custom = n)), i;
}
get(e, t) {
return t ? this.aggregatedData[e] && this.aggregatedData[e][t] : this.aggregatedData[e];
}
take(e) {
for (var t = {}, r = "", n = !1, i = 0; i < e.length; i++) t[r = e[i]] = x(this.aggregatedData[r]), t[r].length && (n = !0), delete this.aggregatedData[r];
return n ? t : null;
}
}
function w(e, t) {
return null == e ? function (e) {
e ? e.c++ : e = {
c: 1
};
return e;
}(t) : t ? (t.c || (t = A(t.t)), t.c += 1, t.t += e, t.sos += e * e, e > t.max && (t.max = e), e < t.min && (t.min = e), t) : {
t: e
};
}
function A(e) {
return {
t: e,
min: e,
max: e,
sos: e * e,
c: 1
};
}
function x(e) {
return "object" != typeof e ? [] : (0, b.D)(e, E);
}
function E(e, t) {
return t;
}
var T = i(8632),
_ = i(4402),
D = i(4351);
var j = i(7956),
C = i(3239),
N = i(9251);
class O extends h {
static featureName = N.t;
constructor(e, t) {
let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
super(e, t, N.t, r), u.il && ((0, n.OP)(e).initHidden = Boolean("hidden" === document.visibilityState), (0, j.N)(() => (0, c.p)("docHidden", [(0, g.z)()], void 0, N.t, this.ee), !0), (0, C.bP)("pagehide", () => (0, c.p)("winPagehide", [(0, g.z)()], void 0, N.t, this.ee)), this.importAggregator());
}
}
var S = i(3081);
class P extends h {
static featureName = S.t9;
constructor(e, t) {
let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
super(e, t, S.t9, r), this.importAggregator();
}
}
var R = i(6660);
class I {
constructor(e, t, r, n) {
this.name = "UncaughtError", this.message = e, this.sourceURL = t, this.line = r, this.column = n;
}
}
class k extends h {
static featureName = R.t;
#e = new Set();
constructor(e, t) {
let n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
super(e, t, R.t, n);
try {
this.removeOnAbort = new AbortController();
} catch (e) {}
this.ee.on("fn-err", (e, t, n) => {
this.abortHandler && !this.#e.has(n) && (this.#e.add(n), (0, c.p)("err", [this.#t(n), (0, g.z)()], void 0, r.D.jserrors, this.ee));
}), this.ee.on("internal-error", e => {
this.abortHandler && (0, c.p)("ierr", [this.#t(e), (0, g.z)(), !0], void 0, r.D.jserrors, this.ee);
}), u._A.addEventListener("unhandledrejection", e => {
this.abortHandler && (0, c.p)("err", [this.#r(e), (0, g.z)(), !1, {
unhandledPromiseRejection: 1
}], void 0, r.D.jserrors, this.ee);
}, (0, C.m$)(!1, this.removeOnAbort?.signal)), u._A.addEventListener("error", e => {
this.abortHandler && (this.#e.has(e.error) ? this.#e.delete(e.error) : (0, c.p)("err", [this.#n(e), (0, g.z)()], void 0, r.D.jserrors, this.ee));
}, (0, C.m$)(!1, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator();
}
#i() {
this.removeOnAbort?.abort(), this.#e.clear(), this.abortHandler = void 0;
}
#t(e) {
return e instanceof Error ? e : void 0 !== e?.message ? new I(e.message, e.filename || e.sourceURL, e.lineno || e.line, e.colno || e.col) : new I("string" == typeof e ? e : (0, D.P)(e));
}
#r(e) {
let t = "Unhandled Promise Rejection: ";
if (e?.reason instanceof Error) try {
return e.reason.message = t + e.reason.message, e.reason;
} catch (t) {
return e.reason;
}
if (void 0 === e.reason) return new I(t);
const r = this.#t(e.reason);
return r.message = t + r.message, r;
}
#n(e) {
return e.error instanceof Error ? e.error : new I(e.message, e.filename, e.lineno, e.colno);
}
}
var H = i(2210);
let z = 1;
const L = "nr@id";
function M(e) {
const t = typeof e;
return !e || "object" !== t && "function" !== t ? -1 : e === u._A ? 0 : (0, H.X)(e, L, function () {
return z++;
});
}
function B(e) {
if ("string" == typeof e && e.length) return e.length;
if ("object" == typeof e) {
if ("undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer && e.byteLength) return e.byteLength;
if ("undefined" != typeof Blob && e instanceof Blob && e.size) return e.size;
if (!("undefined" != typeof FormData && e instanceof FormData)) try {
return (0, D.P)(e).length;
} catch (e) {
return;
}
}
}
var F = i(1214),
U = i(7243);
class q {
constructor(e) {
this.agentIdentifier = e;
}
generateTracePayload(e) {
if (!this.shouldGenerateTrace(e)) return null;
var t = (0, n.DL)(this.agentIdentifier);
if (!t) return null;
var r = (t.accountID || "").toString() || null,
i = (t.agentID || "").toString() || null,
o = (t.trustKey || "").toString() || null;
if (!r || !i) return null;
var a = (0, _.M)(),
s = (0, _.Ht)(),
c = Date.now(),
u = {
spanId: a,
traceId: s,
timestamp: c
};
return (e.sameOrigin || this.isAllowedOrigin(e) && this.useTraceContextHeadersForCors()) && (u.traceContextParentHeader = this.generateTraceContextParentHeader(a, s), u.traceContextStateHeader = this.generateTraceContextStateHeader(a, c, r, i, o)), (e.sameOrigin && !this.excludeNewrelicHeader() || !e.sameOrigin && this.isAllowedOrigin(e) && this.useNewrelicHeaderForCors()) && (u.newrelicHeader = this.generateTraceHeader(a, s, c, r, i, o)), u;
}
generateTraceContextParentHeader(e, t) {
return "00-" + t + "-" + e + "-01";
}
generateTraceContextStateHeader(e, t, r, n, i) {
return i + "@nr=0-1-" + r + "-" + n + "-" + e + "----" + t;
}
generateTraceHeader(e, t, r, n, i, o) {
if (!("function" == typeof u._A?.btoa)) return null;
var a = {
v: [0, 1],
d: {
ty: "Browser",
ac: n,
ap: i,
id: e,
tr: t,
ti: r
}
};
return o && n !== o && (a.d.tk = o), btoa((0, D.P)(a));
}
shouldGenerateTrace(e) {
return this.isDtEnabled() && this.isAllowedOrigin(e);
}
isAllowedOrigin(e) {
var t = !1,
r = {};
if ((0, n.Mt)(this.agentIdentifier, "distributed_tracing") && (r = (0, n.P_)(this.agentIdentifier).distributed_tracing), e.sameOrigin) t = !0;else if (r.allowed_origins instanceof Array) for (var i = 0; i < r.allowed_origins.length; i++) {
var o = (0, U.e)(r.allowed_origins[i]);
if (e.hostname === o.hostname && e.protocol === o.protocol && e.port === o.port) {
t = !0;
break;
}
}
return t;
}
isDtEnabled() {
var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing");
return !!e && !!e.enabled;
}
excludeNewrelicHeader() {
var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing");
return !!e && !!e.exclude_newrelic_header;
}
useNewrelicHeaderForCors() {
var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing");
return !!e && !1 !== e.cors_use_newrelic_header;
}
useTraceContextHeadersForCors() {
var e = (0, n.Mt)(this.agentIdentifier, "distributed_tracing");
return !!e && !!e.cors_use_tracecontext_headers;
}
}
var Z = i(7825),
V = ["load", "error", "abort", "timeout"],
G = V.length,
W = n.Yu.REQ,
X = n.Yu.XHR;
class Q extends h {
static featureName = Z.t;
constructor(e, t) {
let i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
super(e, t, Z.t, i), (0, n.OP)(e).xhrWrappable && (this.dt = new q(e), this.handler = (e, t, r, n) => (0, c.p)(e, t, r, n, this.ee), (0, F.u5)(this.ee), (0, F.Kf)(this.ee), function (e, t, i, o) {
function a(e) {
var t = this;
t.totalCbs = 0, t.called = 0, t.cbTime = 0, t.end = E, t.ended = !1, t.xhrGuids = {}, t.lastSize = null, t.loadCaptureCalled = !1, t.params = this.params || {}, t.metrics = this.metrics || {}, e.addEventListener("load", function (r) {
_(t, e);
}, (0, C.m$)(!1)), u.IF || e.addEventListener("progress", function (e) {
t.lastSize = e.loaded;
}, (0, C.m$)(!1));
}
function s(e) {
this.params = {
method: e[0]
}, T(this, e[1]), this.metrics = {};
}
function c(t, r) {
var i = (0, n.DL)(e);
i.xpid && this.sameOrigin && r.setRequestHeader("X-NewRelic-ID", i.xpid);
var a = o.generateTracePayload(this.parsedOrigin);
if (a) {
var s = !1;
a.newrelicHeader && (r.setRequestHeader("newrelic", a.newrelicHeader), s = !0), a.traceContextParentHeader && (r.setRequestHeader("traceparent", a.traceContextParentHeader), a.traceContextStateHeader && r.setRequestHeader("tracestate", a.traceContextStateHeader), s = !0), s && (this.dt = a);
}
}
function d(e, r) {
var n = this.metrics,
i = e[0],
o = this;
if (n && i) {
var a = B(i);
a && (n.txSize = a);
}
this.startTime = (0, g.z)(), this.listener = function (e) {
try {
"abort" !== e.type || o.loadCaptureCalled || (o.params.aborted = !0), ("load" !== e.type || o.called === o.totalCbs && (o.onloadCalled || "function" != typeof r.onload) && "function" == typeof o.end) && o.end(r);
} catch (e) {
try {
t.emit("internal-error", [e]);
} catch (e) {}
}
};
for (var s = 0; s < G; s++) r.addEventListener(V[s], this.listener, (0, C.m$)(!1));
}
function l(e, t, r) {
this.cbTime += e, t ? this.onloadCalled = !0 : this.called += 1, this.called !== this.totalCbs || !this.onloadCalled && "function" == typeof r.onload || "function" != typeof this.end || this.end(r);
}
function f(e, t) {
var r = "" + M(e) + !!t;
this.xhrGuids && !this.xhrGuids[r] && (this.xhrGuids[r] = !0, this.totalCbs += 1);
}
function h(e, t) {
var r = "" + M(e) + !!t;
this.xhrGuids && this.xhrGuids[r] && (delete this.xhrGuids[r], this.totalCbs -= 1);
}
function p() {
this.endTime = (0, g.z)();
}
function m(e, r) {
r instanceof X && "load" === e[0] && t.emit("xhr-load-added", [e[1], e[2]], r);
}
function v(e, r) {
r instanceof X && "load" === e[0] && t.emit("xhr-load-removed", [e[1], e[2]], r);
}
function b(e, t, r) {
t instanceof X && ("onload" === r && (this.onload = !0), ("load" === (e[0] && e[0].type) || this.onload) && (this.xhrCbStart = (0, g.z)()));
}
function y(e, r) {
this.xhrCbStart && t.emit("xhr-cb-time", [(0, g.z)() - this.xhrCbStart, this.onload, r], r);
}
function w(e) {
var t,
r = e[1] || {};
if ("string" == typeof e[0] ? 0 === (t = e[0]).length && u.il && (t = "" + u._A.location.href) : e[0] && e[0].url ? t = e[0].url : u._A?.URL && e[0] && e[0] instanceof URL ? t = e[0].href : "function" == typeof e[0].toString && (t = e[0].toString()), "string" == typeof t && 0 !== t.length) {
t && (this.parsedOrigin = (0, U.e)(t), this.sameOrigin = this.parsedOrigin.sameOrigin);
var n = o.generateTracePayload(this.parsedOrigin);
if (n && (n.newrelicHeader || n.traceContextParentHeader)) if (e[0] && e[0].headers) s(e[0].headers, n) && (this.dt = n);else {
var i = {};
for (var a in r) i[a] = r[a];
i.headers = new Headers(r.headers || {}), s(i.headers, n) && (this.dt = n), e.length > 1 ? e[1] = i : e.push(i);
}
}
function s(e, t) {
var r = !1;
return t.newrelicHeader && (e.set("newrelic", t.newrelicHeader), r = !0), t.traceContextParentHeader && (e.set("traceparent", t.traceContextParentHeader), t.traceContextStateHeader && e.set("tracestate", t.traceContextStateHeader), r = !0), r;
}
}
function A(e, t) {
this.params = {}, this.metrics = {}, this.startTime = (0, g.z)(), this.dt = t, e.length >= 1 && (this.target = e[0]), e.length >= 2 && (this.opts = e[1]);
var r,
n = this.opts || {},
i = this.target;
"string" == typeof i ? r = i : "object" == typeof i && i instanceof W ? r = i.url : u._A?.URL && "object" == typeof i && i instanceof URL && (r = i.href), T(this, r);
var o = ("" + (i && i instanceof W && i.method || n.method || "GET")).toUpperCase();
this.params.method = o, this.txSize = B(n.body) || 0;
}
function x(e, t) {
var n;
this.endTime = (0, g.z)(), this.params || (this.params = {}), this.params.status = t ? t.status : 0, "string" == typeof this.rxSize && this.rxSize.length > 0 && (n = +this.rxSize);
var o = {
txSize: this.txSize,
rxSize: n,
duration: (0, g.z)() - this.startTime
};
i("xhr", [this.params, o, this.startTime, this.endTime, "fetch"], this, r.D.ajax);
}
function E(e) {
var t = this.params,
n = this.metrics;
if (!this.ended) {
this.ended = !0;
for (var o = 0; o < G; o++) e.removeEventListener(V[o], this.listener, !1);
t.aborted || (n.duration = (0, g.z)() - this.startTime, this.loadCaptureCalled || 4 !== e.readyState ? null == t.status && (t.status = 0) : _(this, e), n.cbTime = this.cbTime, i("xhr", [t, n, this.startTime, this.endTime, "xhr"], this, r.D.ajax));
}
}
function T(e, t) {
var r = (0, U.e)(t),
n = e.params;
n.hostname = r.hostname, n.port = r.port, n.protocol = r.protocol, n.host = r.hostname + ":" + r.port, n.pathname = r.pathname, e.parsedOrigin = r, e.sameOrigin = r.sameOrigin;
}
function _(e, t) {
e.params.status = t.status;
var r = function (e, t) {
var r = e.responseType;
return "json" === r && null !== t ? t : "arraybuffer" === r || "blob" === r || "json" === r ? B(e.response) : "text" === r || "" === r || void 0 === r ? B(e.responseText) : void 0;
}(t, e.lastSize);
if (r && (e.metrics.rxSize = r), e.sameOrigin) {
var n = t.getResponseHeader("X-NewRelic-App-Data");
n && (e.params.cat = n.split(", ").pop());
}
e.loadCaptureCalled = !0;
}
t.on("new-xhr", a), t.on("open-xhr-start", s), t.on("open-xhr-end", c), t.on("send-xhr-start", d), t.on("xhr-cb-time", l), t.on("xhr-load-added", f), t.on("xhr-load-removed", h), t.on("xhr-resolved", p), t.on("addEventListener-end", m), t.on("removeEventListener-end", v), t.on("fn-end", y), t.on("fetch-before-start", w), t.on("fetch-start", A), t.on("fn-start", b), t.on("fetch-done", x);
}(e, this.ee, this.handler, this.dt), this.importAggregator());
}
}
var K = i(3614);
const {
BST_RESOURCE: Y,
RESOURCE: J,
START: ee,
END: te,
FEATURE_NAME: re,
FN_END: ne,
FN_START: ie,
PUSH_STATE: oe
} = K;
var ae = i(7836);
const {
FEATURE_NAME: se,
START: ce,
END: ue,
BODY: de,
CB_END: le,
JS_TIME: fe,
FETCH: he,
FN_START: pe,
CB_START: ge,
FN_END: me
} = ae;
var ve = i(4649);
class be extends h {
static featureName = ve.t;
constructor(e, t) {
let r = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
super(e, t, ve.t, r), this.importAggregator();
}
}
new class extends t {
constructor(t) {
let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _.ky)(16);
super(), u._A ? (this.agentIdentifier = r, this.sharedAggregator = new y({
agentIdentifier: this.agentIdentifier
}), this.features = {}, this.desiredFeatures = new Set(t.features || []), this.desiredFeatures.add(m), Object.assign(this, (0, s.j)(this.agentIdentifier, t, t.loaderType || "agent")), this.start()) : (0, e.Z)("Failed to initial the agent. Could not determine the runtime environment.");
}
get config() {
return {
info: (0, n.C5)(this.agentIdentifier),
init: (0, n.P_)(this.agentIdentifier),
loader_config: (0, n.DL)(this.agentIdentifier),
runtime: (0, n.OP)(this.agentIdentifier)
};
}
start() {
const t = "features";
try {
const n = a(this.agentIdentifier),
i = [...this.desiredFeatures];
i.sort((e, t) => r.p[e.featureName] - r.p[t.featureName]), i.forEach(t => {
if (n[t.featureName] || t.featureName === r.D.pageViewEvent) {
const i = function (e) {
switch (e) {
case r.D.ajax:
return [r.D.jserrors];
case r.D.sessionTrace:
return [r.D.ajax, r.D.pageViewEvent];
case r.D.sessionReplay:
return [r.D.sessionTrace];
case r.D.pageViewTiming:
return [r.D.pageViewEvent];
default:
return [];
}
}(t.featureName);
i.every(e => n[e]) || (0, e.Z)("".concat(t.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, D.P)(i), "). This may cause unintended consequences or missing data...")), this.features[t.featureName] = new t(this.agentIdentifier, this.sharedAggregator);
}
}), (0, T.Qy)(this.agentIdentifier, this.features, t);
} catch (r) {
(0, e.Z)("Failed to initialize all enabled instrument classes (agent aborted) -", r);
for (const e in this.features) this.features[e].abortHandler?.();
const n = (0, T.fP)();
return delete n.initializedAgents[this.agentIdentifier]?.api, delete n.initializedAgents[this.agentIdentifier]?.[t], delete this.sharedAggregator, n.ee?.abort(), delete n.ee?.get(this.agentIdentifier), !1;
}
}
addToTrace(t) {
(0, e.Z)("Call to agent api addToTrace failed. The page action feature is not currently initialized.");
}
setCurrentRouteName(t) {
(0, e.Z)("Call to agent api setCurrentRouteName failed. The spa feature is not currently initialized.");
}
interaction() {
(0, e.Z)("Call to agent api interaction failed. The spa feature is not currently initialized.");
}
}({
features: [Q, m, O, class extends h {
static featureName = re;
constructor(e, t) {
if (super(e, t, re, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !u.il) return;
const n = this.ee;
let i;
(0, F.QU)(n), this.eventsEE = (0, F.em)(n), this.eventsEE.on(ie, function (e, t) {
this.bstStart = (0, g.z)();
}), this.eventsEE.on(ne, function (e, t) {
(0, c.p)("bst", [e[0], t, this.bstStart, (0, g.z)()], void 0, r.D.sessionTrace, n);
}), n.on(oe + ee, function (e) {
this.time = (0, g.z)(), this.startPath = location.pathname + location.hash;
}), n.on(oe + te, function (e) {
(0, c.p)("bstHist", [location.pathname + location.hash, this.startPath, this.time], void 0, r.D.sessionTrace, n);
});
try {
i = new PerformanceObserver(e => {
const t = e.getEntries();
(0, c.p)(Y, [t], void 0, r.D.sessionTrace, n);
}), i.observe({
type: J,
buffered: !0
});
} catch (e) {}
this.importAggregator({
resourceObserver: i
});
}
}, P, be, k, class extends h {
static featureName = se;
constructor(e, t) {
if (super(e, t, se, !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]), !u.il) return;
if (!(0, n.OP)(e).xhrWrappable) return;
try {
this.removeOnAbort = new AbortController();
} catch (e) {}
let r,
i = 0;
const o = this.ee.get("tracer"),
a = (0, F._L)(this.ee),
s = (0, F.Lg)(this.ee),
c = (0, F.BV)(this.ee),
d = (0, F.Kf)(this.ee),
l = this.ee.get("events"),
f = (0, F.u5)(this.ee),
h = (0, F.QU)(this.ee),
p = (0, F.Gm)(this.ee);
function m(e, t) {
h.emit("newURL", ["" + window.location, t]);
}
function v() {
i++, r = window.location.hash, this[pe] = (0, g.z)();
}
function b() {
i--, window.location.hash !== r && m(0, !0);
var e = (0, g.z)();
this[fe] = ~~this[fe] + e - this[pe], this[me] = e;
}
function y(e, t) {
e.on(t, function () {
this[t] = (0, g.z)();
});
}
this.ee.on(pe, v), s.on(ge, v), a.on(ge, v), this.ee.on(me, b), s.on(le, b), a.on(le, b), this.ee.buffer([pe, me, "xhr-resolved"], this.featureName), l.buffer([pe], this.featureName), c.buffer(["setTimeout" + ue, "clearTimeout" + ce, pe], this.featureName), d.buffer([pe, "new-xhr", "send-xhr" + ce], this.featureName), f.buffer([he + ce, he + "-done", he + de + ce, he + de + ue], this.featureName), h.buffer(["newURL"], this.featureName), p.buffer([pe], this.featureName), s.buffer(["propagate", ge, le, "executor-err", "resolve" + ce], this.featureName), o.buffer([pe, "no-" + pe], this.featureName), a.buffer(["new-jsonp", "cb-start", "jsonp-error", "jsonp-end"], this.featureName), y(f, he + ce), y(f, he + "-done"), y(a, "new-jsonp"), y(a, "jsonp-end"), y(a, "cb-start"), h.on("pushState-end", m), h.on("replaceState-end", m), window.addEventListener("hashchange", m, (0, C.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("load", m, (0, C.m$)(!0, this.removeOnAbort?.signal)), window.addEventListener("popstate", function () {
m(0, i > 1);
}, (0, C.m$)(!0, this.removeOnAbort?.signal)), this.abortHandler = this.#i, this.importAggregator();
}
#i() {
this.removeOnAbort?.abort(), this.abortHandler = void 0;
}
}],
loaderType: "spa"
});
})();
})();
})()</script>
<link rel="shortcut icon" href="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/13/images/favSD.ico" type="image/x-icon" />
<link rel="icon" href="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/13/images/favSD.ico" type="image/x-icon">
<link rel="stylesheet" href="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/prod/99e6b7efc6d7603db501d4cc94a9fb642a5bbddd/arp.css">
<link href="//cdn.pendo.io" rel="dns-prefetch" />
<link href="https://cdn.pendo.io" rel="preconnect" crossorigin="anonymous" />
<link rel="dns-prefetch" href="https://smetrics.elsevier.com">
<script type="980a3173744142363f9804a3-text/javascript">
var targetServerState = JSON.stringify({"4D6368F454EC41940A4C98A6@AdobeOrg":{"sdid":{"supplementalDataIDCurrent":"61559E26E5870FC3-4358F435373EAC4C","supplementalDataIDCurrentConsumed":{"payload:target-global-mbox":true},"supplementalDataIDLastConsumed":{}}}});
window.appData = window.appData || [];
window.pageTargeting = {"region":"eu-west-1","platform":"sdtech","entitled":true,"crawler":"","journal":"Procedia Technology","auth":"AE"};
window.arp = {
config: {"adobeSuite":"elsevier-sd-prod","arsUrl":"https://ars.els-cdn.com","bosTimeOut":60000,"bosUrl":"https://feedback.recs.d.elsevier.com/raw/events","googleMapsApiKey":"AIzaSyCBYU6I6lrbEU6wQXUEIte3NwGtm3jwHQc","mediaBaseUrl":"https://ars.els-cdn.com/content/image/","sendToEnhancedReader":true,"strictMode":false,"seamlessAccess":{"enableSeamlessAccess":true,"scriptUrl":"https://unpkg.com/@theidentityselector/thiss-ds@1.0.13/dist/thiss-ds.js","persistenceUrl":"https://service.seamlessaccess.org/ps/","persistenceContext":"seamlessaccess.org","scienceDirectUrl":"https://www.sciencedirect.com","shibAuthUrl":"https://auth.elsevier.com/ShibAuth/institutionLogin"},"universalPdf":{"enableUniversalPdf":true,"universalPdfUrl":"https://static.mendeley.com/view-pdf-component/0.8.9/dist/view-pdf-element.js","integratorId":{"other":8301,"accessbar":10879}},"reaxys":{"apiUrl":"https://reaxys-sdlc.reaxys.com","origin":"sciencedirect","queryBuilderHostPath":"https://www.reaxys.com/reaxys/secured/hopinto.do","url":"https://www.reaxys.com"},"oneTrustCookie":{"enabled":true},"ssrn":{"url":"https://papers.ssrn.com","path":"/sol3/papers.cfm"},"assetRoute":"https://sdfestaticassets-eu-west-1.sciencedirectassets.com/prod/99e6b7efc6d7603db501d4cc94a9fb642a5bbddd"},
subscriptions: [],
subscribe: function(cb) {
var self = this;
var i = this.subscriptions.push(cb) - 1;
return function unsubscribe() {
self.subscriptions.splice(i, 1);
}
},
};
window.addEventListener('beforeprint', () => pendo.onGuideDismissed());
</script>
</head>
<body>
<noscript>
JavaScript is disabled on your browser.
Please enable JavaScript to use all the features on this page.
<img src=https://smetrics.elsevier.com/b/ss/elsevier-sd-prod/1/G.4--NS/1709731715546?pageName=sd%3Aproduct%3Ajournal%3Aarticle&c16=els%3Arp%3Ast&c2=sd&v185=img&v33=ae%3AANON_GUEST&c1=ae%3A228598&c12=ae%3A12975512 />
</noscript>
<a class="anchor sr-only sr-only-focusable u-display-inline anchor-default" href="#screen-reader-main-content" data-reactroot><span class="anchor-text">Skip to main content</span></a><a class="anchor sr-only sr-only-focusable u-display-inline anchor-default" href="#screen-reader-main-title" data-reactroot><span class="anchor-text">Skip to article</span></a>
<div data-iso-key="_0"><div class="App" id="app" data-aa-name="root"><div class="page"><div class="sd-flex-container"><div class="sd-flex-content"><header id="gh-cnt"><div id="gh-main-cnt" class="u-flex-center-ver u-position-relative u-padding-s-hor u-padding-l-hor-from-xl"><a id="gh-branding" class="u-flex-center-ver" href="/" aria-label="ScienceDirect home page" data-aa-region="header" data-aa-name="ScienceDirect"><img class="gh-logo" src="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/24/images/elsevier-non-solus-new-grey.svg" alt="Elsevier logo" height="48" width="54" /><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="15" viewBox="0 0 190 23" role="img" class="gh-wordmark u-margin-s-left" aria-labelledby="gh-wm-science-direct" focusable="false" aria-hidden="true" alt="ScienceDirect Wordmark"><title id="gh-wm-science-direct">ScienceDirect</title><g><path fill="#EB6500" d="M3.81 6.9c0-1.48 0.86-3.04 3.7-3.04 1.42 0 3.1 0.43 4.65 1.32l0.13-2.64c-1.42-0.63-2.97-0.96-4.78-0.96 -4.62 0-6.6 2.44-6.6 5.45 0 5.61 8.78 6.14 8.78 9.93 0 1.48-1.15 3.04-3.86 3.04 -1.72 0-3.4-0.56-4.72-1.39l-0.36 2.64c1.55 0.76 3.57 1.06 5.15 1.06 4.26 0 6.7-2.48 6.7-5.51C12.59 11.49 3.81 10.76 3.81 6.9M20.27 9.01c0.23-0.13 0.69-0.26 1.72-0.26 1.72 0 2.41 0.3 2.41 1.58h2.38c0-0.36 0-0.79-0.03-1.09 -0.23-1.98-2.15-2.67-4.88-2.67 -3 0-6.7 2.31-6.7 7.76 0 5.22 2.77 7.99 6.63 7.99 1.68 0 3.47-0.36 4.95-1.39l-0.2-2.31c-0.99 0.82-2.84 1.52-4.06 1.52 -2.14 0-4.55-1.71-4.55-5.91C17.93 10.2 20.01 9.18 20.27 9.01"></path><rect x="29.42" y="6.97" fill="#EB6500" width="2.54" height="14.95"></rect><path fill="#EB6500" d="M30.67 0.7c-0.92 0-1.65 0.92-1.65 1.81 0 0.93 0.76 1.85 1.65 1.85 0.89 0 1.68-0.96 1.68-1.88C32.35 1.55 31.56 0.7 30.67 0.7M48.06 14.13c0-5.18-1.42-7.56-6.01-7.56 -3.86 0-6.67 2.77-6.67 7.92 0 4.92 2.97 7.82 6.73 7.82 2.81 0 4.36-0.63 5.68-1.42l-0.2-2.31c-0.89 0.79-2.94 1.55-4.69 1.55 -3.14 0-4.88-1.95-4.88-5.51v-0.49H48.06M39.91 9.18c0.17-0.17 1.29-0.46 1.98-0.46 2.48 0 3.76 0.53 3.86 3.43h-7.46C38.56 10.27 39.71 9.37 39.91 9.18zM58.82 6.57c-2.24 0-3.63 1.12-4.85 2.61l-0.4-2.21h-2.34l0.13 1.19c0.1 0.76 0.13 1.78 0.13 2.97v10.79h2.54V11.88c0.69-0.96 2.15-2.48 2.48-2.64 0.23-0.13 1.29-0.4 2.08-0.4 2.28 0 2.48 1.15 2.54 3.43 0.03 1.19 0.03 3.17 0.03 3.17 0.03 3-0.1 6.47-0.1 6.47h2.54c0 0 0.07-4.49 0.07-6.96 0-1.48 0.03-2.97-0.1-4.46C63.31 7.43 61.49 6.57 58.82 6.57M72.12 9.01c0.23-0.13 0.69-0.26 1.72-0.26 1.72 0 2.41 0.3 2.41 1.58h2.38c0-0.36 0-0.79-0.03-1.09 -0.23-1.98-2.15-2.67-4.88-2.67 -3 0-6.7 2.31-6.7 7.76 0 5.22 2.77 7.99 6.63 7.99 1.68 0 3.47-0.36 4.95-1.39l-0.2-2.31c-0.99 0.82-2.84 1.52-4.06 1.52 -2.15 0-4.55-1.71-4.55-5.91C69.77 10.2 71.85 9.18 72.12 9.01M92.74 14.13c0-5.18-1.42-7.56-6.01-7.56 -3.86 0-6.67 2.77-6.67 7.92 0 4.92 2.97 7.82 6.73 7.82 2.81 0 4.36-0.63 5.68-1.42l-0.2-2.31c-0.89 0.79-2.94 1.55-4.69 1.55 -3.14 0-4.88-1.95-4.88-5.51v-0.49H92.74M84.59 9.18c0.17-0.17 1.29-0.46 1.98-0.46 2.48 0 3.76 0.53 3.86 3.43h-7.46C83.24 10.27 84.39 9.37 84.59 9.18zM103.9 1.98h-7.13v19.93h6.83c7.26 0 9.77-5.68 9.77-10.03C113.37 7.33 110.93 1.98 103.9 1.98M103.14 19.8h-3.76V4.1h4.09c5.38 0 6.96 4.39 6.96 7.79C110.43 16.87 108.19 19.8 103.14 19.8zM118.38 0.7c-0.92 0-1.65 0.92-1.65 1.81 0 0.93 0.76 1.85 1.65 1.85 0.89 0 1.69-0.96 1.69-1.88C120.07 1.55 119.28 0.7 118.38 0.7"></path><rect x="117.13" y="6.97" fill="#EB6500" width="2.54" height="14.95"></rect><path fill="#EB6500" d="M130.2 6.6c-1.62 0-2.87 1.45-3.4 2.74l-0.43-2.37h-2.34l0.13 1.19c0.1 0.76 0.13 1.75 0.13 2.9v10.86h2.54v-9.51c0.53-1.29 1.72-3.7 3.17-3.7 0.96 0 1.06 0.99 1.06 1.22l2.08-0.6V9.18c0-0.03-0.03-0.17-0.06-0.4C132.8 7.36 131.91 6.6 130.2 6.6M145.87 14.13c0-5.18-1.42-7.56-6.01-7.56 -3.86 0-6.67 2.77-6.67 7.92 0 4.92 2.97 7.82 6.73 7.82 2.81 0 4.36-0.63 5.68-1.42l-0.2-2.31c-0.89 0.79-2.94 1.55-4.69 1.55 -3.14 0-4.89-1.95-4.89-5.51v-0.49H145.87M137.72 9.18c0.17-0.17 1.29-0.46 1.98-0.46 2.48 0 3.76 0.53 3.86 3.43h-7.46C136.37 10.27 137.52 9.37 137.72 9.18zM153.23 9.01c0.23-0.13 0.69-0.26 1.72-0.26 1.72 0 2.41 0.3 2.41 1.58h2.38c0-0.36 0-0.
<script type="application/json" data-iso-key="_0">{"abstracts":{"content":[{"$$":[{"#name":"section-title","_":"Abstract"},{"$$":[{"$":{"view":"all","id":"spar0005"},"#name":"simple-para","_":"In order to optimize the movements of a robot, every object found in the work environment must not just be identified, but located in reference to the robot itself. Usually, object segmentation from an image is achieved using color segmentation. This segmentation can be achieved by processing the R, G and B chromatic components. However, this method has the disadvantage of been very sensitive to the changes on lighting. Converting the RGB image to the CIE-Lab color space avoids the lack of sensitivity by increasing the accuracy of the color segmentation. Unfortunately, if multiple objects of the same color are presented in the scene, is not possible to identify one of these objects using only this color space. Therefore, we need to consider an additional data source, in this case the depth, in order to discriminate objects that are not in the same plane as the object of interest. In this paper, we introduce an algorithm to detect objects, essentially on indoor environments, using CIE-Lab and depth segmentation techniques. We process the color and depth images provided by the Kinect sensor for proposing a visual strategy with real-time performance"}],"$":{"id":"aep-abstract-sec-id13"},"#name":"abstract-sec"}],"$":{"id":"aep-abstract-id12","class":"author"},"#name":"abstract"}],"floats":[],"footnotes":[],"attachments":[]},"accessbarConfig":{"fallback":false,"id":"accessbar","version":"0.0.1","analytics":{"location":"accessbar","eventName":"ctaImpression"},"label":{},"ariaLabel":{"accessbar":"Download options and search","componentsList":"PDF Options"},"banner":{"id":"Banner"},"banners":[{"id":"Banner"},{"id":"BannerSsrn"}],"components":[{"target":"_blank","analytics":[{"ids":["accessbar:fta:single-article"],"eventName":"ctaClick"}],"label":"View&nbsp;**PDF**","ariaLabel":"View PDF. Opens in a new window.","id":"ViewPDF"},{"analytics":[{"ids":["accessbar:fta:full-issue"],"eventName":"ctaClick"}],"label":"Download full issue","id":"DownloadFullIssue"},{"id":"LinkResolver","analytics":[{"eventName":"navigationClick","ids":["sd:accessbar-linkresolver"]}],"rel":"noreferrer noopener","target":"_blank","href":"https://www.elsevier.com/?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&url_ver=Z39.88-2004&rfr_id=info:sid/Elsevier:SD&svc_val_fmt=info:ofi/fmt:kev:mtx:sch_svc&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.aulast=HERNANDEZLOPEZ&rft.auinit=J&rft.date=2012&rft.issn=22120173&rft.volume=3C&rft.spage=196&rft.epage=204&rft.title=Procedia%20Technology&rft.atitle=Detecting%20objects%20using%20color%20and%20depth%20segmentation%20with%20Kinect%20sensor&rft_id=info:doi/10.1016/j.protcy.2012.03.021","label":"Find it here!"}],"search":{"inputPlaceHolder":"Search ScienceDirect","ariaLabel":{"input":"Search ScienceDirect","submit":"Submit search"},"formAction":"/search#submit","analytics":[{"ids":["accessbar:search"],"eventName":"searchStart"}],"id":"QuickSearch"}},"adobeTarget":{"header-sign-in":{"variation":"#2","enabled":true}},"article":{"analyticsMetadata":{"accountId":"228598","accountName":"ScienceDirect Guests","loginStatus":"anonymous","userId":"12975512","isLoggedIn":false},"cid":"282073","content-family":"serial","copyright-line":"Copyright © 2012 Published by Elsevier Ltd.","cover-date-years":["2012"],"cover-date-start":"2012-01-01","cover-date-text":"2012","document-subtype":"fla","document-type":"article","entitledToken":"4A0045980858AC630E566458CA5F6F8D043FFED339E8F78D74A5F9A8065099E4702689A69460A0A7","eid":"1-s2.0-S2212017312002502","doi":"10.1016/j.protcy.2012.03.021","first-fp":"196","hub-eid":"1-s2.0-S2212017312X00045","issuePii":"S2212017312X00045","item-weight":"HEAD-AND-TAIL","language":"en","last-lp":"204","last-author":{"#name":"last-author","$":{"xmlns:ce":true,"xmlns:dm":true,"xmlns:sb":true},"$$":[{"#name":"author","$":{"id":"aep-author-id11"},"$$":[{"#name":"given-name","_":"Dora-Luz"},{"#name":"surname","_":"Almanza
<script src="https://assets.adobedtm.com/4a848ae9611a/032db4f73473/launch-a6263b31083f.min.js" type="image/ot-performance" async></script>
<script type="980a3173744142363f9804a3-text/javascript">
window.pageData = {"content":[{"entitlementType":"openaccess","format":"MIME-XHTML","id":"sd:article:pii:S2212017312002502","type":"sd:article:JL:scope-full","detail":"sd:article:subtype:fla","publicationType":"journal","issn":"2212-0173","volumeNumber":"3","suppl":"C","provider":"elsevier"}],"page":{"businessUnit":"ELS:RP:ST","language":"en","name":"product:journal:article","noTracking":"false","productAppVersion":"full-direct","productName":"SD","type":"CP-CA","environment":"prod","loadTimestamp":1709731715536,"loadTime":""},"visitor":{"accessType":"ae:ANON_GUEST","accountId":"ae:228598","accountName":"ae:ScienceDirect Guests","loginStatus":"anonymous","userId":"ae:12975512","ipAddress":"79.132.216.7","appSessionId":"03e672bb-7314-45c3-af0e-1299ffb53ed2"}};
window.pageData.page.loadTime = performance ? Math.round(performance.now()).toString() : '';
try {
appData.push({
event: 'pageLoad',
page: pageData.page,
visitor: pageData.visitor,
content: pageData.content
})
} catch(e) {
console.warn("There was an error loading or running Adobe DTM: ", e);
}
</script>
<script nomodule src="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/73/js/core-js/3.20.2/core-js.es.minified.js" type="980a3173744142363f9804a3-text/javascript"></script>
<script src="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/100/js/react/16.14.0/react.production.min.js" type="980a3173744142363f9804a3-text/javascript"></script>
<script src="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/shared-assets/100/js/react-dom/16.14.0/react-dom.production.min.js" type="980a3173744142363f9804a3-text/javascript"></script>
<script src="https://sdfestaticassets-eu-west-1.sciencedirectassets.com/prod/99e6b7efc6d7603db501d4cc94a9fb642a5bbddd/arp.js" async type="980a3173744142363f9804a3-text/javascript"></script>
<script type="980a3173744142363f9804a3-text/javascript">
const pendoData = {"visitor":{"pageName":"SD:product:journal:article","pageType":"CP-CA","pageProduct":"SD","pageLanguage":"en","pageEnvironment":"prod","accessType":"ae:ANON_GUEST","countryCode":"IR"},"account":{"id":"ae:228598","name":"ae:ScienceDirect Guests"},"events":{}};;
pendoData.events = {
ready: function () {
pendo.addAltText();
},
};
function runPendo(data, options) {
const {
firstDelay,
maxRetries,
urlPrefix,
urlSuffix,
apiKey
} = options;
(function (apiKey) {
(function (p, e, n, d, o) {
var v, w, x, y, z;
o = p[d] = p[d] || {};
o._q = [];
v = ['initialize', 'identify', 'updateOptions', 'pageLoad'];
for (w = 0, x = v.length; w < x; ++w) (function (m) {
o[m] = o[m] || function () {
o._q[m === v[0] ? 'unshift' : 'push']([m].concat([].slice.call(arguments, 0)));
};
})(v[w]);
y = e.createElement(n);
y.async = !0;
y.src = urlPrefix + apiKey + urlSuffix;
z = e.getElementsByTagName(n)[0];
z.parentNode.insertBefore(y, z);
})(window, document, 'script', 'pendo');
pendo.addAltText = function () {
var target = document.querySelector('body');
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation?.addedNodes?.length) {
if (mutation.addedNodes[0]?.className?.includes("_pendo-badge")) {
const badge = mutation.addedNodes[0];
const altText = badge?.attributes['aria-label'].value ? badge?.attributes['aria-label'].value : 'Feedback';
const pendoBadgeImage = pendo.dom(`#${badge?.attributes?.id.value} img`);
if (pendoBadgeImage.length) {
pendoBadgeImage[0]?.setAttribute('alt', altText);
}
}
}
});
});
var config = {
attributeFilter: ['data-layout'],
attributes: true,
childList: true,
characterData: true,
subtree: false
};
observer.observe(target, config);
};
})(apiKey);
(function watchAndSetPendo(nextDelay, retryAttempt) {
if (typeof pageDataTracker === 'object' && typeof pageDataTracker.getVisitorId === 'function' && pageDataTracker.getVisitorId()) {
data.visitor.id = pageDataTracker.getVisitorId();
console.debug(`initializing pendo`);
pendo.initialize(data);
} else {
if (retryAttempt > 0) {
return setTimeout(function () {
watchAndSetPendo(nextDelay * 2, retryAttempt - 1);
}, nextDelay);
}
pendo.initialize(data);
console.debug(`gave up ... pendo initialized`);
}
})(firstDelay, maxRetries);
}
runPendo(pendoData, {
firstDelay: 100,
maxRetries: 5,
urlPrefix: 'https://cdn.pendo.io/agent/static/',
urlSuffix: '/pendo.js',
apiKey: 'd6c1d995-bc7e-4e53-77f1-2ea4ecbb9565',
});
</script>
<span id="pendo-answer-rating"></span>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: 'left',
"fast-preview": {
disabled: true
},
CommonHTML: { linebreaks: { automatic: true } },
PreviewHTML: { linebreaks: { automatic: true } },
'HTML-CSS': { linebreaks: { automatic: true } },
SVG: {
scale: 90,
linebreaks: { automatic: true }
}
});
</script>
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=MML_SVG" type="980a3173744142363f9804a3-text/javascript"></script>
<script async src="https://www.googletagservices.com/tag/js/gpt.js" type="980a3173744142363f9804a3-text/javascript"></script>
<script async src="https://scholar.google.com/scholar_js/casa.js" type="980a3173744142363f9804a3-text/javascript"></script>
<script type="980a3173744142363f9804a3-module" src="https://static.mendeley.com/view-pdf-component/0.8.9/dist/view-pdf-element.js" crossorigin="anonymous" async></script>
<script data-cfasync="false">
(function initOneTrust() {
const monitor = {
init: () => {},
loaded: () => {},
};
function enableGroup(group) {
document.querySelectorAll(`script[type*="ot-${group}"]`).forEach(script => {
script.type = 'text/javascript';
document.head.appendChild(script);
});
}
function runOneTrustCookies(doClear, monitor) {
const oneTrustConsentSdkId = 'onetrust-consent-sdk';
const emptyNodeSelectors = 'h3.ot-host-name, h4.ot-host-desc, button.ot-host-box';
const ariaLabelledByButtonNodes = 'div.ot-accordion-layout > button';
const ariaAttribute = 'aria-labelledby';
function adjustOneTrustDOM() {
const oneTrustRoot = document.getElementById('onetrust-consent-sdk');
/* remove empty nodes */
[...(oneTrustRoot?.querySelectorAll(emptyNodeSelectors) ?? [])].filter(e => e.textContent === '').forEach(e => e.remove());
/* remove invalid aria-labelledby values */
oneTrustRoot?.querySelectorAll(ariaLabelledByButtonNodes).forEach(e => {
const presentIdValue = e.getAttribute(ariaAttribute)?.split(' ').filter(label => document.getElementById(label)).join(' ');
if (presentIdValue) {
e.setAttribute(ariaAttribute, presentIdValue);
}
});
}
function observeOneTrustLoaded(shouldSetOTDefaults, isConsentPresent) {
const cb = (mutationList, observer) => {
const oneTrustRoot = mutationList.filter(mutationRecord => mutationRecord.type === 'childList' && mutationRecord.addedNodes.length).map(mutationRecord => [...mutationRecord.addedNodes]).flat().find(e => e.id === oneTrustConsentSdkId);
if (oneTrustRoot && typeof OneTrust !== 'undefined') {
monitor.loaded(true);
OneTrust.OnConsentChanged(() => {
const perfAllowed = decodeURIComponent(document.cookie.match('(^| )OptanonConsent=([^;]+)')?.[2])?.match('groups=([0-9:0|1,?]+)&?')?.[1]?.match('2:([0|1])')[1] === '1';
if (perfAllowed) {
enableGroup('performance');
}
});
if (!isConsentPresent && (shouldSetOTDefaults || OneTrust.GetDomainData().ConsentModel.Name === 'implied consent')) {
OneTrust.AllowAll();
}
document.dispatchEvent(new CustomEvent('@sdtech/onetrust/loaded', {}));
observer.disconnect();
adjustOneTrustDOM();
}
};
const observer = new MutationObserver(cb);
observer.observe(document.querySelector('body'), {
childList: true
});
}
if (doClear) {
document.cookie = 'OptanonAlertBoxClosed=; expires=Thu, 01 Jan 1970 00:00:00 UTC; samesite=lax; path=/';
}
const isConsentPresent = !!decodeURIComponent(document.cookie.match('(^| )OptanonConsent=([^;]+)')?.[2])?.match('groups=([0-9:0|1,?]+)&?')?.[1];
const shouldSetOTDefaults = 'true' === 'false' && !document.cookie?.match('OptanonAlertBoxClosed=');
if (shouldSetOTDefaults) {
const date = new Date();
date.setFullYear(date.getFullYear() + 1);
document.cookie = `OptanonAlertBoxClosed=${new Date().toISOString()}; expires=${date.toUTCString()}; samesite=lax; path=/; domain=sciencedirect.com`;
}
observeOneTrustLoaded(shouldSetOTDefaults, isConsentPresent, monitor);
window.addOTScript = () => {
const otSDK = document.createElement('script');
otSDK.setAttribute('data-cfasync', 'false');
otSDK.setAttribute('src', 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js');
otSDK.setAttribute('data-document-language', 'true');
otSDK.setAttribute('data-domain-script', '865ea198-88cc-4e41-8952-1df75d554d02');
window.addOTScript = () => {};
document.head.appendChild(otSDK);
monitor.init();
};
window.addEventListener('load', () => window.addOTScript());
}
if (document.location.host.match(/.sciencedirect.com$/)) {
runOneTrustCookies(true, monitor);
}
else {
window.addEventListener('load', (event) => {
enableGroup('performance');
});
}
}());
</script>
<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="980a3173744142363f9804a3-|49" defer></script></body>
</html>