PageSourceSearch

https://www.tes.com/

html tes.com collected 2026-09-24 08:29:07 UTC 176,089 bytes, 2,672 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# ">
3  <head>
4    <meta charset="utf-8" />
4<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"577786577",accountID:"690534",trustKey:"690534",xpid:"Ug8HVFVXGwYHU1ZaAgIEVg==",licenseKey:"55613def96",applicationID:"577785330",browserID:"577786577"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */
5(()=>{var e={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)),s=0===Object.keys(r).length?e:r;for(let a in s)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]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={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};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="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),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
5e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(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].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(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],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.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,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[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!!v()[a[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 h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},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,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(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 s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(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),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},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})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
5const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
5if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
5o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,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},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,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)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=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)o.call(e,n)&&(t[n]=e[n])}
5(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
5;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
5{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},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,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},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},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
5ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.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){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.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,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
5{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
5null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
5dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
5imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
5return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
5!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
5if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
5);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
5class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
5h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
5
6<link rel="canonical" href="https://www.tes.com/" />
7<link rel="shortlink" href="https://www.tes.com/" />
8<meta name="description" content="Tes is dedicated to supporting the world’s teachers. Our mission is to enable great teaching by helping educators to find the tools and technology they need to excel and by supporting them throughout their career and professional development." />
9<meta name="Generator" content="Drupal 9 (https://www.drupal.org)" />
10<meta name="MobileOptimized" content="width" />
11<meta name="HandheldFriendly" content="true" />
12<meta name="viewport" content="width=device-width, initial-scale=1.0" />
13<link rel="apple-touch-icon" sizes="180x180" href="/themes/custom/tes_marketing/tes-180x180.png" />
14<link rel="icon" sizes="192x192" href="/themes/custom/tes_marketing/tes-192x192.png" />
15<link rel="alternate" hreflang="x-default" href="https://www.tes.com/together-we-build-trusted-education-solutions" />
16<link rel="icon" href="/themes/custom/tes_marketing/favicon.ico" type="image/vnd.microsoft.icon" />
17<link rel="alternate" hreflang="en" href="https://www.tes.com/" />
18<link rel="alternate" hreflang="en-gb" href="https://www.tes.com/en-gb" />
19<link rel="alternate" hreflang="en-au" href="https://www.tes.com/en-au" />
20<script src="https://assets.tes.com/marketing/s3fs-public/google_tag/google_tag_/google_tag.script.js?tlu3x7" defer></script>
20
21
22    <title>Tes - Education Jobs, Teaching Resources, School Software &amp; Magazine</title>
23    <link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/ajax-progress.module.css?tluyh3" />
24<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/align.module.css?tluyh3" />
25<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/autocomplete-loading.module.css?tluyh3" />
26<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/fieldgroup.module.css?tluyh3" />
27<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/container-inline.module.css?tluyh3" />
28<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/clearfix.module.css?tluyh3" />
29<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/details.module.css?tluyh3" />
30<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/hidden.module.css?tluyh3" />
31<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/item-list.module.css?tluyh3" />
32<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/js.module.css?tluyh3" />
33<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/nowrap.module.css?tluyh3" />
34<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/position-container.module.css?tluyh3" />
35<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/progress.module.css?tluyh3" />
36<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/reset-appearance.module.css?tluyh3" />
37<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/resize.module.css?tluyh3" />
38<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/sticky-header.module.css?tluyh3" />
39<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-counter.css?tluyh3" />
40<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-report-counters.css?tluyh3" />
41<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/system-status-report-general-info.css?tluyh3" />
42<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tabledrag.module.css?tluyh3" />
43<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tablesort.module.css?tluyh3" />
44<link rel="stylesheet" media="all" href="/core/themes/stable/css/system/components/tree-child.module.css?tluyh3" />
45<link rel="stylesheet" media="all" href="/core/themes/stable/css/media/oembed.formatter.css?tluyh3" />
46<link rel="stylesheet" media="all" href="/modules/contrib/paragraphs/css/paragraphs.unpublished.css?tluyh3" />
47<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/footer-menu/css/footer-menu.css?tluyh3" />
48<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/footer/css/footer.css?tluyh3" />
49<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/back-to-top/css/back-to-top.css?tluyh3" />
50<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/row/css/row.css?tluyh3" />
51<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/wysiwyg-content/css/wysiwyg-content.css?tluyh3" />
52<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/rich-content-row/css/rich-content-row.css?tluyh3" />
53<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/widget-summary-feature/css/widget-summary-feature.css?tluyh3" />
54<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/content-card-update/css/content-card-update.css?tluyh3" />
55<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/grid/css/grid.css?tluyh3" />
56<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/widget-cards/css/widget-cards.css?tluyh3" />
57<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/video/css/video.css?tluyh3" />
58<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/atoms/carousel/css/carou
58sel.css?tluyh3" />
59<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/hero/css/hero.css?tluyh3" />
60<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/templates/basic-page/css/basic-page.css?tluyh3" />
61<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/region-selector/css/region-selector.css?tluyh3" />
62<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/main-menu-mobile/css/main-menu-mobile.css?tluyh3" />
63<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/main-menu-desktop/css/main-menu-desktop.css?tluyh3" />
64<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/molecules/menu/css/menu.css?tluyh3" />
65<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/patterns/organisms/header/css/header.css?tluyh3" />
66<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/css/tes.base.css?tluyh3" />
67<link rel="stylesheet" media="all" href="/themes/custom/tes_marketing/css/tes.drupal.css?tluyh3" />
68
69    
69<script src="https://wchat.freshchat.com/js/widget.js" async></script>
69
70
71    
71<script>
72      // Switch <iframe> "src" to "data-src"
73      // https://my.onetrust.com/s/article/UUID-518074a1-a6da-81c3-be52-bae7685d9c94?language=en_US#UUID-518074a1-a6da-81c3-be52-bae7685d9c94_UUID-e247679f-85f0-dad0-449c-b73bcdd45a97
74      (function () {
75        const srcRegex = /^https:\/\/(.*)?(youtube|vimeo)/i;
76
77        function switchSrc(mutationsList) {
78          for (const mutation of mutationsList) {
79            if (mutation.type !== "childList") continue;
80
81            for (const node of mutation.addedNodes) {
82              if (node.tagName !== "IFRAME" || !srcRegex.test(node.src))
83                continue;
84
85              node.dataset.src = node.src;
86              node.src = "";
87              // Category ID: "Targeting cookies"
88              // https://my.onetrust.com/s/article/UUID-8102e851-d860-d465-d8d6-b1d636d68eb9?language=en_US#UUID-8102e851-d860-d465-d8d6-b1d636d68eb9_section-idm443162174729116
89              node.classList.add("optanon-category-C0004");
90
91              var iframeDoc =
92                node.contentDocument || node.contentWindow.document;
93
94              iframeDoc.open();
95              iframeDoc.write(
96                `<html><head><style>html{font-family:Arial,sans-serif;}body{margin:0;padding:0;height:100%;width:100%;display:flex;justify-content:center;align-items:center;text-align:center;flex-direction:column;font-size:16px;}</style></head>
97                  <body>
98                    <p style="margin:0;font-size:1rem;">To view this video, you need to accept marketing cookies. Please update your cookie preferences for this site or you can clear your cache and cookies, and then refresh this page to accept cookies.</p>
99                  </body>
100                </html>`
101              );
102              iframeDoc.close();
103            }
104          }
105        }
106
107        const observer = new MutationObserver(switchSrc);
108        observer.observe(document.documentElement, {
109          childList: true,
110          subtree: true,
111        });
112      })();
113    </script>
113
114    <!-- Google Tag Manager -->
115    
115<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
116      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
117      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.setAttributeNode(d.createAttribute("data-ot-ignore"));j.src=
118      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
119      })(window,document,'script','dataLayer', 'GTM-56WRTLG');
120    </script>
120
121    <!-- End Google Tag Manager -->
122    <!--
123      Show message with manage cookies button if iframe media blocked.
124      Once cookies are accepted through the manage cookies button, the media will load automatically.
125    -->
126    
126<script src="/themes/custom/tes_marketing/js/onetrust-helper.js" data-ot-ignore defer></script>
126
127  </head>
128  <body>
129    <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 129-130
129
130    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
130GTM-56WRTLG
vendor: 98 bytes, lines 130-133
130"
131      height="0" width="0" style="display:none;visibility:hidden"></iframe>
132    </noscript>
133    
133<!-- End Google Tag Manager (noscript) -->
134    <link rel="preconnect" href="https://fonts.googleapis.com">
135    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
136    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&display=swap" rel="stylesheet">
137
138        <a href="#main-content" class="visually-hidden focusable">
139      Skip to main content
140    </a>
vendor: 72 bytes, lines 140-141
140
141    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-K892ZB4
vendor: 89 bytes, lines 141-142
141" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
142      
142<div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas>
143    <div class="layout-container" data-page-theme="">
144
145  
146  
147
148<div class="o-header" data-state="" data-is-minimal="false">
149  <header>
150    <div class="b-container">
151      <div class="o-header__columns">
152        <div class="o-header__column">
153          <a href="/" class="o-header__home-link" data-testid="home-tes">
154            <span class="o-header__logo" >TES</span></a>
155        </div>
156
157                  <div class="o-header__column">
158                          <div class="o-header__secondary-navigation-region">
159                <nav>
160                  
161
162
163  <div class="m-menu">
164    <ul class="m-menu__list">
165              
166        <li class="m-menu__list-item " >
167          <div class="m-menu__list-item-inner" >
168                        <a class="m-menu__link" href="https://www.tes.com/for-schools/blog" data-testid="blog">
169                              Blog
170                          </a>
171          </div>
172
173                  </li>
174              
175        <li class="m-menu__list-item " >
176          <div class="m-menu__list-item-inner" >
177                        <a class="m-menu__link" href="https://www.tes.com/schools-awards/international" data-testid="tes-awards">
178                              Tes Awards for International Schools
179                          </a>
180          </div>
181
182                  </li>
183              
184        <li class="m-menu__list-item " >
185          <div class="m-menu__list-item-inner" >
186                        <a class="m-menu__link" href="https://www.tes.com/contact" data-testid="contact-us">
187                              Contact Us
188                          </a>
189          </div>
190
191                  </li>
192              
193        <li class="m-menu__list-item " >
194          <div class="m-menu__list-item-inner" >
195                        <a class="m-menu__link" href="https://www.tes.com/login" data-testid="log-in">
196                              Log in
197                          </a>
198          </div>
199
200                  </li>
201          </ul>
202  </div>
203
204
205                </nav>
206
207                                  <div id="block-teslanguageswitcherdesktop">
208  
209    
210      
211<div class="m-region-selector">
212  <div class="m-region-selector__pseudo-selector" data-state="closed" data-testid="language-selector"></div>
213  <div class="m-region-selector__form">
214    <form class="tes-language-selector-form" data-drupal-selector="tes-language-selector-form" action="/" method="post" id="tes-language-selector-form" accept-charset="UTF-8">
215  
216
217<div class="b-form-item js-form-item form-item js-form-type-select form-item-locale js-form-item-locale" data-type="select" data-state="">
218
219  <label for="edit-locale">Select a language</label>
220
221  
222  <div class="b-form-item__input-wrap">
223    
224    <select data-drupal-selector="edit-locale" id="edit-locale" name="locale" class="form-select"><option value="en" selected="selected">International schools</option><option value="en-gb">UK edition</option><option value="en-au">Australia edition</option></select>
225
226      </div>
227
228  </div>
229<input data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Submit" class="button js-form-submit form-submit" />
230<input autocomplete="off" data-drupal-selector="form-tylg5jaynn9q73x4-moobp3qqamib-ux-p9hjd54l5g" type="hidden" name="form_build_id" value="form-tYlG5jAynn9Q73x4-mOobP3QQAMib-UX_p9HJd54L5g" />
231<input data-drupal-selector="edit-tes-language-selector-form" type="hidden" name="form_id" value="tes_language_selector_form" />
232
233</form>
234
235  </div>
236</div>
237
238
239
240  </div>
241
242                              </div>
243            
244            <div class="o-header__main-menu">
245              <nav>
246                
247
248
249  
250  
251  <div class="m-main-menu-desktop" >
252    <ul class="m-main-menu-desktop__list">
253              
254        <li class="m-main-menu-desktop__list-item  " data-state="closed" data-has-children="true">
255          <div class="m-main-menu-desktop__list-item-inner">
256                          <button class="m-main-menu-desktop__toggle"><span>Open</span><i></i></button>
257            
258
259                        
260            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/for-schools" data-testid="school-sof">
261              
262              <span>
263                School software
264
265                              </span>
266            </a>
267          </div>
268
269                      <div class="m-main-menu-desktop__children">
270                              
271                                                                                
272  <div class="m-main-menu-desktop-sub-menu" data-has-grand-children="true">
273    <ul class="m-main-menu-desktop-sub-menu__list">
274              
275        <li class="m-main-menu-desktop-sub-menu__list-item  " data-state="closed" data-has-children="true">
276          <div class="m-main-menu-desktop-sub-menu__list-item-inner">
277            
278
279                        
280            <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="student-su">
281              
282              <span>
283                Student Success &amp; Safeguarding
284
285                              </span>
286            </span>
287          </div>
288
289                      <div class="m-main-menu-desktop-sub-menu__children">
290                              
291  
292  <div class="m-main-menu-desktop-sub-menu-child" >
293    <ul class="m-main-menu-desktop-sub-menu-child__list">
294              
295        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
296          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
297            
298
299                        
300            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/class-charts" data-testid="tes-class-">
301              
302              <span>
303                Tes Class Charts
304
305                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Classroom management software</span>
306                              </span>
307            </a>
308          </div>
309
310                  </li>
311              
312        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
313          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
314            
315
316                        
317            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/learning-pathways" data-testid="tes-learni">
318              
319              <span>
320                Tes Learning Pathways
321
322                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Learning plans software</span>
323                              </span>
324            </a>
325          </div>
326
327                  </li>
328              
329        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
330          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
331            
332
333                        
334            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/safeguarding-training" data-testid="tes-safegu">
335              
336              <span>
337                Tes Safeguarding Training
338
339                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Online safeguarding training software</span>
340                              </span>
341            </a>
342          </div>
343
344                  </li>
345              
346        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
347          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
348            
349
350                        
351            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/myconcern" data-testid="tes-myconc">
352              
353              <span>
354                Tes MyConcern
355
356                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Safeguarding software for schools</span>
357                              </span>
358            </a>
359          </div>
360
361                  </li>
362              
363        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
364          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
365            
366
367                        
368            <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/clarity" data-testid="tes-clarit">
369              
370              <span>
371                Tes Clarity
372
373                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Safeguarding reporting tool for school groups</span>
374                              </span>
375            </a>
376          </div>
377
378                  </li>
379          </ul>
380  </div>
381
382            </div>
383                  </li>
384              
385        <li class="m-main-menu-desktop-sub-menu__list-item  " data-state="closed" data-has-children="true">
386          <div class="m-main-menu-desktop-sub-menu__list-item-inner">
387            
388
389                        
390            <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="school-ope">
391              
392              <span>
393                School Operations &amp; Activities
394
395                              </span>
396            </span>
397          </div>
398
399                      <div class="m-main-menu-desktop-sub-menu__children">
400                              
401  
402  <div class="m-main-menu-desktop-sub-menu-child" >
403    <ul class="m-main-menu-desktop-sub-menu-child__list">
404              
405        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
406          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
407            
408
409                        
410            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/timetable" data-testid="tes-timeta">
411              
412              <span>
413                Tes Timetable
414
415                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">School timetable software</span>
416                              </span>
417            </a>
418          </div>
419
420                  </li>
421              
422        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
423          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
424            
425
426                        
427            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/parents-meetings" data-testid="tes-parent">
428              
429              <span>
430                Tes Parents&#039; Meetings
431
432                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Parents’ meeting scheduling software for staff</span>
433                              </span>
434            </a>
435          </div>
436
437                  </li>
438              
439        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
440          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
441            
442
443                        
444            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/room-booking" data-testid="tes-room-b">
445              
446              <span>
447                Tes Room Booking
448
449                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Manage your rooms and resources online</span>
450                              </span>
451            </a>
452          </div>
453
454                  </li>
455              
456        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
457          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
458            
459
460                        
461            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/clubs-and-events" data-testid="tes-clubs-">
462              
463              <span>
464                Tes Clubs and Events
465
466                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Extracurricular management software for schools</span>
467                              </span>
468            </a>
469          </div>
470
471                  </li>
472              
473        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
474          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
475            
476
477                        
478            <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/engage" data-testid="tes-engage">
479              
480              <span>
481                Tes Engage
482
483                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">School management information system</span>
484                              </span>
485            </a>
486          </div>
487
488                  </li>
489          </ul>
490  </div>
491
492            </div>
493                  </li>
494              
495        <li class="m-main-menu-desktop-sub-menu__list-item  " data-state="closed" data-has-children="true">
496          <div class="m-main-menu-desktop-sub-menu__list-item-inner">
497            
498
499                        
500            <span class=" m-main-menu-desktop-sub-menu__link" href="" data-testid="staff-mana">
501              
502              <span>
503                Staff Management
504
505                              </span>
506            </span>
507          </div>
508
509                      <div class="m-main-menu-desktop-sub-menu__children">
510                              
511  
512  <div class="m-main-menu-desktop-sub-menu-child" >
513    <ul class="m-main-menu-desktop-sub-menu-child__list">
514              
515        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
516          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
517            
518
519                        
520            <a class=" m-main-menu-desktop-sub-menu-child__link" href="/for-schools/staff-management" data-testid="tes-staff-">
521              
522              <span>
523                Tes Staff Management
524
525                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Recruitment, wellbeing, and training software for schools</span>
526                              </span>
527            </a>
528          </div>
529
530                  </li>
531              
532        <li class="m-main-menu-desktop-sub-menu-child__list-item  "  >
533          <div class="m-main-menu-desktop-sub-menu-child__list-item-inner">
534            
535
536                        
537            <a class=" m-main-menu-desktop-sub-menu-child__link" href="https://www.tes.com/for-schools/assetwhere" data-testid="tes-assetw">
538              
539              <span>
540                Tes AssetWhere
541
542                                  <span class="m-main-menu-desktop-sub-menu-child__link-sub-title">Property and asset management for schools</span>
543                              </span>
544            </a>
545          </div>
546
547                  </li>
548          </ul>
549  </div>
550
551            </div>
552                  </li>
553          </ul>
554  </div>
555
556            </div>
557                  </li>
558              
559        <li class="m-main-menu-desktop__list-item  "  >
560          <div class="m-main-menu-desktop__list-item-inner">
561            
562
563                        
564            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/jobs" data-testid="education-">
565              
566              <span>
567                Education jobs
568
569                              </span>
570            </a>
571          </div>
572
573                  </li>
574              
575        <li class="m-main-menu-desktop__list-item  "  >
576          <div class="m-main-menu-desktop__list-item-inner">
577            
578
579                        
580            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/magazine" data-testid="tes-magazi">
581              
582              <span>
583                Tes Magazine
584
585                              </span>
586            </a>
587          </div>
588
589                  </li>
590              
591        <li class="m-main-menu-desktop__list-item  "  >
592          <div class="m-main-menu-desktop__list-item-inner">
593            
594
595                        
596            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/teaching-resources" data-testid="teaching-r">
597              
598              <span>
599                Teaching resources
600
601                              </span>
602            </a>
603          </div>
604
605                  </li>
606              
607        <li class="m-main-menu-desktop__list-item  "  >
608          <div class="m-main-menu-desktop__list-item-inner">
609            
610
611                        
612            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/institute" data-testid="tes-instit">
613              
614              <span>
615                Tes Institute
616
617                              </span>
618            </a>
619          </div>
620
621                  </li>
622              
623        <li class="m-main-menu-desktop__list-item  "  >
624          <div class="m-main-menu-desktop__list-item-inner">
625            
626
627                        
628            <a class=" m-main-menu-desktop__link" href="https://www.tes.com/authn/select?rtn=https%3A//www.tes.com/schools/employers/school-chooser" data-testid="school-por">
629              
630              <span>
631                School Portal
632
633                              </span>
634            </a>
635          </div>
636
637                  </li>
638          </ul>
639  </div>
640
641
642              </nav>
643            </div>
644
645            <button class="o-header__hamburger"><span>Open Menu</span><i></i></button>
646          </div>
647        
648      </div><!-- /.o-header__columns -->
649    </div><!-- /.b-container -->
650  </header>
651
652      <section role="dialog" class="o-header-modal" data-state="closed">
653      <div class="o-header-modal__header">
654        <span class="o-header-modal__logo">TES</span>
655        <button class="o-header-modal__close">Close<i></i></button>
656      </div>
657      <nav>
658                  
659
660
661  <div class="m-main-menu-mobile">
662    <ul class="m-main-menu-mobile__list">
663              
664        <li class="m-main-menu-mobile__list-item " data-state="closed" >
665          <div class="m-main-menu-mobile__list-item-inner" data-has-children="true">
666            <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools">
667              School software
668            </a>
669
670                          <button class="m-main-menu-mobile__toggle"><span>Open</span><i></i></button>
671                      </div>
672
673                      <div class="m-main-menu-mobile__children">
674                              <div class="m-main-menu-mobile-sub-menu">
675    <ul class="m-main-menu-mobile-sub-menu__list">
676              
677        <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" >
678          <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true">
679            <a class="m-main-menu-mobile__link" href="">
680              Student Success &amp; Safeguarding
681            </a>
682
683                          <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button>
684                      </div>
685
686                      <div class="m-main-menu-mobile-sub-menu__children">
687                              <div class="m-main-menu-mobile-sub-menu-child">
688    <ul class="m-main-menu-mobile-sub-menu-child__list">
689              
690        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
691          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
692            <a class="m-main-menu-mobile__link" href="/for-schools/class-charts">
693              Tes Class Charts
694            </a>
695
696                      </div>
697
698                  </li>
699              
700        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
701          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
702            <a class="m-main-menu-mobile__link" href="/for-schools/learning-pathways">
703              Tes Learning Pathways
704            </a>
705
706                      </div>
707
708                  </li>
709              
710        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
711          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
712            <a class="m-main-menu-mobile__link" href="/for-schools/safeguarding-training">
713              Tes Safeguarding Training
714            </a>
715
716                      </div>
717
718                  </li>
719              
720        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
721          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
722            <a class="m-main-menu-mobile__link" href="/for-schools/myconcern">
723              Tes MyConcern
724            </a>
725
726                      </div>
727
728                  </li>
729              
730        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
731          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
732            <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/clarity">
733              Tes Clarity
734            </a>
735
736                      </div>
737
738                  </li>
739          </ul>
740  </div>
741
742            </div>
743                  </li>
744              
745        <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" >
746          <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true">
747            <a class="m-main-menu-mobile__link" href="">
748              School Operations &amp; Activities
749            </a>
750
751                          <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button>
752                      </div>
753
754                      <div class="m-main-menu-mobile-sub-menu__children">
755                              <div class="m-main-menu-mobile-sub-menu-child">
756    <ul class="m-main-menu-mobile-sub-menu-child__list">
757              
758        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
759          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
760            <a class="m-main-menu-mobile__link" href="/for-schools/timetable">
761              Tes Timetable
762            </a>
763
764                      </div>
765
766                  </li>
767              
768        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
769          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
770            <a class="m-main-menu-mobile__link" href="/for-schools/parents-meetings">
771              Tes Parents&#039; Meetings
772            </a>
773
774                      </div>
775
776                  </li>
777              
778        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
779          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
780            <a class="m-main-menu-mobile__link" href="/for-schools/room-booking">
781              Tes Room Booking
782            </a>
783
784                      </div>
785
786                  </li>
787              
788        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
789          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
790            <a class="m-main-menu-mobile__link" href="/for-schools/clubs-and-events">
791              Tes Clubs and Events
792            </a>
793
794                      </div>
795
796                  </li>
797              
798        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
799          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
800            <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/engage">
801              Tes Engage
802            </a>
803
804                      </div>
805
806                  </li>
807          </ul>
808  </div>
809
810            </div>
811                  </li>
812              
813        <li class="m-main-menu-mobile-sub-menu__list-item " data-state="closed" >
814          <div class="m-main-menu-mobile-sub-menu__list-item-inner" data-has-children="true">
815            <a class="m-main-menu-mobile__link" href="">
816              Staff Management
817            </a>
818
819                          <button class="m-main-menu-mobile-sub-menu__toggle"><span>Open</span><i></i></button>
820                      </div>
821
822                      <div class="m-main-menu-mobile-sub-menu__children">
823                              <div class="m-main-menu-mobile-sub-menu-child">
824    <ul class="m-main-menu-mobile-sub-menu-child__list">
825              
826        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
827          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
828            <a class="m-main-menu-mobile__link" href="/for-schools/staff-management">
829              Tes Staff Management
830            </a>
831
832                      </div>
833
834                  </li>
835              
836        <li class="m-main-menu-mobile-sub-menu-child__list-item "  >
837          <div class="m-main-menu-mobile-sub-menu-child__list-item-inner" >
838            <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/assetwhere">
839              Tes AssetWhere
840            </a>
841
842                      </div>
843
844                  </li>
845          </ul>
846  </div>
847
848            </div>
849                  </li>
850          </ul>
851  </div>
852
853            </div>
854                  </li>
855              
856        <li class="m-main-menu-mobile__list-item "  >
857          <div class="m-main-menu-mobile__list-item-inner" >
858            <a class="m-main-menu-mobile__link" href="https://www.tes.com/jobs">
859              Education jobs
860            </a>
861
862                      </div>
863
864                  </li>
865              
866        <li class="m-main-menu-mobile__list-item "  >
867          <div class="m-main-menu-mobile__list-item-inner" >
868            <a class="m-main-menu-mobile__link" href="https://www.tes.com/magazine">
869              Tes Magazine
870            </a>
871
872                      </div>
873
874                  </li>
875              
876        <li class="m-main-menu-mobile__list-item "  >
877          <div class="m-main-menu-mobile__list-item-inner" >
878            <a class="m-main-menu-mobile__link" href="https://www.tes.com/teaching-resources">
879              Teaching resources
880            </a>
881
882                      </div>
883
884                  </li>
885              
886        <li class="m-main-menu-mobile__list-item "  >
887          <div class="m-main-menu-mobile__list-item-inner" >
888            <a class="m-main-menu-mobile__link" href="https://www.tes.com/institute">
889              Tes Institute
890            </a>
891
892                      </div>
893
894                  </li>
895              
896        <li class="m-main-menu-mobile__list-item "  >
897          <div class="m-main-menu-mobile__list-item-inner" >
898            <a class="m-main-menu-mobile__link" href="https://www.tes.com/authn/select?rtn=https%3A//www.tes.com/schools/employers/school-chooser">
899              School Portal
900            </a>
901
902                      </div>
903
904                  </li>
905              
906        <li class="m-main-menu-mobile__list-item "  >
907          <div class="m-main-menu-mobile__list-item-inner" >
908            <a class="m-main-menu-mobile__link" href="https://www.tes.com/for-schools/blog">
909              Blog
910            </a>
911
912                      </div>
913
914                  </li>
915              
916        <li class="m-main-menu-mobile__list-item "  >
917          <div class="m-main-menu-mobile__list-item-inner" >
918            <a class="m-main-menu-mobile__link" href="https://www.tes.com/schools-awards/international">
919              Tes Awards for International Schools
920            </a>
921
922                      </div>
923
924                  </li>
925              
926        <li class="m-main-menu-mobile__list-item "  >
927          <div class="m-main-menu-mobile__list-item-inner" >
928            <a class="m-main-menu-mobile__link" href="https://www.tes.com/contact">
929              Contact Us
930            </a>
931
932                      </div>
933
934                  </li>
935              
936        <li class="m-main-menu-mobile__list-item "  >
937          <div class="m-main-menu-mobile__list-item-inner" >
938            <a class="m-main-menu-mobile__link" href="https://www.tes.com/login">
939              Log in
940            </a>
941
942                      </div>
943
944                  </li>
945          </ul>
946  </div>
947
948
949        
950                  <div id="block-teslanguageswitcherdesktop">
951  
952    
953      
954<div class="m-region-selector">
955  <div class="m-region-selector__pseudo-selector" data-state="closed" data-testid="language-selector"></div>
956  <div class="m-region-selector__form">
957    <form class="tes-language-selector-form" data-drupal-selector="tes-language-selector-form" action="/" method="post" id="tes-language-selector-form" accept-charset="UTF-8">
958  
959
960<div class="b-form-item js-form-item form-item js-form-type-select form-item-locale js-form-item-locale" data-type="select" data-state="">
961
962  <label for="edit-locale">Select a language</label>
963
964  
965  <div class="b-form-item__input-wrap">
966    
967    <select data-drupal-selector="edit-locale" id="edit-locale" name="locale" class="form-select"><option value="en" selected="selected">International schools</option><option value="en-gb">UK edition</option><option value="en-au">Australia edition</option></select>
968
969      </div>
970
971  </div>
972<input data-drupal-selector="edit-submit" type="submit" id="edit-submit" name="op" value="Submit" class="button js-form-submit form-submit" />
973<input autocomplete="off" data-drupal-selector="form-tylg5jaynn9q73x4-moobp3qqamib-ux-p9hjd54l5g" type="hidden" name="form_build_id" value="form-tYlG5jAynn9Q73x4-mOobP3QQAMib-UX_p9HJd54L5g" />
974<input data-drupal-selector="edit-tes-language-selector-form" type="hidden" name="form_id" value="tes_language_selector_form" />
975
976</form>
977
978  </div>
979</div>
980
981
982
983  </div>
984
985              </nav>
986    </section>
987  </div>
988
989
990  
991
992  
993
994  
995
996  <main role="main">
997    <a id="main-content" tabindex="-1"></a>
998    <div class="layout-content">
999        <div>
1000    <div data-drupal-messages-fallback class="hidden"></div>
1001
1002<article class="t-basic-page">
1003  <header class="t-basic-page__hero">
1004    
1005    
1006            <div>
1007
1008
1009  
1010
1011<div class="o-hero" data-show-image-mobile="true" data-vertical-align="top" data-component-theme="azure">
1012  <div class="b-container">
1013
1014          <div class="o-hero__breadcrumbs">
1015          
1016
1017      </div>
1018    
1019    <div class="o-hero__columns">
1020
1021      <div class="o-hero__column">
1022
1023        
1024        <div class="o-hero__title">
1025          <h1>Together, we build trusted education solutions</h1>
1026        </div>
1027
1028                  <div class="o-hero__description">  
1029
1030<div class="a-wysiwyg-content">
1031  <div class="b-container-content__extended">
1032    <p>We’re the partner to a global community of schools, leaders, and teachers, providing innovative education software products, services, content, and resources, so they can focus on enhancing students' lives through education.</p>
1033<p><a class="b-button-primary" href="https://www.tes.com/for-schools">Our products</a></p>
1034
1035  </div>
1036</div><!-- /.a-wysiwyg-content -->
1037</div>
1038        
1039              </div>
1040
1041                        <div class="o-hero__column">
1042            <div class="o-hero__image">
1043            <div><article>
1044  
1045      
1046  <div>
1047    <div class="visually-hidden">Image</div>
1048              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/DS96995%20Tes%20homepage%20hero%20image%2
10480teacher%20group%201412%20x%20794.svg" alt="Tes Home page hero 2024" loading="lazy" typeof="foaf:Image" />
1049
1050</div>
1051          </div>
1052
1053  </article>
1054</div>
1055      </div>
1056          </div>
1057                  </div>
1058  </div><!-- /.b-container-extended -->
1059</div><!-- /.o-hero -->
1060
1061</div>
1062      
1063  </header>
1064  
1065      <div>
1066              <div>  
1067
1068
1069
1070<div class="a-row a-row__">
1071    <section id=introducing-tes360 class="o-widget-summary-feature" data-image="yes" data-image-align="left">
1072    <div class="b-container">
1073      <div class="o-widget-summary-feature__columns">
1074        <div class="o-widget-summary-feature__column">
1075                                  <div class="o-widget-summary-feature__heading o-widget-summary-feature__row">
1076              <h2 data-testid="introducin">Introducing Tes360</h2>
1077            </div>
1078          
1079          <div class="o-widget-summary-feature__content">
1080            
1081            <div>  
1082<div class="a-rich-content-row">
1083          
1084
1085<div class="a-wysiwyg-content">
1086  <div class="b-container-content__extended">
1087    <p>As education becomes more complex, the challenge isn’t a lack of data or technology. It’s that data isn’t connected. Tes360 connects information without friction, saving time, speeding up decision making, and driving action across schools and trusts.</p>
1088<p><a class="b-button-primary" href="https://www.tes.com/tes360">Learn more</a></p>
1089
1090  </div>
1091</div><!-- /.a-wysiwyg-content -->
1092
1093  
1094</div>
1095</div>
1096      
1097          </div>
1098        </div><!-- /.o-widget-summary-feature__column -->
1099
1100                  <div class="o-widget-summary-feature__column">
1101            <div class="o-widget-summary-feature__image">
1102            <div><article>
1103  
1104      
1105  <div>
1106    <div class="visually-hidden">Image</div>
1107              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2026-04/Tes360-hero-with-strapline-summary-feature.svg" alt="Tes360, connected platform. Deeper insights, Greater impact." loading="lazy" typeof="foaf:Image" />
1108
1109</div>
1110          </div>
1111
1112  </article>
1113</div>
1114      </div>
1115          </div><!-- /.o-widget-summary-feature__column -->
1116              </div><!-- .o-widget-summary-feature__inner -->
1117    </div>
1118  </section>
1119
1120</div></div>
1121              <div>
1122
1123          
1124
1125  
1126<section id="for-schools" class="o-widget-grid" data-theme="" data-cards-even-height="true">
1127  <div class="b-container">
1128          <div class="o-widget-grid__heading o-widget-grid__row">
1129        <h2 data-testid="pupils-and-lm">  For schools
1130</h2>
1131      </div>
1132    
1133    
1134          
1135<div class="a-carousel" data-layout="" data-no-item="5">
1136  <div class="b-container">
1137    <div class="a-carousel__navigation">
1138      <nav>
1139        <ul>
1140          <li><button class="a-carousel__navigation-button" data-direction="left" aria-hidden="true"><span>Scroll left</span></button></li>
1141          <li><button class="a-carousel__navigation-button" data-direction="right" aria-hidden="true"><span>Right left</span></button></li>
1142        </ul>
1143      </nav>
1144    </div>
1145
1146    <div class="a-carousel__outer">
1147      <ul class="a-carousel__inner">
1148                  <li class="a-carousel__item">
1149
1150  
1151  
1152
1153<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1154      <div class="m-content-card-update__image">
1155      
1156            <div><article>
1157  
1158      
1159  <div>
1160    <div class="visually-hidden">Image</div>
1161              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/Safeguarding%20interface%20image%20DS95486%20v3.svg" alt="Teachers holding their safeguarding certificates" loading="lazy" typeof="foaf:Image" />
1162
1163</div>
1164          </div>
1165
1166  </article>
1167</div>
1168      
1169    </div>
1170  
1171  <div class="m-content-card-update__content">
1172    <div class="m-content-card-update__details">
1173
1174      
1175              <div class="m-content-card-update__details-description">
1176              
1177
1178<div class="a-wysiwyg-content">
1179  <div class="b-container-content__extended">
1180      
1181
1182<div class="a-wysiwyg-content">
1183  <div class="b-container-content__extended">
1184    <h5>Safeguarding</h5>
1185<p>Expert courses and secure software for all safeguarding needs. </p>
1186
1187  </div>
1188</div><!-- /.a-wysiwyg-content -->
1189
1190  </div>
1191</div><!-- /.a-wysiwyg-content -->
1192  
1193        </div>
1194          </div>
1195
1196              <div class="m-content-card-update__link" >
1197        <a href="#safeguarding"  data-testid = "">Read more</a>
1198        <span aria-hidden="">Read more</span>
1199      </div>
1200
1201      </div>
1202</article>
1203</li>
1204                  <li class="a-carousel__item">
1205
1206  
1207  
1208
1209<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1210      <div class="m-content-card-update__image">
1211      
1212            <div><article>
1213  
1214      
1215  <div>
1216    <div class="visually-hidden">Image</div>
1217              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/SEND%20Learning%20Pathways%20577x390%20DS95486%20v2.svg" alt="Teacher looking at a SEND students profile" loading="lazy" typeof="foaf:Image" />
1218
1219</div>
1220          </div>
1221
1222  </article>
1223</div>
1224      
1225    </div>
1226  
1227  <div class="m-content-card-update__content">
1228    <div class="m-content-card-update__details">
1229
1230      
1231              <div class="m-content-card-update__details-description">
1232              
1233
1234<div class="a-wysiwyg-content">
1235  <div class="b-container-content__extended">
1236      
1237
1238<div class="a-wysiwyg-content">
1239  <div class="b-container-content__extended">
1240    <h5>Student success</h5>
1241<p>Individual learning plans to help every student reach their potential.</p>
1242
1243  </div>
1244</div><!-- /.a-wysiwyg-content -->
1245
1246  </div>
1247</div><!-- /.a-wysiwyg-content -->
1248  
1249        </div>
1250          </div>
1251
1252              <div class="m-content-card-update__link" >
1253        <a href="/for-schools/learning-pathways"  data-testid = "">Read more</a>
1254        <span aria-hidden="">Read more</span>
1255      </div>
1256
1257      </div>
1258</article>
1259</li>
1260                  <li class="a-carousel__item">
1261
1262  
1263  
1264
1265<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1266      <div class="m-content-card-update__image">
1267      
1268            <div><article>
1269  
1270      
1271  <div>
1272    <div class="visually-hidden">Image</div>
1273              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Behaviour%20Management%20hero577x390%20DS95486%20v2%20%281%29.svg" alt="Behaviour management" loading="lazy" typeof="foaf:Image" />
1274
1275</div>
1276          </div>
1277
1278  </article>
1279</div>
1280      
1281    </div>
1282  
1283  <div class="m-content-card-update__content">
1284    <div class="m-content-card-update__details">
1285
1286      
1287              <div class="m-content-card-update__details-description">
1288              
1289
1290<div class="a-wysiwyg-content">
1291  <div class="b-container-content__extended">
1292      
1293
1294<div class="a-wysiwyg-content">
1295  <div class="b-container-content__extended">
1296    <h5>Behaviour</h5>
1297<p>93% of teachers using Class Charts save time managing behaviour.</p>
1298
1299  </div>
1300</div><!-- /.a-wysiwyg-content -->
1301
1302  </div>
1303</div><!-- /.a-wysiwyg-content -->
1304  
1305        </div>
1306          </div>
1307
1308              <div class="m-content-card-update__link" >
1309        <a href="/for-schools/class-charts"  data-testid = "">Read more</a>
1310        <span aria-hidden="">Read more</span>
1311      </div>
1312
1313      </div>
1314</article>
1315</li>
1316                  <li class="a-carousel__item">
1317
1318  
1319  
1320
1321<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1322      <div class="m-content-card-update__image">
1323      
1324            <div><article>
1325  
1326      
1327  <div>
1328    <div class="visually-hidden">Image</div>
1329              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Pay%20as%20you%20go%20recruitment%20advertising%20577x390%20DS95486%20%281%29%20%281%29.svg" alt="Education recruitment" loading="lazy" typeof="foaf:Image" />
1330
1331</div>
1332          </div>
1333
1334  </article>
1335</div>
1336      
1337    </div>
1338  
1339  <div class="m-content-card-update__content">
1340    <div class="m-content-card-update__details">
1341
1342      
1343              <div class="m-content-card-update__details-description">
1344              
1345
1346<div class="a-wysiwyg-content">
1347  <div class="b-container-content__extended">
1348      
1349
1350<div class="a-wysiwyg-content">
1351  <div class="b-container-content__extended">
1352    <h5>Recruitment</h5>
1353<p>Attract top talent with our range of tools to reach your ideal candidates.</p>
1354
1355  </div>
1356</div><!-- /.a-wysiwyg-content -->
1357
1358  </div>
1359</div><!-- /.a-wysiwyg-content -->
1360  
1361        </div>
1362          </div>
1363
1364              <div class="m-content-card-update__link" >
1365        <a href="/for-schools/staff-management/education-recruitment"  data-testid = "">Read more</a>
1366        <span aria-hidden="">Read more</span>
1367      </div>
1368
1369      </div>
1370</article>
1371</li>
1372                  <li class="a-carousel__item">
1373
1374  
1375  
1376
1377<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1378      <div class="m-content-card-update__image">
1379      
1380            <div><article>
1381  
1382      
1383  <div>
1384    <div class="visually-hidden">Image</div>
1385              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-11/Parents%27%20Meeting%20577x390%20DS95468%20%281%29.svg" alt="Parents and teachers meeting via Tes Parents&#039; Meetings, a parents&#039; evening booking system" loading="lazy" typeof="foaf:Image" />
1386
1387</div>
1388          </div>
1389
1390  </article>
1391</div>
1392      
1393    </div>
1394  
1395  <div class="m-content-card-update__content">
1396    <div class="m-content-card-update__details">
1397
1398      
1399              <div class="m-content-card-update__details-description">
1400              
1401
1402<div class="a-wysiwyg-content">
1403  <div class="b-container-content__extended">
1404      
1405
1406<div class="a-wysiwyg-content">
1407  <div class="b-container-content__extended">
1408    <h5>Parents' Meetings</h5>
1409
1410<p>Ensure timely meetings, boost engagement and reduce admin.</p>
1411
1412  </div>
1413</div><!-- /.a-wysiwyg-content -->
1414
1415  </div>
1416</div><!-- /.a-wysiwyg-content -->
1417  
1418        </div>
1419          </div>
1420
1421              <div class="m-content-card-update__link" >
1422        <a href="/for-schools/parents-meetings"  data-testid = "">Read more</a>
1423        <span aria-hidden="">Read more</span>
1424      </div>
1425
1426      </div>
1427</article>
1428</li>
1429              </ul><!-- /.a-carousel__inner -->
1430    </div><!-- /.a-carousel__outer -->
1431
1432  </div><!-- /.b-container -->
1433</div>
1434    
1435  </div>
1436</section>
1437</div>
1438              <div>
1439
1440        
1441
1442  
1443<section id="for-teachers" class="o-widget-grid" data-theme="" data-cards-even-height="true">
1444  <div class="b-container">
1445          <div class="o-widget-grid__heading o-widget-grid__row">
1446        <h2 data-testid="pupils-and-lm">  For teachers
1447</h2>
1448      </div>
1449    
1450    
1451          
1452
1453<div class="a-grid" data-layout="4" data-wrap="yes" data-alignment="">
1454  <div class="b-container">
1455    <ul class="a-grid__inner">
1456              <li class="a-grid__item">
1457
1458  
1459  
1460
1461<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1462      <div class="m-content-card-update__image">
1463      
1464            <div><article>
1465  
1466      
1467  <div>
1468    <div class="visually-hidden">Image</div>
1469              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Education%20jobs%20577x390%20DS95486%20%281%29.svg" alt="Education jobs " loading="lazy" typeof="foaf:Image" />
1470
1471</div>
1472          </div>
1473
1474  </article>
1475</div>
1476      
1477    </div>
1478  
1479  <div class="m-content-card-update__content">
1480    <div class="m-content-card-update__details">
1481
1482      
1483              <div class="m-content-card-update__details-description">
1484              
1485
1486<div class="a-wysiwyg-content">
1487  <div class="b-container-content__extended">
1488      
1489
1490<div class="a-wysiwyg-content">
1491  <div class="b-container-content__extended">
1492    <h5>Education jobs</h5>
1493<p>Find your next job among the largest selection of academic education and teaching vacancies.</p>
1494<p><a class="b-button-secondary" href="https://www.tes.com/jobs">View jobs</a></p>
1495
1496  </div>
1497</div><!-- /.a-wysiwyg-content -->
1498
1499  </div>
1500</div><!-- /.a-wysiwyg-content -->
1501  
1502        </div>
1503          </div>
1504
1505      </div>
1506</article>
1507</li>
1508              <li class="a-grid__item">
1509
1510  
1511  
1512
1513<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1514      <div class="m-content-card-update__image">
1515      
1516            <div><article>
1517  
1518      
1519  <div>
1520    <div class="visually-hidden">Image</div>
1521              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Tes%20Institute%20577x390%20DS95486%20%281%29.svg" alt="Tes Institute" loading="lazy" typeof="foaf:Image" />
1522
1523</div>
1524          </div>
1525
1526  </article>
1527</div>
1528      
1529    </div>
1530  
1531  <div class="m-content-card-update__content">
1532    <div class="m-content-card-update__details">
1533
1534      
1535              <div class="m-content-card-update__details-description">
1536              
1537
1538<div class="a-wysiwyg-content">
1539  <div class="b-container-content__extended">
1540      
1541
1542<div class="a-wysiwyg-content">
1543  <div class="b-container-content__extended">
1544    <h5>
1544Tes Institute</h5>
1545<p>Grow and develop at every stage of your career with our flexible, personalised teacher training courses.</p>
1546<p><a class="b-button-secondary" href="https://www.tes.com/institute">View courses</a></p>
1547
1548  </div>
1549</div><!-- /.a-wysiwyg-content -->
1550
1551  </div>
1552</div><!-- /.a-wysiwyg-content -->
1553  
1554        </div>
1555          </div>
1556
1557      </div>
1558</article>
1559</li>
1560              <li class="a-grid__item">
1561
1562  
1563  
1564
1565<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1566      <div class="m-content-card-update__image">
1567      
1568            <div><article>
1569  
1570      
1571  <div>
1572    <div class="visually-hidden">Image</div>
1573              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Tes%20Magazine%20577x390%20DS95486%20v2%20%281%29.svg" alt="Tes Magazine" loading="lazy" typeof="foaf:Image" />
1574
1575</div>
1576          </div>
1577
1578  </article>
1579</div>
1580      
1581    </div>
1582  
1583  <div class="m-content-card-update__content">
1584    <div class="m-content-card-update__details">
1585
1586      
1587              <div class="m-content-card-update__details-description">
1588              
1589
1590<div class="a-wysiwyg-content">
1591  <div class="b-container-content__extended">
1592      
1593
1594<div class="a-wysiwyg-content">
1595  <div class="b-container-content__extended">
1596    <h5>Tes magazine</h5>
1597<p>All the latest education features, views, analysis, and teaching and learning knowledge for teachers and leaders.</p>
1598<p><a class="b-button-secondary" href="https://www.tes.com/magazine">Read more</a></p>
1599
1600  </div>
1601</div><!-- /.a-wysiwyg-content -->
1602
1603  </div>
1604</div><!-- /.a-wysiwyg-content -->
1605  
1606        </div>
1607          </div>
1608
1609      </div>
1610</article>
1611</li>
1612              <li class="a-grid__item">
1613
1614  
1615  
1616
1617<article class="m-content-card-update" data-has_link="false" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1618      <div class="m-content-card-update__image">
1619      
1620            <div><article>
1621  
1622      
1623  <div>
1624    <div class="visually-hidden">Image</div>
1625              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Teaching%20resources%20577x390%20DS95486%20v2%20%281%29.svg" alt="Teaching resources" loading="lazy" typeof="foaf:Image" />
1626
1627</div>
1628          </div>
1629
1630  </article>
1631</div>
1632      
1633    </div>
1634  
1635  <div class="m-content-card-update__content">
1636    <div class="m-content-card-update__details">
1637
1638      
1639              <div class="m-content-card-update__details-description">
1640              
1641
1642<div class="a-wysiwyg-content">
1643  <div class="b-container-content__extended">
1644      
1645
1646<div class="a-wysiwyg-content">
1647  <div class="b-container-content__extended">
1648    <h5>Teaching Resources</h5>
1649<p>Save planning time with more than 900,000 resources made by teachers for teachers.</p>
1650<p><a class="b-button-secondary" href="https://www.tes.com/teaching-resources">Explore resources</a></p>
1651
1652  </div>
1653</div><!-- /.a-wysiwyg-content -->
1654
1655  </div>
1656</div><!-- /.a-wysiwyg-content -->
1657  
1658        </div>
1659          </div>
1660
1661      </div>
1662</article>
1663</li>
1664          </ul><!-- /.a-grid__inner -->
1665  </div><!-- /.b-container -->
1666</div>
1667
1668    
1669  </div>
1670</section>
1671</div>
1672              <div>
1673  
1674<div class="a-widget-anchor-point" id="safeguarding"></div>
1675</div>
1676              <div>  
1677
1678
1679
1680<div class="a-row a-row__">
1681    <section id=total-safeguarding-with-tes--supporting-your-school class="o-widget-summary-feature" data-image="no" data-image-align="right">
1682    <div class="b-container">
1683      <div class="o-widget-summary-feature__columns">
1684        <div class="o-widget-summary-feature__column">
1685                                  <div class="o-widget-summary-feature__heading o-widget-summary-feature__row">
1686              <h2 data-testid="total-safe">Total safeguarding with Tes: Supporting your school</h2>
1687            </div>
1688          
1689          <div class="o-widget-summary-feature__content">
1690            
1691            <div>  
1692<div class="a-rich-content-row">
1693          
1694
1695<div class="a-wysiwyg-content">
1696  <div class="b-container-content__extended">
1697    <p>Safeguarding is demanding and complex, but we're here to help. We're dedicated to ensuring student safety, empowering safeguarding leads and promoting a secure school environment. Our end-to-e
1697nd solutions combine industry-leading technology, expert training and essential resources to provide everything your school or trust needs.</p>
1698
1699  </div>
1700</div><!-- /.a-wysiwyg-content -->
1701
1702  
1703</div>
1704</div>
1705      
1706          </div>
1707        </div><!-- /.o-widget-summary-feature__column -->
1708
1709                  <div class="o-widget-summary-feature__column">
1710            <div class="o-widget-summary-feature__image">
1711            <div>  
1712<div class="a-video">
1713  <div class="a-video__inner">
1714            <div><iframe src="/media/oembed?url=https%3A//vimeo.com/998767577/2c11768ed4%3Fshare%3Dcopy&amp;max_width=0&amp;max_height=0&amp;hash=BSoIU2aJ1IRjfHyXGDbdIh_gvLHA99qBJtzgozDDn4Y" frameborder="0" allowtransparency class="media-oembed-content" title="Safeguarding_05"></iframe>
1715</div>
1716      </div>
1717</div>
1718</div>
1719      </div>
1720          </div><!-- /.o-widget-summary-feature__column -->
1721              </div><!-- .o-widget-summary-feature__inner -->
1722    </div>
1723  </section>
1724
1725</div></div>
1726              <div>
1727
1728        
1729
1730  
1731<section id="" class="o-widget-grid" data-theme="" data-cards-even-height="true">
1732  <div class="b-container">
1733    
1734    
1735          
1736
1737<div class="a-grid" data-layout="4" data-wrap="yes" data-alignment="">
1738  <div class="b-container">
1739    <ul class="a-grid__inner">
1740              <li class="a-grid__item">
1741
1742  
1743  
1744
1745<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1746      <div class="m-content-card-update__image">
1747      
1748            <div><article>
1749  
1750      
1751  <div>
1752    <div class="visually-hidden">Image</div>
1753              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Myconcern%20interface%20card%20image%20DS95486%20577x390%20%281%29.svg" alt="Tes Myconcern" loading="lazy" typeof="foaf:Image" />
1754
1755</div>
1756          </div>
1757
1758  </article>
1759</div>
1760      
1761    </div>
1762  
1763  <div class="m-content-card-update__content">
1764    <div class="m-content-card-update__details">
1765
1766      
1767              <div class="m-content-card-update__details-description">
1768              
1769
1770<div class="a-wysiwyg-content">
1771  <div class="b-container-content__extended">
1772      
1773
1774<div class="a-wysiwyg-content">
1775  <div class="b-container-content__extended">
1776    <h5>Tes MyConcern</h5>
1777
1778<p>Make it easy for your staff to report safeguarding concerns anyw
1778here, any time with Tes MyConcern.</p>
1779
1780  </div>
1781</div><!-- /.a-wysiwyg-content -->
1782
1783  </div>
1784</div><!-- /.a-wysiwyg-content -->
1785  
1786        </div>
1787          </div>
1788
1789              <div class="m-content-card-update__link" >
1790        <a href="https://www.tes.com/for-schools/myconcern"  data-testid = "">Read more</a>
1791        <span aria-hidden="">Read more</span>
1792      </div>
1793
1794      </div>
1795</article>
1796</li>
1797              <li class="a-grid__item">
1798
1799  
1800  
1801
1802<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1803      <div class="m-content-card-update__image">
1804      
1805            <div><article>
1806  
1807      
1808  <div>
1809    <div class="visually-hidden">Image</div>
1810              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Safeguarding%20training%20card%20image%20577x390%20DS95486%20%281%29.svg" alt="Tes safeguarding training" loading="lazy" typeof="foaf:Image" />
1811
1812</div>
1813          </div>
1814
1815  </article>
1816</div>
1817      
1818    </div>
1819  
1820  <div class="m-content-card-update__content">
1821    <div class="m-content-card-update__details">
1822
1823      
1824              <div class="m-content-card-update__details-description">
1825              
1826
1827<div class="a-wysiwyg-content">
1828  <div class="b-container-content__extended">
1829      
1830
1831<div class="a-wysiwyg-content">
1832  <div class="b-container-content__extended">
1833    <h5>Safeguarding training</h5>
1834
1835<p>Keep your school community safe with access to over 80 expert-written online safeguarding courses.</p>
1836
1837  </div>
1838</div><!-- /.a-wysiwyg-content -->
1839
1840  </div>
1841</div><!-- /.a-wysiwyg-content -->
1842  
1843        </div>
1844          </div>
1845
1846              <div class="m-content-card-update__link" >
1847        <a href="https://www.tes.com/for-schools/safeguarding-training"  data-testid = "">Read more</a>
1848        <span aria-hidden="">Read more</span>
1849      </div>
1850
1851      </div>
1852</article>
1853</li>
1854              <li class="a-grid__item">
1855
1856  
1857  
1858
1859<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1860      <div class="m-content-card-update__image">
1861      
1862            <div><article>
1863  
1864      
1865  <div>
1866    <div class="visually-hidden">Image</div>
1867              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2024-08/Safeguarding%20advice%20hub%20card%20image%20577x390%20DS95486%20%281%29.svg" alt="Tes safeguarding advice hub" loading="lazy" typeof="foaf:Image" />
1868
1869</div>
1870          </div>
1871
1872  </article>
1873</div>
1874      
1875    </div>
1876  
1877  <div class="m-content-card-update__content">
1878    <div class="m-content-card-update__details">
1879
1880      
1881              <div class="m-content-card-update__details-description">
1882              
1883
1884<div class="a-wysiwyg-content">
1885  <div class="b-container-content__extended">
1886      
1887
1888<div class="a-wysiwyg-content">
1889  <div class="b-container-content__extended">
1890    <h5>Safeguarding advice</h5>
1891
1892<p>Learn everything your schools needs to help keep all your students safe.</p>
1893
1894  </div>
1895</div><!-- /.a-wysiwyg-content -->
1896
1897  </div>
1898</div><!-- /.a-wysiwyg-content -->
1899  
1900        </div>
1901          </div>
1902
1903              <div class="m-content-card-update__link" >
1904        <a href="https://www.tes.com/advice-hub/safeguarding"  data-testid = "">Read more</a>
1905        <span aria-hidden="">Read more</span>
1906      </div>
1907
1908      </div>
1909</article>
1910</li>
1911              <li class="a-grid__item">
1912
1913  
1914  
1915
1916<article class="m-content-card-update" data-has_link="true" data-has-media="true" data-type="svg" data-hide-image-mobile="" data-theme="">
1917      <div class="m-content-card-update__image">
1918      
1919            <div><article>
1920  
1921      
1922  <div>
1923    <div class="visually-hidden">Image</div>
1924              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2026-08/tes-international-safeguarding-report-2026.svg" alt="Tes International safeguarding report 2026 cover" loading="lazy" typeof="foaf:Image" />
1925
1926</div>
1927          </div>
1928
1929  </article>
1930</div>
1931      
1932    </div>
1933  
1934  <div class="m-content-card-update__content">
1935    <div class="m-content-card-update__details">
1936
1937      
1938              <div class="m-content-card-update__details-description">
1939              
1940
1941<div class="a-wysiwyg-content">
1942  <div class="b-container-content__extended">
1943      
1944
1945<div class="a-wysiwyg-content">
1946  <div class="b-container-content__extended">
1947    <h5>International safeguarding report 2026</h5>
1948
1949<p>Our International Safeguarding Report features the thoughts of international school staff on a host of safeguarding issues.</p>
1950
1951  </div>
1952</div><!-- /.a-wysiwyg-content -->
1953
1954  </div>
1955</div><!-- /.a-wysiwyg-content -->
1956  
1957        </div>
1958          </div>
1959
1960              <div class="m-content-card-update__link" >
1961        <a href="https://www.tes.com/for-schools/content/safeguarding-report-2026"  data-testid = "">Read more</a>
1962        <span aria-hidden="">Read more</span>
1963      </div>
1964
1965      </div>
1966</article>
1967</li>
1968          </ul><!-- /.a-grid__inner -->
1969  </div><!-- /.b-container -->
1970</div>
1971
1972    
1973  </div>
1974</section>
1975</div>
1976              <div>  
1977
1978
1979
1980<div class="a-row a-row__">
1981    <section id=report--the-patchwork-problem class="o-widget-summary-feature" data-image="yes" data-image-align="left">
1982    <div class="b-container">
1983      <div class="o-widget-summary-feature__columns">
1984        <div class="o-widget-summary-feature__column">
1985                                  <div class="o-widget-summary-feature__heading o-widget-summary-feature__row">
1986              <h2 data-testid="report:-th">Report: The patchwork problem</h2>
1987            </div>
1988          
1989          <div class="o-widget-summary-feature__content">
1990            
1991            <div>  
1992<div class="a-rich-content-row">
1993          
1994
1995<div class="a-wysiwyg-content">
1996  <div class="b-container-content__extended">
1997    <p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB"><strong>School management report 2026: How a 'connected view' has become critical to school improvement</strong>  </p>
1998<p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB">Leading trusts are turning the information they already hold into one connected view and are acting where it matters most. The 2026 report shows what that view makes possible across a whole school and trust. </p>
1999<p lang="EN-GB" xml:lang="EN-GB" xml:lang="EN-GB"><a class="b-button-primary" href="https://www.tes.com/for-schools/content/school-management-report">Download report</a></p>
2000
2001  </div>
2002</div><!-- /.a-wysiwyg-content -->
2003
2004  
2005</div>
2006</div>
2007      
2008          </div>
2009        </div><!-- /.o-widget-summary-feature__column -->
2010
2011                  <div class="o-widget-summary-feature__column">
2012            <div class="o-widget-summary-feature__image">
2013            <div><article>
2014  
2015      
2016  <div>
2017    <div class="visually-hidden">Image</div>
2018              <div>  <img src="https://assets.tes.com/marketing/s3fs-public/2026-09/Tes-school-management-report-INT-2026-summary-DS50757.svg" alt="School management report" loading="lazy" typeof="foaf:Image" />
2019
2020</div>
2021          </div>
2022
2023  </article>
2024</div>
2025      </div>
2026          </div><!-- /.o-widget-summary-feature__column -->
2027              </div><!-- .o-widget-summary-feature__inner -->
2028    </div>
2029  </section>
2030
2031</div></div>
2032          </div>
2033  
2034</article>
2035
2036
2037  </div>
2038
2039    </div>
2040    
2041    
2042  </main>
2043
2044  
2045<div class="m-back-to-top">
2046  <button class="m-back-to-top__button" id="m-back-to-top" aria-label="Back to top" data-testid="backtotop">
2047    <span class="m-back-to-top__tooltip">Back to top</span>
2048  </button>
2049</div>
2050
2051  
2052<footer class="o-footer">
2053  <div class="b-container">
2054          
2055
2056
2057  <div class="m-footer-menu">
2058    <ul class="m-footer-menu__list">
2059                              <li class="m-footer-menu__list-item " data-state="closed">
2060          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2061            <a class="m-footer-menu__link" data-testid = "about"  href="https://www.tes.com/corporate">
2062              About
2063            </a>
2064
2065                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2066                      </div>
2067
2068                      <div class="m-footer-menu__children">
2069                <div class="m-footer-menu-sub-menu">
2070    <ul class="m-footer-menu-sub-menu__list">
2071                              <li class="m-footer-menu-sub-menu__list-item " >
2072          <div class="m-footer-menu-sub-menu__list-item-inner" >
2073            <a class="m-footer-menu-sub-menu__link" data-testid = "corporate"  href="/corporate">
2074              Corporate
2075            </a>
2076
2077                      </div>
2078
2079                  </li>
2080                              <li class="m-footer-menu-sub-menu__list-item " >
2081          <div class="m-footer-menu-sub-menu__list-item-inner" >
2082            <a class="m-footer-menu-sub-menu__link" data-testid = "login"  href="https://www.tes.com/login">
2083              Login
2084            </a>
2085
2086                      </div>
2087
2088                  </li>
2089                              <li class="m-footer-menu-sub-menu__list-item " >
2090          <div class="m-footer-menu-sub-menu__list-item-inner" >
2091            <a class="m-footer-menu-sub-menu__link" data-testid = "contact-us"  href="https://www.tes.com/contact">
2092              Contact us
2093            </a>
2094
2095                      </div>
2096
2097                  </li>
2098                              <li class="m-footer-menu-sub-menu__list-item " >
2099          <div class="m-footer-menu-sub-menu__list-item-inner" >
2100            <a class="m-footer-menu-sub-menu__link" data-testid = "faq"  href="https://www.tes.com/help">
2101              FAQ
2102            </a>
2103
2104                      </div>
2105
2106                  </li>
2107                              <li class="m-footer-menu-sub-menu__list-item " >
2108          <div class="m-footer-menu-sub-menu__list-item-inner" >
2109            <a class="m-footer-menu-sub-menu__link" data-testid = "work-for-t"  href="https://www.tes.com/corporate/work-for-tes">
2110              Work for Tes
2111            </a>
2112
2113                      </div>
2114
2115                  </li>
2116                              <li class="m-footer-menu-sub-menu__list-item " >
2117          <div class="m-footer-menu-sub-menu__list-item-inner" >
2118            <a class="m-footer-menu-sub-menu__link" data-testid = "partners"  href="https://www.tes.com/corporate/partnerships">
2119              Partners
2120            </a>
2121
2122                      </div>
2123
2124                  </li>
2125                              <li class="m-footer-menu-sub-menu__list-item " >
2126          <div class="m-footer-menu-sub-menu__list-item-inner" >
2127            <a class="m-footer-menu-sub-menu__link" data-testid = "legal-term"  href="https://www.tes.com/policies/overview">
2128              Legal Terms and Policies
2129            </a>
2130
2131                      </div>
2132
2133                  </li>
2134          </ul>
2135  </div>
2136
2137            </div>
2138                  </li>
2139                              <li class="m-footer-menu__list-item " data-state="closed">
2140          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2141            <a class="m-footer-menu__link" data-testid = "jobs"  href="https://www.tes.com/jobs/">
2142              Jobs
2143            </a>
2144
2145                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2146                      </div>
2147
2148                      <div class="m-footer-menu__children">
2149                <div class="m-footer-menu-sub-menu">
2150    <ul class="m-footer-menu-sub-menu__list">
2151                              <li class="m-footer-menu-sub-menu__list-item " >
2152          <div class="m-footer-menu-sub-menu__list-item-inner" >
2153            <a class="m-footer-menu-sub-menu__link" data-testid = "internatio"  href="https://www.tes.com/jobs/browse/international">
2154              International
2155            </a>
2156
2157                      </div>
2158
2159                  </li>
2160                              <li class="m-footer-menu-sub-menu__list-item " >
2161          <div class="m-footer-menu-sub-menu__list-item-inner" >
2162            <a class="m-footer-menu-sub-menu__link" data-testid = "uk"  href="https://www.tes.com/jobs/browse/united-kingdom">
2163              UK
2164            </a>
2165
2166                      </div>
2167
2168                  </li>
2169                              <li class="m-footer-menu-sub-menu__list-item " >
2170          <div class="m-footer-menu-sub-menu__list-item-inner" >
2171            <a class="m-footer-menu-sub-menu__link" data-testid = "australia"  href="https://www.tes.com/jobs/browse/australia">
2172              Australia
2173            </a>
2174
2175                      </div>
2176
2177                  </li>
2178                              <li class="m-footer-menu-sub-menu__list-item " >
2179          <div class="m-footer-menu-sub-menu__list-item-inner" >
2180            <a class="m-footer-menu-sub-menu__link" data-testid = "primary-/-"  href="https://www.tes.com/jobs/browse/primary-teaching-and-lecturing">
2181              Primary / Elementary
2182            </a>
2183
2184                      </div>
2185
2186                  </li>
2187                              <li class="m-footer-menu-sub-menu__list-item " >
2188          <div class="m-footer-menu-sub-menu__list-item-inner" >
2189            <a class="m-footer-menu-sub-menu__link" data-testid = "secondary-"  href="https://www.tes.com/jobs/browse/secondary">
2190              Secondary / High school
2191            </a>
2192
2193                      </div>
2194
2195                  </li>
2196                              <li class="m-footer-menu-sub-menu__list-item " >
2197          <div class="m-footer-menu-sub-menu__list-item-inner" >
2198            <a class="m-footer-menu-sub-menu__link" data-testid = "careers-ad"  href="https://www.tes.com/jobs/careers-advice">
2199              Careers advice
2200            </a>
2201
2202                      </div>
2203
2204                  </li>
2205                              <li class="m-footer-menu-sub-menu__list-item " >
2206          <div class="m-footer-menu-sub-menu__list-item-inner" >
2207            <a class="m-footer-menu-sub-menu__link" data-testid = "education-"  href="https://www.tes.com/for-schools/staff-management/education-recruitment">
2208              Education recruitment
2209            </a>
2210
2211                      </div>
2212
2213                  </li>
2214          </ul>
2215  </div>
2216
2217            </div>
2218                  </li>
2219                              <li class="m-footer-menu__list-item " data-state="closed">
2220          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2221            <a class="m-footer-menu__link" data-testid = "magazine"  href="https://www.tes.com/magazine">
2222              Magazine
2223            </a>
2224
2225                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2226                      </div>
2227
2228                      <div class="m-footer-menu__children">
2229                <div class="m-footer-menu-sub-menu">
2230    <ul class="m-footer-menu-sub-menu__list">
2231                              <li class="m-footer-menu-sub-menu__list-item " >
2232          <div class="m-footer-menu-sub-menu__list-item-inner" >
2233            <a class="m-footer-menu-sub-menu__link" data-testid = "store"  href="https://www.tes.com/store">
2234              Store
2235            </a>
2236
2237                      </div>
2238
2239                  </li>
2240                              <li class="m-footer-menu-sub-menu__list-item " >
2241          <div class="m-footer-menu-sub-menu__list-item-inner" >
2242            <a class="m-footer-menu-sub-menu__link" data-testid = "news"  href="https://www.tes.com/magazine/news">
2243              News
2244            </a>
2245
2246                      </div>
2247
2248                  </li>
2249                              <li class="m-footer-menu-sub-menu__list-item " >
2250          <div class="m-footer-menu-sub-menu__list-item-inner" >
2251            <a class="m-footer-menu-sub-menu__link" data-testid = "analysis"  href="https://www.tes.com/magazine/analysis">
2252              Analysis
2253            </a>
2254
2255                      </div>
2256
2257                  </li>
2258                              <li class="m-footer-menu-sub-menu__list-item " >
2259          <div class="m-footer-menu-sub-menu__list-item-inner" >
2260            <a class="m-footer-menu-sub-menu__link" data-testid = "teaching-&amp;"  href="https://www.tes.com/magazine/teaching-learning">
2261              Teaching &amp; Learning
2262            </a>
2263
2264                      </div>
2265
2266                  </li>
2267                              <li class="m-footer-menu-sub-menu__list-item " >
2268          <div class="m-footer-menu-sub-menu__list-item-inner" >
2269            <a class="m-footer-menu-sub-menu__link" data-testid = "scotland"  href="https://www.tes.com/magazine/hub/scotland">
2270              Scotland
2271            </a>
2272
2273                      </div>
2274
2275                  </li>
2276                              <li class="m-footer-menu-sub-menu__list-item " >
2277          <div class="m-footer-menu-sub-menu__list-item-inner" >
2278            <a class="m-footer-menu-sub-menu__link" data-testid = "leadership"  href="https://www.tes.com/magazine/leadership">
2279              Leadership
2280            </a>
2281
2282                      </div>
2283
2284                  </li>
2285                              <li class="m-footer-menu-sub-menu__list-item " >
2286          <div class="m-footer-menu-sub-menu__list-item-inner" >
2287            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-explai"  href="https://www.tes.com/magazine/tes-explains">
2288              Tes Explains
2289            </a>
2290
2291                      </div>
2292
2293                  </li>
2294                              <li class="m-footer-menu-sub-menu__list-item " >
2295          <div class="m-footer-menu-sub-menu__list-item-inner" >
2296            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-magazi"  href="https://www.tes.com/campaign/download-the-tes-magazine-app">
2297              Tes Magazine app
2298            </a>
2299
2300                      </div>
2301
2302                  </li>
2303          </ul>
2304  </div>
2305
2306            </div>
2307                  </li>
2308                              <li class="m-footer-menu__list-item " data-state="closed">
2309          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2310            <a class="m-footer-menu__link" data-testid = "resources"  href="https://www.tes.com/teaching-resources">
2311              Resources
2312            </a>
2313
2314                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2315                      </div>
2316
2317                      <div class="m-footer-menu__children">
2318                <div class="m-footer-menu-sub-menu">
2319    <ul class="m-footer-menu-sub-menu__list">
2320                              <li class="m-footer-menu-sub-menu__list-item " >
2321          <div class="m-footer-menu-sub-menu__list-item-inner" >
2322            <a class="m-footer-menu-sub-menu__link" data-testid = "early-year"  href="https://www.tes.com/teaching-resources/hub/early-years">
2323              Early years
2324            </a>
2325
2326                      </div>
2327
2328                  </li>
2329                              <li class="m-footer-menu-sub-menu__list-item " >
2330          <div class="m-footer-menu-sub-menu__list-item-inner" >
2331            <a class="m-footer-menu-sub-menu__link" data-testid = "primary"  href="https://www.tes.com/teaching-resources/hub/primary">
2332              Primary
2333            </a>
2334
2335                      </div>
2336
2337                  </li>
2338                              <li class="m-footer-menu-sub-menu__list-item " >
2339          <div class="m-footer-menu-sub-menu__list-item-inner" >
2340            <a class="m-footer-menu-sub-menu__link" data-testid = "secondary"  href="https://www.tes.com/teaching-resources/hub/secondary">
2341              Secondary
2342            </a>
2343
2344                      </div>
2345
2346                  </li>
2347                              <li class="m-footer-menu-sub-menu__list-item " >
2348          <div class="m-footer-menu-sub-menu__list-item-inner" >
2349            <a class="m-footer-menu-sub-menu__link" data-testid = "whole-scho"  href="https://www.tes.com/teaching-resources/hub/whole-school">
2350              Whole school
2351            </a>
2352
2353                      </div>
2354
2355                  </li>
2356                              <li class="m-footer-menu-sub-menu__list-item " >
2357          <div class="m-footer-menu-sub-menu__list-item-inner" >
2358            <a class="m-footer-menu-sub-menu__link" data-testid = "special-ed"  href="https://www.tes.com/teaching-resources/hub/whole-school/special-educational-needs">
2359              Special Educational Needs
2360            </a>
2361
2362                      </div>
2363
2364                  </li>
2365                              <li class="m-footer-menu-sub-menu__list-item " >
2366          <div class="m-footer-menu-sub-menu__list-item-inner" >
2367            <a class="m-footer-menu-sub-menu__link" data-testid = "resources-"  href="https://www.tes.com/teaching-resources/blog">
2368              Resources blog
2369            </a>
2370
2371                      </div>
2372
2373                  </li>
2374          </ul>
2375  </div>
2376
2377            </div>
2378                  </li>
2379                              <li class="m-footer-menu__list-item " data-state="closed">
2380          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2381            <a class="m-footer-menu__link" data-testid = "tes-instit"  href="https://www.tes.com/institute">
2382              Tes Institute
2383            </a>
2384
2385                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2386                      </div>
2387
2388 
2388                     <div class="m-footer-menu__children">
2389                <div class="m-footer-menu-sub-menu">
2390    <ul class="m-footer-menu-sub-menu__list">
2391                              <li class="m-footer-menu-sub-menu__list-item " >
2392          <div class="m-footer-menu-sub-menu__list-item-inner" >
2393            <a class="m-footer-menu-sub-menu__link" data-testid = "teacher-tr"  href="https://www.tes.com/institute/courses">
2394              Teacher training courses
2395            </a>
2396
2397                      </div>
2398
2399                  </li>
2400                              <li class="m-footer-menu-sub-menu__list-item " >
2401          <div class="m-footer-menu-sub-menu__list-item-inner" >
2402            <a class="m-footer-menu-sub-menu__link" data-testid = "ske-for-te"  href="https://www.tes.com/institute/courses/subject-knowledge-enhancement-teachers">
2403              SKE for teachers
2404            </a>
2405
2406                      </div>
2407
2408                  </li>
2409                              <li class="m-footer-menu-sub-menu__list-item " >
2410          <div class="m-footer-menu-sub-menu__list-item-inner" >
2411            <a class="m-footer-menu-sub-menu__link" data-testid = "support-fo"  href="https://www.tes.com/institute/support-for-schools">
2412              Support for schools
2413            </a>
2414
2415                      </div>
2416
2417                  </li>
2418          </ul>
2419  </div>
2420
2421            </div>
2422                  </li>
2423                              <li class="m-footer-menu__list-item " data-state="closed">
2424          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2425            <a class="m-footer-menu__link" data-testid = "advice-hub"  href="https://www.tes.com/advice-hub">
2426              Advice Hub
2427            </a>
2428
2429                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2430                      </div>
2431
2432                      <div class="m-footer-menu__children">
2433                <div class="m-footer-menu-sub-menu">
2434    <ul class="m-footer-menu-sub-menu__list">
2435                              <li class="m-footer-menu-sub-menu__list-item " >
2436          <div class="m-footer-menu-sub-menu__list-item-inner" >
2437            <a class="m-footer-menu-sub-menu__link" data-testid = "blog"  href="https://www.tes.com/for-schools/blog">
2438              Blog
2439            </a>
2440
2441                      </div>
2442
2443                  </li>
2444                              <li class="m-footer-menu-sub-menu__list-item " >
2445          <div class="m-footer-menu-sub-menu__list-item-inner" >
2446            <a class="m-footer-menu-sub-menu__link" data-testid = "safeguardi"  href="https://www.tes.com/advice-hub/safeguarding">
2447              Safeguarding
2448            </a>
2449
2450                      </div>
2451
2452                  </li>
2453                              <li class="m-footer-menu-sub-menu__list-item " >
2454          <div class="m-footer-menu-sub-menu__list-item-inner" >
2455            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-live-l"  href="https://www.tes.com/for-schools/live-lessons">
2456              Tes Live Lessons
2457            </a>
2458
2459                      </div>
2460
2461                  </li>
2462          </ul>
2463  </div>
2464
2465            </div>
2466                  </li>
2467                              <li class="m-footer-menu__list-item " data-state="closed">
2468          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2469            <a class="m-footer-menu__link" data-testid = "products"  href="https://www.tes.com/for-schools">
2470              Products
2471            </a>
2472
2473                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2474                      </div>
2475
2476                      <div class="m-footer-menu__children">
2477                <div class="m-footer-menu-sub-menu">
2478    <ul class="m-footer-menu-sub-menu__list">
2479                              <li class="m-footer-menu-sub-menu__list-item " >
2480          <div class="m-footer-menu-sub-menu__list-item-inner" >
2481            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-staff-"  href="https://www.tes.com/for-schools/staff-management">
2482              Tes Staff Management
2483            </a>
2484
2485                      </div>
2486
2487                  </li>
2488                              <li class="m-footer-menu-sub-menu__list-item " >
2489          <div class="m-footer-menu-sub-menu__list-item-inner" >
2490            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-class-"  href="https://www.tes.com/for-schools/class-charts">
2491              Tes Class Charts
2492            </a>
2493
2494                      </div>
2495
2496                  </li>
2497                              <li class="m-footer-menu-sub-menu__list-item " >
2498          <div class="m-footer-menu-sub-menu__list-item-inner" >
2499            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-learni"  href="https://www.tes.com/for-schools/learning-pathways">
2500              Tes Learning Pathways
2501            </a>
2502
2503                      </div>
2504
2505                  </li>
2506                              <li class="m-footer-menu-sub-menu__list-item " >
2507          <div class="m-footer-menu-sub-menu__list-item-inner" >
2508            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-timeta"  href="https://www.tes.com/for-schools/timetable">
2509              Tes Timetable
2510            </a>
2511
2512                      </div>
2513
2514                  </li>
2515                              <li class="m-footer-menu-sub-menu__list-item " >
2516          <div class="m-footer-menu-sub-menu__list-item-inner" >
2517            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-parent"  href="https://www.tes.com/for-schools/parents-meetings">
2518              Tes Parents’ Meetings
2519            </a>
2520
2521                      </div>
2522
2523                  </li>
2524                              <li class="m-footer-menu-sub-menu__list-item " >
2525          <div class="m-footer-menu-sub-menu__list-item-inner" >
2526            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-room-b"  href="https://www.tes.com/for-schools/room-booking">
2527              Tes Room Booking
2528            </a>
2529
2530                      </div>
2531
2532                  </li>
2533                              <li class="m-footer-menu-sub-menu__list-item " >
2534          <div class="m-footer-menu-sub-menu__list-item-inner" >
2535            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-clubs-"  href="https://www.tes.com/for-schools/clubs-and-events">
2536              Tes Clubs and Events
2537            </a>
2538
2539                      </div>
2540
2541                  </li>
2542                              <li class="m-footer-menu-sub-menu__list-item " >
2543          <div class="m-footer-menu-sub-menu__list-item-inner" >
2544            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-seqta"  href="https://www.tes.com/for-schools/seqta">
2545              Tes SEQTA
2546            </a>
2547
2548                      </div>
2549
2550                  </li>
2551          </ul>
2552  </div>
2553
2554            </div>
2555                  </li>
2556                              <li class="m-footer-menu__list-item " data-state="closed">
2557          <div class="m-footer-menu__list-item-inner" data-has-children="true">
2558            <a class="m-footer-menu__link" data-testid = "products"  href="https://www.tes.com/for-schools">
2559              Products
2560            </a>
2561
2562                          <button class="m-footer-menu__toggle"><span>Open</span><i></i></button>
2563                      </div>
2564
2565                      <div class="m-footer-menu__children">
2566                <div class="m-footer-menu-sub-menu">
2567    <ul class="m-footer-menu-sub-menu__list">
2568                              <li class="m-footer-menu-sub-menu__list-item " >
2569          <div class="m-footer-menu-sub-menu__list-item-inner" >
2570            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-safegu"  href="https://www.tes.com/for-schools/safeguarding-training">
2571              Tes Safeguarding Training
2572            </a>
2573
2574                      </div>
2575
2576                  </li>
2577                              <li class="m-footer-menu-sub-menu__list-item " >
2578          <div class="m-footer-menu-sub-menu__list-item-inner" >
2579            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-myconc"  href="https://www.tes.com/for-schools/myconcern">
2580              Tes MyConcern
2581            </a>
2582
2583                      </div>
2584
2585                  </li>
2586                              <li class="m-footer-menu-sub-menu__list-item " >
2587          <div class="m-footer-menu-sub-menu__list-item-inner" >
2588            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-clarit"  href="https://www.tes.com/for-schools/clarity">
2589              Tes Clarity
2590            </a>
2591
2592                      </div>
2593
2594                  </li>
2595                              <li class="m-footer-menu-sub-menu__list-item " >
2596          <div class="m-footer-menu-sub-menu__list-item-inner" >
2597            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-litera"  href="https://www.tes.com/for-schools/literacy-assessment">
2598              Tes Literacy Assessment Online
2599            </a>
2600
2601                      </div>
2602
2603                  </li>
2604                              <li class="m-footer-menu-sub-menu__list-item " >
2605          <div class="m-footer-menu-sub-menu__list-item-inner" >
2606            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-engage"  href="https://www.tes.com/for-schools/engage">
2607              Tes Engage
2608            </a>
2609
2610                      </div>
2611
2612                  </li>
2613                              <li class="m-footer-menu-sub-menu__list-item " >
2614          <div class="m-footer-menu-sub-menu__list-item-inner" >
2615            <a class="m-footer-menu-sub-menu__link" data-testid = "tes-assetw"  href="https://www.tes.com/for-schools/assetwhere">
2616              Tes AssetWhere
2617            </a>
2618
2619                      </div>
2620
2621                  </li>
2622                              <li class="m-footer-menu-sub-menu__list-item " >
2623          <div class="m-footer-menu-sub-menu__list-item-inner" >
2624            <a class="m-footer-menu-sub-menu__link" data-testid = "help-and-s"  href="https://help.tes.com/support/home">
2625              Help and support portal
2626            </a>
2627
2628                      </div>
2629
2630                  </li>
2631          </ul>
2632  </div>
2633
2634            </div>
2635                  </li>
2636          </ul>
2637  </div>
2638
2639
2640    
2641          <div class="o-footer__copyright">
2642        <div class="o-footer__copyright-inner">
2643          <p>Copyright &copy; 2026</p>
2644
2645            <div>
2646    <div id="block-copyright-2">
2647  
2648    
2649      
2650            <div><p>This website and its content is subject to our <a href="https://www.tes.com/policies/general-terms-business">General Terms of Business</a>. Tes Global Ltd is registered in England (Company No 02017289) with its registered office at Building 3, St Paul’s Place, Norfolk Street, Sheffield, S1 2JE.</p>
2651</div>
2652      
2653  </div>
2654
2655  </div>
2656</div>
2657      </div>
2658      </div>
2659</footer>
2660
2661  
2662
2663</div>
2664  </div>
2665
2666    
2667    
2667<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","scriptPath":null,"pathPrefix":"","currentPath":"node\/3","currentPathIsAdmin":false,"isFront":true,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"feature_toggle":{"enabled":[]},"tg_utm":{"cookie_max_age":2592000000,"cookie_name":"tes_utm"},"ajaxTrustedUrl":{"form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM":true},"pendo":{"api_key":"acd7b4d7-11f3-4ae8-61ad-4a2571bcacec","data":{"account":{"id":"427e8092-7257-41d8-be89-b3b791518f3f"},"visitor":{"id":"","email":null}}},"user":{"uid":0,"permissionsHash":"fd17fac7f4c84ae65e6caff5fa0d0f4550d60f47fd2920ac1bb6239576231c19"}}</script>
vendor: 1 bytes, line 2667
2667
2668<script src="https://assets.tes.com/marketing/s3fs-public/js/js_yZdi2aXYdEgennftm1cywpSNcdENb7pMgpE6foPUCAM.js"></script>
vendor: 1 bytes, line 2668
2668
2669<script src="/modules/contrib/pendo/js/pendo.js?v=1.x" class="optanon-category-C0003"></script>
2669
2670
2671  
2671<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"55613def96","applicationID":"577785330","transactionName":"Ml1TZBNTCkcCAkFaWAsXckUSRgtZTARbR14RQR9eDlYBGgAAW1xZDFtQXFtQBUcKAmpDVgJd","queueTime":0,"applicationTime":98,"atts":"HhpQEltJGUk=","errorBeacon":"bam.nr-data.net","agent":""}</script>
2671</body>
2672</html>

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.