function nse(e,t){return t?"func"==e?nse(`Unknown argument "${t[1]||""}" in function "${t[0]||""}" ${t[2]||""}`.trim()+"."):void 0:console.error(" Parsing failed: "+e)}function parseNovaSheets(){let sheets,inline;try{sheets=document.querySelectorAll('link[rel="novasheet" i], link[rel="novasheets" i]'),inline=document.querySelectorAll('[type="novasheet" i], [type="novasheets" i]')}catch(e){sheets=document.querySelectorAll('link[rel="novasheet"], link[rel="novasheets"]'),inline=document.querySelectorAll('[type="novasheet"], [type="novasheets"]')}let fn={full:[],rel:[]},sources=[];for(let e of sheets)fn.full.push(e.href),fn.rel.push(e.getAttribute("href"));let sc=[];for(let e in fn.full)try{let t=new XMLHttpRequest;t.open("GET",fn.full[e],!1),t.send();let s=t.responseText;sc.push(s.toString()),sources.push(fn.rel[e])}catch(t){nse(`File "${fn.rel[e]}" cannot be accessed.`)}for(let e of inline)sc.push(e.innerHTML),sources.push("inline");window.randomHash=window.randomHash||Math.random().toString().hash(6);for(let s in sc){let ln=sc[s].replace(/@(var|const|endvar)/g,"\n@$1").split("\n"),cso="";for(let e in ln)ln[e]=ln[e].replace(/^(.*?)\s\/\/.*$/,"$1").replace(/[\r\n]/g,"").trim(),cso+=ln[e];cso=cso.replace(/\s*@(var|const)[\s\S]*?((?=\s*@(var|const))|@endvar)/gm,"");let cv=[],lV=[],MAX_RECURSION=50,MAX_ARGUMENTS=10;for(let e in ln)if(ln[e].match(/^\s*@var\s/)){let t=ln[e].replace(/^\s*@var\s/,"").split("="),s=ln.slice(e),r;for(let e in s)if(s[e].match(/^\s*@endvar\s*$|^\s*@var\s/)&&0!=e){r=e;break}let n=t[0].trim(),a=(t[1]||"")+s.slice(1,r).join(" ");cv.push({line:Number(e),ending:Number(r),cn:a.trim(),name:n.split("|")[0].trim(),prm:n.split("|").slice(1)})}else ln[e].match(/^\s*@const\s*MAX_RECURSION\s/)?MAX_RECURSION=Number(ln[e].split("MAX_RECURSION")[1]):ln[e].match(/^\s*@const\s*MAX_ARGUMENTS\s/)&&(MAX_ARGUMENTS=Number(ln[e].split("MAX_ARGUMENTS")[1]));for(let e in cv)for(let t in cv[e].prm){let s=cv[e].prm[t].trim(),r=[t,cv[e].name,randomHash,s].join("~"),n=`$[${s}]`,a=`$(${r})`;cv[e].cn=cv[e].cn.split(n).join(a),lV.push(r)}let loop=0;for(;(cso.indexOf("$(")>-1||loop<2)&&loop++"\\s*(?:\\|\\s*([^"+(e||"")+"|$()]+)\\s*)?",r=s().repeat(MAX_ARGUMENTS),n=`\\$\\(\\s*(${t})\\s*${r}\\s*\\)`,a=`\\$\\(\\s*${t}${s("=").repeat(MAX_ARGUMENTS)}\\s*\\)`,l="$("+t;for(let e=1;e<=MAX_ARGUMENTS;e++)l+="|"+e+"=$"+e;cso=cso.replace(RegExp(a),l+")");let c=cso.match(RegExp(n));if(!c)continue;let o="\\$\\(\\s*"+t+"[^$()]*?\\)";cso=cso.replace(RegExp(o),cv[e].cn);for(let e=0;e(Array.isArray(t)||(t=Array(s||MAX_ARGUMENTS).fill(t||"[^|)]*?")),RegExp(`\\$\\(\\s*${e}\\s*(?:\\|(\\s*${t.join("))?\\s*(?:\\|(\\s*")}))?\\s*\\)`,"g")),ga=(e,t)=>{let s=e.replace(/\$\((.*)\)/,"$1").split("|");return t?s[t]&&s[t].trim():s.join("|").replace(/\s*\|\s*/g,"|").split("|").splice(1)},nm="[0-9]*(?:\\.[0-9]*)?",nmr="\\s*(?:0x|0b|0o)?(?:[0-9]*[.])?[0-9]+\\s*",snr="\\s*[+-]?\\s*(?:0x|0b|0o)?(?:[0-9]*[.])?[0-9]+\\s*",lur="(cm|mm|ft|in)",mr=e=>"("+nmr+")\\s*"+e.er()+"\\s*("+nmr+")\\s*",mrb=e=>"\\(\\s*"+mr(e)+"\\s*\\)\\s*",pM=(ops,b)=>{for(let op of ops){cso=cso.replace(RegExp(nmr+"[Ee][+-]?"+nmr),e=>{let t=e.split(/[Ee]/);return(Number(t[0])*10**Number(t[1])).toFixed(20).replace(/\.?0+$/,"")}).replace(/(?:\+|--)+([.0-9]+)/,"+$1").replace(/(?:\+-|-\+)+(?:\++)?([.0-9]+)/,"-$1").replace(RegExp(nmr+lur),e=>{switch((e=e.split(RegExp(lur)).splice(0,2))[1]){case"cm":return e[0]/100+"m";case"mm":return e[0]/1e3+"m";case"ft":return.3048*e[0]+"m";case"in":return.0254*e[0]+"m"}}).replace(RegExp(nmr+"m\\s*(\\*\\*|^|/|\\*|\\+|-)"+nmr+"(?=m[^m])"),e=>e.replace(/m/g,""));let regex=b?mrb(op[0]):mr(op[0]);Array.isArray(op)||(op=[op,op]);let nums=cso.match(RegExp(regex));if(!nums)continue;let rs=eval(`Number(${nums[1]}) ${op[1]} Number(${nums[2]})`);nums&&(cso=cso.replace(RegExp(regex),rs))}};for(let e=0;ega(e,1)%ga(e,2)).replace(nsf("@min",nm),e=>Math.min(...ga(e))).replace(nsf("@max",nm),e=>Math.max(...ga(e))).replace(nsf("@sin",nm,1),e=>Math.sin(ga(e,1))).replace(nsf("@asin",nm,1),e=>Math.asin(ga(e,1))).replace(nsf("@cos",nm,1),e=>Math.cos(ga(e,1))).replace(nsf("@acos",nm,1),e=>Math.acos(ga(e,1))).replace(nsf("@tan",nm,1),e=>Math.tan(ga(e,1))).replace(nsf("@atan",nm,1),e=>Math.atan(ga(e,1))).replace(nsf("@abs",nm,1),e=>Math.abs(ga(e,1))).replace(nsf("@floor",nm,1),e=>Math.floor(ga(e,1))).replace(nsf("@ceil",nm,1),e=>Math.ciel(ga(e,1))).replace(nsf("@percent",nm,1),e=>100*Number(ga(e,1))+"%").replace(nsf("@log",nm,1),e=>Math.log(ga(e,1))).replace(nsf("@root",nm,2),e=>Math.pow(ga(e,2),1/ga(e,1))).replace(nsf("@round",nm,2),e=>{let t=Number(ga(e,1))+Number.EPSILON,s=ga(e,2)||0;return Math.round(t*10**s)/10**s}).replace(nsf("@clamp",nm,3),e=>{let t=ga(e,1),s=ga(e,2),r=ga(e,3);return r=r?r:t}).replace(nsf("@degrees",nm+"\\s*(deg|rad|grad)",1),e=>{let t=ga(e,1),s=Number(t.replace(/[^-+.0-9]+/,""));return t.includes("rad")?s*Math.PI/180:t.includes("grad")?10*s/9:s}).replace(nsf("@radians",nm+"\\s*(deg|rad|grad)",1),e=>{let t=ga(e,1),s=Number(t.replace(/[^-+.0-9]+/,""));return t.includes("deg")?s/Math.PI*180:t.includes("grad")?s/Math.PI*200:s}).replace(nsf("@gradians",nm+"\\s*(deg|rad|grad)",1),e=>{let t=ga(e,1),s=Number(t.replace(/[^-+.0-9]+/,""));return t.includes("deg")?.9*s:t.includes("rad")?s*Math.PI/200:s}),cso=cso.replace(nsf("@encode"),e=>encodeURIComponent(ga(e,1))).replace(nsf("@replace"),e=>ga(e,1).replace(ga(e,2),ga(e,3))).replace(nsf("@length"),e=>ga(e,1).length),cso=cso.replace(nsf("@color"),e=>{let t=ga(e,1),s=ga(e,2)||0,r=ga(e,3)||0,n=ga(e,4)||0,a=ga(e,5)||0;return"hash"===t|"#"===t?s?((s=Math.abs(Math.round(s.replace("#",""))).toString()).length<3&&(s=s.padStart(3,0)),5===s.length&&(s=s.padStart(6,0)),7===s.length&&(s=s.padStart(8,0)),"#"+s):"#000":["rgb","hsl"].includes(t)?`${t}(${s}, ${r}, ${n})`:["rgba","hsla"].includes(t)?`${t}(${s}, ${r}, ${n}, ${a})`:void 0}).replace(nsf("@colorpart"),e=>{let t=ga(e,1),s=ga(e,2)||0,r=[];const n=(e,t)=>Number("0x"+e.substr(t,2)).toString();if(s.startsWith("#")){let e=s.replace("#","");3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+"00"),4===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),6===e.length&&(e=e.repeat(2)+"00"),r=[n(e,0),n(e,2),n(e,4),n(e,6)]}else r=s.replace(/^\s*...a?/,"").split(",");return s.startsWith("#")||s.startsWith("rgb")?["red","r"].includes(t)?r[0]:["green","g"].includes(t)?r[1]:["blue","b"].includes(t)?r[2]:["alpha","a"].includes(t)?r[3]:(nse("func",["colorpart",t,'of color type "rgb"/"rgba"/"#"']),s):s.startsWith("hsl")?["hue","h"].includes(t)?r[0]:["saturation","s"].includes(t)?r[1]:["lightness","l"].includes(t)?r[2]:["alpha","a"].includes(t)?r[3]:(nse("func",["colorpart",t,'of color type "hsl"/"hsla"']),s):(nse("func",["colorpart",t,"of unknown color type"]),s)});const pl=arg=>{for(let e=0;e").replace(/</g,"<").replace(/\bor\b/gi,"||").replace(/\band\b/gi,"&&").replace(/\bnot\b/gi,"!").replace(/(.+?)\bnor\b(.+)?/gi,"!($1) && !($2)").replace(/(.+?)\bnand\b(.+)?/gi,"!($1) || !($2)").replace(/(.+?)\bxor\b(.+)?/gi,"($1 && !($2)) || (!($1) && $2)").replace(/(.+?)\bxnor\b(.+)?/gi,"$1 == $2").replace(/(?!=)(!?)=(==)?(?!=)/g,"$1$2==");return arg.match(/(<|<=|>|>=|==|!=|&|\||!)/)&&(arg=eval(arg)),["false","undefined","null","NaN",""].includes(arg)&&(arg=!1),arg},lr=e=>`(${snr})\\s*(${e})\\s*(${snr})`;cso=cso.replace(nsf("@bitwise"),args=>{let x=[...ga(args)].join("|");for(let i=0;ieval("~"+val.replace(/(~|!|not)/,""))).replace(RegExp(lr("or|\\|")),val=>{let[a,b]=val.split(/or|\|/);return eval(`(${a}) | (${b})`)}).replace(RegExp(lr("nor")),val=>{let[a,b]=val.split(/nor/);return eval(`~ ( (${a}) | (${b}) )`)}).replace(RegExp(lr("and|&")),val=>{let[a,b]=val.split(/and|&/);return eval(`(${a}) & (${b})`)}).replace(RegExp(lr("nand")),val=>{let[a,b]=val.split(/nand/);return eval(`~( (${a}) & (${b}) )`)}).replace(RegExp(lr("xor")),val=>{let[a,b]=val.split(/xor/);return eval(`(${a}) ^ ( ${b})`)}).replace(RegExp(lr("xnor")),val=>{let[a,b]=val.split(/xnor/);return eval(`~( (${a}) ^ (${b}) )`)});return x}).replace(nsf("@boolean"),e=>pl(ga(e,1))).replace(nsf("@if"),e=>pl(ga(e,1))?ga(e,2):ga(e,3))}if(cso=cso.replace(/\$\(.+?\)/g,e=>e.includes("static")?e:"").replace(/@endvar/g,"").replace(/(\s*;)+/g,";").replace(/\s+/g," ").replace(/} */g,"}\n").replace(/\n$/,""),document.querySelectorAll(`[data-hash="${cso.hash()}"]`).length)break;let se=document.createElement("style");se.innerHTML="\n"+cso+"\n",se.dataset.hash=cso.hash(),se.dataset.source=sources[s],(document.head||document.body).appendChild(se)}}String.prototype.hash=function(e){let t=0;for(let e=0;e