Popup calculator Copy a link to this page Print this page Email a link to this page Scroll up to form What does this mean? Remove this row Open/Close content Close content Return to content Copy to clipboard
?

University Grade Calculator

Calculation for
Weighting
Use our uni grade calculator to calculate the average of all your assignments, modules or courses in order to get an average weighted grade.

Disclaimer: Whilst every effort has been made in building our calculator tools, we are not to be held liable for any damages or monetary losses arising out of or in connection with their use. Full disclaimer.

Calculate your uni grade

Our university grade calculator takes a percentage mark for each of your university courses (assignments or modules) or academic years, together with the percentage or credit weighting, and returns a weighted average for the parts you have completed so far.

How do I calculate my weighted university grade?

In order to work out your weighted average grade for your university year, module, or assignment, we take the marks (or grades) multiplied by their respective weights, sum them together, and then divide the total by the sum of the weights. An example is shown below, and the calculation is shown at the bottom of the results.

Weighted Average = (Mark1 × Weight1 + Mark2 × Weight2) / (Weight1 + Weight2)

Example calculation

Student A is studying a degree in Computer Science and has undertaken three modules so far. They want to calculate their average weighted grade for the three modules.

Mark Weight Module
66% 20 credits Data Analysis
55% 10 credits Databases
71% 10 credits Experimental Plan
Average = (66 × 20 + 55 × 10 + 71 × 10) / (20 + 10 + 10)

Student A's average mark is therefore calculated at 64.5%.

Unweighted calculations

If you wish to carry out an unweighted calculation, simply leave all the weight boxes blank, or make them equal. If you want to work out the mark you require on your final exam, you can use our final grade calculator tool.

What mark do I need from the rest of my course?

Our calculator can help you work out the average mark you need from the remainder of your course, in order to achieve a target percentage, so that you can see whether you're on track to achieve the grade you want.


If you have any problems using our university grade calculator, please contact us.


xxfseo.com
",t=t.replace("",n+"")),t=t.replace(/zIndex="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|")(.*?)("|");?\)/g,"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/]+(>|$)/g,"").replace(/[\s_]+/g,"-").replace(/[^a-z0-9\-]/g,"").replace(/^[\-]+/g,"").replace(/[\-]+/g,"-").substr(0,24).replace(/[\-]+$/g,""):e)||e.length<5?"chart":e},exportChart:function(t,e){e=this.getSVGForExport(t,e),t=k(this.options.exporting,t),n.post(t.url,{filename:t.filename?t.filename.replace(/\//g,"-"):this.getFilename(),type:t.type,width:t.width||0,scale:t.scale,svg:e},t.formAttributes)},moveContainers:function(e){(this.fixedDiv?[this.fixedDiv,this.scrollingContainer]:[this.container]).forEach(function(t){e.appendChild(t)})},beforePrint:function(){var t=x.body,e=this.options.exporting.printMaxWidth,i={childNodes:t.childNodes,origExhibit:[],resetParams:void 0};this.isPrinting=!0,this.pointer.reset(null,0),C(this,"beforePrint"),e&&this.chartWidth>e&&(i.resetParams=[this.options.chart.width,void 0,!1],this.setSize(e,void 0,!1)),[].forEach.call(i.childNodes,function(t,e){1===t.nodeType&&(i.origExhibit[e]=t.style.display,t.style.display="none")}),this.moveContainers(t),this.printReverseInfo=i},afterPrint:function(){var t,i,e;this.printReverseInfo&&(t=this.printReverseInfo.childNodes,i=this.printReverseInfo.origExhibit,e=this.printReverseInfo.resetParams,this.moveContainers(this.renderTo),[].forEach.call(t,function(t,e){1===t.nodeType&&(t.style.display=i[e]||"")}),this.isPrinting=!1,e&&this.setSize.apply(this,e),delete this.printReverseInfo,delete n.printingChart,C(this,"afterPrint"))},print:function(){var t=this;t.isPrinting||(n.printingChart=t,n.isSafari||t.beforePrint(),setTimeout(function(){b.focus(),b.print(),n.isSafari||setTimeout(function(){t.afterPrint()},1e3)},1))},contextMenu:function(e,t,i,n,o,r,s){var a,l=this,h=l.options.navigation,c=l.chartWidth,d=l.chartHeight,p="cache-"+e,u=l[p],f=Math.max(o,r);u||(l.exportContextMenu=l[p]=u=y("div",{className:e},{position:"absolute",zIndex:1e3,padding:f+"px",pointerEvents:"auto"},l.fixedDiv||l.container),a=y("ul",{className:"highcharts-menu"},{listStyle:"none",margin:0,padding:0},u),l.styledMode||w(a,v({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},h.menuStyle)),u.hideMenu=function(){w(u,{display:"none"}),s&&s.setState(0),l.openMenu=!1,w(l.renderTo,{overflow:"hidden"}),g.clearTimeout(u.hideTimer),C(l,"exportMenuHidden")},l.exportEvents.push(m(u,"mouseleave",function(){u.hideTimer=b.setTimeout(u.hideMenu,500)}),m(u,"mouseenter",function(){g.clearTimeout(u.hideTimer)}),m(x,"mouseup",function(t){l.pointer.inClass(t.target,e)||u.hideMenu()}),m(u,"click",function(){l.openMenu&&u.hideMenu()})),t.forEach(function(e){var t;"string"==typeof e&&(e=l.options.exporting.menuItemDefinitions[e]),S(e,!0)&&(e.separator?t=y("hr",null,null,a):("viewData"===e.textKey&&l.isDataTableVisible&&(e.textKey="hideData"),t=y("li",{className:"highcharts-menu-item",onclick:function(t){t&&t.stopPropagation(),u.hideMenu(),e.onclick&&e.onclick.apply(l,arguments)},innerHTML:e.text||l.options.lang[e.textKey]},null,a),l.styledMode||(t.onmouseover=function(){w(this,h.menuItemHoverStyle)},t.onmouseout=function(){w(this,h.menuItemStyle)},w(t,v({cursor:"pointer"},h.menuItemStyle)))),l.exportDivElements.push(t))}),l.exportDivElements.push(a,u),l.exportMenuWidth=u.offsetWidth,l.exportMenuHeight=u.offsetHeight),t={display:"block"},i+l.exportMenuWidth>c?t.right=c-i-o-f+"px":t.left=i-f+"px",n+r+l.exportMenuHeight>d&&"top"!==s.alignOptions.verticalAlign?t.bottom=d-n-f+"px":t.top=n+r-f+"px",w(u,t),w(l.renderTo,{overflow:""}),l.openMenu=!0,C(l,"exportMenuShown")},addButton:function(t){var e,i,n,o,r,s,a=this,l=a.renderer,h=k(a.options.navigation.buttonOptions,t),c=h.onclick,d=h.menuItems,p=h.symbolSize||12;a.btnCount||(a.btnCount=0),a.exportDivElements||(a.exportDivElements=[],a.exportSVGElements=[]),!1!==h.enabled&&(i=(o=(e=h.theme).states)&&o.hover,o=o&&o.select,a.styledMode||(e.fill=u(e.fill,"#ffffff"),e.stroke=u(e.stroke,"none")),delete e.states,c?n=function(t){t&&t.stopPropagation(),c.call(a,t)}:d&&(n=function(t){t&&t.stopPropagation(),a.contextMenu(r.menuClassName,d,r.translateX,r.translateY,r.width,r.height,r),r.setState(2)}),h.text&&h.symbol?e.paddingLeft=u(e.paddingLeft,25):h.text||v(e,{width:h.width,height:h.height,padding:0}),a.styledMode||(e["stroke-linecap"]="round",e.fill=u(e.fill,"#ffffff"),e.stroke=u(e.stroke,"none")),(r=l.button(h.text,0,0,n,e,i,o).addClass(t.className).attr({title:u(a.options.lang[h._titleKey||h.titleKey],"")})).menuClassName=t.menuClassName||"highcharts-menu-"+a.btnCount++,h.symbol&&(s=l.symbol(h.symbol,h.symbolX-p/2,h.symbolY-p/2,p,p,{width:p,height:p}).addClass("highcharts-button-symbol").attr({zIndex:1}).add(r),a.styledMode||s.attr({stroke:h.symbolStroke,fill:h.symbolFill,"stroke-width":h.symbolStrokeWidth||1})),r.add(a.exportingGroup).align(v(h,{width:r.width,x:u(h.x,a.buttonOffset)}),!0,"spacingBox"),a.buttonOffset+=(r.width+h.buttonSpacing)*("right"===h.align?-1:1),a.exportSVGElements.push(r,s))},destroyExport:function(t){var i,n=t?t.target:this,e=(t=n.exportSVGElements,n.exportDivElements),o=n.exportEvents;t&&(t.forEach(function(t,e){t&&(t.onclick=t.ontouchstart=null,i="cache-"+t.menuClassName,n[i]&&delete n[i],n.exportSVGElements[e]=t.destroy())}),t.length=0),n.exportingGroup&&(n.exportingGroup.destroy(),delete n.exportingGroup),e&&(e.forEach(function(t,e){g.clearTimeout(t.hideTimer),r(t,"mouseleave"),n.exportDivElements[e]=t.onmouseout=t.onmouseover=t.ontouchstart=t.onclick=null,l(t)}),e.length=0),o&&(o.forEach(function(t){t()}),o.length=0)}}),i.prototype.inlineToAttributes="fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" "),i.prototype.inlineBlacklist=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/perspective/,/TapHighlightColor/,/^transition/,/^length$/],i.prototype.unstyledElements=["clipPath","defs","desc"],a.prototype.inlineStyles=function(){function d(t){return t.replace(/([A-Z])/g,function(t,e){return"-"+e.toLowerCase()})}var p,u=(t=this.renderer).inlineToAttributes,f=t.inlineBlacklist,g=t.inlineWhitelist,m=t.unstyledElements,y={},t=x.createElement("iframe"),v=(w(t,{width:"1px",height:"1px",visibility:"hidden"}),x.body.appendChild(t),t.contentWindow.document);v.open(),v.write(''),v.close(),function t(i){function e(t,e){if(n=o=!1,g){for(r=g.length;r--&&!o;)o=g[r].test(e);n=!o}for("transform"===e&&"none"===t&&(n=!0),r=f.length;r--&&!n;)n=f[r].test(e)||"function"==typeof t;n||h[e]===t&&"svg"!==i.nodeName||y[i.nodeName][e]===t||(u&&-1===u.indexOf(e)?s+=d(e)+":"+t+";":t&&i.setAttribute(d(e),t))}var n,o,r,s="";if(1===i.nodeType&&-1===m.indexOf(i.nodeName)){var a,l=b.getComputedStyle(i,null),h="svg"===i.nodeName?{}:b.getComputedStyle(i.parentNode,null);if(y[i.nodeName]||(p=v.getElementsByTagName("svg")[0],a=v.createElementNS(i.namespaceURI,i.nodeName),p.appendChild(a),y[i.nodeName]=k(b.getComputedStyle(a,null)),"text"===i.nodeName&&delete y.text.fill,p.removeChild(a)),M||A)for(var c in l)e(l[c],c);else T(l,e);s&&(l=i.getAttribute("style"),i.setAttribute("style",(l?l+";":"")+s)),"svg"===i.nodeName&&i.setAttribute("stroke-width","1px"),"text"!==i.nodeName&&[].forEach.call(i.children||i.childNodes,t)}}(this.container.querySelector("svg")),p.parentNode.remove(),t.remove()},d.menu=function(t,e,i,n){return[["M",t,e+2.5],["L",t+i,e+2.5],["M",t,e+n/2+.5],["L",t+i,e+n/2+.5],["M",t,e+n-1.5],["L",t+i,e+n-1.5]]},d.menuball=function(t,e,i,n){return[].concat(this.circle(i-(n=n/3-2),e,n,n),this.circle(i-n,e+n+4,n,n),this.circle(i-n,e+2*(n+4),n,n))},a.prototype.renderExporting=function(){var e=this,t=e.options.exporting,i=t.buttons,n=e.isFilthyExporting||!e.exportSVGElements;e.buttonOffset=0,e.isFilthyExporting&&e.destroyExport(),n&&!1!==t.enabled&&(e.exportEvents=[],e.exportingGroup=e.exportingGroup||e.renderer.g("exporting-group").attr({zIndex:3}).add(),T(i,function(t){e.addButton(t)}),e.isFilthyExporting=!1),m(e,"destroy",e.destroyExport)},m(a,"init",function(){var i=this;i.exporting={update:function(t,e){i.isFilthyExporting=!0,k(!0,i.options.exporting,t),u(e,!0)&&i.redraw()}},t.addUpdate(function(t,e){i.isFilthyExporting=!0,k(!0,i.options.navigation,t),u(e,!0)&&i.redraw()},i)}),a.prototype.callbacks.push(function(t){t.renderExporting(),m(t,"redraw",t.renderExporting)})}),e(t,"masters/modules/exporting.src.js",[],function(){})}),!function(e){"object"==typeof module&&module.exports?module.exports=e.default=e:"function"==typeof define&&define.amd?define("highcharts/modules/export-data",["highcharts","highcharts/modules/exporting"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){function e(t,e,i,n){t.hasOwnProperty(e)||(t[e]=n.apply(null,i))}e(t=t?t._modules:{},"Extensions/PerformwnloadURL.js",[t["Core/Globals.js"]],function(t){var o=t.win,r=o.navigator,s=o.document,a=o.URL||o.webkitURL||o,l=/Edge\/\d+/.test(r.userAgent),h=t.dataURLtoBlob=function(t){if((t=t.replace(/filename=.*;/,"").match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/))&&3'+o+""}var i='',h=this.options,r=t?1.1.toLocaleString()[1]:".",c=A(h.exporting.useMultiLevelHeaders,!0),n=(t=this.getDataRows(c),0),e=c?t.shift():null,o=t.shift();!1!==h.exporting.tableCaption&&(i+='");for(var s=0,a=t.length;sn&&(n=t[s].length);return i=i+function(t,e,i){var n="",o=0;i=i||e&&e.length;var r=0;if(s=c&&t&&e){t:if(s=t.length,e.length===s){for(;s--;)if(t[s]!==e[s]){s=!1;break t}s=!0}else s=!1;s=!s}if(s){for(n+="";o"}return n+""}(e,o,Math.max(n,o.length))+"",t.forEach(function(t){i+="";for(var e=0;e"}),p(this,"afterGetTable",t={html:i+="
'+A(h.exporting.tableCaption,h.title.text?h.title.text.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/"):"Chart")+"
"}),t.html},t.prototype.downloadCSV=function(){var t=this.getCSV(!0);u(o(t,"text/csv")||"data:text/csv,\ufeff"+encodeURIComponent(t),this.getFilename()+".csv")},t.prototype.downloadXLS=function(){var t='\x3c!--[if gte mso 9]>Ark1td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:"0.00";} .text{ mso-number-format:"@";} '+this.getTable(!0)+"";u(o(t,"application/vnd.ms-excel")||"data:application/vnd.ms-excel;base64,"+a.btoa(unescape(encodeURIComponent(t))),this.getFilename()+".xls")},t.prototype.viewData=function(){this.dataTableDiv||(this.dataTableDiv=r.createElement("div"),this.dataTableDiv.className="highcharts-data-table",this.renderTo.parentNode.insertBefore(this.dataTableDiv,this.renderTo.nextSibling),this.dataTableDiv.innerHTML=this.getTable()),""!==this.dataTableDiv.style.display&&"none"!==this.dataTableDiv.style.display||(this.dataTableDiv.style.display="block"),this.isDataTableVisible=!0,p(this,"afterViewData",this.dataTableDiv)},t.prototype.hideData=function(){this.dataTableDiv&&"block"===this.dataTableDiv.style.display&&(this.dataTableDiv.style.display="none"),this.isDataTableVisible=!1},t.prototype.toggleDataTable=function(){var t=this.exportDivElements,e=(e=this.options.exporting)&&e.buttons&&e.buttons.contextButton.menuItems,i=this.options.lang;this.isDataTableVisible?this.hideData():this.viewData(),null!=f&&f.menuItemDefinitions&&null!=i&&i.viewData&&i.hideData&&e&&t&&t.length&&(t[e.indexOf("viewData")].innerHTML=this.isDataTableVisible?i.hideData:i.viewData)},h().exporting);f&&(l(f.menuItemDefinitions,{downloadCSV:{textKey:"downloadCSV",onclick:function(){this.downloadCSV()}},downloadXLS:{textKey:"downloadXLS",onclick:function(){this.downloadXLS()}},viewData:{textKey:"viewData",onclick:function(){this.toggleDataTable()}}}),f.buttons)&&f.buttons.contextButton.menuItems.push("separator","downloadCSV","downloadXLS","viewData"),s.map&&(s.map.prototype.exportKey="name"),s.mapbubble&&(s.mapbubble.prototype.exportKey="name"),s.treemap&&(s.treemap.prototype.exportKey="name")}),e(t,"masters/modules/export-data.src.js",[],function(){})}),!function(e){"object"==typeof module&&module.exports?module.exports=e.default=e:"function"==typeof define&&define.amd?define("highcharts/modules/accessibility",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){function e(t,e,i,n){t.hasOwnProperty(e)||(t[e]=n.apply(null,i))}e(t=t?t._modules:{},"Accessibility/Utils/HTMLUtilities.js",[t["Core/Globals.js"],t["Core/Utilities.js"]],function(t,e){function o(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}var i=t.doc,n=t.win,r=e.merge;return{addClass:function(t,e){t.classList?t.classList.add(e):t.className.indexOf(e)<0&&(t.className+=e)},escapeStringForHTML:o,getElement:function(t){return i.getElementById(t)},getFakeMouseEvent:function(t){if("function"==typeof n.MouseEvent)return new n.MouseEvent(t);if(i.createEvent){var e=i.createEvent("MouseEvent");if(e.initMouseEvent)return e.initMouseEvent(t,!0,!0,n,"click"===t?1:0,0,0,0,0,!1,!1,!1,!1,0,null),e}return{type:t}},removeElement:function(t){t&&t.parentNode&&t.parentNode.removeChild(t)},reverseChildNodes:function(t){for(var e=t.childNodes.length;e--;)t.appendChild(t.childNodes[e])},setElAttrs:function(i,n){Object.keys(n).forEach(function(t){var e=n[t];null===e?i.removeAttribute(t):(e=o(""+e),i.setAttribute(t,e))})},stripHTMLTagsFromString:function(t){return"string"==typeof t?t.replace(/<\/?[^>]+(>|$)/g,""):t},visuallyHideElement:function(t){r(!0,t.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",whiteSpace:"nowrap",clip:"rect(1px, 1px, 1px, 1px)",marginTop:"-3px","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)",filter:"alpha(opacity=1)",opacity:"0.01"})}}}),e(t,"Accessibility/Utils/ChartUtilities.js",[t["Accessibility/Utils/HTMLUtilities.js"],t["Core/Utilities.js"]],function(t,e){function i(t){var e;return null==(e=t.points)||!e.length||null==(e=null==(t=r(t.points,function(t){return!!t.graphic}))?void 0:t.graphic)?void 0:e.element}function n(t){var e=i(t);return e&&e.parentNode||t.graph&&t.graph.element||t.group&&t.group.element}var o=t.stripHTMLTagsFromString,s=e.defined,r=e.find,a=e.fireEvent;return{getChartTitle:function(t){return o(t.options.title.text||t.langFormat("accessibility.defaultChartTitle",{chart:t}))},getAxisDescription:function(t){return o(t&&(t.userOptions&&t.userOptions.accessibility&&t.userOptions.accessibility.description||t.axisTitle&&t.axisTitle.textStr||t.options.id||(t.categories?"categories":t.dateTime&&"Time")||"values"))},getPointFromXY:function(t,e,i){for(var n,o=t.length;o--;)if(n=r(t[o].points||[],function(t){return t.x===e&&t.y===i}))return n},getSeriesFirstPointElement:i,getSeriesFromName:function(t,e){return e?(t.series||[]).filter(function(t){return t.name===e}):t.series},getSeriesA11yElement:n,unhideChartElementFromAT:function t(e,i){i.setAttribute("aria-hidden",!1),i!==e.renderTo&&i.parentNode&&(Array.prototype.forEach.call(i.parentNode.childNodes,function(t){t.hasAttribute("aria-hidden")||t.setAttribute("aria-hidden",!0)}),t(e,i.parentNode))},hideSeriesFromAT:function(t){(t=n(t))&&t.setAttribute("aria-hidden",!0)},scrollToPoint:function(t){var e,i,n=t.series.xAxis,o=t.series.yAxis,r=null!=n&&n.scrollbar?n:o;(n=null==r?void 0:r.scrollbar)&&s(n.to)&&s(n.from)&&(o=n.to-n.from,t=s(r.dataMin)&&s(r.dataMax)?(e=r.toPixels(r.dataMin),i=r.toPixels(r.dataMax),(r.toPixels(t["xAxis"===r.coll?"x":"y"]||0)-e)/(i-e)):0,n.updatePosition(t-o/2,t+o/2),a(n,"changed",{from:n.from,to:n.to,trigger:"scrollbar",DOMEvent:null}))}}}),e(t,"Accessibility/KeyboardNavigationHandler.js",[t["Core/Utilities.js"]],function(t){function e(t,e){this.chart=t,this.keyCodeMap=e.keyCodeMap||[],this.validate=e.validate,this.init=e.init,this.terminate=e.terminate,this.response={success:1,prev:2,next:3,noHandler:4,fail:5}}var o=t.find;return e.prototype={run:function(t){var e=t.which||t.keyCode,i=this.response.noHandler,n=o(this.keyCodeMap,function(t){return-1o||e!==n-1;t.a11yProxyElement&&(t.a11yProxyElement.style.visibility=e?"hidden":"visible")})},onChartRender:function(){s(this.chart)?this.updateProxiesPositions():this.removeProxies()},updateProxiesPositions:function(){for(var t=0,e=this.proxyElementsList;t"+t+"":""})}var o=t.escapeStringForHTML,s=t.stripHTMLTagsFromString;return{getAnnotationsInfoHTML:function(t){var e=t.annotations;return e&&e.length?"":""},getAnnotationLabelDescription:e,getAnnotationListItems:n,getPointAnnotationTexts:function(e){var t=i(e.series.chart).filter(function(t){return-1=e}function l(t,e){var i=t.series.chart,n=i.options.accessibility.point||{};return t=t.series.tooltipOptions||{},i=i.options.lang,T(e)?A(e,n.valueDecimals||t.valueDecimals||-1,i.decimalPoint,i.accessibility.thousandsSep||i.thousandsSep):e}function h(t,e){return t.chart.langFormat("accessibility.series."+e+"Description",{name:m(t[e]),series:t})}function r(t){var e=t.series,i=e.chart,n=i.options.accessibility.point||{};if(e.xAxis&&e.xAxis.dateTime)return e=o.prototype.getXDateFormat.call({getDateFormat:o.prototype.getDateFormat,chart:i},t,i.options.tooltip,e.xAxis),n=n.dateFormatter&&n.dateFormatter(t)||n.dateFormat||e,i.time.dateFormat(n,t.x,void 0)}function a(t){var e=r(t),i=(t.series.xAxis||{}).categories&&P(t.category)&&(""+t.category).replace("
"," "),n=t.id&&t.id.indexOf("highcharts-")<0,o="x, "+t.x;return t.name||e||i||(n?t.id:o)}function c(t){var n,o,r,e=t.series,i=e.chart.options.accessibility.point||{},s=e.tooltipOptions||{},a=i.valuePrefix||s.valuePrefix||"",i=i.valueSuffix||s.valueSuffix||"",s=l(t,t[void 0!==t.value?"value":"y"]);return t.isNull?e.chart.langFormat("accessibility.series.nullPointValue",{point:t}):e.pointArrayMap?(o=a||"",r=i||"",(n=t).series.pointArrayMap.reduce(function(t,e){t+=t.length?", ":"";var i=l(n,M(n[e],n.options[e]));return t+(e+": ")+o+i+r},"")):a+s+i}function d(t){var e=t.series,i=e.chart,n=i.options.accessibility.point.valueDescriptionFormat,o=(e=M(e.xAxis&&e.xAxis.options.accessibility&&e.xAxis.options.accessibility.enabled,!i.angular))?a(t):"";return t={point:t,index:P(t.index)?t.index+1:"",xDescription:o,value:c(t),separator:e?", ":""},k(n,t,i)}function p(t){var e=(o=t.series).chart,i=d(t),n=(n=t.options&&t.options.accessibility&&t.options.accessibility.description)?" "+n:"",o=1o&&t.graphic&&t.graphic.element)})||null)&&n.graphic)?e.parentGroup:i.graph||i.group,n=n?{x:M(t.plotX,n.plotX,0),y:M(t.plotY,n.plotY,0)}:{x:M(t.plotX,0),y:M(t.plotY,0)},(n=t.series.chart.renderer.rect(n.x,n.y,1,1)).attr({class:"highcharts-a11y-dummy-point",fill:"none",opacity:0,"fill-opacity":0,"stroke-opacity":0}),e=i&&i.element?(t.graphic=n,t.hasDummyGraphic=!0,n.add(i),i.element.insertBefore(n.element,e?e.element:null),n.element):void 0),e&&(e.setAttribute("tabindex","-1"),e.style.outline="0",r?(i=(n=t.series).chart.options.accessibility.point||{},n=n.options.accessibility||{},t=b(C(n.pointDescriptionFormatter&&n.pointDescriptionFormatter(t)||i.descriptionFormatter&&i.descriptionFormatter(t)||p(t))),e.setAttribute("role","img"),e.setAttribute("aria-label",t)):e.setAttribute("aria-hidden",!0))})}function f(e){function t(t){return i[t]&&1e.dataMax&&(n=(i=e.dataMax)-o),this.setExtremes(n,i)},e.prototype=new t,n(e.prototype,{init:function(){var e=this,i=this.chart;["afterShowResetZoom","afterDrilldown","drillupall"].forEach(function(t){e.addEvent(i,t,function(){e.updateProxyOverlays()})})},onChartUpdate:function(){var i=this.chart,n=this;i.mapNavButtons&&i.mapNavButtons.forEach(function(t,e){r(i,t.element),n.setMapNavButtonAttrs(t.element,"accessibility.zoom.mapZoom"+(e?"Out":"In"))})},setMapNavButtonAttrs:function(t,e){var i=this.chart;e=i.langFormat(e,{chart:i}),l(t,{tabindex:-1,role:"button","aria-label":e})},onChartRender:function(){this.updateProxyOverlays()},updateProxyOverlays:function(){var t=this.chart;a(this.drillUpProxyGroup),a(this.resetZoomProxyGroup),t.resetZoomButton&&this.recreateProxyButtonAndGroup(t.resetZoomButton,"resetZoomProxyButton","resetZoomProxyGroup",t.langFormat("accessibility.zoom.resetZoomButton",{chart:t})),t.drillUpButton&&this.recreateProxyButtonAndGroup(t.drillUpButton,"drillUpProxyButton","drillUpProxyGroup",t.langFormat("accessibility.drillUpButton",{chart:t,buttonText:t.getDrilldownBackText()}))},recreateProxyButtonAndGroup:function(t,e,i,n){a(this[i]),this[i]=this.addProxyGroup(),this[e]=this.createProxyButton(t,this[i],{"aria-label":n,tabindex:-1})},getMapZoomNavigation:function(){var t=this.keyCodes,e=this.chart,i=this;return new s(e,{keyCodeMap:[[[t.up,t.down,t.left,t.right],function(t){return i.onMapKbdArrow(this,t)}],[[t.tab],function(t,e){return i.onMapKbdTab(this,e)}],[[t.space,t.enter],function(){return i.onMapKbdClick(this)}]],validate:function(){return!!(e.mapZoom&&e.mapNavButtons&&e.mapNavButtons.length)},init:function(t){return i.onMapNavInit(t)}})},onMapKbdArrow:function(t,e){var i=this.keyCodes;return this.chart[e===i.up||e===i.down?"yAxis":"xAxis"][0].panStep(e===i.left||e===i.up?-1:1),t.response.success},onMapKbdTab:function(t,e){var i=this.chart,n=(t=t.response,(e=e.shiftKey)&&!this.focusedMapNavButtonIx||!e&&this.focusedMapNavButtonIx);return i.mapNavButtons[this.focusedMapNavButtonIx].setState(0),n?(i.mapZoom(),t[e?"prev":"next"]):(this.focusedMapNavButtonIx+=e?-1:1,e=i.mapNavButtons[this.focusedMapNavButtonIx],i.setFocusToElement(e.box,e.element),e.setState(2),t.success)},onMapKbdClick:function(t){return this.fakeClickEvent(this.chart.mapNavButtons[this.focusedMapNavButtonIx].element),t.response.success},onMapNavInit:function(t){var e=this.chart,i=e.mapNavButtons[0],n=e.mapNavButtons[1],i=0").replace(/</(h[1-7]|p|div|ul|ol|li|a|button)>/g,"").replace(/<(div|a|button) id="([a-zA-Z\-0-9#]*?)">/g,'<$1 id="$2">')}var s=l.doc,a=t.extend,c=t.format,d=t.pick,p=n.getAnnotationsInfoHTML,u=o.unhideChartElementFromAT,f=o.getChartTitle,g=o.getAxisDescription,m=r.addClass,y=r.setElAttrs,v=r.escapeStringForHTML,x=r.stripHTMLTagsFromString,b=r.getElement,w=r.visuallyHideElement;return l.Chart.prototype.getTypeDescription=function(t){var e=t[0],i=this.series&&this.series[0]||{},i={numSeries:this.series.length,numPoints:i.points&&i.points.length,chart:this,mapTitle:i.mapTitle};if(!e)return this.langFormat("accessibility.chartTypes.emptyChart",i);if("map"===e)return i.mapTitle?this.langFormat("accessibility.chartTypes.mapTypeDescription",i):this.langFormat("accessibility.chartTypes.unknownMap",i);if(1]*?>\s*<\/\1>/g,"")},defaultAfterChartFormatter:function(){var t=(i=this.chart).options.accessibility.screenReaderSection.afterChartFormat,e={endOfChartMarker:this.getFinishOfChartMarkerText()},i=l.i18nFormat(t,e,i);return h(v(i)).replace(/<(\w+)[^>]*?>\s*<\/\1>/g,"")},getLinkedDescription:function(){var t=this.linkedDescriptionElement;return x(t&&t.innerHTML||"")},getLongdescText:function(){var t=this.chart.options,e=(e=t.caption)&&e.text,i=this.getLinkedDescription();return t.accessibility.description||i||e||""},getTypeDescriptionText:function(){var t=this.chart;return t.types?t.options.accessibility.typeDescription||t.getTypeDescription(t.types):""},getDataTableButtonText:function(t){var e=this.chart;return'"},getSonifyButtonText:function(t){var e,i=this.chart;return!1===(null==(e=i.options.sonification)?void 0:e.enabled)?"":'"},getSubtitleText:function(){var t=this.chart.options.subtitle;return x(t&&t.text||"")},getFinishOfChartMarkerText:function(){var t=this.chart,e=t.langFormat("accessibility.screenReaderSection.endOfChartMarker",{chart:t});return'
'+e+"
"},onDataTableCreated:function(t){var e=this.chart;e.options.accessibility.enabled&&(this.viewDataTableButton&&this.viewDataTableButton.setAttribute("aria-expanded","true"),t.html=t.html.replace("{chartTitle}
{typeDescription}
{chartSubtitle}
{chartLongdesc}
{playAsSoundButton}
{viewTableButton}
{xAxisDescription}
{yAxisDescription}
{annotationsTitle}{annotationsList}
",afterChartFormat:"{endOfChartMarker}",axisRangeDateFormat:"%Y-%m-%d %H:%M:%S"},series:{describeSingleSeries:!1,pointDescriptionEnabledThreshold:200},point:{valueDescriptionFormat:"{index}. {xDescription}{separator}{value}."},landmarkVerbosity:"all",linkedDescription:'*[data-highcharts-chart="{index}"] + .highcharts-description',keyboardNavigation:{enabled:!0,focusBorder:{enabled:!0,hideBrowserFocusOutline:!0,style:{color:"#335cad",lineWidth:2,borderRadius:3},margin:2},order:["series","zoom","rangeSelector","legend","chartMenu"],wrapAround:!0,seriesNavigation:{skipNullPoints:!0,pointNavigationEnabledThreshold:!1}},announceNewData:{enabled:!1,minAnnounceInterval:5e3,interruptUser:!1}},legend:{accessibility:{enabled:!0,keyboardNavigation:{enabled:!0}}},exporting:{accessibility:{enabled:!0}}}}),e(t,"Accessibility/Options/LangOptions.js",[],function(){return{accessibility:{defaultChartTitle:"Chart",chartContainerLabel:". Highcharts interactive chart.",svgContainerLabel:"Interactive chart",drillUpButton:"{buttonText}",credits:"Chart credits: {creditsStr}",thousandsSep:",",svgContainerTitle:"",graphicContainerLabel:"",screenReaderSection:{beforeRegionLabel:"Chart screen reader information.",afterRegionLabel:"",annotations:{heading:"Chart annotations summary",descriptionSinglePoint:"{annotationText}. Related to {annotationPoint}",descriptionMultiplePoints:"{annotationText}. Related to {annotationPoint}{ Also related to, #each(additionalAnnotationPoints)}",descriptionNoPoints:"{annotationText}"},endOfChartMarker:"Finish of interactive chart."},sonification:{playAsSoundButtonText:"Play as sound, {chartTitle}",playAsSoundClickAnnouncement:"Play"},legend:{legendLabel:"Toggle series visibility",legendItem:"Hide {itemName}"},zoom:{mapZoomIn:"Zoom chart",mapZoomOut:"Zoom out chart",resetZoomButton:"Reset zoom"},rangeSelector:{minInputLabel:"Select start date.",maxInputLabel:"Select end date.",buttonText:"Select range {buttonText}"},table:{viewAsDataTableButtonText:"View as data table, {chartTitle}",tableSummary:"Table representation of chart."},announceNewData:{newDataAnnounce:"Updated data for chart {chartTitle}",newSeriesAnnounceSingle:"New data series: {seriesDesc}",newPointAnnounceSingle:"New data point: {pointDesc}",newSeriesAnnounceMultiple:"New data series in chart {chartTitle}: {seriesDesc}",newPointAnnounceMultiple:"New data point in chart {chartTitle}: {pointDesc}"},seriesTypeDescriptions:{boxplot:"Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile, and maximum.",arearange:"Arearange charts are line charts displaying a range between a lower and higher value for each point.",areasplinerange:"These charts are line charts displaying a range between a lower and higher value for each point.",bubble:"Bubble charts are scatter charts where each data point also has a size value.",columnrange:"Columnrange charts are column charts displaying a range between a lower and higher value for each point.",errorbar:"Errorbar series are used to display the variability of the data.",funnel:"Funnel charts are used to display reduction of data in stages.",pyramid:"Pyramid charts consist of a single pyramid with item heights corresponding to each point value.",waterfall:"A waterfall chart is a column chart where each column contributes towards a total end value."},chartTypes:{emptyChart:"Empty chart",mapTypeDescription:"Map of {mapTitle} with {numSeries} data series.",unknownMap:"Map of unspecified region with {numSeries} data series.",combinationChart:"Combination chart with {numSeries} data series.",defaultSingle:"Chart with {numPoints} data {#plural(numPoints, points, point)}.",defaultMultiple:"Chart with {numSeries} data series.",splineSingle:"Line chart with {numPoints} data {#plural(numPoints, points, point)}.",splineMultiple:"Line chart with {numSeries} lines.",lineSingle:"Line chart with {numPoints} data {#plural(numPoints, points, point)}.",lineMultiple:"Line chart with {numSeries} lines.",columnSingle:"Bar chart with {numPoints} {#plural(numPoints, bars, bar)}.",columnMultiple:"Bar chart with {numSeries} data series.",barSingle:"Bar chart with {numPoints} {#plural(numPoints, bars, bar)}.",barMultiple:"Bar chart with {numSeries} data series.",pieSingle:"Pie chart with {numPoints} {#plural(numPoints, slices, slice)}.",pieMultiple:"Pie chart with {numSeries} pies.",scatterSingle:"Scatter chart with {numPoints} {#plural(numPoints, points, point)}.",scatterMultiple:"Scatter chart with {numSeries} data series.",boxplotSingle:"Boxplot with {numPoints} {#plural(numPoints, boxes, box)}.",boxplotMultiple:"Boxplot with {numSeries} data series.",bubbleSingle:"Bubble chart with {numPoints} {#plural(numPoints, bubbles, bubble)}.",bubbleMultiple:"Bubble chart with {numSeries} data series."},axis:{xAxisDescriptionSingular:"The chart has 1 X axis displaying {names[0]}. {ranges[0]}",xAxisDescriptionPlural:"The chart has {numAxes} X axes displaying {#each(names, -1) }and {names[-1]}.",yAxisDescriptionSingular:"The chart has 1 Y axis displaying {names[0]}. {ranges[0]}",yAxisDescriptionPlural:"The chart has {numAxes} Y axes displaying {#each(names, -1) }and {names[-1]}.",timeRangeDays:"Range: {range} days.",timeRangeHours:"Range: {range} hours.",timeRangeMinutes:"Range: {range} minutes.",timeRangeSeconds:"Range: {range} seconds.",rangeFromTo:"Range: {rangeFrom} to {rangeTo}.",rangeCategories:"Range: {numCategories} categories."},exporting:{chartMenuLabel:"Chart menu",menuButtonLabel:"View chart menu",exportRegionLabel:"Chart menu"},series:{summary:{default:"{name}, series {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.",defaultCombination:"{name}, series {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.",line:"{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.",lineCombination:"{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.",spline:"{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.",splineCombination:"{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.",column:"{name}, bar series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bars, bar)}.",columnCombination:"{name}, series {ix} of {numSeries}. Bar series with {numPoints} {#plural(numPoints, bars, bar)}.",bar:"{name}, bar series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bars, bar)}.",barCombination:"{name}, series {ix} of {numSeries}. Bar series with {numPoints} {#plural(numPoints, bars, bar)}.",pie:"{name}, pie {ix} of {numSeries} with {numPoints} {#plural(numPoints, slices, slice)}.",pieCombination:"{name}, series {ix} of {numSeries}. Pie with {numPoints} {#plural(numPoints, slices, slice)}.",scatter:"{name}, scatter plot {ix} of {numSeries} with {numPoints} {#plural(numPoints, points, point)}.",scatterCombination:"{name}, series {ix} of {numSeries}, scatter plot with {numPoints} {#plural(numPoints, points, point)}.",boxplot:"{name}, boxplot {ix} of {numSeries} with {numPoints} {#plural(numPoints, boxes, box)}.",boxplotCombination:"{name}, series {ix} of {numSeries}. Boxplot with {numPoints} {#plural(numPoints, boxes, box)}.",bubble:"{name}, bubble series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bubbles, bubble)}.",bubbleCombination:"{name}, series {ix} of {numSeries}. Bubble series with {numPoints} {#plural(numPoints, bubbles, bubble)}.",map:"{name}, map {ix} of {numSeries} with {numPoints} {#plural(numPoints, areas, area)}.",mapCombination:"{name}, series {ix} of {numSeries}. Map with {numPoints} {#plural(numPoints, areas, area)}.",mapline:"{name}, line {ix} of {numSeries} with {numPoints} data {#plural(numPoints, points, point)}.",maplineCombination:"{name}, series {ix} of {numSeries}. Line with {numPoints} data {#plural(numPoints, points, point)}.",mapbubble:"{name}, bubble series {ix} of {numSeries} with {numPoints} {#plural(numPoints, bubbles, bubble)}.",mapbubbleCombination:"{name}, series {ix} of {numSeries}. Bubble series with {numPoints} {#plural(numPoints, bubbles, bubble)}."},description:"{description}",xAxisDescription:"X axis, {name}",yAxisDescription:"Y axis, {name}",nullPointValue:"No value",pointAnnotationsDescription:"{Annotation: #each(annotations). }"}}}}),e(t,"Accessibility/Options/DeprecatedOptions.js",[t["Core/Utilities.js"]],function(t){function l(t,e,i){for(var n,o=0;o