1/*! 2 * modernizr v3.11.2 3 * Build https://modernizr.com/download?-arrow-backgroundblendmode-backgroundcliptext-backgroundsize-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-borderimage-canvas-checked-contains-cssfilters-cssgradients-cssmask-csspositionsticky-dataset-ellipsis-es5-es5array-es5date-es5function-es5object-es5string-es5syntax-es5undefined-es6array-es6collections-es6math-es6number-es6object-es6string-fetch-filereader-filesystem-flexbox-formvalidation-generators-geolocation-hidden-hiddenscroll-history-htmlimports-ie8compat-inlinesvg-input-inputtypes-json-localstorage-lowbattery-mediaqueries-notification-opacity-picture-postmessage-progressbar_meter-promises-queryselector-scriptasync-scriptdefer-serviceworker-sessionstorage-shapes-smil-strictmode-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-webp-websqldatabase-webworkers-atrule-hasevent-prefixed-prefixedcss-prefixedcssvalue-printshiv-setclasses-testprop-teststyles-dontmin-cssclassprefix:mdz_ 4 * 5 * Copyright (c) 6 * Faruk Ates 7 * Paul Irish 8 * Alex Sexton 9 * Ryan Seddon 10 * Patrick Kettner 11 * Stu Cox 12 * Richard Herrera 13 * Veeck 14 15 * MIT License 16 */ 17!function(scriptGlobalObject,window,document,undefined){var tests=[],ModernizrProto={_version:"3.11.2",_config:{classPrefix:"mdz_",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout((function(){t(r[e])}),0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[];function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,i;for(var s in tests)if(tests.hasOwnProperty(s)){if(e=[],(t=tests[s]).name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;r<t.options.aliases.length;r++)e.push(t.options.aliases[r].toLowerCase());for(n=is(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)1===(i=e[o].split(".")).length?Modernizr[i[0]]=n:(Modernizr[i[0]]&&(!Modernizr[i[0]]||Modernizr[i[0]]instanceof Boolean)||(Modernizr[i[0]]=new Boolean(Modernizr[i[0]])),Modernizr[i[0]][i[1]]=n),classes.push((n?"":"no-")+i.join("-"))}}var docElement=document.documentElement,isSVG="svg"===docElement.nodeName.toLowerCase();function setClasses(e){var t=docElement.className,r=Modernizr._config.classPrefix||"";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var n=new RegExp("(^|\\s)"+r+"no-js(\\s|$)");t=t.replace(n,"$1"+r+"js$2")}Modernizr._config.enableClasses&&(e.length>0&&(t+=" "+r+e.join(" "+r)),isSVG?docElement.className.baseVal=t:docElement.className=t)}var omPrefixes="Moz O ms Webkit",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(" "):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var atRule=function(e){var t,r=prefixes.length,n=window.CSSRule;if(void 0===n)return undefined;if(!e)return!1;if((t=(e=e.replace(/^@/,"")).replace(/-/g,"_").toUpperCase()+"_RULE")in n)return"@"+e;for(var o=0;o<r;o++){var i=prefixes[o];if(i.toUpperCase()+"_"+t in n)return"@-"+i.toLowerCase()+"-"+e}return!1};function createElement(){return"function"!=typeof document.createElement?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,"http://www.w3.org/2000/svg",arguments[0]):document.createElement.apply(document,arguments)}ModernizrProto.atRule=atRule;var hasEvent=(needsFallback=!("onblur"in docElement),function(e,t){var r;return!!e&&(t&&"string"!=typeof t||(t=createElement(t||"div")),!(r=(e="on"+e)in t)&&needsFallback&&(t.setAttribute||(t=createElement("div")),t.setAttribute(e,""),r="function"==typeof t[e],t[e]!==undefined&&(t[e]=undefined),t.removeAttribute(e)),r)}),needsFallback;function contains(e,t){return!!~(""+e).indexOf(t)}ModernizrProto.hasEvent=hasEvent;var modElem={elem:createElement("modernizr")};Modernizr._q.push((function(){delete modElem.elem}));var mStyle={style:modElem.elem.style};function getBody(){var e=document.body;return e||((e=createElement(isSVG?"svg":"body")).fake=!0),e}function injectElementWithStyles(e,t,r,n){var o,i,s,a,d="modernizr",l=createElement("div"),c=getBody();if(parseInt(r,10))for(;r--;)(s=createElement("div")).id=n?n[r]:d+(r+1),l.appendChild(s);return(o=createElement("style")).type="text/css",o.id="s"+d,(c.fake?c:l).appendChild(o),c.appendChild(l),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),l.id=d,c.fake&&(c.style.background="",c.style.overflow="hidden",a=docElement.style.overflow,docElement.style.overflow="hidden",docElement.appendChild(c)),i=t(l,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=a,docElement.offsetHeight):l.parentNode.removeChild(l),!!i}function domToCSS(e){return e.replace(/([A-Z])/g,(function(e,t){return"-"+t.toLowerCase()})).replace(/^ms-/,"-ms-")}function computedStyle(e,t,r){var n;if("getComputedStyle"in window){n=getComputedStyle.call(window,e,t);var o=window.console;if(null!==n)r&&(n=n.getPropertyValue(r));else if(o)o[o.error?"error":"log"].call(o,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}else n=!t&&e.currentStyle&&e.currentStyle[r];return n}function nativeTestProps(e,t){var r=e.length;if("CSS"in window&&"supports"in window.CSS){for(;r--;)if(window.CSS.supports(domToCSS(e[r]),t))return!0;return!1}if("CSSSupportsRule"in window){for(var n=[];r--;)n.push("("+domToCSS(e[r])+":"+t+")");return injectElementWithStyles("@supports ("+(n=n.join(" or "))+") { #modernizr { position: absolute; } }",(function(e){return"absolute"===computedStyle(e,null,"position")}))}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,(function(e,t,r){return t+r.toUpperCase()})).replace(/^-/,"")}function testProps(e,t,r,n){if(n=!is(n,"undefined")&&n,!is(r,"undefined")){var o=nativeTestProps(e,r);if(!is(o,"undefined"))return o}for(var i,s,a,d,l,c=["modernizr","tspan","samp"];!mStyle.style&&c.length;)i=!0,mStyle.modElem=createElement(c.shift()),mStyle.style=mStyle.modElem.style;function u(){i&&(delete mStyle.style,delete mStyle.modElem)}for(a=e.length,s=0;s<a;s++)if(d=e[s],l=mStyle.style[d],contains(d,"-")&&(d=cssToDOM(d)),mStyle.style[d]!==undefined){if(n||is(r,"undefined"))return u(),"pfx"!==t||d;try{mStyle.style[d]=r}catch(e){}if(mStyle.style[d]!==l)return u(),"pfx"!==t||d}return u(),!1}Modernizr._q.unshift((function(){delete mStyle.style}));var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(" "):[];function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return!1===r?e[o]:is(n=t[e[o]],"function")?fnBind(n,r||t):n;return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+cssomPrefixes.join(i+" ")+i).split(" ");return is(t,"string")||is(t,"undefined")?testProps(s,t,n,o):testDOMProps(s=(e+" "+domPrefixes.join(i+" ")+i).split(" "),t,r)}ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf("@")?atRule(e):(-1!==e.indexOf("-")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,"pfx"))},prefixedCSS=ModernizrProto.prefixedCSS=function(e){var t=prefixed(e);return t&&domToCSS(t)},prefixedCSSValue=function(e,t){var r=!1,n=createElement("div").style;if(e in n){var o=domPrefixes.length;for(n[e]=t,r=n[e];o--&&!r;)n[e]="-"+domPrefixes[o]+"-"+t,r=n[e]}return""===r&&(r=!1),r};ModernizrProto.prefixedCSSValue=prefixedCSSValue;var testProp=ModernizrProto.testProp=function(e,t,r){return testProps([e],undefined,t,r)},testStyles=ModernizrProto.testStyles=injectElementWithStyles,html5,hasOwnProp,_hasOwnProperty;function addTest(e,t){if("object"==typeof e)for(var r in e)hasOwnProp(e,r)&&addTest(r,e[r]);else{var n=(e=e.toLowerCase()).split("."),o=Modernizr[n[0]];if(2===n.length&&(o=o[n[1]]),void 0!==o)return Modernizr;t="function"==typeof t?t():t,1===n.length?Modernizr[n[0]]=t:(!Modernizr[n[0]]||Modernizr[n[0]]instanceof Boolean||(Modernizr[n[0]]=new Boolean(Modernizr[n[0]])),Modernizr[n[0]][n[1]]=t),setClasses([(t&&!1!==t?"":"no-")+n.join("-")]),Modernizr._trigger(e,t)}return Modernizr}isSVG||function(e,t){var r,n,o=e.html5||{},i=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,s=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,a=0,d={};function l(e,t){var r=e.createElement("p"),n=e.getElementsByTagName("head")[0]||e.documentElement;return r.innerHTML="x<style>"+t+"</style>",n.insertBefore(r.lastChild,n.firstChild)}function c(){var e=f.elements;return"string"==typeof e?e.split(" "):e}function u(e){var t=d[e._html5shiv];return t||(t={},a++,e._html5shiv=a,d[a]=t),t}function p(e,r,o){return r||(r=t),n?r.createElement(e):(o||(o=u(r)),!(a=o.cache[e]?o.cache[e].cloneNode():s.test(e)?(o.cache[e]=o.createElem(e)).cloneNode():o.createElem(e)).canHaveChildren||i.test(e)||a.tagUrn?a:o.frag.appendChild(a));var a}function m(e){e||(e=t);var o=u(e);return!f.shivCSS||r||o.hasCSS||(o.hasCSS=!!l(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{dis
17play:block}mark{background:#FF0;color:#000}template{display:none}")),n||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(r){return f.shivMethods?p(r,e,t):t.createElem(r)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+c().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(f,t.frag)}(e,o),e}!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",r="hidden"in e,n=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return void 0===e.cloneNode||void 0===e.createDocumentFragment||void 0===e.createElement}()}catch(e){r=!0,n=!0}}();var f={elements:o.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==o.shivCSS,supportsUnknownElements:n,shivMethods:!1!==o.shivMethods,type:"default",shivDocument:m,createElement:p,createDocumentFragment:function(e,r){if(e||(e=t),n)return e.createDocumentFragment();for(var o=(r=r||u(e)).frag.cloneNode(),i=0,s=c(),a=s.length;i<a;i++)o.createElement(s[i]);return o},addElements:function(e,t){var r=f.elements;"string"!=typeof r&&(r=r.join(" ")),"string"!=typeof e&&(e=e.join(" ")),f.elements=r+" "+e,m(t)}};e.html5=f,m(t);var h,g=/^$|\b(?:all|print)\b/,y=!(n||(h=t.documentElement,void 0===t.namespaces||void 0===t.parentWindow||void 0===h.applyElement||void 0===h.removeNode||void 0===e.attachEvent));function v(e){for(var t,r=e.attributes,n=r.length,o=e.ownerDocument.createElement("html5shiv:"+e.nodeName);n--;)(t=r[n]).specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function A(e){var t,r,n=u(e),o=e.namespaces,i=e.parentWindow;if(!y||e.printShived)return e;function s(){clearTimeout(n._removeSheetTimer),t&&t.removeNode(!0),t=null}return void 0===o.html5shiv&&o.add("html5shiv"),i.attachEvent("onbeforeprint",(function(){s();for(var n,o,i,a=e.styleSheets,d=[],u=a.length,p=Array(u);u--;)p[u]=a[u];for(;i=p.pop();)if(!i.disabled&&g.test(i.media)){try{o=(n=i.imports).length}catch(e){o=0}for(u=0;u<o;u++)p.push(n[u]);try{d.push(i.cssText)}catch(e){}}d=function(e){for(var t,r=e.split("{"),n=r.length,o=RegExp("(^|[\\s,>+~])("+c().join("|")+")(?=[[\\s,>+~#.:]|$)","gi");n--;)(t=r[n]=r[n].split("}"))[t.length-1]=t[t.length-1].replace(o,"$1html5shiv\\:$2"),r[n]=t.join("}");return r.join("{")}(d.reverse().join("")),r=function(e){for(var t,r=e.getElementsByTagName("*"),n=r.length,o=RegExp("^(?:"+c().join("|")+")$","i"),i=[];n--;)t=r[n],o.test(t.nodeName)&&i.push(t.applyElement(v(t)));return i}(e),t=l(e,d)})),i.attachEvent("onafterprint",(function(){!function(e){for(var t=e.length;t--;)e[t].removeNode()}(r),clearTimeout(n._removeSheetTimer),n._removeSheetTimer=setTimeout(s,500)})),e.printShived=!0,e}f.type+=" print",f.shivPrint=A,A(t),"object"==typeof module&&module.exports&&(module.exports=f)}(void 0!==window?window:this,document), 18/*! 19{ 20 "name": "Canvas", 21 "property": "canvas", 22 "caniuse": "canvas", 23 "tags": ["canvas", "graphics"], 24 "polyfills": ["flashcanvas", "excanvas", "slcanvas", "fxcanvas"] 25} 26!*/ 27Modernizr.addTest("canvas",(function(){var e=createElement("canvas");return!(!e.getContext||!e.getContext("2d"))})), 28/*! 29{ 30 "name": "Geolocation API", 31 "property": "geolocation", 32 "caniuse": "geolocation", 33 "tags": ["media"], 34 "notes": [{ 35 "name": "MDN Docs", 36 "href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation" 37 }], 38 "polyfills": [ 39 "joshuabell-polyfill", 40 "webshims", 41 "geo-location-javascript", 42 "geolocation-api-polyfill" 43 ] 44} 45!*/ 46Modernizr.addTest("geolocation","geolocation"in navigator), 47/*! 48{ 49 "name": "Hidden Scrollbar", 50 "property": "hiddenscroll", 51 "authors": ["Oleg Korsunsky"], 52 "tags": ["overlay"], 53 "notes": [{ 54 "name": "Overlay Scrollbar description", 55 "href": "https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html#//apple_ref/doc/uid/TP40010355-SW39" 56 }, { 57 "name": "Video example of overlay scrollbars", 58 "href": "https://gfycat.com/FoolishMeaslyAtlanticsharpnosepuffer" 59 }] 60} 61!*/ 62Modernizr.addTest("hiddenscroll",(function(){return testStyles("#modernizr {width:100px;height:100px;overflow:scroll}",(function(e){return e.offsetWidth===e.clientWidth}
62))})), 63/*! 64{ 65 "name": "History API", 66 "property": "history", 67 "caniuse": "history", 68 "tags": ["history"], 69 "authors": ["Hay Kranen", "Alexander Farkas"], 70 "notes": [{ 71 "name": "W3C Spec", 72 "href": "https://www.w3.org/TR/html51/browsers.html#the-history-interface" 73 }, { 74 "name": "MDN Docs", 75 "href": "https://developer.mozilla.org/en-US/docs/Web/API/window.history" 76 }], 77 "polyfills": ["historyjs", "html5historyapi"] 78} 79!*/ 80Modernizr.addTest("history",(function(){var e=navigator.userAgent;return!!e&&((-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")||"file:"===location.protocol)&&(window.history&&"pushState"in window.history))})),_hasOwnProperty={}.hasOwnProperty,hasOwnProp=is(_hasOwnProperty,"undefined")||is(_hasOwnProperty.call,"undefined")?function(e,t){return t in e&&is(e.constructor.prototype[t],"undefined")}:function(e,t){return _hasOwnProperty.call(e,t)},ModernizrProto._l={},ModernizrProto.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout((function(){Modernizr._trigger(e,Modernizr[e])}),0)},ModernizrProto._trigger=function(e,t){if(this._l[e]){var r=this._l[e];setTimeout((function(){var e;for(e=0;e<r.length;e++)(0,r[e])(t)}),0),delete this._l[e]}},Modernizr._q.push((function(){ModernizrProto.addTest=addTest})), 81/*! 82{ 83 "name": "HTML Imports", 84 "property": "htmlimports", 85 "tags": ["html", "import"], 86 "polyfills": ["polymer-htmlimports"], 87 "notes": [{ 88 "name": "W3C Spec", 89 "href": "https://w3c.github.io/webcomponents/spec/imports/" 90 }, { 91 "name": "HTML Imports - #include for the web", 92 "href": "https://www.html5rocks.com/en/tutorials/webcomponents/imports/" 93 }] 94} 95!*/ 96Modernizr.addTest("htmlimports","import"in createElement("link")), 97/*! 98{ 99 "name": "IE8 compat mode", 100 "property": "ie8compat", 101 "authors": ["Erich Ocean"] 102} 103!*/ 104Modernizr.addTest("ie8compat",!window.addEventListener&&!!document.documentMode&&7===document.documentMode);var inputElem=createElement("input"),inputattrs="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),attrs={}; 105/*! 106{ 107 "name": "Input attributes", 108 "property": "input", 109 "tags": ["forms"], 110 "authors": ["Mike Taylor"], 111 "notes": [{ 112 "name": "WHATWG Spec", 113 "href": "https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary" 114 }], 115 "knownBugs": ["Some blackberry devices report false positive for input.multiple"] 116} 117!*/Modernizr.input=function(e){for(var t=0,r=e.length;t<r;t++)attrs[e[t]]=!!(e[t]in inputElem);return attrs.list&&(attrs.list=!(!createElement("datalist")||!window.HTMLDataListElement)),attrs}
117(inputattrs), 118/*! 119{ 120 "name": "Form input types", 121 "property": "inputtypes", 122 "caniuse": "forms", 123 "tags": ["forms"], 124 "authors": ["Mike Taylor"], 125 "polyfills": [ 126 "jquerytools", 127 "webshims", 128 "h5f", 129 "webforms2", 130 "nwxforms", 131 "fdslider", 132 "html5slider", 133 "galleryhtml5forms", 134 "jscolor", 135 "html5formshim", 136 "selectedoptionsjs", 137 "formvalidationjs" 138 ] 139} 140!*/ 141function(){for(var e,t,r,n=["search","tel","url","email","datetime","date","month","week","time","datetime-local","number","range","color"],o=0;o<n.length;o++)inputElem.setAttribute("type",e=n[o]),(r="text"!==inputElem.type&&"style"in inputElem)&&(inputElem.value="1)",inputElem.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&inputElem.style.WebkitAppearance!==undefined?(docElement.appendChild(inputElem),r=(t=document.defaultView).getComputedStyle&&"textfield"!==t.getComputedStyle(inputElem,null).WebkitAppearance&&0!==inputElem.offsetHeight,docElement.removeChild(inputElem)):/^(search|tel)$/.test(e)||(r=/^(url|email)$/.test(e)?inputElem.checkValidity&&!1===inputElem.checkValidity():"1)"!==inputElem.value)),Modernizr.addTest("inputtypes."+e,!!r)}(), 142/*! 143{ 144 "name": "JSON", 145 "property": "json", 146 "caniuse": "json", 147 "notes": [{ 148 "name": "MDN Docs", 149 "href": "https://developer.mozilla.org/en-US/docs/Glossary/JSON" 150 }], 151 "polyfills": ["json2"] 152} 153!*/ 154Modernizr.addTest("json","JSON"in window&&"parse"in JSON&&"stringify"in JSON), 155/*! 156{ 157 "name": "Notification", 158 "property": "notification", 159 "caniuse": "notifications", 160 "authors": ["Theodoor van Donge", "Hendrik Beskow"], 161 "notes": [{ 162 "name": "HTML5 Rocks Tutorial", 163 "href": "https://www.html5rocks.com/en/tutorials/notifications/quick/" 164 }, { 165 "name": "W3C Spec", 166 "href": "https://www.w3.org/TR/notifications/" 167 }, { 168 "name": "Changes in Chrome to Notifications API due to Service Worker Push Notifications", 169 "href": "https://developers.google.com/web/updates/2015/05/Notifying-you-of-notificiation-changes" 170 }], 171 "knownBugs": ["Possibility of false-positive on Chrome for Android if permissions we're granted for a website prior to Chrome 44."], 172 "polyfills": ["desktop-notify", "html5-notifications"] 173} 174!*/ 175Modernizr.addTest("notification",(function(){if(!window.Notification||!window.Notification.requestPermission)return!1;if("granted"===window.Notification.permission)return!0;try{new window.Notification("")}catch(e){if("TypeError"===e.name)return!1}return!0})); 176/*! 177{ 178 "name": "postMessage", 179 "property": "postmessage", 180 "caniuse": "x-doc-messaging", 181 "notes": [{ 182 "name": "W3C Spec", 183 "href": "https://www.w3.org/TR/webmessaging/#crossDocumentMessages" 184 }], 185 "polyfills": ["easyxdm", "postmessage-jquery"], 186 "knownBugs": ["structuredclones - Android 2&3 can not send a structured clone of dates, filelists or regexps"], 187 "warnings": ["Some old WebKit versions have bugs. Stick with object, array, number and pixeldata to be safe."] 188} 189!*/ 190var bool=!0;try{window.postMessage({toString:function(){bool=!1}},"*")}catch(e){}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}Modernizr.addTest("postmessage",new Boolean("postMessage"in window)),Modernizr.addTest("postmessage.structuredclones",bool), 191/*! 192{ 193 "name": "QuerySelector", 194 "property": "queryselector", 195 "caniuse": "queryselector", 196 "tags": ["queryselector"], 197 "authors": ["Andrew Betts (@triblondon)"], 198 "notes": [{ 199 "name": "W3C Spec", 200 "href": "https://www.w3.org/TR/selectors-api/#queryselectorall" 201 }], 202 "polyfills": ["css-selector-engine"] 203} 204!*/ 205Modernizr.addTest("queryselector","querySelector"in document&&"querySelectorAll"in document), 206/*! 207{ 208 "name": "ServiceWorker API", 209 "property": "serviceworker", 210 "caniuse": "serviceworkers", 211 "notes": [{ 212 "name": "ServiceWorkers Explained", 213 "href": "https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md" 214 }] 215} 216!*/ 217Modernizr.addTest("serviceworker","serviceWorker"in navigator), 218/*! 219{ 220 "name": "SVG", 221 "property": "svg", 222 "caniuse": "svg", 223 "tags": ["svg"], 224 "authors": ["Erik Dahlstrom"], 225 "polyfills": [ 226 "svgweb", 227 "raphael", 228 "amplesdk", 229 "canvg", 230 "svg-boilerplate", 231 "sie", 232 "dojogfx", 233 "fabricjs" 234 ] 235} 236!*/ 237Modernizr.addTest("svg",!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect), 238/*! 239{ 240 "name": "Low Battery Level", 241 "property": "lowbattery", 242 "tags": ["hardware", "mobile"], 243 "builderAliases": ["battery_level"], 244 "authors": ["Paul Sayre"], 245 "notes": [{ 246 "name": "MDN Docs", 247 "href": "https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery" 248 }] 249} 250!*/ 251Modernizr.addTest("lowbattery",(function(){var e=prefixed("battery",navigator);return!!(e&&!e.charging&&e.level<=.2)})), 252/*! 253{
254 "name": "CSS Background Blend Mode", 255 "property": "backgroundblendmode", 256 "caniuse": "css-backgroundblendmode", 257 "tags": ["css"], 258 "notes": [{ 259 "name": "CSS Blend Modes could be the next big thing in Web Design", 260 "href": "https://medium.com/@bennettfeely/css-blend-modes-could-be-the-next-big-thing-in-web-design-6b51bf53743a" 261 }, { 262 "name": "Demo", 263 "href": "https://bennettfeely.com/gradients/" 264 }] 265} 266!*/ 267Modernizr.addTest("backgroundblendmode",prefixed("backgroundBlendMode","text")),ModernizrProto.testAllProps=testAllProps, 268/*! 269{ 270 "name": "CSS Background Clip Text", 271 "property": "backgroundcliptext", 272 "authors": ["ausi"], 273 "tags": ["css"], 274 "notes": [{ 275 "name": "CSS Tricks Article", 276 "href": "https://css-tricks.com/image-under-text/" 277 }, { 278 "name": "MDN Docs", 279 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip" 280 }, { 281 "name": "Related Github Issue", 282 "href": "https://github.com/Modernizr/Modernizr/issues/199" 283 }] 284} 285!*/ 286Modernizr.addTest("backgroundcliptext",(function(){return testAllProps("backgroundClip","text")})), 287/*! 288{ 289 "name": "Background Position Shorthand", 290 "property": "bgpositionshorthand", 291 "caniuse": "css-background-offsets", 292 "tags": ["css"], 293 "builderAliases": ["css_backgroundposition_shorthand"], 294 "notes": [{ 295 "name": "MDN Docs", 296 "href": "https://developer.mozilla.org/en/CSS/background-position" 297 }, { 298 "name": "W3C Spec", 299 "href": "https://www.w3.org/TR/css3-background/#background-position" 300 }, { 301 "name": "Demo", 302 "href": "https://jsfiddle.net/Blink/bBXvt/" 303 }] 304} 305!*/ 306Modernizr.addTest("bgpositionshorthand",(function(){var e=createElement("a").style,t="right 10px bottom 10px";return e.cssText="background-position: "+t+";",e.backgroundPosition===t})), 307/*! 308{ 309 "name": "Background Position XY", 310 "property": "bgpositionxy", 311 "tags": ["css"], 312 "builderAliases": ["css_backgroundposition_xy"], 313 "authors": ["Allan Lei", "Brandom Aaron"], 314 "notes": [{ 315 "name": "Demo", 316 "href": "https://jsfiddle.net/allanlei/R8AYS/" 317 }, { 318 "name": "Adapted From", 319 "href": "https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js" 320 }] 321} 322!*/ 323Modernizr.addTest("bgpositionxy",(function(){return testAllProps("backgroundPositionX","3px",!0)&&testAllProps("backgroundPositionY","5px",!0)})), 324/*! 325{ 326 "name": "Background Repeat", 327 "property": ["bgrepeatspace", "bgrepeatround"], 328 "tags": ["css"], 329 "builderAliases": ["css_backgroundrepeat"], 330 "authors": ["Ryan Seddon"], 331 "notes": [{ 332 "name": "MDN Docs", 333 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat" 334 }, { 335 "name": "Test Page", 336 "href": "https://jsbin.com/uzesun/" 337 }, { 338 "name": "Demo", 339 "href": "https://jsfiddle.net/ryanseddon/yMLTQ/6/" 340 }] 341} 342!*/ 343Modernizr.addTest("bgrepeatround",testAllProps("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",testAllProps("backgroundRepeat","space")), 344/*! 345{ 346 "name": "Background Size", 347 "property": "backgroundsize", 348 "tags": ["css"], 349 "knownBugs": ["This will false positive in Opera Mini - https://github.com/Modernizr/Modernizr/issues/396"], 350 "notes": [{ 351 "name": "Related Issue", 352 "href": "https://github.com/Modernizr/Modernizr/issues/396" 353 }] 354} 355!*/ 356Modernizr.addTest("backgroundsize",testAllProps("backgroundSize","100%",!0)), 357/*! 358{ 359 "name": "Background Size Cover", 360 "property": "bgsizecover", 361 "tags": ["css"], 362 "builderAliases": ["css_backgroundsizecover"], 363 "notes": [{ 364 "name": "MDN Docs", 365 "href": "https://developer.mozilla.org/en/CSS/background-size" 366 }] 367} 368!*/ 369Modernizr.addTest("bgsizecover",testAllProps("backgroundSize","cover")), 370/*! 371{ 372 "name": "Border Image", 373 "property": "borderimage", 374 "caniuse": "border-image", 375 "polyfills": ["css3pie"], 376 "knownBugs": ["Android < 2.0 is true, but has a broken implementation"], 377 "tags": ["css"] 378} 379!*/ 380Modernizr.addTest("borderimage",testAllProps("borderImage","url() 1",!0)), 381/*! 382{ 383 "name": "CSS :checked pseudo-selector", 384 "caniuse": "css-sel3", 385 "property": "checked", 386 "tags": ["css"], 387 "notes": [{ 388 "name": "Related Github Issue", 389 "href": "https://github.com/Modernizr/Modernizr/pull/879" 390 }] 391} 392!*/ 393Modernizr.addTest("checked",(function(){return testStyles("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;
393display:block}",(function(e){var t=createElement("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft}))})), 394/*! 395{ 396 "name": "CSS text-overflow ellipsis", 397 "property": "ellipsis", 398 "caniuse": "text-overflow", 399 "polyfills": ["text-overflow"], 400 "tags": ["css"] 401} 402!*/ 403Modernizr.addTest("ellipsis",testAllProps("textOverflow","ellipsis"));var prefixes=ModernizrProto._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];ModernizrProto._prefixes=prefixes; 404/*! 405{ 406 "name": "CSS Supports", 407 "property": "supports", 408 "caniuse": "css-featurequeries", 409 "tags": ["css"], 410 "builderAliases": ["css_supports"], 411 "notes": [{ 412 "name": "W3C Spec (The @supports rule)", 413 "href": "https://dev.w3.org/csswg/css3-conditional/#at-supports" 414 }, { 415 "name": "Related Github Issue", 416 "href": "https://github.com/Modernizr/Modernizr/issues/648" 417 }, { 418 "name": "W3C Spec (The CSSSupportsRule interface)", 419 "href": "https://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface" 420 }] 421} 422!*/ 423var newSyntax="CSS"in window&&"supports"in window.CSS,oldSyntax="supportsCSS"in window;Modernizr.addTest("supports",newSyntax||oldSyntax), 424/*! 425{ 426 "name": "CSS Filters", 427 "property": "cssfilters", 428 "caniuse": "css-filters", 429 "polyfills": ["polyfilter"], 430 "tags": ["css"], 431 "builderAliases": ["css_filters"], 432 "notes": [{ 433 "name": "MDN Docs", 434 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/filter" 435 }] 436} 437!*/ 438Modernizr.addTest("cssfilters",(function(){if(Modernizr.supports)return testAllProps("filter","blur(2px)");var e=createElement("a");return e.style.cssText=prefixes.join("filter:blur(2px); "),!!e.style.length&&(document.documentMode===undefined||document.documentMode>9)})), 439/*! 440{ 441 "name": "Flexbox", 442 "property": "flexbox", 443 "caniuse": "flexbox", 444 "tags": ["css"], 445 "notes": [{ 446 "name": "The _new_ flexbox", 447 "href": "https://www.w3.org/TR/css-flexbox-1/" 448 }], 449 "warnings": [ 450 "A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect." 451 ] 452} 453!*/ 454Modernizr.addTest("flexbox",testAllProps("flexBasis","1px",!0)), 455/*! 456{ 457 "name": "CSS Gradients", 458 "caniuse": "css-gradients", 459 "property": "cssgradients", 460 "tags": ["css"], 461 "knownBugs": ["False-positives on webOS (https://github.com/Modernizr/Modernizr/issues/202)"], 462 "notes": [{ 463 "name": "Webkit Gradient Syntax", 464 "href": "https://webkit.org/blog/175/introducing-css-gradients/" 465 }, { 466 "name": "Linear Gradient Syntax", 467 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient" 468 }, { 469 "name": "W3C Spec", 470 "href": "https://drafts.csswg.org/css-images-3/#gradients" 471 }] 472} 473!*/ 474Modernizr.addTest("cssgradients",(function(){for(var e,t="background-image:",r="",n=0,o=prefixes.length-1;n<o;n++)e=0===n?"to ":"",r+=t+prefixes[n]+"linear-gradient("+e+"left top, #9f9, white);";Modernizr._config.usePrefixes&&(r+=t+"-webkit-gradient(linear,left top,right bottom,from(#9f9),to(white));");var i=createElement("a").style;return i.cssText=r,(""+i.backgroundImage).indexOf("gradient")>-1})), 475/*! 476{ 477 "name": "CSS Mask", 478 "caniuse": "css-masks", 479 "property": "cssmask", 480 "tags": ["css"], 481 "builderAliases": ["css_mask"], 482 "notes": [{ 483 "name": "Webkit blog on CSS Masks", 484 "href": "https://webkit.org/blog/181/css-masks/" 485 }, { 486 "name": "Safari Docs", 487 "href": "https://developer.apple.com/library/archive/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html" 488 }, { 489 "name": "CSS SVG mask", 490 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/mask" 491 }, { 492 "name": "Combine with clippaths for awesomeness", 493 "href": "https://web.archive.org/web/20150508193041/http://generic.cx:80/for/webkit/test.html" 494 }] 495} 496!*/ 497Modernizr.addTest("cssmask",testAllProps("maskRepeat","repeat-x",!0));var mq=(matchMedia=window.matchMedia||window.msMatchMedia,matchMedia?function(e){var t=matchMedia(e);return t&&t.matches||!1}:function(e){var t=!1;return injectElementWithStyles("@media "+e+" { #modernizr { position: absolute; } }",(function(e){t="absolute"===computedStyle(e,null,"position")})),t}),matchMedia;ModernizrProto.mq=mq, 498/*! 499{ 500 "name": "CSS Media Queries", 501 "caniuse": "css-mediaqueries", 502 "property": "mediaqueries", 503 "tags": ["css"], 504 "builderAliases": ["css_mediaqueries"] 505} 506!*/ 507Modernizr.addTest("mediaqueries",mq("only all")), 508/*! 509{ 510 "name": "CSS Opacity", 511 "caniuse": "css-opacity", 512 "property": "opacity", 513 "tags": ["css"] 514} 515!*/ 516Modernizr.addTest("opacity",(function(){var e=createElement("a").style;return e.cssText=prefixes.join("opacity:.55;"),/^0.55$/.test(e.opacity)})), 517/*! 518{ 519 "name": "CSS position: sticky", 520 "property": "csspositionsticky", 521 "tags": ["css"], 522 "builderAliases": ["css_positionsticky"], 523 "notes": [{ 524 "name": "Chrome bug report", 525 "href":"https://bugs.chromium.org/p/chromium/issues/detail?id=322972" 526 }], 527 "warnings": ["using position:sticky on anything but top aligned elements is buggy in Chrome < 37 and iOS <=7+"] 528} 529!*/ 530Modernizr.addTest("csspositionsticky",(function(){var e="position:",t=createElement("a").style;return t.cssText=e+prefixes.join("sticky;"+e).slice(0,-e.length),-1!==t.position.indexOf("sticky")})), 531/*! 532{ 533 "name": "CSS Shapes", 534 "property": "shapes", 535 "tags": ["css"], 536 "notes": [{ 537 "name": "W3C Spec", 538 "href": "https://www.w3.org/TR/css-shapes" 539 }, { 540 "name": "Examples from Adobe", 541 "href": "https://web.archive.org/web/20171230010236/http://webplatform.adobe.com:80/shapes" 542 }, { 543 "name": "Examples from CSS-Tricks",
544 "href": "https://css-tricks.com/examples/ShapesOfCSS/" 545 }] 546} 547!*/ 548Modernizr.addTest("shapes",testAllProps("shapeOutside","content-box",!0)), 549/*! 550{ 551 "name": "dataset API", 552 "caniuse": "dataset", 553 "property": "dataset", 554 "tags": ["dom"], 555 "builderAliases": ["dom_dataset"], 556 "authors": ["@phiggins42"] 557} 558!*/ 559Modernizr.addTest("dataset",(function(){var e=createElement("div");return e.setAttribute("data-a-b","c"),!(!e.dataset||"c"!==e.dataset.aB)})), 560/*! 561{ 562 "name": "[hidden] Attribute", 563 "property": "hidden", 564 "tags": ["dom"], 565 "notes": [{ 566 "name": "WHATWG Spec", 567 "href": "https://html.spec.whatwg.org/dev/interaction.html#the-hidden-attribute" 568 }, { 569 "name": "original implementation of detect code", 570 "href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L38" 571 }], 572 "polyfills": ["html5shiv"], 573 "authors": ["Ron Waldon (@jokeyrhyme)"] 574} 575!*/ 576Modernizr.addTest("hidden","hidden"in createElement("a")), 577/*! 578{ 579 "name": "picture Element", 580 "property": "picture", 581 "tags": ["elem"], 582 "authors": ["Scott Jehl", "Mat Marquis"], 583 "notes": [{ 584 "name": "WHATWG Spec", 585 "href": "https://html.spec.whatwg.org/multipage/embedded-content.html#embedded-content" 586 }, { 587 "name": "Relevant spec issue", 588 "href": "https://github.com/ResponsiveImagesCG/picture-element/issues/87" 589 }] 590} 591!*/ 592Modernizr.addTest("picture","HTMLPictureElement"in window), 593/*! 594{ 595 "name": "progress Element", 596 "caniuse": "progress", 597 "property": ["progressbar", "meter"], 598 "tags": ["elem"], 599 "builderAliases": ["elem_progress_meter"], 600 "authors": ["Stefan Wallin"] 601} 602!*/ 603Modernizr.addTest("progressbar",createElement("progress").max!==undefined),Modernizr.addTest("meter",createElement("meter").max!==undefined), 604/*! 605{ 606 "name": "ES5 Array", 607 "property": "es5array", 608 "notes": [{ 609 "name": "ECMAScript 5.1 Language Specification", 610 "href": "https://www.ecma-international.org/ecma-262/5.1/" 611 }], 612 "polyfills": ["es5shim"], 613 "authors": ["Ron Waldon (@jokeyrhyme)"], 614 "tags": ["es5"] 615} 616!*/ 617Modernizr.addTest("es5array",(function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)})), 618/*! 619{ 620 "name": "ES5 Date", 621 "property": "es5date", 622 "notes": [{ 623 "name": "ECMAScript 5.1 Language Specification", 624 "href": "https://www.ecma-international.org/ecma-262/5.1/" 625 }], 626 "polyfills": ["es5shim"], 627 "authors": ["Ron Waldon (@jokeyrhyme)"], 628 "tags": ["es5"] 629} 630!*/ 631Modernizr.addTest("es5date",(function(){var e=!1;try{e=!!Date.parse("2013-04-12T06:06:37.307Z")}catch(e){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&e)})), 632/*! 633{ 634 "name": "ES5 Function", 635 "property": "es5function", 636 "notes": [{ 637 "name": "ECMAScript 5.1 Language Specification", 638 "href": "https://www.ecma-international.org/ecma-262/5.1/" 639 }], 640 "polyfills": ["es5shim"], 641 "authors": ["Ron Waldon (@jokeyrhyme)"], 642 "tags": ["es5"] 643} 644!*/ 645Modernizr.addTest("es5function",(function(){return!(!Function.prototype||!Function.prototype.bind)})), 646/*! 647{ 648 "name": "ES5 Object", 649 "property": "es5object", 650 "notes": [{ 651 "name": "ECMAScript 5.1 Language Specification", 652 "href": "https://www.ecma-international.org/ecma-262/5.1/" 653 }], 654 "polyfills": ["es5shim", "es5sham"], 655 "authors": ["Ron Waldon (@jokeyrhyme)"], 656 "tags": ["es5"] 657} 658!*/ 659Modernizr.addTest("es5object",(function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)})), 660/*! 661{ 662 "name": "ES5 Strict Mode", 663 "property": "strictmode", 664 "caniuse": "use-strict", 665 "notes": [{ 666 "name": "ECMAScript 5.1 Language Specification", 667 "href": "https://www.ecma-international.org/ecma-262/5.1/" 668 }], 669 "authors": ["@kangax"], 670 "tags": ["es5"], 671 "builderAliases": ["es5_strictmode"] 672} 673!*/ 674Modernizr.addTest("strictmode",function(){"use strict";return!this}()), 675/*! 676{ 677 "name": "ES5 String", 678 "property": "es5string", 679 "notes": [{ 680 "name": "ECMAScript 5.1 Language Specification", 681 "href": "https://www.ecma-international.org/ecma-262/5.1/" 682 }], 683 "polyfills": ["es5shim"], 684 "authors": ["Ron Waldon (@jokeyrhyme)"], 685 "tags": ["es5"] 686} 687!*/ 688Modernizr.addTest("es5string",(function(){return!(!String.prototype||!String.prototype.trim)})), 689/*! 690{ 691 "name": "ES5 Syntax", 692 "property": "es5syntax", 693 "notes": [{ 694 "name": "ECMAScript 5.1 Language Specification", 695 "href": "https://www.ecma-international.org/ecma-262/5.1/" 696 }, { 697 "name": "original implementation of detect code", 698 "href": "https://kangax.github.io/compat-table/es5/" 699 }], 700 "authors": ["Ron Waldon (@jokeyrhyme)"], 701 "warnings": ["This detect uses `eval()`, so CSP may be a problem."], 702 "tags": ["es5"] 703} 704!*/ 705Modernizr.addTest("es5syntax",(function(){var value,obj,stringAccess,getter,setter,reservedWords,zeroWidthChars;try{return stringAccess=eval('"foobar"[3] === "b"'),getter=eval("({ get x(){ return 1 } }).x === 1"),eval("({ set x(v){ value = v; } }).x = 1"),setter=1===value,eval("obj = ({ if: 1 })"),reservedWords=1===obj.if,zeroWidthChars=eval("_ââ = true"),stringAccess&&getter&&setter&&reservedWords&&zeroWidthChars}catch(e){return!1}}
705)), 706/*! 707{ 708 "name": "ES5 Immutable Undefined", 709 "property": "es5undefined", 710 "notes": [{ 711 "name": "ECMAScript 5.1 Language Specification", 712 "href": "https://www.ecma-international.org/ecma-262/5.1/" 713 }, { 714 "name": "original implementation of detect code", 715 "href": "https://kangax.github.io/compat-table/es5/" 716 }], 717 "authors": ["Ron Waldon (@jokeyrhyme)"], 718 "tags": ["es5"] 719} 720!*/ 721Modernizr.addTest("es5undefined",(function(){var e,t;try{t=window.undefined,window.undefined=12345,e=void 0===window.undefined,window.undefined=t}catch(e){return!1}return e})), 722/*! 723{ 724 "name": "ES5", 725 "property": "es5", 726 "caniuse": "es5", 727 "notes": [{ 728 "name": "ECMAScript 5.1 Language Specification", 729 "href": "https://www.ecma-international.org/ecma-262/5.1/" 730 }], 731 "polyfills": ["es5shim", "es5sham"], 732 "authors": ["Ron Waldon (@jokeyrhyme)"], 733 "tags": ["es5"] 734} 735!*/ 736Modernizr.addTest("es5",(function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)})), 737/*! 738{ 739 "name": "ES6 Array", 740 "property": "es6array", 741 "notes": [{ 742 "name": "unofficial ECMAScript 6 draft specification", 743 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 744 }], 745 "polyfills": ["es6shim"], 746 "authors": ["Ron Waldon (@jokeyrhyme)"], 747 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 748 "tags": ["es6"] 749} 750!*/ 751Modernizr.addTest("es6array",!!(Array.prototype&&Array.prototype.copyWithin&&Array.prototype.fill&&Array.prototype.find&&Array.prototype.findIndex&&Array.prototype.keys&&Array.prototype.entries&&Array.prototype.values&&Array.from&&Array.of)), 752/*! 753{ 754 "name": "ES6 Arrow Functions", 755 "property": "arrow", 756 "authors": ["Vincent Riemer"], 757 "tags": ["es6"] 758} 759!*/ 760Modernizr.addTest("arrow",(function(){try{eval("()=>{}")}catch(e){return!1}return!0})), 761/*! 762{ 763 "name": "ES6 Collections", 764 "property": "es6collections", 765 "notes": [{ 766 "name": "unofficial ECMAScript 6 draft specification", 767 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 768 }], 769 "polyfills": ["es6shim", "weakmap"], 770 "authors": ["Ron Waldon (@jokeyrhyme)"], 771 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 772 "tags": ["es6"] 773} 774!*/ 775Modernizr.addTest("es6collections",!!(window.Map&&window.Set&&window.WeakMap&&window.WeakSet)), 776/*! 777{ 778 "name": "ES5 String.prototype.contains", 779 "property": "contains", 780 "authors": ["Robert Kowalski"], 781 "tags": ["es6"] 782} 783!*/ 784Modernizr.addTest("contains",is(String.prototype.contains,"function")), 785/*! 786{ 787 "name": "ES6 Generators", 788 "property": "generators", 789 "authors": ["Michael Kachanovskyi"], 790 "tags": ["es6"] 791} 792!*/ 793Modernizr.addTest("generators",(function(){try{new Function("function* test() {}")()}catch(e){return!1}return!0})), 794/*! 795{ 796 "name": "ES6 Math", 797 "property": "es6math", 798 "notes": [{ 799 "name": "unofficial ECMAScript 6 draft specification", 800 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 801 }], 802 "polyfills": ["es6shim"], 803 "authors": ["Ron Waldon (@jokeyrhyme)"], 804 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 805 "tags": ["es6"] 806} 807!*/ 808Modernizr.addTest("es6math",!!(Math&&Math.clz32&&Math.cbrt&&Math.imul&&Math.sign&&Math.log10&&Math.log2&&Math.log1p&&Math.expm1&&Math.cosh&&Math.sinh&&Math.tanh&&Math.acosh&&Math.asinh&&Math.atanh&&Math.hypot&&Math.trunc&&Math.fround)), 809/*! 810{ 811 "name": "ES6 Number", 812 "property": "es6number", 813 "notes": [{ 814 "name": "unofficial ECMAScript 6 draft specification", 815 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 816 }], 817 "polyfills": ["es6shim"], 818 "authors": ["Ron Waldon (@jokeyrhyme)"], 819 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 820 "tags": ["es6"] 821} 822!*/ 823Modernizr.addTest("es6number",!!(Number.isFinite&&Number.isInteger&&Number.isSafeInteger&&Number.isNaN&&Number.parseInt&&Number.parseFloat&&Number.isInteger(Number.MAX_SAFE_INTEGER)&&Number.isInteger(Number.MIN_SAFE_INTEGER)&&Number.isFinite(Number.EPSILON))), 824/*! 825{ 826 "name": "ES6 Object", 827 "property": "es6object", 828 "notes": [{ 829 "name": "unofficial ECMAScript 6 draft specification", 830 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 831 }], 832 "polyfills": ["es6shim"], 833 "authors": ["Ron Waldon (@jokeyrhyme)"], 834 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 835 "tags": ["es6"] 836} 837!*/ 838Modernizr.addTest("es6object",!!(Object.assign&&Object.is&&Object.setPrototypeOf)), 839/*! 840{ 841 "name": "ES6 Promises", 842 "property": "promises", 843 "caniuse": "promises", 844 "polyfills": ["es6promises"], 845 "authors": ["Krister Kari", "Jake Archibald"], 846 "tags": ["es6"], 847 "notes": [{ 848 "name": "The ES6 promises spec", 849 "href": "https://github.com/domenic/promises-unwrapping" 850 }, { 851 "name": "Chromium dashboard - ES6 Promises",
852 "href": "https://www.chromestatus.com/features/5681726336532480" 853 }, { 854 "name": "JavaScript Promises: an Introduction", 855 "href": "https://developers.google.com/web/fundamentals/primers/promises/" 856 }] 857} 858!*/ 859Modernizr.addTest("promises",(function(){return"Promise"in window&&"resolve"in window.Promise&&"reject"in window.Promise&&"all"in window.Promise&&"race"in window.Promise&&(new window.Promise((function(t){e=t})),"function"==typeof e);var e})), 860/*! 861{ 862 "name": "ES6 String", 863 "property": "es6string", 864 "notes": [{ 865 "name": "unofficial ECMAScript 6 draft specification", 866 "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/" 867 }], 868 "polyfills": ["es6shim"], 869 "authors": ["Ron Waldon (@jokeyrhyme)"], 870 "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."], 871 "tags": ["es6"] 872} 873!*/ 874Modernizr.addTest("es6string",!!(String.fromCodePoint&&String.raw&&String.prototype.codePointAt&&String.prototype.repeat&&String.prototype.startsWith&&String.prototype.endsWith&&String.prototype.includes)), 875/*! 876{ 877 "name": "File API", 878 "property": "filereader", 879 "caniuse": "fileapi", 880 "notes": [{ 881 "name": "W3C Working Draft Spec", 882 "href": "https://www.w3.org/TR/FileAPI/" 883 }], 884 "tags": ["file"], 885 "builderAliases": ["file_api"], 886 "knownBugs": ["Will fail in Safari 5 due to its lack of support for the standards defined FileReader object"] 887} 888!*/ 889Modernizr.addTest("filereader",!!(window.File&&window.FileList&&window.FileReader)), 890/*! 891{ 892 "name": "Filesystem API", 893 "property": "filesystem", 894 "caniuse": "filesystem", 895 "notes": [{ 896 "name": "W3C Spec", 897 "href": "https://www.w3.org/TR/file-system-api/" 898 }], 899 "authors": ["Eric Bidelman (@ebidel)"], 900 "tags": ["file"], 901 "builderAliases": ["file_filesystem"], 902 "knownBugs": ["The API will be present in Chrome incognito, but will throw an exception. See crbug.com/93417"] 903} 904!*/ 905Modernizr.addTest("filesystem",!!prefixed("requestFileSystem",window)), 906/*! 907{ 908 "name": "Form Validation", 909 "property": "formvalidation", 910 "tags": ["forms", "validation", "attribute"], 911 "builderAliases": ["forms_validation"] 912} 913!*/ 914Modernizr.addTest("formvalidation",(function(){var e=createElement("form");if(!("checkValidity"in e)||!("addEventListener"in e))return!1;if("reportValidity"in e)return!0;var t,r=!1;return Modernizr.formvalidationapi=!0,e.addEventListener("submit",(function(e){window.opera&&!window.operamini||e.preventDefault(),e.stopPropagation()}),!1),e.innerHTML='<input name="modTest" required="required" /><button></button>',testStyles("#modernizr form{position:absolute;top:-99999em}",(function(n){n.appendChild(e),(t=e.getElementsByTagName("input")[0]).addEventListener("invalid",(function(e){r=!0,e.preventDefault(),e.stopPropagation()}),!1),Modernizr.formvalidationmessage=!!t.validationMessage,e.getElementsByTagName("button")[0].click()})),r})), 915/*! 916{ 917 "name": "Webp", 918 "async": true, 919 "property": "webp", 920 "caniuse": "webp", 921 "tags": ["image"], 922 "builderAliases": ["img_webp"], 923 "authors": ["Krister Kari", "@amandeep", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"], 924 "notes": [{ 925 "name": "Webp Info", 926 "href": "https://developers.google.com/speed/webp/" 927 }, { 928 "name": "Chromium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input", 929 "href": "https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html" 930 }, { 931 "name": "Webp Lossless Spec", 932 "href": "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification" 933 }, { 934 "name": "Article about WebP support", 935 "href": "https://optimus.keycdn.com/support/webp-support/" 936 }, { 937 "name": "Chromium WebP announcement", 938 "href": "https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1" 939 }] 940} 941!*/ 942Modernizr.addAsyncTest((function(){var e=[{uri:"data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=",name:"webp"},{uri:"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==",name:"webp.alpha"},{uri:"data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA",name:"webp.animation"},{uri:"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=",name:"webp.lossless"}],t=e.shift();function r(e,t,r){var n=new Image;function o(t){var o=!(!t||"load"!==t.type)&&1===n.width;addTest(e,"webp"===e&&o?new Boolean(o):o),r&&r(t)}n.onerror=o,n.onload=o,n.src=t}r(t.name,t.uri,(function(t){if(t&&"load"===t.type)for(var n=0;n<e.length;n++)r(e[n].name,e[n].uri)}))})), 943/*! 944{ 945 "name": "Fetch API", 946 "property": "fetch", 947 "tags": ["network"], 948 "caniuse": "fetch", 949 "notes": [{ 950 "name": "WHATWG Spec", 951 "href": "https://fetch.spec.whatwg.org/" 952 }], 953 "polyfills": ["fetch"] 954} 955!*/ 956Modernizr.addTest("fetch","fetch"in window), 957/*! 958{ 959 "name": "script[async]", 960 "property": "scriptasync", 961 "caniuse": "script-async", 962 "tags": ["script"], 963 "builderAliases": ["script_async"], 964 "authors": ["Theodoor van Donge"] 965} 966!*/ 967Modernizr.addTest("scriptasync","async"in createElement("script")), 968/*! 969{ 970 "name": "script[defer]", 971 "property": "scriptdefer", 972 "caniuse": "script-defer", 973 "tags": ["script"], 974 "builderAliases": ["script_defer"], 975 "authors": ["Theodoor van Donge"], 976 "warnings": ["Browser implementation of the `defer` attribute vary: https://stackoverflow.com/questions/3952009/defer-attribute-chrome#answer-3982619"], 977 "knownBugs": ["False positive in Opera 12"] 978} 979!*/ 980Modernizr.addTest("scriptdefer","defer"in createElement("script")), 981/*! 982{ 983 "name": "Local Storage", 984 "property": "localstorage", 985 "caniuse": "namevalue-storage", 986 "tags": ["storage"], 987 "polyfills": [ 988 "joshuabell-polyfill", 989 "cupcake", 990 "storagepolyfill", 991 "amplifyjs", 992 "yui-cacheoffline" 993 ] 994} 995!*/ 996Modernizr.addTest("localstorage",(function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}
996)), 997/*! 998{ 999 "name": "Session Storage", 1000 "property": "sessionstorage", 1001 "tags": ["storage"], 1002 "polyfills": ["joshuabell-polyfill", "cupcake", "sessionstorage"] 1003} 1004!*/ 1005Modernizr.addTest("sessionstorage",(function(){var e="modernizr";try{return sessionStorage.setItem(e,e),sessionStorage.removeItem(e),!0}catch(e){return!1}})), 1006/*! 1007{ 1008 "name": "Web SQL Database", 1009 "property": "websqldatabase", 1010 "caniuse": "sql-storage", 1011 "tags": ["storage"] 1012} 1013!*/ 1014Modernizr.addTest("websqldatabase","openDatabase"in window), 1015/*! 1016{ 1017 "name": "SVG as an <img> tag source", 1018 "property": "svgasimg", 1019 "caniuse": "svg-img", 1020 "tags": ["svg"], 1021 "aliases": ["svgincss"], 1022 "authors": ["Chris Coyier"], 1023 "notes": [{ 1024 "name": "HTML5 Spec", 1025 "href": "https://www.w3.org/TR/html5/embedded-content-0.html#the-img-element" 1026 }] 1027} 1028!*/ 1029Modernizr.addTest("svgasimg",document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"));var toStringFn={}.toString; 1030/*! 1031{ 1032 "name": "SVG clip paths", 1033 "property": "svgclippaths", 1034 "tags": ["svg"], 1035 "notes": [{ 1036 "name": "Demo", 1037 "href": "http://srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg" 1038 }] 1039} 1040!*/Modernizr.addTest("svgclippaths",(function(){return!!document.createElementNS&&/SVGClipPath/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","clipPath")))})), 1041/*! 1042{ 1043 "name": "SVG filters", 1044 "property": "svgfilters", 1045 "caniuse": "svg-filters", 1046 "tags": ["svg"], 1047 "builderAliases": ["svg_filters"], 1048 "authors": ["Erik Dahlstrom"], 1049 "notes": [{ 1050 "name": "W3C Spec", 1051 "href": "https://www.w3.org/TR/SVG11/filters.html" 1052 }] 1053} 1054!*/ 1055Modernizr.addTest("svgfilters",(function(){var e=!1;try{e="SVGFEColorMatrixElement"in window&&2===SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(e){}return e})), 1056/*! 1057{ 1058 "name": "SVG foreignObject", 1059 "property": "svgforeignobject", 1060 "tags": ["svg"], 1061 "notes": [{ 1062 "name": "W3C Spec", 1063 "href": "https://www.w3.org/TR/SVG11/extend.html" 1064 }] 1065} 1066!*/ 1067Modernizr.addTest("svgforeignobject",(function(){return!!document.createElementNS&&/SVGForeignObject/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")))})), 1068/*! 1069{ 1070 "name": "Inline SVG", 1071 "property": "inlinesvg", 1072 "caniuse": "svg-html5", 1073 "tags": ["svg"], 1074 "notes": [{ 1075 "name": "Test page", 1076 "href": "https://paulirish.com/demo/inline-svg" 1077 }, { 1078 "name": "Test page and results", 1079 "href": "https://codepen.io/eltonmesquita/full/GgXbvo/" 1080 }], 1081 "polyfills": ["inline-svg-polyfill"], 1082 "knownBugs": ["False negative on some Chromia browsers."] 1083} 1084!*/ 1085Modernizr.addTest("inlinesvg",(function(){var e=createElement("div");return e.innerHTML="<svg/>","http://www.w3.org/2000/svg"===("undefined"!=typeof SVGRect&&e.firstChild&&e.firstChild.namespaceURI)})), 1086/*! 1087{ 1088 "name": "SVG SMIL animation", 1089 "property": "smil", 1090 "caniuse": "svg-smil", 1091 "tags": ["svg"], 1092 "notes": [{ 1093 "name": "W3C Spec", 1094 "href": "https://www.w3.org/AudioVideo/" 1095 }] 1096} 1097!*/ 1098Modernizr.addTest("smil",(function(){return!!document.createElementNS&&/SVGAnimate/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","animate")))})), 1099/*! 1100{ 1101 "name": "Web Workers", 1102 "property": "webworkers", 1103 "caniuse": "webworkers", 1104 "tags": ["performance", "workers"], 1105 "notes": [{ 1106 "name": "W3C Spec", 1107 "href": "https://www.w3.org/TR/workers/" 1108 }, { 1109 "name": "HTML5 Rocks Tutorial", 1110 "href": "https://www.html5rocks.com/en/tutorials/workers/basics/" 1111 }, { 1112 "name": "MDN Docs", 1113 "href": "https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers" 1114 }], 1115 "polyfills": ["fakeworker", "html5shims"] 1116} 1117!*/ 1118Modernizr.addTest("webworkers","Worker"in window),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();scriptGlobalObject.Modernizr=Modernizr}(window,window,document);
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.