CINXE.COM
Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor | NVIDIA Technical Blog
<!doctype html> <html lang="en-US" id="html"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"NRJS-2b0defbeb07862260b2",applicationID:"745178505"};;/*! For license information please see nr-loader-rum-1.274.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);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{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.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){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(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 u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>h,xN:()=>p});var n=r(993);const i=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var o=r(2614),a=r(944),s=r(384),c=r(8122);const u="[data-nr-mask]",d=()=>{const e={mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,harvestTimeSeconds:10,autoStart:!0},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},feature_flags:[],generic_events:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},harvest:{tooManyRequestsDelay:60},jserrors:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},logging:{enabled:!0,harvestTimeSeconds:10,autoStart:!0,level:n.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:o.wk,inactiveMs:o.BB},session_replay:{autoStart:!0,enabled:!1,harvestTimeSeconds:60,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){i(t)?e.mask_selector="".concat(t,",").concat(u):""===t||null===t?e.mask_selector=u:(0,a.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){i(t)?e.block_selector+=",".concat(t):""!==t&&(0,a.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,a.R)(7,t)}},session_trace:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},soft_navigations:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},spa:{enabled:!0,harvestTimeSeconds:10,autoStart:!0},ssl:void 0,user_actions:{enabled:!0}}},l={},f="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(f);if(!l[e])throw new Error("Configuration for ".concat(e," was never set"));return l[e]}function p(e,t){if(!e)throw new Error(f);l[e]=(0,c.a)(t,d());const r=(0,s.nY)(e);r&&(r.init=l[e])}function h(e,t){if(!e)throw new Error(f);var r=g(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}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.274.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>d,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,d=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,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=g(n),c=h(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var p=m()[s[e]];p&&p.push([f,e,r,a]);return a},get:v,listeners:h,context:g,buffer:function(e,t){const r=m();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!m()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=h(e).concat(t)}function h(e){return n[e]||[]}function v(t){return d[t]=d[t]||e(f,t)}function m(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).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))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);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.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),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.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>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}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){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()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);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&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log";n.K7.logging},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>P});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),g=r(384),p=r(6344);const h=["setErrorHandler","finished","addToTrace","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],v=["setErrorHandler","finished","addToTrace","addRelease"];var m=r(1863),b=r(2614),y=r(993);var w=r(2646),A=r(3434);function R(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,A.YM)(i),a=new w.y(s.P);return a.level=n.level,a.customAttributes=n.customAttributes,o.inPlace(t,[r],"wrap-logger-",a),i}function E(){const e=(0,g.pV)();h.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function _(e,t,g=!1){t||(0,c.Ak)(e,"api");const h={};var w=s.ee.get(e),A=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var E="api-",_=E+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(E,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}h.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,m.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},h.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),R(w,e,t,{customAttributes:r,level:i})},v.forEach((e=>{h[e]=j(E,e,!0,"api")})),h.addPageAction=j(E,"addPageAction",!0,n.K7.genericEvents),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(E,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},h.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},h.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},h.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},h[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},h[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},h.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const S=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,m.t)(),e,r],i,n.K7.spa,w),function(){if(A.emit((o?"":"no-")+"fn-start",[(0,m.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw A.emit("fn-err",[arguments,this,t],r),t}finally{A.emit("fn-end",[(0,m.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[(0,m.t)(),...arguments],r?null:this,i,w),r?void 0:this}}function k(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{S[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),h.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(E,"routeName",!0,n.K7.spa),h.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,m.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},d.RI?(0,u.GG)((()=>k()),!0):k(),h}var N=r(9417),T=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},j={};var k=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let O=!1;function P(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:l={},exposed:f=!0}=t;l.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,N.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");j[e]=(0,T.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=j[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},d.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const h=(0,N.D0)(e.agentIdentifier),v=[c.beacon,c.errorBeacon];O||(h.proxy.assets&&(I(h.proxy.assets),v.push(h.proxy.assets)),h.proxy.beacon&&v.push(h.proxy.beacon),E(),(0,g.US)("activatedFeatures",k.B),e.runSoftNavOverSpa&&=!0===h.soft_navigations.enabled&&h.feature_flags.includes("soft_nav")),l.denyList=[...h.ajax.deny_list||[],...h.ajax.block_internal?v:[]],l.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,l),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=_(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),O=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>o,K7:()=>n,P3:()=>i});const n={ajax:"ajax",genericEvents:"generic_events",jserrors:"jserrors",logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.spa]:5,[n.ajax]:6,[n.sessionTrace]:7,[n.softNav]:8,[n.sessionReplay]:9,[n.logging]:10,[n.genericEvents]:11},o={[n.pageViewTiming]:"events",[n.ajax]:"events",[n.spa]:"events",[n.softNav]:"events",[n.metrics]:"jserrors",[n.jserrors]:"jserrors",[n.sessionTrace]:"browser/blobs",[n.sessionReplay]:"browser/blobs",[n.logging]:"browser/logs",[n.genericEvents]:"ins"}}},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-rum-1.274.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.274.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}}if(!s){c=!0;var f={296:"sha512-gkYkZDAwQ9PwaDXs2YM+rNIdRej1Ac1mupWobRJ8eahQcXz6/sunGZCKklrzi5kWxhOGRZr2tn0rEKuLTXzfAA=="};(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,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.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={840:0,374: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.274.0.PROD"]=self["webpackChunk:NRBA-1.274.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(e=(0,r.LA)(16)){this.agentIdentifier=e}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(7603);var l=i(1687),f=i(4234),g=i(5289),p=i(6154),h=i(384);const v=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function m(e){return!!(0,h.dV)().o.MO&&v(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(v(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(t.sharedAggregator)await t.sharedAggregator;else{t.sharedAggregator=i.e(296).then(i.bind(i,9337));const{EventAggregator:e}=await t.sharedAggregator;t.sharedAggregator=new e}if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return m(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class A extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var R=i(9908),E=i(2843),x=i(3878),_=i(782),N=i(1863);class T extends y{static featureName=_.T;constructor(e,t=!0){super(e,_.T,t),p.RI&&((0,E.u)((()=>(0,R.p)("docHidden",[(0,N.t)()],void 0,_.T,this.ee)),!0),(0,x.sp)("pagehide",(()=>(0,R.p)("winPagehide",[(0,N.t)()],void 0,_.T,this.ee))),this.importAggregator(e))}}var S=i(3969);class j extends y{static featureName=S.TZ;constructor(e,t=!0){super(e,S.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t,r){super(r),p.gm?(this.features={},(0,h.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(A),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,h.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[A,T,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="shortcut icon" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/favicon_300a1064.ico" type="image/vnd.microsoft.icon"> <link media="all" href="https://developer-blogs.nvidia.com/wp-content/uploads/autoptimize/1/css/aggregated_61cb4f5a3725d1aa6eecb31d5cfc4db0.css" rel="stylesheet"><title>Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor | NVIDIA Technical Blog</title> <!-- OneTrust Cookies Consent Notice start for nvidia.com --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="3e2b62ff-7ae7-4ac5-87c8-d5949ecafff5" ></script> <script type="text/javascript"> function OptanonWrapper() { var event = new Event('bannerLoaded'); window.dispatchEvent(event); } </script> <!-- OneTrust Cookies Consent Notice end for nvidia.com --><link rel="preload" href="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_5b99443a.js" as="script"><script src="//app-sj14.marketo.com/js/forms2/js/forms2.min.js?ver=5.6.2" defer></script><script src="https://unpkg.com/infinite-scroll@4/dist/infinite-scroll.pkgd.min.js" defer></script><meta property="interest" content="Simulation / Modeling / Design"><meta property="estimated-read-time" content="6 MIN"> <!-- The SEO Framework by Sybre Waaijer --> <meta name="robots" content="max-snippet:-1,max-image-preview:standard,max-video-preview:-1" /> <link rel="canonical" href="https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/" /> <link rel="shortlink" href="https://developer.nvidia.com/blog/?p=92360" /> <meta name="description" content="Industrial engineers are turning to AI to build advanced process simulation solutions and accelerate progress toward fully autonomous operations in the energy…" /> <meta property="og:type" content="article" /> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="NVIDIA Technical Blog" /> <meta property="og:title" content="Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor | NVIDIA Technical Blog" /> <meta property="og:description" content="Industrial engineers are turning to AI to build advanced process simulation solutions and accelerate progress toward fully autonomous operations in the energy, power, and chemicals industries." /> <meta property="og:url" content="https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/" /> <meta property="og:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured.jpg" /> <meta property="og:image:width" content="1999" /> <meta property="og:image:height" content="1124" /> <meta property="og:image:alt" content="A person with a hard hat looks at a computer monitor, which is displaying graphs." /> <meta property="article:published_time" content="2024-11-21T17:28+00:00" /> <meta property="article:modified_time" content="2024-11-21T17:28+00:00" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor | NVIDIA Technical Blog" /> <meta name="twitter:description" content="Industrial engineers are turning to AI to build advanced process simulation solutions and accelerate progress toward fully autonomous operations in the energy, power, and chemicals industries." /> <meta name="twitter:image" content="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured.jpg" /> <meta name="twitter:image:alt" content="A person with a hard hat looks at a computer monitor, which is displaying graphs." /> <script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://developer.nvidia.com/blog/#/schema/WebSite","url":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog","description":"News and tutorials for developers, data scientists, and IT admins","inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://developer.nvidia.com/blog/search/{search_term_string}/"},"query-input":"required name=search_term_string"},"publisher":{"@type":"Organization","@id":"https://developer.nvidia.com/blog/#/schema/Organization","name":"NVIDIA Technical Blog","url":"https://developer.nvidia.com/blog/"}},{"@type":"WebPage","@id":"https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/","url":"https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/","name":"Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor | NVIDIA Technical Blog","description":"Industrial engineers are turning to AI to build advanced process simulation solutions and accelerate progress toward fully autonomous operations in the energy…","inLanguage":"en-US","isPartOf":{"@id":"https://developer.nvidia.com/blog/#/schema/WebSite"},"breadcrumb":{"@type":"BreadcrumbList","@id":"https://developer.nvidia.com/blog/#/schema/BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":"https://developer.nvidia.com/blog/","name":"NVIDIA Technical Blog"},{"@type":"ListItem","position":2,"item":"https://developer.nvidia.com/blog/category/simulation-modeling-design/","name":"Category: Simulation / Modeling / Design"},{"@type":"ListItem","position":3,"name":"Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor"}]},"potentialAction":{"@type":"ReadAction","target":"https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/"},"datePublished":"2024-11-21T17:28+00:00","dateModified":"2024-11-21T17:28+00:00","author":{"@type":"Person","@id":"https://developer.nvidia.com/blog/#/schema/Person/5875b207f66282d14404c256b13ac2d3","name":"David A. Smith","description":"David A. Smith is a chartered mechanical engineer and holds a Ph.D. in fluid mechanics from Imperial College London. The first half of his career in industry was spent mainly with EPC companies, where he led design, development..."}}]}</script> <!-- / The SEO Framework by Sybre Waaijer | 11.92ms meta | 0.36ms boot --> <link rel='dns-prefetch' href='//developer-blogs.nvidia.com' /> <link rel='dns-prefetch' href='//secure.gravatar.com' /> <link rel='dns-prefetch' href='//widgets.wp.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//0.gravatar.com' /> <link rel='dns-prefetch' href='//1.gravatar.com' /> <link rel='dns-prefetch' href='//2.gravatar.com' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <link href='https://assets.adobedtm.com' rel='preconnect' /> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/munchkin.js?ver=1732424674" id="munchkin-js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/scripts/user-dropdown.js?ver=1732424674" id="user_dropdown.js-js"></script> <link rel="https://api.w.org/" href="https://developer-blogs.nvidia.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://developer-blogs.nvidia.com/wp-json/wp/v2/posts/92360" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://developer-blogs.nvidia.com/xmlrpc.php?rsd" /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://developer-blogs.nvidia.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F&format=xml" /> <link rel="alternate" hreflang="x-default" href="https://developer.nvidia.com/blog/spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor/" title="en_US" /> <!-- Stream WordPress user activity plugin v4.0.1 --> <!--wp code prettify--> <script src="//assets.adobedtm.com/5d4962a43b79/c1061d2c5e7b/launch-191c2462b890.min.js" data-ot-ignore="true"></script> <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.12.1/css/all.css" integrity="sha384-TxKWSXbsweFt0o2WqfkfJRRNVaPdzXJ/YLqgStggBVRREXkwU7OKz+xXtqOU4u8+" crossorigin="anonymous" media="none" onload="if(media!='all')media='all'"> <script src='https://developer-blogs.nvidia.com/wp-content/plugins/nv-faceted-search/js/faceted-search/build/direflowBundle.js?ver=ecfae4f'></script> </head> <body class="post-template-default single single-post postid-92360 single-format-standard spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor app-data index-data singular-data single-data single-post-data single-post-spotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor-data"> <svg xmlns="http://www.w3.org/2000/svg" class="hide" style="display: none;"> <symbol id="n24-user-circle" viewBox="0 0 24 24"> <defs> </defs> <rect id="n24-icon-user-circle-bounds" class="n24-bounds" width="24" height="24"></rect> <g id="n24-icon-user-circle"> <circle id="user-circle" class="n24-user-circle-cls-1" cx="12" cy="12" r="9.75"></circle> <polyline id="user-body" class="n24-user-circle-cls-1" points="17.55 20.01 16.34 15.48 7.66 15.48 6.45 20.01"></polyline> <circle id="user-head" class="n24-user-circle-cls-1" cx="12" cy="9.91" r="3.48"></circle> </g> </symbol> </svg> <header class="page-header"> <div class="container"> <button class="navbar-toggle" type="button"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div class="logo"> <a class="primary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener"> <img alt="Home" width="142" height="32" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/images/nvidia-logo_28b633c7.svg"> </a> <a class="secondary-logo" href="/" title="Home" data-wpel-link="internal" target="_blank" rel="follow noopener">DEVELOPER</a> </div> <nav class="navbar primary navbar-expand-md navbar-inverse"> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="menu-top-menu-container"><ul id="menu-top-menu" class="menu nav navbar-nav primary mr-auto"><li id="menu-item-25291" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25291"><a title="Home" href="/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Home</a></li><li id="menu-item-25292" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25292"><a title="Blog" href="/blog" class="nav-link active" data-wpel-link="internal" target="_blank" rel="follow noopener">Blog</a></li><li id="menu-item-25293" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25293"><a title="Forums" href="https://forums.developer.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Forums</a></li><li id="menu-item-25294" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25294"><a title="Docs" href="https://docs.nvidia.com/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Docs</a></li><li id="menu-item-25295" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25295"><a title="Downloads" href="https://developer.nvidia.com/downloads" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Downloads</a></li><li id="menu-item-25296" class="menu-item menu-item-type-custom menu-item-object-custom nav-item nav-item-25296"><a title="Training" href="https://www.nvidia.com/en-us/training/" class="nav-link" data-wpel-link="internal" target="_blank" rel="follow noopener">Training</a></li></ul></div> </div> </nav> <nav class="navbar navbar-right" id="topRightNavbar"> <ul class="nav navbar-nav navbar-margin navbar-right navbar-margin-media login-nav"> <li class="search" id="search-top"> <div class="search-form" id="search-top-form"> <form class="gss form-search content-search" data-base-url="https://developer.nvidia.com/blog/" action="https://developer.nvidia.com/blog/search-posts" method="GET" id="nvidia-site-search-form" accept-charset="UTF-8"> <div> <div class="input-group"> <div id="top-site-search-form"> <input placeholder="Search" class="form-control form-text" type="text" id="edit-term" name="q" value="" size="15" maxlength="128"> </div> <span class="input-group-btn"> <button type="submit" class="btn btn-default"> <i class="fa fa-search" aria-hidden="true"></i> </button> </span> </div> <button class="btn element-invisible btn-primary form-submit" type="submit" id="edit-submit" name="op" value="Search">Search</button> </div> </form> </div> </li> <li class="leaf" id="dzauth_join_link"> <a href="https://developer.nvidia.com/login" class="cta--prim nv-join" data-wpel-link="internal" target="_blank" rel="follow noopener">Join</a> </li> <li class="leaf last" id="dzauth_login_link"> <a href="https://developer.nvidia.com/login" class="nv-login" data-wpel-link="internal" target="_blank" rel="follow noopener"> <svg aria-label="User Account" class="n24-icon nvprofileicon n24-account" style="width: 24px; height: 24px;"> <use xlink:href="#n24-user-circle"></use> </svg> </a> </li> </ul> </nav> </div> </header> <section class="main"> <div class="faceted-search-top-wrapper"> <div class="container"> <div class="row"> <div class="col col-lg-12 faceted-search-component-wrapper"> <faceted-search-bar appUrl="https://developer.nvidia.com/blog" componentTitle="Technical Blog" text="" subscribeUrl="https://developer.nvidia.com/email-signup" subscribeLabel="Subscribe" locale="en-US" redirectUrl="https://developer.nvidia.com/blog/search-posts/" autocompleteEndpointUrl="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/autocomplete/" data-search-page="false"></faceted-search-bar> </div> </div> </div> </div> <div class="search-filters-component-wrapper--inner-page position-fixed w-100"> <div class="container"> <div class="row"> <faceted-search-filters endpoint="https://developer.nvidia.com/blog/wp-json/faceted-search/v1/select/" redirectUrl="https://developer.nvidia.com/blog/search-posts/" data-expanded="false" data-with-redirect="true" data-with-overlay="false" sortBy="post_date" locale="en-US" handleURls=""></faceted-search-filters> </div> </div> </div> <div class="container single-page"> <div id="main-content" class="row"> <script> sessionStorage.removeItem('facets.search.text'); sessionStorage.removeItem('facets.search.text-copy'); sessionStorage.removeItem('facets.search.filters'); </script> <div class="col-sm-12 d-none text-right sidebar-toggle-link-wrapper"> <a class="sidebar-toggle sidebar-toggle-link" href="#main-content-end"> Related Resources <i class="fa fa-angle-right" aria-hidden="true"></i> </a> </div> <div class="main-content col-lg-9 col-md-9 mt-0 mb-0"> <div class="post-card--single"> <div class="row"> <div class="col-lg-12 mb-0"> <div class="card--post-attributes"> <span class="category-name content-s"> <a href="https://developer.nvidia.com/blog/category/simulation-modeling-design/" data-wpel-link="internal" target="_blank" rel="follow noopener">Simulation / Modeling / Design</a> </span> <span class="post-rate-widget content-s"></span> <span class="post-lang-switcher"> </span> </div> <h1 class="h--large txt-clr--blck mt-2 mb-0">Spotlight: Advancing Autonomous Operations with AVEVA Dynamic Simulation and NVIDIA Raptor</h1> <div class="post-info"> <div class="post-published-date"> Nov 21, 2024 </div> <div class="post-authors"> By <a href="https://developer.nvidia.com/blog/author/davidasmith/" title="Posts by David A. Smith" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">David A. Smith</a>, <a href="https://developer.nvidia.com/blog/author/srikanthk/" title="Posts by Sri Kodali" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Sri Kodali</a> and <a href="https://developer.nvidia.com/blog/author/jihyuny/" title="Posts by Jihyun Yang" class="author url fn" rel="author follow noopener" data-wpel-link="internal" target="_blank">Jihyun Yang</a> </div> <div class="card--post-attributes-secondary card--post-attributes-header"> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="92360" data-ulike-nonce="4f1d1241a2" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_92360"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+7"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (0) </a> </div> </div> </div> <img width="1999" height="1124" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="A person with a hard hat looks at a computer monitor, which is displaying graphs." decoding="async" fetchpriority="high" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured.jpg 1999w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-300x169.jpg 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-625x351.jpg 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-179x101.jpg 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-768x432.jpg 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-1536x864.jpg 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-645x363.jpg 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-960x540.jpg 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-500x281.jpg 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-160x90.jpg 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-362x204.jpg 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-196x110.jpg 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomous-operations-featured-1024x576.jpg 1024w" sizes="(max-width: 1999px) 100vw, 1999px" /> </div> </div> </div> </div> <div class="col-lg-3 col-md-3 mt-0 mb-0"></div> <div class="main-content col-lg-9 col-md-9 mt-0"> <div class="entry-meta-social"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Spotlight%3A+Advancing+Autonomous+Operations+with+AVEVA+Dynamic+Simulation+and+NVIDIA+Raptor+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F&title=Spotlight%3A+Advancing+Autonomous+Operations+with+AVEVA+Dynamic+Simulation+and+NVIDIA+Raptor+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-mail">E</a></li> </ul> </div> <div class="entry-content"> <p>Industrial engineers are turning to AI to build advanced process simulation solutions and accelerate progress toward fully autonomous operations in the energy, power, and chemicals industries.</p> <p>Deep reinforcement learning (DRL) agents, infused with AI, are helping transition traditional industrial automation to industrial autonomy for core control, field, and production processes. This use of <a href="https://blogs.nvidia.com/blog/what-is-agentic-ai/" data-wpel-link="internal" target="_blank" rel="follow noopener">agentic AI</a> for advanced reasoning and iterative planning with human-in-the-loop aims to enable new applications in advanced industrial control, system-level autonomy, and fully autonomous plants.</p> <p>In this post, we explore how AVEVA, a leader in industrial software, integrated its Dynamic Simulation platform with the NVIDIA Raptor DRL engine to maximize industrial plant production, reduce unplanned downtime, and enhance product quality.</p> <div class="wp-block-image"> <figure class="aligncenter size-full-page-width"><a href="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels.png" data-wpel-link="internal" target="_blank" rel="follow noopener"><img decoding="async" width="1024" height="422" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-1024x422.png" alt="A diagram shows increasing levels of industrial autonomy, from 100% manual control (level 0) to 100% human decisions and from there to traditional automation, advanced control, system-level autonomy, and then to full autonomy." class="wp-image-92373" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-1024x422.png 1024w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-300x124.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-625x258.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-179x74.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-768x317.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-1536x634.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-645x266.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-500x206.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-160x66.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-362x149.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels-267x110.png 267w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/autonomy-automation-levels.png 1978w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Figure 1. AVEVA’s scale for industrial automation to industrial autonomy</em></figcaption></figure></div> <h2 id="challenges_and_benefits_of_industrial_automation" class="wp-block-heading">Challenges and benefits of industrial automation<a href="#challenges_and_benefits_of_industrial_automation" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>Conventional advanced control technologies, such as advanced process control or closed-loop real-time optimization are best-fit for repeatable processes. This occurs when plant conditions are relatively constant to optimize energy consumption, emissions, and production. However, industrial plants undergo transient events, such as imposed feed changes or unexpected disturbances, which are difficult to control using either base level or advanced process controls. </p> <p>In these dynamic situations, industrial plant operators switch to manual control to re-stabilize the plant and avoid unwanted and expensive consequences, such as a power plant trip when a power-generating turbine is automatically shut down due to an unexpected event.</p> <p>By achieving greater industrial autonomy, plant operators, managers, and engineers can achieve several benefits:</p> <ul class="wp-block-list"> <li><strong>Enhanced safety</strong>: Reduces worker exposure to hazardous environments.</li> <li><strong>Increased operational efficiency</strong>: Optimizes production and equipment use.</li> <li><strong>Cost reduction</strong>: Optimizes labor and maintenance costs.</li> <li><strong>Improved decision-making</strong>: AI-driven insights for better accuracy and performance.</li> <li><strong>Environmental sustainability</strong>: Optimizes resource usage and reduces emissions.</li> <li><strong>Scalability</strong>: Enables efficient management of large or remote operations.</li> <li><strong>Connected remote operations</strong>: Centralized control of geographically dispersed assets.</li> </ul> <h2 id="building_an_industrial_automation_strategy" class="wp-block-heading">Building an industrial automation strategy<a href="#building_an_industrial_automation_strategy" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>AVEVA and Schneider Electric are bringing their industrial expertise to collaborate with NVIDIA across industrial process, hybrid and compute infrastructure use cases:</p> <ul class="wp-block-list"> <li>Autonomous AI agents trained using physically accurate industrial digital process twins at scale on a high-speed compute architecture.</li> <li>High-fidelity digital twins at scale for industrial 3D environments and unified operation centers to monitor and control industrial operations in real time.</li> <li>Data center reference designs for NVIDIA-accelerated compute clusters that enable operators to support AI workloads on their data center infrastructure, improving the speed of deployment and reliable life-cycle operation.</li> </ul> <h2 id="results_of_aveva_dynamic_simulation_with_nvidia_raptor" class="wp-block-heading">Results of AVEVA Dynamic Simulation with NVIDIA Raptor<a href="#results_of_aveva_dynamic_simulation_with_nvidia_raptor" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>AVEVA Dynamic Simulation, a rigorous first-principles simulator for industrial processes, was tested using an integration with NVIDIA Raptor, a deep reinforcement learning engine. </p> <p>AVEVA Dynamic Simulation is used to build dynamic simulation twins of process plants for operator training simulators, control checkouts, and process design across multiple use cases.</p> <div class="wp-block-image"> <figure class="aligncenter size-full-page-width"><a href="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard.png" data-wpel-link="internal" target="_blank" rel="follow noopener"><img decoding="async" width="1024" height="514" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-1024x514.png" alt="A screenshot shows a process model design with options for thermodynamics, cross-referencing, malfunctions, and training performance monitoring." class="wp-image-92372" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-1024x514.png 1024w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-300x151.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-625x314.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-179x90.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-768x386.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-1536x771.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-645x324.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-500x251.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-160x80.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-362x182.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard-219x110.png 219w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/dynsim-dashboard.png 1633w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Figure 2. AVEVA Dynamic Simulation</em><em> dashboard</em></figcaption></figure></div> <p>Industrial engineers use AVEVA Dynamic Simulation to reduce operating costs, speed time to market for industrial products, enhance worker safety, and optimize plant uptime across a variety of heavy industries.</p> <div class="wp-block-image"> <figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="938" height="378" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial.png" alt="Twelve photos of industrial sites include pipelines, refining, petrochem, gas processing, chemicals, polymers, food and beverage, mining metals and minerals, pulp and paper, cement, power, and green H2." class="wp-image-92371" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial.png 938w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-300x121.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-625x252.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-179x72.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-768x309.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-645x260.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-500x201.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-160x64.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-362x146.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/use-cases-dynsim-industrial-273x110.png 273w" sizes="(max-width: 938px) 100vw, 938px" /><figcaption class="wp-element-caption"><em>Figure 3. Key use cases for AVEVA Dynamic Simulation</em><em> in industrial process simulation</em></figcaption></figure></div> <p>Raptor was trained offline using AVEVA’s dynamic process simulation of industrial process plants. Raptor enables large-scale reinforcement learning training using accelerated computing on-premises or in the cloud. </p> <p>NVIDIA used the Raptor framework internally for chip design using reinforcement learning. Using Raptor, NVIDIA generated arithmetic circuits with a 25% smaller footprint, while maintaining similar performance and accuracy to leading electronic design automation software solutions. Because Raptor supports a wide range of reinforcement learning algorithms, such as proximal policy optimization, it can be put to use to solve industrial problems such as AVEVA Dynamic Simulation.</p> <p>The AVEVA Dynamic Simulation model environment takes an action from the NVIDIA Raptor deep reinforcement learning agent, outputting a new state to Raptor. At each step, the DRL agent gets a reward depending on whether its action resulted in a better or worse state. Raptor learns by maximizing rewards over a series of actions.</p> <p>When trained, the resulting control policy can be deployed in the plant control system:</p> <ul class="wp-block-list"> <li>Minimize production impact of plant upset by stabilizing product quality in a shorter time than a manual plant operator.</li> <li>Improve control of batch processes to deliver consistent and repeatable product quality.</li> <li>Reduce complex startup and shutdown times to maximize production throughput.</li> </ul> <div class="wp-block-image"> <figure class="aligncenter size-full-page-width"><a href="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor.png" data-wpel-link="internal" target="_blank" rel="follow noopener"><img loading="lazy" decoding="async" width="1024" height="405" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-1024x405.png" alt="A three-part flow diagram shows generated actions from AVEVA DynSim and NVIDIA Raptor, control policies, and end process results." class="wp-image-92370" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-1024x405.png 1024w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-300x119.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-625x247.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-179x71.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-768x303.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-1536x607.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-645x255.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-500x198.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-160x63.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-362x143.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor-278x110.png 278w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/flow-generated-actions-dynsim-raptor.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><em>Figure 4. AVEVA Dynamic Simulation</em><em> generates states and rewards, and NVIDIA Raptor DRL agents generate control policies</em></figcaption></figure></div> <p>An example industrial problem is a chemical distillation process to separate heavier propane from lighter methane and ethane. When the incoming feed changes by a larger-than-expected amount, the industrial process is disturbed and conventional controls might not manage levels and product qualities in the correct ranges. Normally, this would require plant operator intervention. </p> <p>A Raptor DRL agent was trained using AVEVA Dynamic Simulation to control heat input to the column, column bottoms level, and reflux drum level. As a result, the DRL agent could stabilize the distillation system twice as fast as a manual plant operator with temperature and product quality remaining in the correct ranges even during large changes in feed, in contrast to conventional industrial base controls.</p> <div class="wp-block-image"> <figure class="aligncenter size-full"><a href="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example.png" data-wpel-link="internal" target="_blank" rel="follow noopener"><img loading="lazy" decoding="async" width="966" height="586" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example.png" alt="A diagram shows an example chemical distillation system using AVEVA DynSim and a Raptor DRL agent to generate actions and control policies, automatically managing temperature and product quality control." class="wp-image-92368" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example.png 966w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-300x182.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-625x379.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-179x109.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-768x466.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-645x391.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-495x300.png 495w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-148x90.png 148w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-362x220.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/distillation-system-example-181x110.png 181w" sizes="(max-width: 966px) 100vw, 966px" /></a><figcaption class="wp-element-caption"><em>Figure 5. Distillation system example </em></figcaption></figure></div> <h2 id="future_of_industrial-process_simulation" class="wp-block-heading">Future of industrial-process simulation<a href="#future_of_industrial-process_simulation" class="heading-anchor-link"><i class="fas fa-link"></i></a></h2> <p>AI and deep reinforcement learning are enabling industrial plant process control to achieve greater levels of autonomy. AVEVA’s accurate process digital twins and the NVIDIA-accelerated computing platform are driving innovation in industrial process simulation from proof of concept to real-world deployments. </p> <p>The next steps for AVEVA are to pilot, productize, and scale AVEVA Dynamic Simulation with Raptor. AVEVA plans to work with some of the world’s biggest energy companies to pilot the solution—an essential first step for customers to gain confidence. A key advantage is that AVEVA Dynamic Simulation with Raptor can be trained, tested, and proven entirely off-line from the actual industrial power plant.</p> <p>After customer pilots have successfully been completed, AVEVA will look to productize and scale up the solution using no-code workflows in AVEVA Connect. This will enable faster training using the NVIDIA-accelerated computing platform with plug-and-play modules for testing and deployment of deep reinforcement learning agents.</p> <p>Learn more about the <a href="https://www.nvidia.com/en-us/on-demand/session/gtcspring23-s51581/" data-wpel-link="internal" target="_blank" rel="follow noopener">AVEVA and NVIDIA collaboration</a> in industrial process simulation. Explore<a href="https://www.aveva.com/en/products/dynamic-simulation/" data-wpel-link="external" target="_blank" rel="follow external noopener"> AVEVA Dynamic Simulation</a> and <a href="https://developer.nvidia.com/blog/designing-arithmetic-circuits-with-deep-reinforcement-learning/" data-wpel-link="internal" target="_blank" rel="follow noopener">NVIDIA Raptor</a>.</p> </div> <div class="block--prospero-assets"> <h2 class="h--smaller txt-clr--blck">Related resources</h2> <ul><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=EXPT63182&ncid=em-even-124008-vt33-23spring#/'>Driving Autonomous Vehicles In the Omniverse (Presented by Ansys, Inc.)</a></li><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=SE63005&ncid=em-even-124008-vt33-23spring#/'>Advancing Autonomous Vehicle Simulation with Omniverse and Generative AI</a></li><li>GTC session: <a class='wpel-ignore' target='_blank' href='https://www.nvidia.com/gtc/session-catalog/?tab.catalogallsessionstab=1700692987788001F1cG&search=S62500&ncid=em-even-124008-vt33-23spring#/'>Airborne Modeling and Simulation of Uncrewed Aerial System (UAS) Teams With Omniverse</a></li><li>SDK: <a class='wpel-ignore' target='_blank' href='https://developer.nvidia.com/drive/drive-constellation?ncid=em-nurt-245273-vt33'>DRIVE Constellation</a></li><li>SDK: <a class='wpel-ignore' target='_blank' href='https://developer.nvidia.com/drive/drive-sim?ncid=em-nurt-245273-vt33'>DRIVE Sim</a></li><li>Webinar: <a class='wpel-ignore' target='_blank' href='https://gateway.on24.com/wcc/eh/1407606/lp/3843565/?embedUrl=https://www.nvidia.com/en-us/about-nvidia/webinar-portal/'>Using GPUs to Accelerate HD Mapping and Location-Based Services</a></li></ul> </div> <div class="card--post-attributes-secondary"> <div class="post--comments-count secondary--attribute"> <a href="#entry-content-comments"> <i class="fad fa-comment-alt-lines"></i> Discuss (0) </a> </div> <div class="post--rate secondary--attribute"> <div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_not_liked"><button type="button" aria-label="Like Button" data-ulike-id="92360" data-ulike-nonce="4f1d1241a2" data-ulike-type="post" data-ulike-template="wpulike-heart" data-ulike-display-likers="" data-ulike-likers-style="popover" class="wp_ulike_btn wp_ulike_put_text wp_post_btn_92360"><span><i class="far fa-thumbs-up"></i></span> </button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+7"></span> </div></div> <span class="js-like-click like-click"> Like </span> </div> </div> <div class="card--post-attributes-secondary tags"> <div class="caption"> <h2 class="h--smaller txt-clr--blck">Tags</h2> </div> <div class="content-s post-tags--list mt-0"> <a href="https://developer.nvidia.com/blog/category/data-science/" data-wpel-link="internal" target="_blank" rel="follow noopener">Data Science</a> | <a href="https://developer.nvidia.com/blog/category/simulation-modeling-design/" data-wpel-link="internal" target="_blank" rel="follow noopener">Simulation / Modeling / Design</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?industry=Energy" data-wpel-link="internal" target="_blank" rel="follow noopener">Energy</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?products=AI+Foundation+Models" data-wpel-link="internal" target="_blank" rel="follow noopener">AI Foundation Models</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?learning_levels=General+Interest" data-wpel-link="internal" target="_blank" rel="follow noopener">General Interest</a> | <a href="https://developer.nvidia.com/blog/recent-posts/?content_types=Spotlight" data-wpel-link="internal" target="_blank" rel="follow noopener">Spotlight</a> | <a href="https://developer.nvidia.com/blog/tag/featured/" data-wpel-link="internal" target="_blank" rel="follow noopener">featured</a> | <a href="https://developer.nvidia.com/blog/tag/industrial-digitalization-digital-twin/" data-wpel-link="internal" target="_blank" rel="follow noopener">Industrial Digitalization / Digital Twin</a> </div> </div> <div class="post-authors-list"> <div class="entry-content-author"> <div class="caption"> <h2 class="h--smaller txt-clr--blck"> About the Authors </h2> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/david-smith-aveva-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/david-smith-aveva-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About David A. Smith </b> <br/> David A. Smith is a chartered mechanical engineer and holds a Ph.D. in fluid mechanics from Imperial College London. The first half of his career in industry was spent mainly with EPC companies, where he led design, development, and commissioning of power plant processes and combustion systems. At AVEVA, Dr. Smith is responsible for AI product innovation with a particular focus on integration of AI technologies with AVEVA’s first principles simulation products for asset management and autonomous operations. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/davidasmith/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by David A. Smith<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/sri-kodali-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/sri-kodali-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Sri Kodali </b> <br/> Sri Kodali serves as global head of Developer Relations – Energy and Utilities at NVIDIA, where he leads efforts to integrate AI technologies within the energy and utilities sectors. Drawing on a strong background in digital innovation and data analytics, Sri collaborates with software vendors, system integrators, and end users to drive industry-wide AI adoption, delivering solutions that enhance efficiency and performance. Previously, as general manager at Shell, Sri led digital transformation efforts across trading, supply, manufacturing, retail, and chemicals divisions. His work concentrated on enhancing safety, reliability, productivity, optimization, and strategic process improvements, Sri fostered a culture of innovation and collaboration to bring on business transformation. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/srikanthk/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Sri Kodali<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> <div class="media author-info"> <div class="author-media-left media-left"> <img alt='Avatar photo' src='https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/Jihyun-Yang-131x131.jpg' srcset='https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/Jihyun-Yang-262x262.jpg 2x' class='avatar avatar-131 photo' height='131' width='131' loading='lazy' decoding='async'/> </div> <div class="author-media-body media-body"> <b> About Jihyun Yang </b> <br/> Jihyun Yang is a solutions architect at NVIDIA with expertise in the field of geophysical imaging/inversion, optimization, and high-performance computing (HPC). Prior to NVIDIA, Jihyun gained experience in applied machine learning at BP and Los Alamos National Laboratory. Jihyun graduated from Colorado School of Mines with a Ph.D. in geophysics. <div id="author-link"> <a href="https://developer.nvidia.com/blog/author/jihyuny/" rel="author follow noopener" data-wpel-link="internal" target="_blank"> View all posts by Jihyun Yang<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 612"><path d="M305 239c9.4 9.4 9.4 24.6 0 33.9L113 465c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l175-175L79 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L305 239z"/></svg> </a> </div> </div> </div> </div> </div> <div class="entry-content-comments" id="entry-content-comments"> <div class="container" id="pf-disqus-thread"> <div class="row" id="respond"> <div class="col-md-12 related-posts-comments mb-0"><h2 class="h--smaller txt-clr--blck mb-0">Comments</h2></div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div class="wpdc-comments-loading" id="wpdc-comments" data-post-id="92360"></div> </div> </div> </div> </div> <div id="main-content-end"></div> </div> <div id="sidebar" class="sidebar col-lg-3 col-md-3 mt-0"> <div class="sticky-top-pre"></div> <div class="sidebar-item not-sticky-top"> <div id="sidebar-content" class="sidebar__inner"> <script> window.is_post_page = true; window.nv_homepage_url = 'https://developer.nvidia.com/blog'; </script> <div class="block--related-posts" data-source="wp"> <h2 class="h--smaller txt-clr--blck">Related posts</h2> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="92116" data-post-title="Connect Real-Time IoT Data to Digital Twins for 3D Remote Monitoring"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1600" height="900" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1.png 1600w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/ov-social-ignite-iot-tech-blog-1600x900-1-1024x576.png 1024w" sizes="(max-width: 1600px) 100vw, 1600px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Connect Real-Time IoT Data to Digital Twins for 3D Remote Monitoring </h3> </div> </div> <a href="https://developer.nvidia.com/blog/connect-real-time-iot-data-to-digital-twins-for-3d-remote-monitoring/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Connect Real-Time IoT Data to Digital Twins for 3D Remote Monitoring</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="91997" data-post-title="Rapidly Create Real-Time Physics Digital Twins with NVIDIA Omniverse Blueprints"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1945" height="1094" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Car wind tunnel test close up" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1.png 1945w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/11/car-wind-tunnel-featured-1-1024x576.png 1024w" sizes="(max-width: 1945px) 100vw, 1945px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Rapidly Create Real-Time Physics Digital Twins with NVIDIA Omniverse Blueprints </h3> </div> </div> <a href="https://developer.nvidia.com/blog/rapidly-create-real-time-physics-digital-twins-with-nvidia-omniverse-blueprints/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Rapidly Create Real-Time Physics Digital Twins with NVIDIA Omniverse Blueprints</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="90884" data-post-title="Powering the Next Wave of AI Robotics with Three Computers "> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1274" height="715" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image.png 1274w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-300x168.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-625x351.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-179x100.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-768x431.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-645x362.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-362x203.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-196x110.png 196w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/NVIDIA-3-Computers-image-1024x575.png 1024w" sizes="(max-width: 1274px) 100vw, 1274px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Powering the Next Wave of AI Robotics with Three Computers </h3> </div> </div> <a href="https://nvda.ws/48j1ixK#new_tab" class="carousel-row-slide__link" data-wpel-link="external" target="_blank" rel="follow external noopener"> <span class="visually-hidden">Powering the Next Wave of AI Robotics with Three Computers </span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="89981" data-post-title="Advancing Surgical Robotics with AI-Driven Simulation and Digital Twin Technology"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="1999" height="1125" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction.png 1999w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-1536x864.png 1536w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-195x110.png 195w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/10/tissue-retraction-1024x576.png 1024w" sizes="(max-width: 1999px) 100vw, 1999px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Advancing Surgical Robotics with AI-Driven Simulation and Digital Twin Technology </h3> </div> </div> <a href="https://developer.nvidia.com/blog/advancing-surgical-robotics-with-ai-driven-simulation-and-digital-twin-technology/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Advancing Surgical Robotics with AI-Driven Simulation and Digital Twin Technology</span> </a> </div> </div> <div class="carousel-row__slide js-post-card related-post--row" data-post-id="87861" data-post-title="Learning Fluid Flow with AI-Enabled Virtual Wind Tunnels"> <div class="carousel-row-slide__inner"> <div class="carousel-row-slide__thumbnail"> <img width="992" height="558" src="https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Image of a car with shaded lines to indicate wind pressure." decoding="async" loading="lazy" srcset="https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured.png 992w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-300x169.png 300w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-625x352.png 625w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-179x101.png 179w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-768x432.png 768w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-645x363.png 645w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-960x540.png 960w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-500x281.png 500w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-160x90.png 160w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-362x204.png 362w, https://developer-blogs.nvidia.com/wp-content/uploads/2024/08/fluid-flow-ai-wind-tunnels-featured-196x110.png 196w" sizes="(max-width: 992px) 100vw, 992px" /> </div> <div class="carousel-row-slide__content"> <div class="carousel-row-slide__title"> <h3 class="h--smallest carousel-row-slide__heading"> Learning Fluid Flow with AI-Enabled Virtual Wind Tunnels </h3> </div> </div> <a href="https://developer.nvidia.com/blog/learning-fluid-flow-with-ai-enabled-virtual-wind-tunnels/" class="carousel-row-slide__link" data-wpel-link="internal" target="_blank" rel="follow noopener"> <span class="visually-hidden">Learning Fluid Flow with AI-Enabled Virtual Wind Tunnels</span> </a> </div> </div> </div> </div> </div> </div> </div> </div> </section> <!--wp code prettify--> <script type="text/javascript"> function $(id) {return !id ? null : document.getElementById(id);} loadPrettifyCss = function () { if(!$('prettify_css')) { css = document.createElement('link'); css.id = 'prettify_css'; css.type = 'text/css'; css.rel = 'stylesheet'; css.href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').href = 'https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/css/prettify.css'; } if(!$('prettify_custom')) { css = document.createElement('style'); css.id = 'prettify_custom'; css.type = 'text/css'; css.rel = 'stylesheet'; css.innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; var headNode = document.getElementsByTagName("head")[0]; headNode.appendChild(css); } else { $('prettify_css').innerHTML = 'pre.prettyprint { max-height: 500px; white-space: pre; word-wrap: normal; overflow: auto; background-color: #f8f8f8;border-radius: 3px; } pre.prettyprint[title]:before { float: right; border: 1px solid #ccc; border-radius: 3px; background: #ddd; padding: 10px; content: attr(title); font: 13px "Trebuchet MS", "Helvetica Neue", Helvetica, Arial, sans-serif; }'; } } </script> <script type="text/javascript"> loadPrettifyCss(); </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-code-prettify/js/prettify.js"></script> <script type="text/javascript"> function wpCodePrettifyOnLoad(func){ var wpCodePrettifyOldOnLoad = window.onload; if (typeof window.onload != 'function') { window.onload = func } else { window.onload = function () { wpCodePrettifyOldOnLoad(); func() } } } wpCodePrettifyOnLoad(function(){prettyPrint();}); </script> <!--//wp code prettify--> <footer id="nv-footer"></footer> <script type="text/javascript"> (function() { const defaultLinks = JSON.parse("{\n \"columns\": [],\n \"links\": [\n {\n \"text\": \"Legal Information\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/legal-info\/\"\n },\n {\n \"text\": \"Terms of Use\",\n \"href\": \"https:\/\/developer.nvidia.com\/legal\/terms\"\n },\n {\n \"text\": \"Privacy Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/privacy-policy\/\"\n },\n {\n \"text\": \"Cookie Policy\",\n \"href\": \"https:\/\/www.nvidia.com\/en-us\/about-nvidia\/cookie-policy\/\"\n },\n {\n \"text\": \"Contact\",\n \"href\": \"https:\/\/developer.nvidia.com\/contact\"\n }\n ],\n \"news\": {\n \"title\": \"Sign up for NVIDIA News\",\n \"href\": \"https:\/\/developer.nvidia.com\/email-signup\"\n },\n \"social\": {\n \"title\": \"Follow NVIDIA Developer\",\n \"links\": [\n {\n \"text\": \"Facebook\",\n \"href\": \"https:\/\/facebook.com\/nvidiaai\",\n \"provider\": \"facebook\"\n },\n {\n \"text\": \"Instagram\",\n \"href\": \"https:\/\/instagram.com\/nvidiadeveloper\",\n \"provider\": \"instagram\"\n },\n {\n \"text\": \"LinkedIn\",\n \"href\": \"https:\/\/www.linkedin.com\/showcase\/nvidia-ai\",\n \"provider\": \"linkedin\"\n },\n {\n \"text\": \"Twitter\",\n \"href\": \"https:\/\/twitter.com\/nvidiadeveloper\",\n \"provider\": \"twitter\"\n },\n {\n \"text\": \"YouTube\",\n \"href\": \"https:\/\/www.youtube.com\/user\/NVIDIADeveloper\",\n \"provider\": \"youtube\"\n }\n ]\n }\n }\n ") const mountFooterComponent = (locale, response) => { new NVDeveloperFooter({ target: document.getElementById('nv-footer'), props: { locale: locale, menu: response } }) } const handleError = (error, locale, menu) => { console.debug(error) mountFooterComponent(locale, menu) } const initFooter = () => { let menuUrl = 'https://d29g4g2dyqv443.cloudfront.net/menu/en-US/footer.json' let locale = 'en-US'; if (!menuUrl) { handleError('Footer menu URL not defined.', locale, defaultLinks) return } fetch(menuUrl) .then((response) => response.json()) .then((response) => mountFooterComponent(locale, response)) .catch((error) => handleError(error, locale, defaultLinks)) } document.addEventListener('DOMContentLoaded', initFooter); })(); </script> <script type="text/javascript">_satellite.pageBottom();</script> <!-- OneTrust gpc signal detection script start --> <!-- OneTrust Cookies Consent Notice end for nvidia.com --> <script type="text/javascript" src="https://images.nvidia.com/aem-dam/Solutions/ot-js/ot-custom.js"></script> <!-- OneTrust gpc signal detection script end --> <div style="display:none"> <div class="grofile-hash-map-210940fe5c7d19fc14aca1236514b682"> </div> <div class="grofile-hash-map-8cd35855eafac60bc488a0c269300671"> </div> <div class="grofile-hash-map-b7532ee617265cca51355523bf3d2c35"> </div> </div> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b" id="syntaxhighlighter-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushAS3.js?ver=3.0.9b" id="syntaxhighlighter-brush-as3-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushArduino.js?ver=3.0.9b" id="syntaxhighlighter-brush-arduino-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js?ver=3.0.9b" id="syntaxhighlighter-brush-bash-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushColdFusion.js?ver=3.0.9b" id="syntaxhighlighter-brush-coldfusion-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushClojure.js?ver=20090602" id="syntaxhighlighter-brush-clojure-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCpp.js?ver=3.0.9b" id="syntaxhighlighter-brush-cpp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b" id="syntaxhighlighter-brush-csharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCss.js?ver=3.0.9b" id="syntaxhighlighter-brush-css-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDelphi.js?ver=3.0.9b" id="syntaxhighlighter-brush-delphi-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushDiff.js?ver=3.0.9b" id="syntaxhighlighter-brush-diff-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushErlang.js?ver=3.0.9b" id="syntaxhighlighter-brush-erlang-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushFSharp.js?ver=20091003" id="syntaxhighlighter-brush-fsharp-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGo.js?ver=3.0.9b" id="syntaxhighlighter-brush-go-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js?ver=3.0.9b" id="syntaxhighlighter-brush-groovy-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushHaskell.js?ver=3.0.9b" id="syntaxhighlighter-brush-haskell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js?ver=3.0.9b" id="syntaxhighlighter-brush-java-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJavaFX.js?ver=3.0.9b" id="syntaxhighlighter-brush-javafx-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b" id="syntaxhighlighter-brush-jscript-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushLatex.js?ver=20090613" id="syntaxhighlighter-brush-latex-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushMatlabKey.js?ver=20091209" id="syntaxhighlighter-brush-matlabkey-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushObjC.js?ver=20091207" id="syntaxhighlighter-brush-objc-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPerl.js?ver=3.0.9b" id="syntaxhighlighter-brush-perl-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPhp.js?ver=3.0.9b" id="syntaxhighlighter-brush-php-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js?ver=3.0.9b" id="syntaxhighlighter-brush-plain-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPowerShell.js?ver=3.0.9b" id="syntaxhighlighter-brush-powershell-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPython.js?ver=3.0.9b" id="syntaxhighlighter-brush-python-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/third-party-brushes/shBrushR.js?ver=20100919" id="syntaxhighlighter-brush-r-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushRuby.js?ver=3.0.9b" id="syntaxhighlighter-brush-ruby-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js?ver=3.0.9b" id="syntaxhighlighter-brush-scala-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSql.js?ver=3.0.9b" id="syntaxhighlighter-brush-sql-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushSwift.js?ver=3.0.9b" id="syntaxhighlighter-brush-swift-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushVb.js?ver=3.0.9b" id="syntaxhighlighter-brush-vb-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js?ver=3.0.9b" id="syntaxhighlighter-brush-xml-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushYaml.js?ver=3.0.9b" id="syntaxhighlighter-brush-yaml-js"></script> <script type='text/javascript'> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "https://developer-blogs.nvidia.com/wp-content/plugins/nv-tweaks/css/shThemeNvidia.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['gutter'] = false; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( $ ) { $( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="load_comments_js-js-extra"> /* <![CDATA[ */ var wpdc = {"commentsURL":"https:\/\/developer.nvidia.com\/blog\/wp-json\/wp-discourse\/v1\/discourse-comments"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-discourse/lib/../js/load-comments.js?ver=1732424673" id="load_comments_js-js"></script> <script type="text/javascript" id="wp_ulike-js-extra"> /* <![CDATA[ */ var wp_ulike_params = {"ajax_url":"https:\/\/developer-blogs.nvidia.com\/wp-admin\/admin-ajax.php","notifications":"0"}; var wp_ulike_params = {"ajax_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-ulike/assets/js/wp-ulike.min.js?ver=4.7.5" id="wp_ulike-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-language-switcher/js/nv-language-switcher.js" id="nv-language-switcher-js"></script> <script type="text/javascript" src="https://secure.gravatar.com/js/gprofiles.js?ver=202447" id="grofiles-cards-js"></script> <script type="text/javascript" id="wpgroho-js-extra"> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/jetpack/modules/wpgroho.js?ver=13.4.3" id="wpgroho-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/page-links-to/dist/new-tab.js?ver=3.3.5" id="page-links-to-js"></script> <script type="text/javascript" id="sage/main.js-js-extra"> /* <![CDATA[ */ var morePostsAjax = {"network_id":"1","site_url":"https:\/\/developer.nvidia.com\/blog\/wp-admin\/"}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/dist/scripts/main_5b99443a.js" id="sage/main.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/nv-recommender/js/dist/index.js" id="sage/recommender.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-includes/js/dist/vendor/lodash.min.js?ver=4.17.21" id="lodash-js"></script> <script type="text/javascript" id="lodash-js-after"> /* <![CDATA[ */ window.lodash = _.noConflict(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/responsiveslides/responsiveslides.min.js" id="sage/flexslider.js-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/themes/nvidia/resources/assets/libs/nv-developer-menu/nv-developer-menu.js?ver=1.0.0" id="nv-developer-menu.js-js"></script> <script type="text/javascript" id="stbClient-js-extra"> /* <![CDATA[ */ var stbUserOptions = {"restData":{"root":"https:\/\/developer-blogs.nvidia.com\/wp-json\/","nonce":"9f955917de"}}; /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/wp-special-textboxes/js/client.js?ver=6.2.1" id="stbClient-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/sliders/flexslider/jquery.flexslider.min.js?ver=3.60.1" id="metaslider-flex-slider-js"></script> <script type="text/javascript" id="metaslider-flex-slider-js-after"> /* <![CDATA[ */ var metaslider_56284 = function($) { $('#metaslider_56284').flexslider({ slideshowSpeed:3000, animation:"fade", controlNav:false, directionNav:false, pauseOnHover:true, direction:"horizontal", reverse:false, keyboard:false, animationSpeed:600, prevText:"<", nextText:">", smoothHeight:false, fadeFirstSlide:false, slideshow:true }); $(document).trigger('metaslider/initialized', '#metaslider_56284'); }; var timer_metaslider_56284 = function() { var slider = !window.jQuery ? window.setTimeout(timer_metaslider_56284, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_56284, 1) : metaslider_56284(window.jQuery); }; timer_metaslider_56284(); /* ]]> */ </script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/assets/metaslider/script.min.js?ver=3.60.1" id="metaslider-script-js"></script> <script type="text/javascript" src="https://developer-blogs.nvidia.com/wp-content/plugins/ml-slider/themes/highway/v1.0.0/script.js?ver=1.0.0" id="metaslider_highway_theme_script-js"></script> <script> function b2a(a){var b,c=0,l=0,f="",g=[];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g[l++]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)]=b;for(c=0;d>c;c++)for(b=f[a.charAt(c)],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /* <![CDATA[ */ ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"}; /* ]]> */ var ai_cookie_js=!0,ai_block_class_def="code-block"; /* JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license */ "undefined"!==typeof ai_cookie_js&&(function(a){if("function"===typeof define&&define.amd){define(a);var c=!0}"object"===typeof exports&&(module.exports=a(),c=!0);if(!c){var d=window.Cookies,b=window.Cookies=a();b.noConflict=function(){window.Cookies=d;return b}}}(function(){function a(){for(var d=0,b={};d<arguments.length;d++){var f=arguments[d],e;for(e in f)b[e]=f[e]}return b}function c(d){function b(){}function f(h,k,g){if("undefined"!==typeof document){g=a({path:"/",sameSite:"Lax"},b.defaults, g);"number"===typeof g.expires&&(g.expires=new Date(1*new Date+864E5*g.expires));g.expires=g.expires?g.expires.toUTCString():"";try{var l=JSON.stringify(k);/^[\{\[]/.test(l)&&(k=l)}catch(p){}k=d.write?d.write(k,h):encodeURIComponent(String(k)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent);h=encodeURIComponent(String(h)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);l="";for(var n in g)g[n]&&(l+="; "+n,!0!==g[n]&&(l+="="+ g[n].split(";")[0]));return document.cookie=h+"="+k+l}}function e(h,k){if("undefined"!==typeof document){for(var g={},l=document.cookie?document.cookie.split("; "):[],n=0;n<l.length;n++){var p=l[n].split("="),m=p.slice(1).join("=");k||'"'!==m.charAt(0)||(m=m.slice(1,-1));try{var q=p[0].replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);m=(d.read||d)(m,q)||m.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);if(k)try{m=JSON.parse(m)}catch(r){}g[q]=m;if(h===q)break}catch(r){}}return h?g[h]:g}}b.set=f;b.get= function(h){return e(h,!1)};b.getJSON=function(h){return e(h,!0)};b.remove=function(h,k){f(h,"",a(k,{expires:-1}))};b.defaults={};b.withConverter=c;return b}return c(function(){})}),AiCookies=Cookies.noConflict(),ai_check_block=function(a){if(null==a)return!0;var c=AiCookies.getJSON("aiBLOCKS");ai_debug_cookie_status="";null==c&&(c={});"undefined"!==typeof ai_delay_showing_pageviews&&(c.hasOwnProperty(a)||(c[a]={}),c[a].hasOwnProperty("d")||(c[a].d=ai_delay_showing_pageviews));if(c.hasOwnProperty(a)){for(var d in c[a]){if("x"== d){var b="",f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);var e=new Date;e=c[a][d]-Math.round(e.getTime()/1E3);if(0<e&&f==b)return ai_debug_cookie_status=a="closed for "+e+" s = "+Math.round(1E4*e/3600/24)/1E4+" days",!1;ai_set_cookie(a,"x","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("c")||ai_set_cookie(a,"h","")}else if("d"==d){if(0!=c[a][d])return ai_debug_cookie_status=a="delayed for "+c[a][d]+ " pageviews",!1}else if("i"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max impressions reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]-Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max imp. reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"i","");c[a].hasOwnProperty("c")||c[a].hasOwnProperty("x")|| ai_set_cookie(a,"h","")}}if("ipt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].it-b,0<e))return ai_debug_cookie_status=a="max imp. per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;if("c"==d){b="";f=document.querySelectorAll('span[data-ai-block="'+a+'"]')[0];"aiHash"in f.dataset&&(b=f.dataset.aiHash);f="";c[a].hasOwnProperty("h")&&(f=c[a].h);if(0==c[a][d]&&f==b)return ai_debug_cookie_status=a="max clicks reached",!1;if(0>c[a][d]&&f==b){e=new Date;e=-c[a][d]- Math.round(e.getTime()/1E3);if(0<e)return ai_debug_cookie_status=a="max clicks reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1;ai_set_cookie(a,"c","");c[a].hasOwnProperty("i")||c[a].hasOwnProperty("x")||ai_set_cookie(a,"h","")}}if("cpt"==d&&0==c[a][d]&&(e=new Date,b=Math.round(e.getTime()/1E3),e=c[a].ct-b,0<e))return ai_debug_cookie_status=a="max clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}if(c.hasOwnProperty("G")&&c.G.hasOwnProperty("cpt")&&0==c.G.cpt&& (e=new Date,b=Math.round(e.getTime()/1E3),e=c.G.ct-b,0<e))return ai_debug_cookie_status=a="max global clicks per time reached ("+Math.round(1E4*e/24/3600)/1E4+" days = "+e+" s)",!1}ai_debug_cookie_status="OK";return!0},ai_check_and_insert_block=function(a,c){if(null==a)return!0;var d=document.getElementsByClassName(c);if(d.length){d=d[0];var b=d.closest("."+ai_block_class_def),f=ai_check_block(a);!f&&0!=parseInt(d.getAttribute("limits-fallback"))&&d.hasAttribute("data-fallback-code")&&(d.setAttribute("data-code", d.getAttribute("data-fallback-code")),null!=b&&b.hasAttribute("data-ai")&&d.hasAttribute("fallback-tracking")&&d.hasAttribute("fallback_level")&&b.setAttribute("data-ai-"+d.getAttribute("fallback_level"),d.getAttribute("fallback-tracking")),f=!0);d.removeAttribute("data-selector");if(f)ai_insert_code(d),b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")));else{f=d.closest("div[data-ai]");if(null!=f&&"undefined"!=typeof f.getAttribute("data-ai")){var e=JSON.parse(b64d(f.getAttribute("data-ai")));"undefined"!==typeof e&&e.constructor===Array&&(e[1]="",f.setAttribute("data-ai",b64e(JSON.stringify(e))))}b&&(f=b.querySelectorAll(".ai-debug-block"),f.length&&(b.classList.remove("ai-list-block"),b.classList.remove("ai-list-block-ip"),b.classList.remove("ai-list-block-filter"),b.style.visibility="",b.classList.contains("ai-remove-position")&& (b.style.position="")))}d.classList.remove(c)}d=document.querySelectorAll("."+c+"-dbg");b=0;for(f=d.length;b<f;b++)e=d[b],e.querySelector(".ai-status").textContent=ai_debug_cookie_status,e.querySelector(".ai-cookie-data").textContent=ai_get_cookie_text(a),e.classList.remove(c+"-dbg")},ai_load_cookie=function(){var a=AiCookies.getJSON("aiBLOCKS");null==a&&(a={});return a},ai_set_cookie=function(a,c,d){var b=ai_load_cookie();if(""===d){if(b.hasOwnProperty(a)){delete b[a][c];a:{c=b[a];for(f in c)if(c.hasOwnProperty(f)){var f= !1;break a}f=!0}f&&delete b[a]}}else b.hasOwnProperty(a)||(b[a]={}),b[a][c]=d;0===Object.keys(b).length&&b.constructor===Object?AiCookies.remove("aiBLOCKS"):AiCookies.set("aiBLOCKS",b,{expires:365,path:"/"});return b},ai_get_cookie_text=function(a){var c=AiCookies.getJSON("aiBLOCKS");null==c&&(c={});var d="";c.hasOwnProperty("G")&&(d="G["+JSON.stringify(c.G).replace(/"/g,"").replace("{","").replace("}","")+"] ");var b="";c.hasOwnProperty(a)&&(b=JSON.stringify(c[a]).replace(/"/g,"").replace("{","").replace("}", ""));return d+b}); var ai_insertion_js=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_insertion_js){ai_insert=function(a,h,l){if(-1!=h.indexOf(":eq("))if(window.jQuery&&window.jQuery.fn)var n=jQuery(h);else{console.error("AI INSERT USING jQuery QUERIES:",h,"- jQuery not found");return}else n=document.querySelectorAll(h);for(var u=0,y=n.length;u<y;u++){var d=n[u];selector_string=d.hasAttribute("id")?"#"+d.getAttribute("id"):d.hasAttribute("class")?"."+d.getAttribute("class").replace(RegExp(" ","g"),"."):"";var w=document.createElement("div");w.innerHTML=l; var m=w.getElementsByClassName("ai-selector-counter")[0];null!=m&&(m.innerText=u+1);m=w.getElementsByClassName("ai-debug-name ai-main")[0];if(null!=m){var r=a.toUpperCase();"undefined"!=typeof ai_front&&("before"==a?r=ai_front.insertion_before:"after"==a?r=ai_front.insertion_after:"prepend"==a?r=ai_front.insertion_prepend:"append"==a?r=ai_front.insertion_append:"replace-content"==a?r=ai_front.insertion_replace_content:"replace-element"==a&&(r=ai_front.insertion_replace_element));-1==selector_string.indexOf(".ai-viewports")&& (m.innerText=r+" "+h+" ("+d.tagName.toLowerCase()+selector_string+")")}m=document.createRange();try{var v=m.createContextualFragment(w.innerHTML)}catch(t){}"before"==a?d.parentNode.insertBefore(v,d):"after"==a?d.parentNode.insertBefore(v,d.nextSibling):"prepend"==a?d.insertBefore(v,d.firstChild):"append"==a?d.insertBefore(v,null):"replace-content"==a?(d.innerHTML="",d.insertBefore(v,null)):"replace-element"==a&&(d.parentNode.insertBefore(v,d),d.parentNode.removeChild(d));z()}};ai_insert_code=function(a){function h(m, r){return null==m?!1:m.classList?m.classList.contains(r):-1<(" "+m.className+" ").indexOf(" "+r+" ")}function l(m,r){null!=m&&(m.classList?m.classList.add(r):m.className+=" "+r)}function n(m,r){null!=m&&(m.classList?m.classList.remove(r):m.className=m.className.replace(new RegExp("(^|\\b)"+r.split(" ").join("|")+"(\\b|$)","gi")," "))}if("undefined"!=typeof a){var u=!1;if(h(a,"no-visibility-check")||a.offsetWidth||a.offsetHeight||a.getClientRects().length){u=a.getAttribute("data-code");var y=a.getAttribute("data-insertion-position"), d=a.getAttribute("data-selector");if(null!=u)if(null!=y&&null!=d){if(-1!=d.indexOf(":eq(")?window.jQuery&&window.jQuery.fn&&jQuery(d).length:document.querySelectorAll(d).length)ai_insert(y,d,b64d(u)),n(a,"ai-viewports")}else{y=document.createRange();try{var w=y.createContextualFragment(b64d(u))}catch(m){}a.parentNode.insertBefore(w,a.nextSibling);n(a,"ai-viewports")}u=!0}else w=a.previousElementSibling,h(w,"ai-debug-bar")&&h(w,"ai-debug-script")&&(n(w,"ai-debug-script"),l(w,"ai-debug-viewport-invisible")), n(a,"ai-viewports");return u}};ai_insert_list_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h),n=h.closest("div."+ai_block_class_def);if(n){l||n.removeAttribute("data-ai");var u=n.querySelectorAll(".ai-debug-block");n&&u.length&&(n.classList.remove("ai-list-block"),n.classList.remove("ai-list-block-ip"),n.classList.remove("ai-list-block-filter"),n.style.visibility="",n.classList.contains("ai-remove-position")&&(n.style.position=""))}h.classList.remove(a); l&&z()}};ai_insert_viewport_code=function(a){var h=document.getElementsByClassName(a)[0];if("undefined"!=typeof h){var l=ai_insert_code(h);h.classList.remove(a);l&&(a=h.closest("div."+ai_block_class_def),null!=a&&(l=h.getAttribute("style"),null!=l&&a.setAttribute("style",a.getAttribute("style")+" "+l)));setTimeout(function(){h.removeAttribute("style")},2);z()}};ai_insert_adsense_fallback_codes=function(a){a.style.display="none";var h=a.closest(".ai-fallback-adsense"),l=h.nextElementSibling;l.getAttribute("data-code")? ai_insert_code(l)&&z():l.style.display="block";h.classList.contains("ai-empty-code")&&null!=a.closest("."+ai_block_class_def)&&(a=a.closest("."+ai_block_class_def).getElementsByClassName("code-block-label"),0!=a.length&&(a[0].style.display="none"))};ai_insert_code_by_class=function(a){var h=document.getElementsByClassName(a)[0];"undefined"!=typeof h&&(ai_insert_code(h),h.classList.remove(a))};ai_insert_client_code=function(a,h){var l=document.getElementsByClassName(a)[0];if("undefined"!=typeof l){var n= l.getAttribute("data-code");null!=n&&ai_check_block()&&(l.setAttribute("data-code",n.substring(Math.floor(h/19))),ai_insert_code_by_class(a),l.remove())}};ai_process_elements_active=!1;function z(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document);"function"==typeof ai_process_wait_for_interaction&&ai_process_wait_for_interaction();"function"==typeof ai_process_delayed_blocks&&ai_process_delayed_blocks()}, 5);ai_process_elements_active=!0}const B=document.querySelector("body");(new MutationObserver(function(a,h){for(const l of a)"attributes"===l.type&&"data-ad-status"==l.attributeName&&"unfilled"==l.target.dataset.adStatus&&l.target.closest(".ai-fallback-adsense")&&ai_insert_adsense_fallback_codes(l.target)})).observe(B,{attributes:!0,childList:!1,subtree:!0});var Arrive=function(a,h,l){function n(t,c,e){d.addMethod(c,e,t.unbindEvent);d.addMethod(c,e,t.unbindEventWithSelectorOrCallback);d.addMethod(c, e,t.unbindEventWithSelectorAndCallback)}function u(t){t.arrive=r.bindEvent;n(r,t,"unbindArrive");t.leave=v.bindEvent;n(v,t,"unbindLeave")}if(a.MutationObserver&&"undefined"!==typeof HTMLElement){var y=0,d=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(c,e){return c instanceof HTMLElement&&t.call(c,e)},addMethod:function(c,e,f){var b=c[e];c[e]= function(){if(f.length==arguments.length)return f.apply(this,arguments);if("function"==typeof b)return b.apply(this,arguments)}},callCallbacks:function(c,e){e&&e.options.onceOnly&&1==e.firedElems.length&&(c=[c[0]]);for(var f=0,b;b=c[f];f++)b&&b.callback&&b.callback.call(b.elem,b.elem);e&&e.options.onceOnly&&1==e.firedElems.length&&e.me.unbindEventWithSelectorAndCallback.call(e.target,e.selector,e.callback)},checkChildNodesRecursively:function(c,e,f,b){for(var g=0,k;k=c[g];g++)f(k,e,b)&&b.push({callback:e.callback, elem:k}),0<k.childNodes.length&&d.checkChildNodesRecursively(k.childNodes,e,f,b)},mergeArrays:function(c,e){var f={},b;for(b in c)c.hasOwnProperty(b)&&(f[b]=c[b]);for(b in e)e.hasOwnProperty(b)&&(f[b]=e[b]);return f},toElementsArray:function(c){"undefined"===typeof c||"number"===typeof c.length&&c!==a||(c=[c]);return c}}}(),w=function(){var t=function(){this._eventsBucket=[];this._beforeRemoving=this._beforeAdding=null};t.prototype.addEvent=function(c,e,f,b){c={target:c,selector:e,options:f,callback:b, firedElems:[]};this._beforeAdding&&this._beforeAdding(c);this._eventsBucket.push(c);return c};t.prototype.removeEvent=function(c){for(var e=this._eventsBucket.length-1,f;f=this._eventsBucket[e];e--)c(f)&&(this._beforeRemoving&&this._beforeRemoving(f),(f=this._eventsBucket.splice(e,1))&&f.length&&(f[0].callback=null))};t.prototype.beforeAdding=function(c){this._beforeAdding=c};t.prototype.beforeRemoving=function(c){this._beforeRemoving=c};return t}(),m=function(t,c){var e=new w,f=this,b={fireOnAttributesModification:!1}; e.beforeAdding(function(g){var k=g.target;if(k===a.document||k===a)k=document.getElementsByTagName("html")[0];var p=new MutationObserver(function(x){c.call(this,x,g)});var q=t(g.options);p.observe(k,q);g.observer=p;g.me=f});e.beforeRemoving(function(g){g.observer.disconnect()});this.bindEvent=function(g,k,p){k=d.mergeArrays(b,k);for(var q=d.toElementsArray(this),x=0;x<q.length;x++)e.addEvent(q[x],g,k,p)};this.unbindEvent=function(){var g=d.toElementsArray(this);e.removeEvent(function(k){for(var p= 0;p<g.length;p++)if(this===l||k.target===g[p])return!0;return!1})};this.unbindEventWithSelectorOrCallback=function(g){var k=d.toElementsArray(this);e.removeEvent("function"===typeof g?function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.callback===g)return!0;return!1}:function(p){for(var q=0;q<k.length;q++)if((this===l||p.target===k[q])&&p.selector===g)return!0;return!1})};this.unbindEventWithSelectorAndCallback=function(g,k){var p=d.toElementsArray(this);e.removeEvent(function(q){for(var x= 0;x<p.length;x++)if((this===l||q.target===p[x])&&q.selector===g&&q.callback===k)return!0;return!1})};return this},r=new function(){function t(f,b,g){return d.matchesSelector(f,b.selector)&&(f._id===l&&(f._id=y++),-1==b.firedElems.indexOf(f._id))?(b.firedElems.push(f._id),!0):!1}var c={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};r=new m(function(f){var b={attributes:!1,childList:!0,subtree:!0};f.fireOnAttributesModification&&(b.attributes=!0);return b},function(f,b){f.forEach(function(g){var k= g.addedNodes,p=g.target,q=[];null!==k&&0<k.length?d.checkChildNodesRecursively(k,b,t,q):"attributes"===g.type&&t(p,b,q)&&q.push({callback:b.callback,elem:p});d.callCallbacks(q,b)})});var e=r.bindEvent;r.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);var k=d.toElementsArray(this);if(b.existing){for(var p=[],q=0;q<k.length;q++)for(var x=k[q].querySelectorAll(f),A=0;A<x.length;A++)p.push({callback:g,elem:x[A]});if(b.onceOnly&&p.length)return g.call(p[0].elem,p[0].elem); setTimeout(d.callCallbacks,1,p)}e.call(this,f,b,g)};return r},v=new function(){function t(f,b){return d.matchesSelector(f,b.selector)}var c={};v=new m(function(){return{childList:!0,subtree:!0}},function(f,b){f.forEach(function(g){g=g.removedNodes;var k=[];null!==g&&0<g.length&&d.checkChildNodesRecursively(g,b,t,k);d.callCallbacks(k,b)})});var e=v.bindEvent;v.bindEvent=function(f,b,g){"undefined"===typeof g?(g=b,b=c):b=d.mergeArrays(c,b);e.call(this,f,b,g)};return v};h&&u(h.fn);u(HTMLElement.prototype); u(NodeList.prototype);u(HTMLCollection.prototype);u(HTMLDocument.prototype);u(Window.prototype);h={};n(r,h,"unbindAllArrive");n(v,h,"unbindAllLeave");return h}}(window,"undefined"===typeof jQuery?null:jQuery,void 0)}; var ai_rotation_triggers=[],ai_block_class_def="code-block"; if("undefined"!=typeof ai_rotation_triggers){ai_process_rotation=function(b){var d="number"==typeof b.length;window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=d?Array.prototype.slice.call(b):b[0]);if(d){var e=!1;b.forEach((c,h)=>{if(c.classList.contains("ai-unprocessed")||c.classList.contains("ai-timer"))e=!0});if(!e)return;b.forEach((c,h)=>{c.classList.remove("ai-unprocessed");c.classList.remove("ai-timer")})}else{if(!b.classList.contains("ai-unprocessed")&&!b.classList.contains("ai-timer"))return; b.classList.remove("ai-unprocessed");b.classList.remove("ai-timer")}var a=!1;if(d?b[0].hasAttribute("data-info"):b.hasAttribute("data-info")){var f="div.ai-rotate.ai-"+(d?JSON.parse(atob(b[0].dataset.info)):JSON.parse(atob(b.dataset.info)))[0];ai_rotation_triggers.includes(f)&&(ai_rotation_triggers.splice(ai_rotation_triggers.indexOf(f),1),a=!0)}if(d)for(d=0;d<b.length;d++)0==d?ai_process_single_rotation(b[d],!0):ai_process_single_rotation(b[d],!1);else ai_process_single_rotation(b,!a)};ai_process_single_rotation= function(b,d){var e=[];Array.from(b.children).forEach((g,p)=>{g.matches(".ai-rotate-option")&&e.push(g)});if(0!=e.length){e.forEach((g,p)=>{g.style.display="none"});if(b.hasAttribute("data-next")){k=parseInt(b.getAttribute("data-next"));var a=e[k];if(a.hasAttribute("data-code")){var f=document.createRange(),c=!0;try{var h=f.createContextualFragment(b64d(a.dataset.code))}catch(g){c=!1}c&&(a=h)}0!=a.querySelectorAll("span[data-ai-groups]").length&&0!=document.querySelectorAll(".ai-rotation-groups").length&& setTimeout(function(){B()},5)}else if(e[0].hasAttribute("data-group")){var k=-1,u=[];document.querySelectorAll("span[data-ai-groups]").forEach((g,p)=>{(g.offsetWidth||g.offsetHeight||g.getClientRects().length)&&u.push(g)});1<=u.length&&(timed_groups=[],groups=[],u.forEach(function(g,p){active_groups=JSON.parse(b64d(g.dataset.aiGroups));var r=!1;g=g.closest(".ai-rotate");null!=g&&g.classList.contains("ai-timed-rotation")&&(r=!0);active_groups.forEach(function(t,v){groups.push(t);r&&timed_groups.push(t)})}), groups.forEach(function(g,p){-1==k&&e.forEach((r,t)=>{var v=b64d(r.dataset.group);option_group_items=v.split(",");option_group_items.forEach(function(C,E){-1==k&&C.trim()==g&&(k=t,timed_groups.includes(v)&&b.classList.add("ai-timed-rotation"))})})}))}else if(b.hasAttribute("data-shares"))for(f=JSON.parse(atob(b.dataset.shares)),a=Math.round(100*Math.random()),c=0;c<f.length&&(k=c,0>f[c]||!(a<=f[c]));c++);else f=b.classList.contains("ai-unique"),a=new Date,f?("number"!=typeof ai_rotation_seed&&(ai_rotation_seed= (Math.floor(1E3*Math.random())+a.getMilliseconds())%e.length),f=ai_rotation_seed,f>e.length&&(f%=e.length),a=parseInt(b.dataset.counter),a<=e.length?(k=parseInt(f+a-1),k>=e.length&&(k-=e.length)):k=e.length):(k=Math.floor(Math.random()*e.length),a.getMilliseconds()%2&&(k=e.length-k-1));if(b.classList.contains("ai-rotation-scheduling"))for(k=-1,f=0;f<e.length;f++)if(a=e[f],a.hasAttribute("data-scheduling")){c=b64d(a.dataset.scheduling);a=!0;0==c.indexOf("^")&&(a=!1,c=c.substring(1));var q=c.split("="), m=-1!=c.indexOf("%")?q[0].split("%"):[q[0]];c=m[0].trim().toLowerCase();m="undefined"!=typeof m[1]?m[1].trim():0;q=q[1].replace(" ","");var n=(new Date).getTime();n=new Date(n);var l=0;switch(c){case "s":l=n.getSeconds();break;case "i":l=n.getMinutes();break;case "h":l=n.getHours();break;case "d":l=n.getDate();break;case "m":l=n.getMonth();break;case "y":l=n.getFullYear();break;case "w":l=n.getDay(),l=0==l?6:l-1}c=0!=m?l%m:l;m=q.split(",");q=!a;for(n=0;n<m.length;n++)if(l=m[n],-1!=l.indexOf("-")){if(l= l.split("-"),c>=l[0]&&c<=l[1]){q=a;break}}else if(c==l){q=a;break}if(q){k=f;break}}if(!(0>k||k>=e.length)){a=e[k];var z="",w=b.classList.contains("ai-timed-rotation");e.forEach((g,p)=>{g.hasAttribute("data-time")&&(w=!0)});if(a.hasAttribute("data-time")){f=atob(a.dataset.time);if(0==f&&1<e.length){c=k;do{c++;c>=e.length&&(c=0);m=e[c];if(!m.hasAttribute("data-time")){k=c;a=e[k];f=0;break}m=atob(m.dataset.time)}while(0==m&&c!=k);0!=f&&(k=c,a=e[k],f=atob(a.dataset.time))}if(0<f&&(c=k+1,c>=e.length&& (c=0),b.hasAttribute("data-info"))){m=JSON.parse(atob(b.dataset.info))[0];b.setAttribute("data-next",c);var x="div.ai-rotate.ai-"+m;ai_rotation_triggers.includes(x)&&(d=!1);d&&(ai_rotation_triggers.push(x),setTimeout(function(){var g=document.querySelectorAll(x);g.forEach((p,r)=>{p.classList.add("ai-timer")});ai_process_rotation(g)},1E3*f));z=" ("+f+" s)"}}else a.hasAttribute("data-group")||e.forEach((g,p)=>{p!=k&&g.remove()});a.style.display="";a.style.visibility="";a.style.position="";a.style.width= "";a.style.height="";a.style.top="";a.style.left="";a.classList.remove("ai-rotate-hidden");a.classList.remove("ai-rotate-hidden-2");b.style.position="";if(a.hasAttribute("data-code")){e.forEach((g,p)=>{g.innerText=""});d=b64d(a.dataset.code);f=document.createRange();c=!0;try{h=f.createContextualFragment(d)}catch(g){c=!1}a.append(h);D()}f=parseInt(a.dataset.index);var y=b64d(a.dataset.name);d=b.closest(".ai-debug-block");if(null!=d){h=d.querySelectorAll("kbd.ai-option-name");d=d.querySelectorAll(".ai-debug-block"); if(0!=d.length){var A=[];d.forEach((g,p)=>{g.querySelectorAll("kbd.ai-option-name").forEach((r,t)=>{A.push(r)})});h=Array.from(h);h=h.slice(0,h.length-A.length)}0!=h.length&&(separator=h[0].hasAttribute("data-separator")?h[0].dataset.separator:"",h.forEach((g,p)=>{g.innerText=separator+y+z}))}d=!1;a=b.closest(".ai-adb-show");null!=a&&a.hasAttribute("data-ai-tracking")&&(h=JSON.parse(b64d(a.getAttribute("data-ai-tracking"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,a.setAttribute("data-ai-tracking", b64e(JSON.stringify(h))),a.classList.add("ai-track"),w&&ai_tracking_finished&&a.classList.add("ai-no-pageview"),d=!0));d||(d=b.closest("div[data-ai]"),null!=d&&d.hasAttribute("data-ai")&&(h=JSON.parse(b64d(d.getAttribute("data-ai"))),"undefined"!==typeof h&&h.constructor===Array&&(h[1]=f,h[3]=y,d.setAttribute("data-ai",b64e(JSON.stringify(h))),d.classList.add("ai-track"),w&&ai_tracking_finished&&d.classList.add("ai-no-pageview"))))}}};ai_process_rotations=function(){document.querySelectorAll("div.ai-rotate").forEach((b, d)=>{ai_process_rotation(b)})};function B(){document.querySelectorAll("div.ai-rotate.ai-rotation-groups").forEach((b,d)=>{b.classList.add("ai-timer");ai_process_rotation(b)})}ai_process_rotations_in_element=function(b){null!=b&&b.querySelectorAll("div.ai-rotate").forEach((d,e)=>{ai_process_rotation(d)})};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_rotations()}, 10)});ai_process_elements_active=!1;function D(){ai_process_elements_active||setTimeout(function(){ai_process_elements_active=!1;"function"==typeof ai_process_rotations&&ai_process_rotations();"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&&ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks();"function"==typeof ai_process_impressions&&1== ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5);ai_process_elements_active=!0}}; ;!function(a,b){a(function(){"use strict";function a(a,b){return null!=a&&null!=b&&a.toLowerCase()===b.toLowerCase()}function c(a,b){var c,d,e=a.length;if(!e||!b)return!1;for(c=b.toLowerCase(),d=0;d<e;++d)if(c===a[d].toLowerCase())return!0;return!1}function d(a){for(var b in a)i.call(a,b)&&(a[b]=new RegExp(a[b],"i"))}function e(a){return(a||"").substr(0,500)}function f(a,b){this.ua=e(a),this._cache={},this.maxPhoneWidth=b||600}var g={};g.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},g.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i, shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var h,i=Object.prototype.hasOwnProperty;return g.FALLBACK_PHONE="UnknownPhone",g.FALLBACK_TABLET="UnknownTablet",g.FALLBACK_MOBILE="UnknownMobile",h="isArray"in Array?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)},function(){var a,b,c,e,f,j,k=g.mobileDetectRules;for(a in k.props)if(i.call(k.props,a)){for(b=k.props[a],h(b)||(b=[b]),f=b.length,e=0;e<f;++e)c=b[e],j=c.indexOf("[VER]"),j>=0&&(c=c.substring(0,j)+"([\\w._\\+]+)"+c.substring(j+5)),b[e]=new RegExp(c,"i");k.props[a]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),g.findMatch=function(a,b){for(var c in a)if(i.call(a,c)&&a[c].test(b))return c;return null},g.findMatches=function(a,b){var c=[];for(var d in a)i.call(a,d)&&a[d].test(b)&&c.push(d);return c},g.getVersionStr=function(a,b){var c,d,e,f,h=g.mobileDetectRules.props;if(i.call(h,a))for(c=h[a],e=c.length,d=0;d<e;++d)if(f=c[d].exec(b),null!==f)return f[1];return null},g.getVersion=function(a,b){var c=g.getVersionStr(a,b);return c?g.prepareVersionNo(c):NaN},g.prepareVersionNo=function(a){var b;return b=a.split(/[a-z._ \/\-]/i),1===b.length&&(a=b[0]),b.length>1&&(a=b[0]+".",b.shift(),a+=b.join("")),Number(a)},g.isMobileFallback=function(a){return g.detectMobileBrowsers.fullPattern.test(a)||g.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},g.isTabletFallback=function(a){return g.detectMobileBrowsers.tabletPattern.test(a)},g.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var e,h,i;return(h=g.findMatch(g.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(e=g.findMatch(g.mobileDetectRules.phones,c))?(a.mobile=a.phone=e,void(a.tablet=null)):void(g.isMobileFallback(c)?(i=f.isPhoneSized(d),i===b?(a.mobile=g.FALLBACK_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=g.FALLBACK_PHONE,a.tablet=null):(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null)):g.isTabletFallback(c)?(a.mobile=a.tablet=g.FALLBACK_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},g.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.*Mobile")||a.version("Windows Mobile")<=5.2,"C")},g.detectOS=function(a){return g.findMatch(g.mobileDetectRules.oss0,a)||g.findMatch(g.mobileDetectRules.oss,a)},g.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height},f.prototype={constructor:f,mobile:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return g.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===b&&(this._cache.userAgent=g.findMatch(g.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===b&&(this._cache.userAgents=g.findMatches(g.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===b&&(this._cache.os=g.detectOS(this.ua)),this._cache.os},version:function(a){return g.getVersion(a,this.ua)},versionStr:function(a){return g.getVersionStr(a,this.ua)},is:function(b){return c(this.userAgents(),b)||a(b,this.os())||a(b,this.phone())||a(b,this.tablet())||c(g.findMatches(g.mobileDetectRules.utils,this.ua),b)},match:function(a){return a instanceof RegExp||(a=new RegExp(a,"i")),a.test(this.ua)},isPhoneSized:function(a){return f.isPhoneSized(a||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===b&&(this._cache.grade=g.mobileGrade(this)),this._cache.grade}},"undefined"!=typeof window&&window.screen?f.isPhoneSized=function(a){return a<0?b:g.getDeviceSmallerSide()<=a}:f.isPhoneSized=function(){},f._impl=g,f.version="1.4.5 2021-03-13",f})}(function(a){if("undefined"!=typeof module&&module.exports)return function(a){module.exports=a()};if("function"==typeof define&&define.amd)return define;if("undefined"!=typeof window)return function(a){window.MobileDetect=a()};throw new Error("unknown environment")}());var ai_lists=!0,ai_block_class_def="code-block"; if("undefined"!=typeof ai_lists){function X(b,e){for(var p=[];b=b.previousElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}function fa(b,e){for(var p=[];b=b.nextElementSibling;)("undefined"==typeof e||b.matches(e))&&p.push(b);return p}var host_regexp=RegExp(":\\/\\/(.[^/:]+)","i");function ha(b){b=b.match(host_regexp);return null!=b&&1<b.length&&"string"===typeof b[1]&&0<b[1].length?b[1].toLowerCase():null}function Q(b){return b.includes(":")?(b=b.split(":"),1E3*(3600*parseInt(b[0])+ 60*parseInt(b[1])+parseInt(b[2]))):null}function Y(b){try{var e=Date.parse(b);isNaN(e)&&(e=null)}catch(p){e=null}if(null==e&&b.includes(" ")){b=b.split(" ");try{e=Date.parse(b[0]),e+=Q(b[1]),isNaN(e)&&(e=null)}catch(p){e=null}}return e}function Z(){null==document.querySelector("#ai-iab-tcf-bar")&&null==document.querySelector(".ai-list-manual")||"function"!=typeof __tcfapi||"function"!=typeof ai_load_blocks||"undefined"!=typeof ai_iab_tcf_callback_installed||(__tcfapi("addEventListener",2,function(b, e){e&&"useractioncomplete"===b.eventStatus&&(ai_tcData=b,ai_load_blocks(),b=document.querySelector("#ai-iab-tcf-status"),null!=b&&(b.textContent="IAB TCF 2.0 DATA LOADED"),b=document.querySelector("#ai-iab-tcf-bar"),null!=b&&(b.classList.remove("status-error"),b.classList.add("status-ok")))}),ai_iab_tcf_callback_installed=!0)}ai_process_lists=function(b){function e(a,d,k){if(0==a.length){if("!@!"==k)return!0;d!=k&&("true"==k.toLowerCase()?k=!0:"false"==k.toLowerCase()&&(k=!1));return d==k}if("object"!= typeof d&&"array"!=typeof d)return!1;var l=a[0];a=a.slice(1);if("*"==l)for(let [,n]of Object.entries(d)){if(e(a,n,k))return!0}else if(l in d)return e(a,d[l],k);return!1}function p(a,d,k){if("object"!=typeof a||-1==d.indexOf("["))return!1;d=d.replace(/]| /gi,"").split("[");return e(d,a,k)}function z(){if("function"==typeof __tcfapi){var a=document.querySelector("#ai-iab-tcf-status"),d=document.querySelector("#ai-iab-tcf-bar");null!=a&&(a.textContent="IAB TCF 2.0 DETECTED");__tcfapi("getTCData",2,function(k, l){l?(null!=d&&d.classList.add("status-ok"),"tcloaded"==k.eventStatus||"useractioncomplete"==k.eventStatus)?(ai_tcData=k,k.gdprApplies?null!=a&&(a.textContent="IAB TCF 2.0 DATA LOADED"):null!=a&&(a.textContent="IAB TCF 2.0 GDPR DOES NOT APPLY"),null!=d&&(d.classList.remove("status-error"),d.classList.add("status-ok")),setTimeout(function(){ai_process_lists()},10)):"cmpuishown"==k.eventStatus&&(ai_cmpuishown=!0,null!=a&&(a.textContent="IAB TCF 2.0 CMP UI SHOWN"),null!=d&&(d.classList.remove("status-error"), d.classList.add("status-ok"))):(null!=a&&(a.textContent="IAB TCF 2.0 __tcfapi getTCData failed"),null!=d&&(d.classList.remove("status-ok"),d.classList.add("status-error")))})}}function C(a){"function"==typeof __tcfapi?(ai_tcfapi_found=!0,"undefined"==typeof ai_iab_tcf_callback_installed&&Z(),"undefined"==typeof ai_tcData_requested&&(ai_tcData_requested=!0,z(),cookies_need_tcData=!0)):a&&("undefined"==typeof ai_tcfapi_found&&(ai_tcfapi_found=!1,setTimeout(function(){ai_process_lists()},10)),a=document.querySelector("#ai-iab-tcf-status"), null!=a&&(a.textContent="IAB TCF 2.0 MISSING: __tcfapi function not found"),a=document.querySelector("#ai-iab-tcf-bar"),null!=a&&(a.classList.remove("status-ok"),a.classList.add("status-error")))}if(null==b)b=document.querySelectorAll("div.ai-list-data, meta.ai-list-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));var x=[];b.forEach((a,d)=>{a.matches(".ai-list-data")?x.push(a):(a=a.querySelectorAll(".ai-list-data"),a.length&&a.forEach((k,l)=>{x.push(k)}))}); b=x}if(b.length){b.forEach((a,d)=>{a.classList.remove("ai-list-data")});var L=ia(window.location.search);if(null!=L.referrer)var A=L.referrer;else A=document.referrer,""!=A&&(A=ha(A));var R=window.navigator.userAgent,S=R.toLowerCase(),aa=navigator.language,M=aa.toLowerCase();if("undefined"!==typeof MobileDetect)var ba=new MobileDetect(R);b.forEach((a,d)=>{var k=document.cookie.split(";");k.forEach(function(f,h){k[h]=f.trim()});d=a.closest("div."+ai_block_class_def);var l=!0;if(a.hasAttribute("referer-list")){var n= a.getAttribute("referer-list");n=b64d(n).split(",");var v=a.getAttribute("referer-list-type"),E=!1;n.every((f,h)=>{f=f.trim();if(""==f)return!0;if("*"==f.charAt(0))if("*"==f.charAt(f.length-1)){if(f=f.substr(1,f.length-2),-1!=A.indexOf(f))return E=!0,!1}else{if(f=f.substr(1),A.substr(-f.length)==f)return E=!0,!1}else if("*"==f.charAt(f.length-1)){if(f=f.substr(0,f.length-1),0==A.indexOf(f))return E=!0,!1}else if("#"==f){if(""==A)return E=!0,!1}else if(f==A)return E=!0,!1;return!0});var r=E;switch(v){case "B":r&& (l=!1);break;case "W":r||(l=!1)}}if(l&&a.hasAttribute("client-list")&&"undefined"!==typeof ba)switch(n=a.getAttribute("client-list"),n=b64d(n).split(","),v=a.getAttribute("client-list-type"),r=!1,n.every((f,h)=>{if(""==f.trim())return!0;f.split("&&").every((c,t)=>{t=!0;var w=!1;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);"language:"==c.substring(0,9)&&(w=!0,c=c.substring(9).toLowerCase());var q=!1;w?"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(), -1!=M.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),M.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==M.indexOf(c)&&(q=!0)):c==M&&(q=!0):"*"==c.charAt(0)?"*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(),-1!=S.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),S.substr(-c.length)==c&&(q=!0)):"*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==S.indexOf(c)&&(q=!0)):ba.is(c)&&(q=!0);return(r=q?t:!t)?!0:!1});return r? !1:!0}),v){case "B":r&&(l=!1);break;case "W":r||(l=!1)}var N=n=!1;for(v=1;2>=v;v++)if(l){switch(v){case 1:var g=a.getAttribute("cookie-list");break;case 2:g=a.getAttribute("parameter-list")}if(null!=g){g=b64d(g);switch(v){case 1:var y=a.getAttribute("cookie-list-type");break;case 2:y=a.getAttribute("parameter-list-type")}g=g.replace("tcf-gdpr","tcf-v2[gdprApplies]=true");g=g.replace("tcf-no-gdpr","tcf-v2[gdprApplies]=false");g=g.replace("tcf-google","tcf-v2[vendor][consents][755]=true && tcf-v2[purpose][consents][1]=true"); g=g.replace("tcf-no-google","!!tcf-v2[vendor][consents][755]");g=g.replace("tcf-media.net","tcf-v2[vendor][consents][142]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-media.net","!!tcf-v2[vendor][consents][142]");g=g.replace("tcf-amazon","tcf-v2[vendor][consents][793]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-amazon","!!tcf-v2[vendor][consents][793]");g=g.replace("tcf-ezoic","tcf-v2[vendor][consents][347]=true && tcf-v2[purpose][consents][1]=true");g=g.replace("tcf-no-ezoic", "!!tcf-v2[vendor][consents][347]");var F=g.split(","),ca=[];k.forEach(function(f){f=f.split("=");try{var h=JSON.parse(decodeURIComponent(f[1]))}catch(c){h=decodeURIComponent(f[1])}ca[f[0]]=h});r=!1;var I=a;F.every((f,h)=>{f.split("&&").every((c,t)=>{t=!0;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);var w=c,q="!@!",T="tcf-v2"==w&&"!@!"==q,B=-1!=c.indexOf("["),J=0==c.indexOf("tcf-v2")||0==c.indexOf("euconsent-v2");J=J&&(B||T);-1!=c.indexOf("=")&&(q=c.split("="),w=q[0],q=q[1],B=-1!=w.indexOf("["), J=(J=0==w.indexOf("tcf-v2")||0==w.indexOf("euconsent-v2"))&&(B||T));if(J)document.querySelector("#ai-iab-tcf-status"),B=document.querySelector("#ai-iab-tcf-bar"),null!=B&&(B.style.display="block"),T&&"boolean"==typeof ai_tcfapi_found?r=ai_tcfapi_found?t:!t:"object"==typeof ai_tcData?(null!=B&&B.classList.add("status-ok"),w=w.replace(/]| /gi,"").split("["),w.shift(),r=(w=e(w,ai_tcData,q))?t:!t):"undefined"==typeof ai_tcfapi_found&&(I.classList.add("ai-list-data"),N=!0,"function"==typeof __tcfapi?C(!1): "undefined"==typeof ai_tcData_retrying&&(ai_tcData_retrying=!0,setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){"function"==typeof __tcfapi?C(!1):setTimeout(function(){C(!0)},3E3)},1E3)},600)));else if(B)r=(w=p(ca,w,q))?t:!t;else{var U=!1;"!@!"==q?k.every(function(ja){return ja.split("=")[0]==c?(U=!0,!1):!0}):U=-1!=k.indexOf(c);r=U?t:!t}return r?!0:!1});return r?!1:!0});r&&(N=!1,I.classList.remove("ai-list-data"));switch(y){case "B":r&&(l=!1);break;case "W":r||(l=!1)}}}a.classList.contains("ai-list-manual")&& (l?(I.classList.remove("ai-list-data"),I.classList.remove("ai-list-manual")):(n=!0,I.classList.add("ai-list-data")));(l||!n&&!N)&&a.hasAttribute("data-debug-info")&&(g=document.querySelector("."+a.dataset.debugInfo),null!=g&&(g=g.parentElement,null!=g&&g.classList.contains("ai-debug-info")&&g.remove()));y=X(a,".ai-debug-bar.ai-debug-lists");var ka=""==A?"#":A;0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-list-info");null!=h&&(h.textContent=ka,h.title=R+"\n"+aa);h=f.querySelector(".ai-debug-name.ai-list-status"); null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden)});g=!1;if(l&&a.hasAttribute("scheduling-start")&&a.hasAttribute("scheduling-end")&&a.hasAttribute("scheduling-days")){var u=a.getAttribute("scheduling-start");v=a.getAttribute("scheduling-end");y=a.getAttribute("scheduling-days");g=!0;u=b64d(u);F=b64d(v);var V=parseInt(a.getAttribute("scheduling-fallback")),O=parseInt(a.getAttribute("gmt"));if(u.includes("-")||F.includes("-"))P=Y(u)+O,K=Y(F)+O;else var P=Q(u),K=Q(F);P??=0;K??=0;var W=b64d(y).split(","); y=a.getAttribute("scheduling-type");var D=(new Date).getTime()+O;v=new Date(D);var G=v.getDay();0==G?G=6:G--;u.includes("-")||F.includes("-")||(u=(new Date(v.getFullYear(),v.getMonth(),v.getDate())).getTime()+O,D-=u,0>D&&(D+=864E5));scheduling_start_date_ok=D>=P;scheduling_end_date_ok=0==K||D<K;u=scheduling_start_date_ok&&scheduling_end_date_ok&&W.includes(G.toString());switch(y){case "B":u=!u}u||(l=!1);var la=v.toISOString().split(".")[0].replace("T"," ");y=X(a,".ai-debug-bar.ai-debug-scheduling"); 0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-scheduling-info");null!=h&&(h.textContent=la+" "+G+" current_time: "+Math.floor(D.toString()/1E3)+" start_date:"+Math.floor(P/1E3).toString()+"=>"+scheduling_start_date_ok.toString()+" end_date:"+Math.floor(K/1E3).toString()+"=>"+scheduling_end_date_ok.toString()+" days:"+W.toString()+"=>"+W.includes(G.toString()).toString());h=f.querySelector(".ai-debug-name.ai-scheduling-status");null!=h&&(h.textContent=l?ai_front.visible:ai_front.hidden); l||0==V||(f.classList.remove("ai-debug-scheduling"),f.classList.add("ai-debug-fallback"),h=f.querySelector(".ai-debug-name.ai-scheduling-status"),null!=h&&(h.textContent=ai_front.fallback+" = "+V))})}if(n||!l&&N)return!0;a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";if(l){if(null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&(d.style.position="")),a.hasAttribute("data-code")){n=b64d(a.dataset.code);u=document.createRange(); g=!0;try{H=u.createContextualFragment(n)}catch(f){g=!1}g&&(null!=a.closest("head")?(a.parentNode.insertBefore(H,a.nextSibling),a.remove()):a.append(H));da(a)}}else if(g&&!u&&0!=V){null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&d.css({position:""}));n=fa(a,".ai-fallback");0!=n.length&&n.forEach((f,h)=>{f.classList.remove("ai-fallback")});if(a.hasAttribute("data-fallback-code")){n=b64d(a.dataset.fallbackCode);u=document.createRange();g=!0;try{var H=u.createContextualFragment(n)}catch(f){g= !1}g&&a.append(H);da(a)}else a.style.display="none",null!=d&&null==d.querySelector(".ai-debug-block")&&d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none");null!=d&&d.hasAttribute("data-ai")&&(d.getAttribute("data-ai"),a.hasAttribute("fallback-tracking")&&(H=a.getAttribute("fallback-tracking"),d.setAttribute("data-ai-"+a.getAttribute("fallback_level"),H)))}else a.style.display="none",null!=d&&(d.removeAttribute("data-ai"),d.classList.remove("ai-track"), null!=d.querySelector(".ai-debug-block")?(d.style.visibility="",d.classList.remove("ai-close"),d.classList.contains("ai-remove-position")&&(d.style.position="")):d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none"));a.setAttribute("data-code","");a.setAttribute("data-fallback-code","");null!=d&&d.classList.remove("ai-list-block")})}};function ea(b){b=`; ${document.cookie}`.split(`; ${b}=`);if(2===b.length)return b.pop().split(";").shift()}function ma(b, e,p){ea(b)&&(document.cookie=b+"="+(e?";path="+e:"")+(p?";domain="+p:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}function m(b){ea(b)&&(ma(b,"/",window.location.hostname),document.cookie=b+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")}(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai_process_lists();setTimeout(function(){Z();if("function"== typeof ai_load_blocks){document.addEventListener("cmplzEnableScripts",e);document.addEventListener("cmplz_event_marketing",e);function e(p){"cmplzEnableScripts"!=p.type&&"all"!==p.consentLevel||ai_load_blocks()}}},50);var b=document.querySelector(".ai-debug-page-type");null!=b&&b.addEventListener("dblclick",e=>{e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES");e=document.querySelector("#ai-iab-tcf-bar");null!=e&&(e.style.display="block")});b=document.querySelector("#ai-iab-tcf-bar"); null!=b&&b.addEventListener("click",e=>{m("euconsent-v2");m("__lxG__consent__v2");m("__lxG__consent__v2_daisybit");m("__lxG__consent__v2_gdaisybit");m("CookieLawInfoConsent");m("cookielawinfo-checkbox-advertisement");m("cookielawinfo-checkbox-analytics");m("cookielawinfo-checkbox-necessary");m("complianz_policy_id");m("complianz_consent_status");m("cmplz_marketing");m("cmplz_consent_status");m("cmplz_preferences");m("cmplz_statistics-anonymous");m("cmplz_choice");m("cmplz_banner-status");m("cmplz_functional"); m("cmplz_policy_id");m("cmplz_statistics");m("moove_gdpr_popup");m("real_cookie_banner-blog:1-tcf");m("real_cookie_banner-blog:1");e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES DELETED")})},5)});function da(b){setTimeout(function(){"function"==typeof ai_process_rotations_in_element&&ai_process_rotations_in_element(b);"function"==typeof ai_process_lists&&ai_process_lists();"function"==typeof ai_process_ip_addresses&&ai_process_ip_addresses();"function"==typeof ai_process_filter_hooks&& ai_process_filter_hooks();"function"==typeof ai_adb_process_blocks&&ai_adb_process_blocks(b);"function"==typeof ai_process_impressions&&1==ai_tracking_finished&&ai_process_impressions();"function"==typeof ai_install_click_trackers&&1==ai_tracking_finished&&ai_install_click_trackers();"function"==typeof ai_install_close_buttons&&ai_install_close_buttons(document)},5)}function ia(b){var e=b?b.split("?")[1]:window.location.search.slice(1);b={};if(e){e=e.split("#")[0];e=e.split("&");for(var p=0;p<e.length;p++){var z= e[p].split("="),C=void 0,x=z[0].replace(/\[\d*\]/,function(L){C=L.slice(1,-1);return""});z="undefined"===typeof z[1]?"":z[1];x=x.toLowerCase();z=z.toLowerCase();b[x]?("string"===typeof b[x]&&(b[x]=[b[x]]),"undefined"===typeof C?b[x].push(z):b[x][C]=z):b[x]=z}}return b}}; ai_run_630657771088 = function(){ ai_document_write=document.write;document.write=function(a){"interactive"==document.readyState?(console.error("document.write called after page load: ",a),"undefined"!=typeof ai_js_errors&&ai_js_errors.push(["document.write called after page load",a,0])):ai_document_write.call(document,a)}; ai_insert ('before', '#nv-footer', b64d ('PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTEnIHN0eWxlPSdtYXJnaW46IDhweCAwOyBjbGVhcjogYm90aDsnPgo8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiAjZWZlZmVmIDAlIDAlIG5vLXJlcGVhdCBwYWRkaW5nLWJveDttYXJnaW4tdG9wOiAtOHB4O21hcmdpbi1ib3R0b206IC04cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyI+PGRpdiBzdHlsZT0ibWF4LXdpZHRoOjEzNjBweDttYXJnaW46YXV0bzsiPjxkaXYgaWQ9Im1ldGFzbGlkZXItaWQtNTYyODQiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAwIGF1dG87IiBjbGFzcz0ibWwtc2xpZGVyLTMtNjAtMSBtZXRhc2xpZGVyIG1ldGFzbGlkZXItZmxleCBtZXRhc2xpZGVyLTU2Mjg0IG1sLXNsaWRlciBtcy10aGVtZS1oaWdod2F5IG5hdi1oaWRkZW4iIHJvbGU9InJlZ2lvbiIgYXJpYS1yb2xlZGVzY3JpcHRpb249IlNsaWRlc2hvdyIgYXJpYS1sYWJlbD0iYm90dG9tIGJhbm5lciI+CiAgICA8ZGl2IGlkPSJtZXRhc2xpZGVyX2NvbnRhaW5lcl81NjI4NCI+CiAgICAgICAgPGRpdiBpZD0ibWV0YXNsaWRlcl81NjI4NCIgY2xhc3M9ImZsZXhzbGlkZXIiPgogICAgICAgICAgICA8dWwgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJzbGlkZXMiPgogICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IiBjbGFzcz0ic2xpZGUtOTE2MTUgbXMtaW1hZ2UiIGFyaWEtcm9sZWRlc2NyaXB0aW9uPSJzbGlkZSIgYXJpYS1sYWJlbD0ic2xpZGUtOTE2MTUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm52aWRpYS5jb20vZW4tdXMvb24tZGVtYW5kL3NlYXJjaC8/ZmFjZXQuZXZlbnRfbmFtZSU1QiU1RD1BSSUyMFN1bW1pdCUyMEluZGlhJmFtcDtmYWNldC5taW1ldHlwZSU1QiU1RD1ldmVudCUyMHNlc3Npb24mYW1wO2hlYWRlclRleHQ9QWxsJTIwU2Vzc2lvbnMmYW1wO2xheW91dD1saXN0JmFtcDtwYWdlPTEmYW1wO3E9LSZhbXA7c29ydD1yZWxldmFuY2UmYW1wO3NvcnREaXI9ZGVzYyIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgd2lkdGg9IjI3MjAiIGhlaWdodD0iMzYwIiBzcmM9Imh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQuanBnIiBjbGFzcz0ic2xpZGVyLTU2Mjg0IHNsaWRlLTkxNjE1IiBhbHQ9IiIgcmVsPSIiIHRpdGxlPSJhaS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNCIgZGVjb2Rpbmc9ImFzeW5jIiBsb2FkaW5nPSJsYXp5IiBzcmNzZXQ9Imh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQuanBnIDI3MjB3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTMwMHg0MC5qcGcgMzAwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC02MjV4ODMuanBnIDYyNXcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtMTc5eDI0LmpwZyAxNzl3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTc2OHgxMDIuanBnIDc2OHcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtMTUzNngyMDMuanBnIDE1MzZ3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTIwNDh4MjcxLmpwZyAyMDQ4dywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC02NDV4ODUuanBnIDY0NXcsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtNTAweDY2LmpwZyA1MDB3LCBodHRwczovL2RldmVsb3Blci1ibG9ncy5udmlkaWEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzExL2FpLXN1bW1pdC0yNC1pbmRpYS13ZWIta2V5bm90ZS1qaGgtdGVjaC1ibG9nLTEzNjB4MTgwLXI0LTE2MHgyMS5qcGcgMTYwdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC0zNjJ4NDguanBnIDM2MncsIGh0dHBzOi8vZGV2ZWxvcGVyLWJsb2dzLm52aWRpYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjQvMTEvYWktc3VtbWl0LTI0LWluZGlhLXdlYi1rZXlub3RlLWpoaC10ZWNoLWJsb2ctMTM2MHgxODAtcjQtODMxeDExMC5qcGcgODMxdywgaHR0cHM6Ly9kZXZlbG9wZXItYmxvZ3MubnZpZGlhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMS9haS1zdW1taXQtMjQtaW5kaWEtd2ViLWtleW5vdGUtamhoLXRlY2gtYmxvZy0xMzYweDE4MC1yNC0xMDI0eDEzNi5qcGcgMTAyNHciIHNpemVzPSIobWF4LXdpZHRoOiAyNzIwcHgpIDEwMHZ3LCAyNzIwcHgiIC8+PC9hPjwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICA8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Cg==')); }; if (document.readyState === 'complete' || (document.readyState !== 'loading' && !document.documentElement.doScroll)) ai_run_630657771088 (); else document.addEventListener ('DOMContentLoaded', ai_run_630657771088); ai_js_code = true; </script> <div class="sticky-share-buttons"> <ul class="entry-meta-social-links-list"> <li><a data-wpel-link="external" href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-linkedin" target="_blank" rel="follow external noopener">L</a></li> <li><a data-wpel-link="external" href="https://twitter.com/intent/tweet?text=Spotlight%3A+Advancing+Autonomous+Operations+with+AVEVA+Dynamic+Simulation+and+NVIDIA+Raptor+%7C+NVIDIA+Technical+Blog+https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-twitter" target="_blank" rel="follow external noopener">T</a></li> <li><a data-wpel-link="external" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-facebook" target="_blank" rel="follow external noopener">F</a></li> <li><a data-wpel-link="external" href="https://www.reddit.com/submit?url=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F&title=Spotlight%3A+Advancing+Autonomous+Operations+with+AVEVA+Dynamic+Simulation+and+NVIDIA+Raptor+%7C+NVIDIA+Technical+Blog" class="for-reddit" target="_blank" rel="follow external noopener">R</a></li> <li><a href="mailto:?subject=I'd like to share a link with you&body=https%3A%2F%2Fdeveloper.nvidia.com%2Fblog%2Fspotlight-advancing-autonomous-operations-with-aveva-dynamic-simulation-and-nvidia-raptor%2F" class="for-mail">E</a></li> </ul> </div> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-2b0defbeb07862260b2","applicationID":"745178505","transactionName":"Z10BbBRRW0QCAExfWF4XIlsSWVpZTApWUlJI","queueTime":0,"applicationTime":1404,"atts":"SxoCGlxLSEo=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>