1let TypeThing={set:function(k,v){this[k]=v;},get:function(k){return this[k];},};TypeThing.set('endpoint',"https:\/\/www.angolaformativa.com");TypeThing.set('url',"https:\/\/www.angolaformativa.com");TypeThing.set('uri',"https:\/\/www.angolaformativa.com\/output\/default");TypeThing.set('theme',"https:\/\/www.angolaformativa.com\/output\/default");TypeThing.set('website',2);TypeThing.set('namespace',"default");TypeThing.set('recaptcha',{"enabled":0,"siteKey":"","action":"submit","fallback":1});TypeThing.set('consent',0);TypeThing.set('tracking_ga4','UA-38101967-1');TypeThing.set('tracking_gads','');TypeThing.set('tracking_meta','');TypeThing.set('tracking_bingads','');TypeThing.set('tracking_linkedin','');TypeThing.set('tracking_tiktok','');TypeThing.set('tracking_openai',"");TypeThing.set('tracking_clarity','');TypeThing.set('request',window.location.href.split('#')[0]);TypeThing.set('current',TypeThing.request);TypeThing.set('page_referer',document.referrer.split('#')[0]);const TT_TRAFFIC_STATE={startedAt:performance.now(),visibleStartedAt:
1document.visibilityState==="visible"?performance.now():null,visibleMs:0,interactions:0,scrollDepth:0};const TT_TRAFFIC_VISIBLE_TIME=()=>{if(TT_TRAFFIC_STATE.visibleStartedAt!==null){TT_TRAFFIC_STATE.visibleMs+=Math.max(0,performance.now()-TT_TRAFFIC_STATE.visibleStartedAt);TT_TRAFFIC_STATE.visibleStartedAt=performance.now();}};document.addEventListener("visibilitychange",function(){if(document.visibilityState==="visible"){TT_TRAFFIC_STATE.visibleStartedAt=performance.now();}else if(TT_TRAFFIC_STATE.visibleStartedAt!==null){TT_TRAFFIC_VISIBLE_TIME();TT_TRAFFIC_STATE.visibleStartedAt=null;}});["pointerdown","keydown","touchstart"].forEach(function(eventName){document.addEventListener(eventName,function(){TT_TRAFFIC_STATE.interactions=Math.min(100,TT_TRAFFIC_STATE.interactions+1);},{passive:true});});window.addEventListener("scroll",function(){const root=document.documentElement;const scrollable=Math.max(0,root.scrollHeight-window.innerHeight);const depth=scrollable>0?Math.round((window.scrollY / scrollable)*100):100;TT_TRAFFIC_STATE.scrollDepth=Math.max(TT_TRAFFIC_STATE.scrollDepth,Math.max(0,Math.min(100,depth)));},{passive:true});window.addEventListener("pagehide",function(){TT_trafficClose(true);},{once:true});document.addEventListener("DOMContentLoaded",function(){const scheduleTraffic=window.requestIdleCallback||function(callback){return setTimeout(callback,250);};setTimeout(function(){scheduleTraffic(function(){TT_trafficClose(false);},{timeout:1000});},2500);});const TT_COOKIE=(name)=>{const safeName=name.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');const match=document.cookie.match(new RegExp('(?:^|; )'+safeName+'=([^;]*)'));return match?decodeURIComponent(match[1]):null;};const TT_META=(name)=>{return document.querySelector(`meta[name="${name}"]`)?.content||"";};const TT_TOKEN=()=>TT_COOKIE("TT_TOKEN");const TT_NUMBER=(value,fallback=0)=>{const number=Number(value);return Number.isFinite(number)?number:fallback;};const TT_INT=(value,fallback=0)=>{const number=parseInt(value,10);return Number.isFinite(number)?number:fallback;};function TT_Request(request,method,data){const requestMethod=(method||"GET").toUpperCase();let url=TypeThing.endpoint+request;const isFormData=(typeof FormData!=="undefined")&&data instanceof FormData;const controller=typeof AbortController!=="undefined"?new AbortController():null;const timeout=controller?setTimeout(function(){controller.abort();},8000):null;const headers={"X-CSRF-Token":TT_TOKEN()||""};if(!isFormData){headers["Content-Type"]="application/json";} 2const options={method:requestMethod,credentials:'same-origin',signal:controller?controller.signal:undefined,headers:headers};if(!isFormData&&["GET","HEAD"].includes(requestMethod)&&data&&typeof data==="object"){const params=new URLSearchParams();Object.keys(data).forEach(key=>{const value=data[key];if(Array.isArray(value)){value.forEach(item=>{if(item!==null&&typeof item!=="undefined"){params.append(key,item);}});}else if(value!==null&&typeof value!=="undefined"){params.append(key,value);}});const query=params.toString();if(query){url+=(url.indexOf("?")===-1?"?":"&")+query;}}else if(!["GET","HEAD"].includes(requestMethod)&&typeof data!=="undefined"&&data!==null){options.body=isF
2ormData?data:JSON.stringify(data);} 3return fetch(url,options).then(async response=>{const contentType=response.headers.get("content-type")||"";const payload=contentType.indexOf("application/json")!==-1?await response.json().catch(()=>null):await response.text();if(!response.ok){return{status:0,msg:payload&&typeof payload==="object"&&payload.msg?payload.msg:"HTTP "+response.status+" "+response.statusText,http_status:response.status};} 4return payload;}).catch(error=>{if(error.name!=="AbortError"){console.error("Error:",error);} 5return{status:0,msg:error.message||"Erro de comunicacao.",error:error.message};}).finally(()=>{if(timeout)clearTimeout(timeout);});} 6function TT_trafficClose(keepalive=false){if(window.__typeThingTrafficSent||!TypeThing.endpoint)return;window.__typeThingTrafficSent=true;const navEntries=performance.getEntriesByType?performance.getEntriesByType("navigation"):[];const nav=navEntries&&navEntries.length?navEntries[0]:null;const navTime=nav&&nav.domContentLoadedEventEnd>0?nav.domContentLoadedEventEnd:performance.now();const browserTtfb=nav&&nav.responseStart>0?nav.responseStart / 1000:0;const page_duration=TT_NUMBER((navTime / 1000).toFixed(4),0);TT_TRAFFIC_VISIBLE_TIME();const activeMs=Math.max(0,Math.round(performance.now()-TT_TRAFFIC_STATE.startedAt));const browserLanguages=Array.isArray(navigator.languages)?navigator.languages.filter(Boolean).length:(navigator.language?1:0);const automationSignals=[];let browserTimezone="";try{browserTimezone=Intl.DateTimeFormat().resolvedOptions().timeZone||"";}catch(error){} 7if(navigator.webdriver===true)automationSignals.push("webdriver");if(window.callPhantom||window._phantom||window.phantom)automationSignals.push("phantom");if(window.__nightmare)automationSignals.push("nightmare");if(window.domAutomation||window.domAutomationController)automationSignals.push("dom_automation");if(document.documentElement.getAttribute("webdriver")||document.documentElement.getAttribute("selenium")){automationSignals.push("automation_attribute");} 8if(/HeadlessChrome|PhantomJS|SlimerJS/i.test(navigator.userAgent||"")){automationSignals.push("headless_user_agent");} 9try{if(Object.getOwnPropertyNames(window).some(name=>/^cdc_[a-z0-9_]+$/i.test(name))){automationSignals.push("chromedriver_marker");}}catch(error){} 10const data={request:TypeThing.request||window.location.href.split('#')[0],page_referer:TypeThing.page_referer??document.referrer.split('#')[0],method:TT_COOKIE("TT_METHOD")||"GET",bot:TT_INT(TT_COOKIE("TT_BOT"),0),user_auth:TT_INT(TT_COOKIE("TT_USER_AUTH"),0),page_id:TT_NUMBER(TT_META("tt-page-id"),TT_NUMBER(TT_COOKIE("TT_ID"),0)),page_language:TT_META("tt-page-language")||TT_COOKIE("TT_LANG")||"",page_memory:TT_NUMBER(TT_COOKIE("TT_AVG_MEMORY"),0),page_peak:TT_NUMBER(TT_COOKIE("TT_AVG_PEAK"),0),page_cpu:TT_NUMBER(TT_COOKIE("TT_AVG_CPU"),0),page_cache:TT_INT(TT_COOKIE("TT_CACHE"),0),page_ttfb:TT_NUMBER(TT_COOKIE("TT_TTFB"),browserTtfb),page_timer:TT_NUMBER(TT_COOKIE("TT_WATCH"),0),page_duration:page_duration,page_db_cache:TT_INT(TT_COOKIE("TT_DB_CACHE"),0),page_width:window.innerWidth,connection_type:navigator.connection?.effectiveType??"unknown",page_mobile:window.matchMedia("(pointer: coarse)").matches?1:0,client_active_ms:activeMs,client_visible_ms:Math.max(0,Math.round(TT_TRAFFIC_STATE.visibleMs)),client_interactions:TT_TRAFFIC_STATE.interactions,client_scroll_depth:TT_TRAFFIC_STATE.scrollDepth,client_webdriver:navigator.webdriver===true?1:0,client_languages:browserLanguages,client_screen_width:window.screen?.width??0,client_screen_height:window.screen?.height??0,client_touch_points:navigator.maxTouchPoints??0,client_color_depth:window.screen?.colorDepth??0,client_cookie_enabled:navigator.cookieEnabled===false?0:1,client_hardware_concurrency:navigator.hardwareConcurrency??0,client_timezone:browserTimezone,client_automation_flags:Array.from(new Set(automationSignals)).join(","),client_visibility:document.visibilityState||"unknown",};if(keepalive&&typeof fetch==="function"){fetch(TypeThing.endpoint+"/rest/core/traffic",{method:"POST",credentials:"same-origin",keepalive:true,headers:{"Content-Type":"application/json","X-CSRF-Token":TT_TOKEN()||""},body:JSON.stringify(data)}).catch(function(){});return;} 11TT_Request("/rest/core/traffic","POST",data).then(response=>{if(response.status&&response.status==1){if(TypeThing.consent==1){if(response.consent.dialog){document.body.style.overflow='hidden';const target=document.querySelector('body > main')||document.body;target.insertAdjacentHTML('beforeend',response.consent.dialog);const dialog=document.getElementById('TT_consent');function closeDialog(){document.body.style.overflow='';dialog.style.transition='opacity 0.5s';dialog.style.opacity='0';setTimeout(()=>dialog.remove(),500);} 12const preferences=target.querySelector('[data-section="preferences"]');const customButton=target.querySelector('[data-action="customize"]');const saveButton=target.querySelector('[data-action="accept"]');if(customButton&&preferences){customButton.addEventListener('click',function(e){e.preventDefault();preferences.classList.toggle('is-visible');if(saveButton)saveButton.classList.add('is-visible');});} 13target.querySelector('[data-action="reject-all"]').addEventListener('click',function(e){e.preventDefault();
13TT_applyConsent(true,false,false,"reject_all");closeDialog();});target.querySelector('[data-action="accept"]').addEventListener('click',function(e){e.preventDefault();const advertisingGranted=target.querySelector('input[name="advertising"]').checked;const analyticsGranted=target.querySelector('input[name="analytics"]').checked;TT_applyConsent(true,advertisingGranted,analyticsGranted,"custom");closeDialog();});target.querySelector('[data-action="accept-all"]').addEventListener('click',function(e){e.preventDefault();TT_applyConsent(true,true,true,"accept_all");closeDialog();});}else{TT_applyConsent(false,response.consent.ads,response.consent.analytics);}}else{TT_applyConsent(false,true,true);}} 14console.log("Thank you!");}).catch(error=>{console.log("Christmas is all around!");});} 15function TT_hasAdvertisingConsent(){return TypeThing.consent!=1||TypeThing.advertising_granted==1;} 16function TT_hasAnalyticsConsent(){return TypeThing.consent!=1||TypeThing.analytics_granted==1;} 17function TT_applyConsent(register,advertisingGranted,analyticsGranted,action="custom"){TypeThing.set('essentials_granted',1);TypeThing.set('advertising_granted',advertisingGranted?1:0);TypeThing.set('analytics_granted',analyticsGranted?1:0);if(analyticsGranted||advertisingGranted||window.__googleInitialized){TT_Google();} 18if(advertisingGranted||window.__metaInitialized){TT_Meta(advertisingGranted);} 19if(advertisingGranted||window.__bingInitialized){TT_Bing(advertisingGranted);} 20if(analyticsGranted||advertisingGranted||window.__clarityInitialized){TT_Clarity(analyticsGranted,advertisingGranted);} 21if(advertisingGranted||window.__linkedinInitialized){TT_LinkedIn(advertisingGranted);} 22if(advertisingGranted||window.__tiktokInitialized){TT_TikTok(advertisingGranted);} 23if(advertisingGranted||window.__openaiInitialized){TT_OpenAI(advertisingGranted);} 24if(typeof gtag==='function'){gtag('consent','update',{'ad_storage':advertisingGranted?'granted':'denied','ad_user_data':advertisingGranted?'granted':'denied','ad_personalization':advertisingGranted?'granted':'denied','analytics_storage':analyticsGranted?'granted':'denied'});} 25if(typeof fbq==='function'){fbq('consent',advertisingGranted?'grant':'revoke');} 26if(TypeThing.consent==1&®ister==true){TT_Request("/rest/core/traffic/consent","POST",{url:window.location.href,essentials:1,ads:advertisingGranted?1:0,analytics:analyticsGranted?1:0,action:action}).then(response=>{if(response.status&&response.status==1){}else{console.log("Não foi possÃvel registar consentimento");}}).catch(error=>{console.log("Erro ao registar consentimento!");});}} 27window.dataLayer=window.dataLayer||[];window.gtag=function(){dataLayer.push(arguments);} 28function TT_Google(){const googleId=TypeThing.tracking_ga4||TypeThing.tracking_gads;if(googleId&&!window.__googleInitialized){window.__googleInitialized=true;gtag('consent','default',{'ad_storage':'denied','analytics_storage':'denied','ad_user_data':'denied','ad_personalization':'denied','wait_for_update':500});gtag('js',new Date());if(TypeThing.tracking_ga4){gtag('config',TypeThing.tracking_ga4);} 29if(TypeThing.tracking_gads){gtag('config',TypeThing.tracking_gads);} 30(function(){const s=document.createElement('script');s.async=true;s.src='https://www.googletagmanager.com/gtag/js?id='+googleId;document.head.appendChild(s);})();}} 31function TT_fireGoogleConversion(response){return new Promise(resolve=>{const conversion=response&&response.google_conversion_tracking;const sendTo=typeof conversion==="string"?conversion:conversion?.send_to;if(!sendTo||!TT_hasAdvertisingConsent()){resolve(false);return;} 32TT_Google();if(typeof gtag!=='function'){resolve(false);return;} 33let resolved=false;const done=function(){if(resolved)return;resolved=true;resolve(true);};setTimeout(done,800);gtag('event','conversion',{'send_to':sendTo,'value':TT_NUMBER(conversion?.value,1.0),'currency':conversion?.currency||'EUR','event_callback':done});});} 34function TT_fireGA4Event(response){return new Promise(resolve=>{const event=response&&response.ga4_event;const eventName=typeof event==="string"?event:event?.name;if(!eventName||!TypeThing.tracking_ga4||!TT_hasAnalyticsConsent()){resolve(false);return;} 35TT_Google();if(typeof gtag!=='function'){resolve(false);return;} 36let resolved=false;const done=function(){if(resolved)return;resolved=true;resolve(true);};setTimeout(done,800);gtag('event',eventName,{'event_callback':done});});} 37function TT_fireMetaPixelEvent(response){return new Promise(resolve=>{const tracking=response&&response.meta_pixel_tracking;const eventName=typeof tracking==="string"?tracking:tracking?.event;const method=tracking?.method==="trackCustom"?"trackCustom":"track";if(eventName&&TypeThing.tracking_meta&&TT_hasAdvertisingConsent()&&typeof fbq!=='function'){TT_Meta(TT_hasAdvertisingConsent());} 38if(!eventName||!TT_hasAdvertisingConsent()||typeof fbq!=='function'){resolve(false);return;} 39fbq(method,eventName);setTimeout(()=>resolve(true),300);});} 40function TT_fireBingAdsEvent(response){return new Promise(resolve=>{const tracking=response&&response.bing_ads_tracking;const eventName=typeof tracking==="string"?tracking:tracking?.event;if(eventName&&TypeThing.tracking_bingads&&TT_hasAdvertisingConsent()&&(!window.uetq||typeof window.uetq.push!=='function')){TT_Bing(TT_hasAdvertisingConsent());} 41if(!eventName||!TT_hasAdvertisingConsent()||!TypeThing.tracking_bingads||!window.uetq||typeof window.uetq.push!=='function'){resolve(false);return;} 42window.uetq.push('event',eventName,{'event_category':'TypeThing','event_label':eventName,'event_value':1});setTimeout(()=>resolve(true),300);});} 43function TT_fireLinkedInConversion(response){return new Promise(resolve=>{const tracking=response&&response.linkedin_tracking;const conversionId=typeof tracking==="string"?tracking:tracking?.conversion_id;if(conversionId&&TypeThing.tracking_linkedin&&TT_hasAdvertisingConsent()&&typeof window.lintrk!=='function'){TT_LinkedIn(TT_hasAdvertisingConsent());} 44if(!conversionId||!TT_hasAdvertisingConsent()||!TypeThing.tracking_linkedin||typeof window.lintrk!=='function'){resolve(false);return;} 45window.lintrk('track',{conversion_id:conversionId});setTimeout(()=>resolve(true),300);});} 46function TT_fireTikTokPixelEvent(response){return new Promise(resolve=>{const tracking=response&&response.tiktok_pixel_tracking;const eventName=typeof tracking==="string"?tracking:tracking?.event;if(eventName&&TypeThing.tracking_tiktok&&TT_hasAdvertisingConsent()&&(!window.ttq||typeof window.ttq.track!=='function')){TT_TikTok(TT_hasAdvertisingConsent());} 47if(!eventName||!TT_hasAdvertisingConsent()||!TypeThing.tracking_tiktok||!window.ttq||typeof window.ttq.track!=='function'){resolve(false);return;} 48window.ttq.track(eventName);setTimeout(()=>resolve(true),300);});} 49function TT_fireOpenAIPixelEvent(response){return new Promise(resolve=>{const tracking=response&&response.openai_pixel_tracking;const eventName=typeof tracking==="string"?tracking:tracking?.event;const eventType=tracking?.type;
49const options=tracking?.options;const supportedTypes=["contents","customer_action","plan_enrollment","custom"];if(eventName&&TypeThing.tracking_openai&&TT_hasAdvertisingConsent()&&typeof window.oaiq!=='function'){TT_OpenAI(true);} 50if(!eventName||!supportedTypes.includes(eventType)||!TT_hasAdvertisingConsent()||!TypeThing.tracking_openai||typeof window.oaiq!=='function'){resolve(false);return;} 51const eventData={type:eventType};if(eventName==="custom"){const customEventName=options?.custom_event_name;if(!customEventName){resolve(false);return;} 52window.oaiq("measure",eventName,eventData,{custom_event_name:customEventName});}else{window.oaiq("measure",eventName,eventData);} 53setTimeout(()=>resolve(true),300);});} 54function TT_fireActionTracking(response){const trackers=[TT_fireGA4Event(response),TT_fireGoogleConversion(response),TT_fireMetaPixelEvent(response),TT_fireBingAdsEvent(response),TT_fireLinkedInConversion(response),TT_fireTikTokPixelEvent(response),TT_fireOpenAIPixelEvent(response)].map(tracker=>tracker.catch(error=>{console.error("tracking error:",error);return false;}));return Promise.all(trackers);} 55function TT_Meta(advertisingGranted){if(TypeThing.tracking_meta&&!window.__metaInitialized){window.__metaInitialized=true;!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s);}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('consent',advertisingGranted?'grant':'revoke');fbq('init',TypeThing.tracking_meta);fbq('track','PageView');}} 56function TT_Bing(advertisingGranted){if(TypeThing.tracking_bingads&&!window.__bingInitialized){window.__bingInitialized=true;(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[];f=function(){var o={ti:TypeThing.tracking_bingads,enableAutoSpaTracking:true,consentGranted:advertisingGranted};o.q=w[u];w[u]=new UET(o);w[u].push("pageLoad");};n=d.createElement(t);n.src=r;n.async=1;n.onload=n.onreadystatechange=function(){var s=this.readyState;if(s&&s!=="loaded"&&s!=="complete")return;f();n.onload=n.onreadystatechange=null;};i=d.getElementsByTagName(t)[0];i.parentNode.insertBefore(n,i);})(window,document,"script","//bat.bing.com/bat.js","uetq");}} 57function TT_Clarity(analyticsGranted,advertisingGranted){if(TypeThing.tracking_clarity&&!window.__clarityInitialized){window.__clarityInitialized=true;(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=bwt";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script",TypeThing.tracking_clarity);} 58if(window.clarity){window.clarity('consentv2',{ad_Storage:advertisingGranted?'granted':'denied',analytics_Storage:analyticsGranted?'granted':'denied'});}} 59function TT_LinkedIn(advertisingGranted){if(TypeThing.tracking_linkedin&&!window.__linkedinInitialized){window.__linkedinInitialized=true;_linkedin_partner_id=TypeThing.tracking_linkedin;window._linkedin_data_partner_ids=window._linkedin_data_partner_ids||[];window._linkedin_data_partner_ids.push(_linkedin_partner_id);(function(l){if(!l){window.lintrk=function(a,b){window.lintrk.q.push([a,b])};window.lintrk.q=[];} 60var s=document.getElementsByTagName("script")[0];var b=document.createElement("script");b.type="text/javascript";b.async=true;b.src="https://snap.licdn.com/li.lms-analytics/insight.min.js";s.parentNode.insertBefore(b,s);})(window.lintrk);} 61if(window.lintrk){window.lintrk('consent',advertisingGranted?'granted':'denied');}} 62function TT_TikTok(advertisingGranted){if(TypeThing.tracking_tiktok&&!window.__tiktokInitialized){window.__tiktokInitialized=true;!function(w,d,t){w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent","grantConsent"];ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.load=function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||{},ttq._i[e]=[],ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=r+"?sdkid="+e+"&lib="+t;var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(a,s)};if(advertisingGranted){ttq.grantConsent();}else{ttq.holdConsent();} 63ttq.load(TypeThing.tracking_tiktok);ttq.page();}(window,document,'ttq');} 64if(window.ttq){if(advertisingGranted&&typeof window.ttq.grantConsent==='function'){window.ttq.grantConsent();}else if(!advertisingGranted&&typeof window.ttq.holdConsent==='function'){window.ttq.holdConsent();}}} 65function TT_OpenAI(advertisingGranted){if(!TypeThing.tracking_openai){return;} 66if(!window.__openaiInitialized&&!advertisingGranted){return;} 67if(typeof window.oaiq!=='function'){(function(w,d,s,u){if(w.oaiq)return;var q=function(){q.q.push(arguments);};q.q=[];w.oaiq=q;var js=d.createElement(s);js.async=true;js.src=u;var first=d.getElementsByTagName(s)[0];if(first&&first.parentNode){first.parentNode.insertBefore(js,first);}else{d.head.appendChild(js);}})(window,document,"script","https://bzrcdn.openai.com/sdk/oaiq.min.js");} 68window.oaiq("consent",Boolean(advertisingGranted));if(!window.__openaiInitialized){window.__openaiInitialized=true;window.oaiq("init",{pixelId:TypeThing.tracking_openai});}} 69document.addEventListener("DOMContentLoaded",function(){function TT_submitRest(endpoint,method,data,conversionData,skipEndpoint=false,onComplete=null,onResponse=null){const complete=function(){if(typeof onComplete==="function"){onComplete();}};const resolveResponse=function(response,submitResponse=null){if(typeof onResponse==="function"){try{onResponse(response,submitResponse);}catch(error){console.error("response resolver error:",error);}}};if(skipEndpoint){return TT_Request("/rest/core/actions","POST",conversionData).then(submitResponse=>{return TT_fireActionTracking(submitResponse).then(()=>{complete();return submitResponse;});}).catch(error=>{console.error("submit error:",error);complete();return{status:0,error:error.message};});} 70return TT_Request(endpoint,method,data).then(response=>{conversionData.status=response&&typeof response.status!=="undefined"?response.status:0;if(response&&response.status==1){return TT_Request("/rest/core/actions","POST",conversionData).then(submitResponse=>{return TT_fireActionTracking(submitResponse).then(()=>{resolveResponse(response,submitResponse);return response;});}).catch(error=>{console.error("submit error:",error);resolveResponse(response);return response;}).finally(complete);} 71resolveResponse(response);complete();TT_Request("/rest/core/actions","POST",conversionData).catch(error=>{console.error("submit error:",error);});return response;}).catch(error=>{console.error("response error:",error);conversionData.status=0;const response={status:0,msg:error.message};resolveResponse(response);complete();TT_Request("/rest/core/actions","POST",conversionData).catch(submitError=>{console.error("submit error:",submitError);});return response;});} 72function TT_defaultResolveRestForm(form,response,conversionData,submitResponse=null){const customResolver=window.TT_FORM;if(!response||response.status!=1){form.querySelectorAll('input[name="grecaptcha"]').forEach(input=>input.remove());} 73TT_unlockRestForm(form);
73if(typeof customResolver==="function"&&customResolver!==TT_defaultResolveRestForm){try{customResolver(form,response,conversionData,submitResponse);}finally{TT_unlockRestForm(form);setTimeout(()=>TT_unlockRestForm(form),100);TT_cleanupGoogleRecaptchaBadge();} 74return;} 75console.log("Sem resolução local para formulário") 76const success=response&&response.status==1;const message=response&&(response.msg||response.message)?(response.msg||response.message):(success?"Formulário submetido com sucesso.":"Não foi possÃvel submeter o formulário.");alert(message);TT_unlockRestForm(form);setTimeout(()=>TT_unlockRestForm(form),100);TT_cleanupGoogleRecaptchaBadge();} 77function TT_getRestFormFieldsets(form){let fieldsets=Array.from(form.querySelectorAll("fieldset"));if(!fieldsets.length){const fieldset=document.createElement("fieldset");fieldset.setAttribute("data-tt-rest-fieldset","1");if(form.id){const fieldsetId=form.id+"_fields";if(!document.getElementById(fieldsetId)){fieldset.id=fieldsetId;}} 78while(form.firstChild){fieldset.appendChild(form.firstChild);} 79form.appendChild(fieldset);fieldsets=[fieldset];} 80return fieldsets;} 81function TT_setRestFormLoading(form,loading){if(!loading){TT_unlockRestForm(form);return;} 82const fieldsets=TT_getRestFormFieldsets(form);fieldsets.forEach(fieldset=>{fieldset.setAttribute("data-tt-rest-loading","1");fieldset.disabled=true;});form.classList.toggle("is-loading",loading);if(loading){form.setAttribute("aria-busy","true");}else{form.removeAttribute("aria-busy");}} 83function TT_unlockRestForm(form){if(!form)return;form.querySelectorAll("fieldset").forEach(fieldset=>{if(fieldset.getAttribute("data-tt-rest-loading")==="1"||fieldset.getAttribute("data-tt-rest-fieldset")==="1"||fieldset.hasAttribute("data-tt-rest-disabled")){fieldset.disabled=false;fieldset.removeAttribute("disabled");} 84fieldset.removeAttribute("data-tt-rest-loading");fieldset.removeAttribute("data-tt-rest-disabled");});form.classList.remove("is-loading");form.removeAttribute("aria-busy");} 85let TT_googleRecaptchaPromise=null;function TT_loadGoogleRecaptcha(siteKey){if(window.grecaptcha&&typeof window.grecaptcha.ready==="function"){return Promise.resolve(window.grecaptcha);} 86if(TT_googleRecaptchaPromise){return TT_googleRecaptchaPromise;} 87TT_googleRecaptchaPromise=new Promise((resolve,reject)=>{const script=document.createElement("script");script.src="https://www.google.com/recaptcha/api.js?render="+encodeURIComponent(siteKey);script.async=true;script.defer=true;script.onload=function(){if(window.grecaptcha&&typeof window.grecaptcha.ready==="function"){resolve(window.grecaptcha);}else{reject(new Error("reCAPTCHA indisponivel."));}};script.onerror=function(){reject(new Error("Nao foi possivel carregar o reCAPTCHA."));};document.head.appendChild(script);});return TT_googleRecaptchaPromise;} 88function TT_googleRecaptcha(siteKey,action="submit"){TT_showGoogleRecaptchaBadge();return TT_loadGoogleRecaptcha(siteKey).then(grecaptcha=>{return new Promise((resolve,reject)=>{let resolved=false;let timeout=null;const getErrorMessage=function(value){if(!value)return"";if(typeof value==="string")return value;if(value.message)return value.message;return String(value);};const isRecaptchaRuntimeError=function(value){const message=getErrorMessage(value);return/recaptcha|grecaptcha|invalid site key|not loaded in api\.js/i.test(message);};const cleanup=function(){if(timeout)clearTimeout(timeout);window.removeEventListener("unhandledrejection",onUnhandledRecaptcha);window.removeEventListener("error",onRecaptchaError,true);};const done=function(callback,value){if(resolved)return;resolved=true;cleanup();callback(value);};const onUnhandledRecaptcha=function(event){if(!isRecaptchaRuntimeError(event.reason))return;if(typeof event.preventDefault==="function"){event.preventDefault();} 89done(reject,event.reason instanceof Error?event.reason:new Error(getErrorMessage(event.reason)||"Erro reCAPTCHA."));};const onRecaptchaError=function(event){const message=[event.message||"",event.filename||""].join(" ");if(!isRecaptchaRuntimeError(message))return;if(typeof event.preventDefault==="function"){event.preventDefault();} 90done(reject,event.error||new Error(event.message||"Erro reCAPTCHA."));};window.addEventListener("unhandledrejection",onUnhandledRecaptcha);window.addEventListener("error",onRecaptchaError,true);timeout=setTimeout(function(){done(reject,new Error("Tempo de validacao reCAPTCHA excedido."));},2500);try{grecaptcha.ready(function(){try{const execution=grecaptcha.execute(siteKey,{action:action});if(!execution||typeof execution.then!=="function"){done(reject,new Error("reCAPTCHA nao devolveu uma validacao valida."));return;} 91execution.then(token=>{if(token){done(resolve,token);}else{done(reject,new Error("Token reCAPTCHA vazio."));}}).catch(error=>{done(reject,error);});}catch(error){done(reject,error);}});}catch(error){done(reject,error);}});});} 92function TT_showGoogleRecaptchaBadge(){document.querySelectorAll(".grecaptcha-badge").forEach(badge=>
92{badge.removeAttribute("data-tt-recaptcha-hidden");badge.style.visibility="";badge.style.opacity="";badge.style.pointerEvents="";});} 93function TT_cleanupGoogleRecaptchaBadge(){const hideBadges=function(){document.querySelectorAll(".grecaptcha-badge").forEach(badge=>{badge.setAttribute("data-tt-recaptcha-hidden","1");badge.style.visibility="hidden";badge.style.opacity="0";badge.style.pointerEvents="none";});};hideBadges();setTimeout(hideBadges,300);} 94function TT_ensureCaptchaModalStyle(){if(document.getElementById("tt-captcha-modal-style"))return;const style=document.createElement("style");style.id="tt-captcha-modal-style";style.textContent=[".tt-captcha-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px}",".tt-captcha-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55)}",".tt-captcha-box{position:relative;z-index:1;width:min(360px,100%);background:#fff;border-radius:8px;box-shadow:0 24px 60px rgba(15,23,42,.25);padding:24px;color:#111827}",".tt-captcha-box h3{margin:0 0 8px;font-size:20px;line-height:1.25}",".tt-captcha-box p{margin:0 0 16px;color:#6b7280;font-size:14px}",".tt-captcha-loading{margin:0 0 14px;color:#6b7280;font-size:14px}",".tt-captcha-image{min-height:42px}",".tt-captcha-box img{display:block;margin:0 0 14px;max-width:100%;height:auto;border:1px solid #d1d5db;border-radius:6px}",".tt-captcha-box input{width:100%;box-sizing:border-box;margin:0 0 14px;border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;font-size:16px}",".tt-captcha-box input:disabled{background:#f3f4f6;color:#9ca3af}",".tt-captcha-submit{width:100%;border:0;border-radius:6px;background:#2563eb;color:#fff;padding:10px 14px;font-weight:600;cursor:pointer}",".tt-captcha-submit:disabled{opacity:.55;cursor:wait}",".tt-captcha-close{position:absolute;top:10px;right:12px;border:0;background:transparent;font-size:26px;line-height:1;color:#6b7280;cursor:pointer}"].join("");document.head.appendChild(style);} 95function TT_fallbackCaptchaModal(){return new Promise(resolve=>{TT_ensureCaptchaModalStyle();const oldModal=document.getElementById("tt-captcha-modal");if(oldModal)oldModal.remove();const modal=document.createElement("div");modal.id="tt-captcha-modal";modal.className="tt-captcha-modal";modal.innerHTML=['<div class="tt-captcha-backdrop"></div>','<form class="tt-captcha-box" role="dialog" aria-modal="true" aria-labelledby="tt-captcha-title">','<button type="button" class="tt-captcha-close" aria-label="Fechar">×</button>','<h3 id="tt-captcha-title">Validacao humana</h3>','<p>Introduza o codigo apresentado para continuar.</p>','<div class="tt-captcha-image"><div class="tt-captcha-loading">A gerar codigo...</div></div>','<input type="text" name="captcha" autocomplete="off" inputmode="text" required disabled>','<button type="submit" class="tt-captcha-submit" disabled>Validar</button>','</form>'].join("");document.body.appendChild(modal);let closed=false;const input=modal.querySelector("input[name='captcha']");const submit=modal.querySelector(".tt-captcha-submit");const image=modal.querySelector(".tt-captcha-image");const close=function(result){if(closed)return;closed=true;modal.remove();resolve(result);};modal.querySelector(".tt-captcha-close").addEventListener("click",function(){close({status:0,msg:"Validacao cancelada."});});modal.querySelector(".tt-captcha-backdrop").addEventListener("click",function(){close({status:0,msg:"Validacao cancelada."});});modal.querySelector("form").addEventListener("submit",function(e){e.preventDefault();const code=input.value.trim();if(!code){input.focus();return;} 96input.disabled=true;submit.disabled=true;TT_Request("/rest/core/authorization/challenge","POST",{provider:"fallback",captcha:code}).then(close);});TT_Request("/rest/core/authorization/captcha","GET",null).then(response=>{if(closed)return;if(!response||response.status!=1||!response.image){close({status:0,msg:response&&response.msg?response.msg:"Nao foi possivel gerar o captcha."});return;} 97image.innerHTML='<img src="data:image/png;base64,'+response.image+'" alt="Captcha">';input.disabled=false;submit.disabled=false;input.focus();}).catch(()=>{close({status:0,msg:"Nao foi possivel gerar o captcha."});});});} 98function TT_followRestLink(el,openedWindow=null){const href=el.getAttribute("href");if(!href||href==="#"||href.toLowerCase().startsWith("javascript:"))return;const target=el.getAttribute("target");if(target&&target!=="_self"){if(openedWindow&&!openedWindow.closed){openedWindow.location.href=el.href;return;} 99window.open(el.href,target);return;} 100window.location.href=el.href;} 101function TT_addRestField(fields,key,value){if(value===null||typeof value==="undefined")return;if(typeof File!=="undefined"&&value instanceof File){if(!value.name)return;value=value.name;} 102if(key in fields){if(!Array.isArray(fields[key]))fields[key]=[fields[key]];fields[key].push(value);}else{fields[key]=value;}} 103function TT_prepareRestChoiceValues(form){form.querySelectorAll("input[type='checkbox'][name], input[type='radio'][name]").forEach(input=>
103{if(!input.hasAttribute("data-tt-rest-original-value")){input.setAttribute("data-tt-rest-original-value",input.value||input.getAttribute("value")||"1");} 104if(input.value===""){input.value=input.getAttribute("data-tt-rest-original-value")||"1";}});} 105function TT_getRestEndpoint(restKey){const namespace=TypeThing.namespace||"default";return"/rest/output/"+encodeURIComponent(namespace)+"/"+restKey;} 106document.addEventListener("submit",function(e){const form=e.target;const restKey=form.getAttribute("data-rest");if(!restKey)return;e.preventDefault();form.querySelectorAll('input[name="grecaptcha"]').forEach(input=>input.remove());const method=(form.method||"GET").toUpperCase();const endpoint=TT_getRestEndpoint(restKey);TT_prepareRestChoiceValues(form);const formData=new FormData(form);const fields={};const hasUploadedFiles=Array.from(form.querySelectorAll("input[type='file']")).some(input=>{return input.files&&input.files.length>0;});formData.forEach((value,key)=>{TT_addRestField(fields,key,value);});const conversionData={url:window.location.href.split('#')[0],endpoint:endpoint,method:method,form_id:form.id||null,form_name:form.getAttribute("name")||null,fields:fields};TT_setRestFormLoading(form,true);const challengeRequest=["GET","HEAD"].includes(method)?Promise.resolve({status:1,challenge_token:null,provider:"none"}):TT_resolveFormChallenge(form);challengeRequest.then(challenge=>{if(!challenge||challenge.status!=1){conversionData.status=0;TT_setRestFormLoading(form,false);TT_defaultResolveRestForm(form,{status:0,msg:challenge?.msg||"Não foi possÃvel validar que é um humano."},conversionData);TT_Request("/rest/core/actions","POST",conversionData).catch(error=>{console.error("submit error:",error);});return;} 107if(!["GET","HEAD"].includes(method)){if(hasUploadedFiles){formData.set("__tt_data_rest","1");}else{fields.__tt_data_rest=1;}} 108if(challenge.challenge_token){if(hasUploadedFiles){formData.set("__tt_challenge",challenge.challenge_token);}else{fields.__tt_challenge=challenge.challenge_token;}} 109conversionData.challenge_provider=challenge.provider;conversionData.fields=Object.assign({},fields);delete conversionData.fields.__tt_data_rest;delete conversionData.fields.__tt_challenge;const requestData=hasUploadedFiles?formData:fields;TT_submitRest(endpoint,method,requestData,conversionData,false,function(){TT_setRestFormLoading(form,false);},function(response,submitResponse){TT_setRestFormLoading(form,false);TT_defaultResolveRestForm(form,response,conversionData,submitResponse);});}).catch(error=>{conversionData.status=0;TT_setRestFormLoading(form,false);TT_defaultResolveRestForm(form,{status:0,msg:error&&error.message?error.message:"Nao foi possivel validar o formulario."},conversionData);TT_Request("/rest/core/actions","POST",conversionData).catch(submitError=>{console.error("submit error:",submitError);});});});document.addEventListener("click",function(e){const el=e.target.closest("[data-rest]");if(!el)return;if(el.tagName==="FORM")return;if(!["BUTTON","A"].includes(el.tagName))return;if(el.tagName==="BUTTON"&&el.type==="submit"){const parentForm=el.closest("form");if(parentForm&&!parentForm.hasAttribute("data-rest"))return;} 110e.preventDefault();const restKey=el.getAttribute("data-rest");const endpoint=TT_getRestEndpoint(restKey);const fields={};Array.from(el.attributes).forEach(attr=>{if(attr.name.startsWith("data-")&&attr.name!=="data-rest"){const key=attr.name.slice(5);fields[key]=attr.value;}});const conversionData={status:1,url:window.location.href.split('#')[0],endpoint:endpoint,method:"POST",element:el.tagName.toLowerCase(),element_id:el.id||null,fields:fields};const openedWindow=(el.tagName==="A"&&el.getAttribute("target")&&el.getAttribute("target")!=="_self"&&el.getAttribute("href")&&el.getAttribute("href")!=="#"&&!el.getAttribute("href").toLowerCase().startsWith("javascript:"))?window.open("about:blank",el.getAttribute("target")):null;TT_submitRest(endpoint,"POST",fields,conversionData,true,function(){if(el.tagName==="A"){TT_followRestLink(el,openedWindow);}});});function TT_resolveFormChallenge(form){if(!TypeThing.recaptcha||TypeThing.recaptcha.enabled!=1){return Promise.resolve({status:1,challenge_token:null,provider:"none"});} 111if(TypeThing.recaptcha.enabled==1&&TypeThing.recaptcha.siteKey){return TT_googleRecaptcha(TypeThing.recaptcha.siteKey,TypeThing.recaptcha.action||"submit").then(token=>TT_Request("/rest/core/authorization/challenge","POST",{provider:"google",grecaptcha:token,action:TypeThing.recaptcha.action||"submit"})).then(response=>{if(response&&response.status==1){return response;} 112if(TypeThing.recaptcha.fallback==1){return TT_fallbackCaptchaModal();} 113return response||{status:0,msg:"Nao foi possivel validar o reCAPTCHA."};}).catch(()=>{TypeThing.recaptcha.siteKey="";if(TypeThing.recaptcha.fallback==1){return TT_fallbackCaptchaModal();} 114return{status:0,msg:"Nao foi possivel validar o reCAPTCHA."};});} 115if(TypeThing.recaptcha.fallback==1){return TT_fallbackCaptchaModal();} 116return Promise.resolve({status:0,msg:"Validacao humana indisponivel."});}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.