PageSourceSearch

https://www.todetect.net/_next/static/chunks/1388.06e40012e5bd7be1.js

js todetect.net collected 2026-10-04 21:10:26 UTC 164,460 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1388,1842],{13793:(e,a,t)=>{t.d(a,{Q:()=>n,o:()=>o});let o=()=>{let e=e=>{let a=[],t=e.match(/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/g);t&&a.push(...t);let o=e.match(/([0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}){2,7}|::[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}){0,6}|[0-9a-fA-F]{1,4}::[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}){0,5}|[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}){0,6}::)/g);return o&&a.push(...o),a},a=(a,t)=>new Promise(o=>{let n=new t({iceServers:[{urls:a.urls}]}),i=[],r=!1,l=()=>{r||(r=!0,clearTimeout(s),n.close(),o(Array.from(new Set(i))))},s=setTimeout(()=>{console.warn("服务器 ".concat(a.name," 检测超时")),l()},8e3);n.onicecandidate=a=>{if(a.candidate){let t=e(a.candidate.candidate);t.length>0&&t.forEach(e=>{i.includes(e)||i.push(e)})}else l()},n.onicegatheringstatechange=()=>{"complete"!==n.iceGatheringState||r||l()};try{n.createDataChannel("test"),n.createOffer().then(e=>n.setLocalDescription(e)).catch(e=>{console.error("服务器 ".concat(a.name," createOffer失败:"),e),l()})}catch(e){console.error("服务器 ".concat(a.name," 初始化失败:"),e),l()}});return{connectionWebRTC:async e=>{let t=window;if(!window.RTCPeerConnection&&!(null==t?void 0:t.webkitRTCPeerConnection)&&!(null==t?void 0:t.mozRTCPeerConnection))return{ipList:[]};let o=window.RTCPeerConnection||t.webkitRTCPeerConnection||t.mozRTCPeerConnection,n=[],i=[];for(let t of e)i.push(a(t,o));let r=await Promise.allSettled(i);for(let a=0;a<r.length;a++){let t=e[a],o=r[a];if("fulfilled"===o.status){let e=Array.from(new Set(o.value));n.push({name:t.name,ip:(null==e?void 0:e[0])||void 0,urls:t.urls})}else console.error("服务器 ".concat(t.name," 检测出错:"),o.reason),n.push({name:t.name,ip:void 0,urls:t.urls})}return{ipList:n}}}},n=(e,a)=>{let t=a.filter(e=>e);return 0===t.length||t.every(a=>a===e)}},15068:(e,a,t)=>{t.d(a,{r:()=>o});let o=[{name:"XiaoMi",urls:"stun:stun.miwifi.com"},{name:"QQ",urls:"stun:stun.qq.com"},{name:"bilibili",urls:"stun:hw-v2-web-player-tracker.biliapi.net"},{name:"smartgslb",urls:"stun:stun.smartgslb.com:19302"},{name:"Google 1",urls:"stun:stun.l.google.com:19302"},{name:"Google 2",urls:"stun:stun2.l.google.com:19302"},{name:"Google 3",urls:"stun:stun3.l.google.com:19302"},{name:"Google 4",urls:"stun:stun4.l.google.com:19302"},{name:"Nextcloud",urls:"stun:stun.nextcloud.com:443"},{name:"Cloudflare",urls:"stun:stun.cloudflare.com"},{name:"STUNTMAN",urls:"stun:stunserver.stunprotocol.org:3478"},{name:"freeSTUN",urls:"stun:freestun.net:5350"},{name:"Twilio",urls:"stun:global.stun.twilio.com"},{name:"Twilio 2",urls:"stun:jp1.stun.twilio.com"},{name:"Twilio 3",urls:"stun:sg1.stun.twilio.com"},{name:"Twilio 4",urls:"stun:us1.stun.twilio.com"},{name:"syncthing",urls:"stun:stun.syncthing.net"}]},20151:(e,a,t)=>{t.r(a),t.d(a,{ModuleInfoUtil:()=>m});var o=t(4317),n=t(49662),i=t(15068),r=t(13793),l=t(27956),s=t(32815);class c{static distance(e,a){let t=e.x-a.x,o=e.y-a.y;return Math.sqrt(t*t+o*o)}static getGeoDistance(e,a){let t=e=>e*Math.PI/180,o=t(a.latitude-e.latitude),n=t(a.longitude-e.longitude),i=n*Math.cos((t(e.latitude)+t(a.latitude))/2);return 6371e3*Math.sqrt(i*i+o*o)}static getMode(e){let a,t={},o=0;for(let n of e)t[n]=(t[n]||0)+1,t[n]>o&&(o=t[n],a=n);return a}}class d{static getFormattedDateInTimezone(e){var a,t,o,n,i,r,l;let s=new Date,c=new Intl.DateTimeFormat("en-US",{weekday:"short",year:"numeric",month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZone:e,timeZoneName:"short"}).formatToParts(s),d=null==(a=c.find(e=>"weekday"===e.type))?void 0:a.value,u=null==(t=c.find(e=>"month"===e.type))?void 0:t.value,h=null==(o=c.find(e=>"day"===e.type))?void 0:o.value,g=null==(n=c.find(e=>"year"===e.type))?void 0:n.value,m=null==(i=c.find(e=>"hour"===e.type))?void 0:i.value,S=null==(r=c.find(e=>"minute"===e.type))?void 0:r.value,p=null==(l=c.find(e=>"second"===e.type))?void 0:l.value,f=(()=>{let a=new Date(s.toLocaleString("en-US",{timeZone:"UTC"})),t=(new Date(s.toLocaleString("en-US",{timeZone:e})).getTime()-a.getTime())/6e4,o=Math.floor(Math.abs(t)/60).toString().padStart(2,"0"),n=(Math.abs(t)%60).toString().padStart(2,"0"),i=t>=0?"+":"-";
1return"GMT".concat(i).concat(o).concat(n)})();return"".concat(d," ").concat(u," ").concat(h," ").concat(g," ").concat(m,":").concat(S,":").concat(p," ").concat(f," (").concat(e,")")}}var u=t(51352),h=t(73145),g=t(22155);class m{static async getOperatingSystemBrowserInfoAsync(){var e,a;let t=new u.UAParser(navigator.userAgent),o="userAgentData"in navigator,n=t.getOS(),i=t.getCPU(),r=t.getBrowser(),l=t.getDevice(),s="mobile"===l.type,c=o&&await navigator.userAgentData.getHighEntropyValues(["brands","mobile","architecture","bitness","model","platform","platformVersion","uaFullVersion","wow64","fullVersionList"]),d=o?c.brands:[{brand:r.name,version:r.version}],h=o?c.architecture:/arm64/.test(navigator.userAgent)?"arm64":"x86",g=o?c.bitness:/WOW64|Win64|x86_64|x64|arm64/.test(h)?"64":"32",m=o?c.uaFullVersion:r.version||"",S=o?c.platformVersion:n.version||"",p=o?c.model:null!=(e=l.model)?e:" ",f=o?c.wow64:"Windows"===n.name&&i.architecture.includes("64"),C=o?c.fullVersionList:[{brand:r.name,version:r.version}];return{browser:r,browserVersion:m,platform:null!=(a=n.name)?a:" ",platformVersion:S,mobile:s,brands:d,bitness:g,architecture:h,model:p,wow64:f,fullVersionList:C}}static async getClientHintsFromJSAPI(){if(!("userAgentData"in navigator))return{apiSupport:!1,brands:null,mobile:null,architecture:null,bitness:null,model:null,platform:null,platformVersion:null,uaFullVersion:null,wow64:null,fullVersionList:null};try{let e=navigator.userAgentData,a={brands:e.brands||null,mobile:e.mobile||null,platform:e.platform||null},t=await e.getHighEntropyValues(["architecture","bitness","model","platformVersion","uaFullVersion","wow64","fullVersionList"]);return{apiSupport:!0,brands:a.brands,mobile:a.mobile,platform:a.platform,architecture:t.architecture||null,bitness:t.bitness||null,model:t.model||null,platformVersion:t.platformVersion||null,uaFullVersion:t.uaFullVersion||null,wow64:t.wow64||null,fullVersionList:t.fullVersionList||null}}catch(e){return console.error("Failed to get Client Hints:",e),{apiSupport:!1,brands:null,mobile:null,architecture:null,bitness:null,model:null,platform:null,platformVersion:null,uaFullVersion:null,wow64:null,fullVersionList:null}}}static getCpuCoreCount(){return"number"==typeof navigator.hardwareConcurrency?navigator.hardwareConcurrency:void 0}static async getFontListAsync(){return await Promise.resolve((0,g.L)().join(", "))}static async getOSInfo(){let e=await this.getOperatingSystemBrowserInfoAsync();if("Windows"===e.platform)if(e.platformVersion>="13.0.0")return{name:"Windows",version:"11"};else if(e.platformVersion>="12.0.0")return{name:"Windows",version:"10"};else return{name:"Windows",version:e.platformVersion};return{name:e.platform,version:e.platformVersion}}static getBrowserVersion(){return new u.UAParser(navigator.userAgent).getResult().browser.version}static getBrowserName(){return new u.UAParser(navigator.userAgent).getResult().browser.name}static getWebPluginList(){let e=[];
1if("object"==typeof navigator.plugins)for(let a=0;a<navigator.plugins.length;a++){let t=navigator.plugins[a];e.push(t.name)}return e}static getLocalLanguage(){return"string"==typeof navigator.language?navigator.language:"object"==typeof navigator.languages&&navigator.languages.length>0?navigator.languages[0]:void 0}static getModuleItemByList(e,a,t){return(0,o.Lt)(e,a,t)}static getLevelByScore(e){if(e>=0&&e<=20)return"great";if(e>20&&e<=40)return"good";if(e>40&&e<=60)return"normal";if(e>60&&e<=80)return"bad";if(e>80&&e<=100)return"veryBad"}static addModuleItemToList(e,a,t){return(0,o.wu)(e,a,t)}static async computeModuleInfoListAsync(e,a,t,o,i,r,l){let s=i.ip||"-",c=s&&/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(s)?i.ipInfo||await (0,n.QY)(s):void 0;m.getModuleItemByList(a,"ipAddress","ip").value=s,m.checkWebRTCAsync(e,a,t,o);let d=[];d.push(m.setIpModuleInfoAsync(a,t,i,c)),d.push(m.setIpQualityModuleInfoAsync(s,a,t,r)),d.push(m.setHardwareModuleInfoAsync(a,t)),d.push(m.setBrowserModuleInfoAsync(a,t)),d.push(m.setSoftwareModuleInfoAsync(s,a,t,i,c)),(null==l?void 0:l.skipWasm)||d.push(m.setFraudScoreModuleInfoAsync(a,t,i)),await Promise.all(d),t([...a])}static async setCheckIpModuleInfoAsync(e,a,t){let o=await (0,n.O9)(e);m.getModuleItemByList(a,"ipRiskDetection","fraudLevel").value=(null==o?void 0:o.ResData)?o.ResData<=20?"lowest":o.ResData<=40?"low":o.ResData<=60?"medium":o.ResData<=80?"high":"highest":0}static getDoNotTrackStatus(){return void 0!=navigator.doNotTrack?navigator.doNotTrack:void 0!=window.doNotTrack?window.doNotTrack:void 0!=navigator.msDoNotTrack?navigator.msDoNotTrack:void 0}static checkInternationalizationAPI(){var e;if("undefined"!=typeof Intl&&"function"==typeof Intl.DateTimeFormat)return null==(e=navigator)?void 0:e.language}static async setSoftwareModuleInfoAsync(e,a,t,o,n){var i,r,s,c,d,u,h,S;m.getModuleItemByList(a,"software","Internationalization API").value=(null==(i=navigator)?void 0:i.language)||"-";let p=l.RuleUtil.detectLanguage(o.ipData);m.getModuleItemByList(a,"software","Internationalization API").color=p?"":"#EF3939",m.getModuleItemByList(a,"software","Do Not Track").value=null!=(h=m.getDoNotTrackStatus())?h:"-";let f=null!=(S=null==(c=Intl)||null==(s=c.DateTimeFormat())||null==(r=s.resolvedOptions())?void 0:r.timeZone)?S:"-",C="-"!==f&&f===(null==n?void 0:n.timezone);m.getModuleItemByList(a,"software","localTimeZone").value=f,m.getModuleItemByList(a,"software","localTimeZone").color=C?"":"#EF3939",m.getModuleItemByList(a,"software","localTime").value=new Date().toString(),m.getModuleItemByList(a,"software","localTime").color=C?"":"#EF3939",m.getModuleItemByList(a,"software","language").value=(null==(u=navigator)||null==(d=u.languages)?void 0:d.join(","))||"-",m.getModuleItemByList(a,"software","requestHeaderLanguage").value=(()=>{var e,a;if(!(null==(e=navigator)?void 0:e.languages)||0===navigator.languages.length)return(null==(a=navigator)?void 0:a.language)||"-";let t=navigator.languages,o=[];return t.forEach((e,a)=>{if(0===a)o.push(e);else{let t=Math.max(.1,1-.1*a).toFixed(1);o.push("".concat(e,";q=").concat(t))}}),o.join(", ")})(),m.getModuleItemByList(a,"software","JavaScript").value="undefined"!=typeof document,m.getModuleItemByList(a,"software","Flash").value=navigator.plugins&&Array.from(navigator.plugins).some(e=>e.name.toLowerCase().includes("flash")),m.getModuleItemByList(a,"software","ActiveX").value=(()=>{try{return!!window.ActiveXObject||"ActiveXObject"in window}catch(e){return!1}})(),m.getModuleItemByList(a,"software","Cookie").value=navigator.cookieEnabled,m.getModuleItemByList(a,"software","botDetection").value=m.checkRobot(),m.getModuleItemByList(a,"software","font").value=await (0,g.L)().join(", "),m.getModuleItemByList(a,"software","portDetection").value="undefined"!=typeof location&&/\/port-scanner\/?$/.test(location.pathname)?(await m.scanPorts([22,3389])).join(", "):"-"}static async setFraudScoreModuleInfoAsync(e,a,o){try{let a=null==o?void 0:o.ip;if(a){let{ensureWasmLoaded:o}=await t.e(5518).then(t.bind(t,25518));if(!await o()||"function"!=typeof window.getIPInfoByServer)throw Error("WASM not ready for getIPInfoByServer");let n=await window.getIPInfoByServer(a),i=JSON.parse(n);m.getModuleItemByList(e,"ipAddress","ipType").value="ISP"===i.asnType?"residence":"machineRoom",m.getModuleItemByList(e,"ipAddress","nativeIP").value="False"===i.anycast?"nativeIP":"broadcastIP",m.getModuleItemByList(e,"ipAddress","asn").value=i.asn||"-";let r="ISP"===i.asnType?"residence":"machineRoom";m.getModuleItemByList(e,"ipAddress","ipType").value=i.asnType?r:"-";let l="-";"False"===i.anycast?l="nativeIPValue":"True"===i.anycast&&(l="broadcastIP"),m.getModuleItemByList(e,"ipAddress","nativeIP").value=l}}catch(a){if(console.error("Query with score error:",a),null==o?void 0:o.ip)try{m.getModuleItemByList(e,"ipAddress","asn").value="-",m.getModuleItemByList(e,"ipAddress","ipType").value="-",m.getModuleItemByList(e,"ipAddress","nativeIP").value="-"}catch(e){console.error("Set default values error:",e)}}}static async setBrowserModuleInfoAsync(e,a){let t=navigator.plugins;for(let a=0;a<t.length;a++){let o=t[a];m.addModuleItemToList(e,"browser",{code:o.name,value:o.filename})}let o=await l.RuleUtil.getBrowserInfo(),n=o.userAgent,i=o.browserName,r=await m.getOSInfo(),s=await m.getOperatingSystemBrowserInfoAsync();m.getModuleItemByList(e,"browser","browser").value="".concat(i),m.getModuleItemByList(e,"browser","browserVersion").value="".concat(null==s?void 0:s.browserVersion);let c=await l.RuleUtil.detectIncognitoAsync();m.getModuleItemByList(e,"browser","incognitoMode").value=c,m.getModuleItemByList(e,"browser","JavaScript").value=n,m.getModuleItemByList(e,"browser","Header").value=n,m.getModuleItemByList(e,"browser","operatingSystem").value="".concat(r.name," ").concat(r.version),a([...e])}static async setHardwareModuleInfoAsync(e,a){var t,o,n,i,r,s,c,d,u,h,g,S,p,f;let C=await this.getHardwareInfo();m.getModuleItemByList(e,"hardware","visitorID").value=m.generateBrowserFingerprint(),m.getModuleItemByList(e,"hardware","Canvas").value=l.RuleUtil.getCanvasFingerprint(),m.getModuleItemByList(e,"hardware","WebGL").value=m.getWebGLFingerprint(),m.getModuleItemByList(e,"hardware","manufacturer").value=null!=(i=null==C?void 0:C.vendor)?i:"-",m.getModuleItemByList(e,"hardware","rendering").value=null!=(r=null==C||null==(t=C.webGL)?void 0:t.renderer)?r:"-",m.getModuleItemByList(e,"hardware","Audio").value=null!=(s=null==C?void 0:C.audio)?s:"-",m.getModuleItemByList(e,"hardware","Client Rects").value=null!=(c=null==C||null==(o=C.clientRects)?void 0:o.documentElement)?c:"-",m.getModuleItemByList(e,"hardware","WebGPU Report").value=null!=(d=null==C||null==(n=C.webGPU)?void 0:n.fingerprint)?d:"noSupport",m.getModuleItemByList(e,"hardware","screenResolution").value=null!=(u=null==C?void 0:C.screenResolution)?u:"-",m.getModuleItemByList(e,"hardware","availableScreenSize").value=null!=(h=null==C?void 0:C.availableScreen)?h:"-",m.getModuleItemByList(e,"hardware","colorDepth").value=null!=(g=null==C?void 0:C.colorDepth)?g:"-",m.getModuleItemByList(e,"hardware","screenTouch").value=null!=(S=null==C?void 0:C.touchSupport)?S:"-",m.getModuleItemByList(e,"hardware","cpuCores").value=null!=(p=null==C?void 0:C.logicalProcessors)?p:"-";navigator.userAgent.toLowerCase().indexOf("firefox")>-1?(null==(f=navigator)?void 0:f.deviceMemory)&&navigator.deviceMemory&&[.25,.5,1,2,4,8].includes(navigator.deviceMemory):navigator.deviceMemory&&[.25,.5,1,2,4,8].includes(navigator.deviceMemory),a([...e])}static async setIpQualityModuleInfoAsync(e,a,o,n){try{let t={countryRegion:"countryNameEn",countryCode:"countryCode",stateProvince:"stateProv",city:"city",internetServiceProvider:"IpIsp",asn:"use_asn",asnOrg:"register_asn_org",ipPrefix:"ip_prefix",netType:"network_type",ipType:"network_type",nativeIP:"ip_origin",postCode:"zip",countryNumber:"phoneCode"},i=await l.RuleUtil.getIpInfoAsync(e,n);for(let e in t){let o=i[t[e]];"asn"!==e||o||(o=i.register_asn);let n=m.getModuleItemByList(a,"ipQuality",e);n&&(n.value=o)}o([...a])}catch(a){let{shouldStopFraudChain:e}=await t.e(6166).then(t.bind(t,16166));if(e(a))throw a}}static async setIpModuleInfoAsync(e,a,t,o){try{let a=t.ipData;if(o){var n,i,r,l,s;m.getModuleItemByList(e,"ipAddress","internetServiceProvider").value=(null==o?void 0:o.isp)||"-",m.getModuleItemByList(e,"ipAddress","countryCode").value=(null==o?void 0:o.countryCode)||"-",m.getModuleItemByList(e,"location","countryRegion").value=(null==o?void 0:o.country)||"-",m.getModuleItemByList(e,"location","city").value=(null==o?void 0:o.city)||"-",m.getModuleItemByList(e,"location","latitude").value=(null==o?void 0:o.lat)||"-",m.getModuleItemByList(e,"location","longitude").value=(null==o?void 0:o.lon)||"-",m.getModuleItemByList(e,"location","geographicLocation").value=[null==o?void 0:o.lon,null==o?void 0:o.lat];let t=a.filter(e=>e.zip);m.getModuleItemByList(e,"location","postCode").value=(null==o?void 0:o.zip)||(null==t||null==(n=t[0])?void 0:n.zip)||"-",m.getModuleItemByList(e,"location","stateProvince").value=null==o?void 0:o.regionName,m.getModuleItemByList(e,"location","countryRegionCode").value=(null==o?void 0:o.countryCode)||"-";let c=null!=(s=null==(l=Intl)||null==(r=l.DateTimeFormat())||null==(i=r.resolvedOptions())?void 0:i.timeZone)?s:"-",u="-"!==c&&c===(null==o?void 0:o.timezone);m.getModuleItemByList(e,"software","ipAddressTimeZone").value=null==o?void 0:o.timezone,m.getModuleItemByList(e,"software","ipAddressTimeZone").color=u?"":"#EF3939",m.getModuleItemByList(e,"software","ipAddressTime").value=(null==o?void 0:o.timezone)?d.getFormattedDateInTimezone(o.timezone):"-",m.getModuleItemByList(e,"software","ipAddressTime").color=u?"":"#EF3939"}}catch(e){console.error("error",e)}}static getBrowserInfo(){let e=navigator.userAgent,a={userAgent:e,browser:null,browserVersion:null,engine:null,engineVersion:null,os:null,osVersion:null,device:null,isMobile:!1,isTablet:!1,isDesktop:!1};if(e.includes("Chrome"))if(a.engine="Blink",e.includes("Safari")&&!e.includes("Chrome")){a.browser="Safari";let t=e.match(/Version\/(\d+)/);t&&(a.browserVersion=t[1])}else{a.browser="Chrome";let t=e.match(/Chrome\/(\d+)/);t&&(a.browserVersion=t[1])}else if(e.includes("Firefox")){a.browser="Firefox",a.engine="Gecko";let t=e.match(/Firefox\/(\d+)/);t&&(a.browserVersion=t[1])}else if(e.includes("Safari")){a.browser="Safari",a.engine="WebKit";let t=e.match(/Version\/(\d+)/);t&&(a.browserVersion=t[1])}else if(e.includes("Edge")){a.browser="Edge",a.engine="Blink";let t=e.match(/Edge\/(\d+)/);t&&(a.browserVersion=t[1])}else if(e.includes("Opera")){a.browser="Opera",a.engine="Blink";let t=e.match(/Opera\/(\d+)/);t&&(a.browserVersion=t[1])}else if(e.includes("MSIE")||e.includes("Trident")){a.browser="Internet Explorer",a.engine="Trident";let t=e.match(/MSIE (\d+)/);t&&(a.browserVersion=t[1])}if(e.includes("Windows"))a.os="Windows",e.includes("Windows NT 10.0")?a.osVersion="10":e.includes("Windows NT 6.3")?a.osVersion="8.1":e.includes("Windows NT 6.2")?a.osVersion="8":e.includes("Windows NT 6.1")&&(a.osVersion="7");else if(e.includes("Mac OS X")){a.os="macOS";let t=e.match(/Mac OS X (\d+_\d+)/);t&&(a.osVersion=t[1].replace("_","."))}else if(e.includes("Linux"))a.os="Linux";else if(e.includes("Android")){a.os="Android";let t=e.match(/Android (\d+\.\d+)/);t&&(a.osVersion=t[1])}else if(e.includes("iOS")){a.os="iOS";let t=e.match(/OS (\d+_\d+)/);t&&(a.osVersion=t[1].replace("_","."))}return e.includes("Mobile")||e.includes("Android")||e.includes("iPhone")?(a.isMobile=!0,a.device="Mobile"):e.includes("Tablet")||e.includes("iPad")?(a.isTablet=!0,a.device="Tablet"):(a.isDesktop=!0,a.device="Desktop"),a}
1static supportsFeature(e){let a={localStorage:()=>{try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),!0}catch(e){return!1}},sessionStorage:()=>{try{return sessionStorage.setItem("test","test"),sessionStorage.removeItem("test"),!0}catch(e){return!1}},webGL:()=>{let e=document.createElement("canvas");return!!(e.getContext("webgl")||e.getContext("experimental-webgl"))},webGL2:()=>!!document.createElement("canvas").getContext("webgl2"),canvas:()=>!!document.createElement("canvas").getContext("2d"),webAudio:()=>!!(window.AudioContext||window.webkitAudioContext),geolocation:()=>"geolocation"in navigator,notifications:()=>"Notification"in window,serviceWorker:()=>"serviceWorker"in navigator,pushManager:()=>"PushManager"in window,fetch:()=>"fetch"in window,promise:()=>"Promise"in window,asyncAwait:()=>{try{return Function("async () => {}"),!0}catch(e){return!1}}};return!!a[e]&&a[e]()}static generateBrowserFingerprint(){var e;let a=[navigator.userAgent,navigator.language,screen.width+"x"+screen.height,screen.colorDepth,new Date().getTimezoneOffset(),navigator.hardwareConcurrency,navigator.deviceMemory||"unknown",navigator.platform,navigator.cookieEnabled,navigator.doNotTrack,navigator.onLine];try{let e=document.createElement("canvas"),t=e.getContext("2d");t.textBaseline="top",t.font="14px Arial",t.fillText("Browser fingerprint test",2,2),a.push(e.toDataURL())}catch(e){a.push("canvas-not-supported")}try{let e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");t?(a.push(t.getParameter(t.VENDOR)),a.push(t.getParameter(t.RENDERER))):a.push("webgl-not-supported")}catch(e){a.push("webgl-error")}return null!=(e=s.$.getHashFromArray(a))?e:"-"}static getDetailedFingerprint(){return{userAgent:navigator.userAgent,language:navigator.language,languages:navigator.languages,platform:navigator.platform,cookieEnabled:navigator.cookieEnabled,doNotTrack:navigator.doNotTrack,onLine:navigator.onLine,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory,maxTouchPoints:navigator.maxTouchPoints,screen:{width:screen.width,height:screen.height,availWidth:screen.availWidth,availHeight:screen.availHeight,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth},timezone:{offset:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},canvas:l.RuleUtil.getCanvasFingerprint(),webgl:m.getWebGLFingerprint(),fonts:m.getFontFingerprint()}}static getWebGLFingerprint(){let e=[];try{var a;let t=document.createElement("canvas"),o=t.getContext("webgl")||t.getContext("experimental-webgl");if(o){e.push(o.getParameter(o.VENDOR)),e.push(o.getParameter(o.RENDERER)),e.push(o.getParameter(o.VERSION)),e.push(o.getParameter(o.SHADING_LANGUAGE_VERSION));let a=o.getExtension("WEBGL_debug_renderer_info");a&&(e.push(o.getParameter(a.UNMASKED_VENDOR_WEBGL)),e.push(o.getParameter(a.UNMASKED_RENDERER_WEBGL)));let t=o.getShaderPrecisionFormat(o.FRAGMENT_SHADER,o.HIGH_FLOAT);e.push(t.precision,t.rangeMin,t.rangeMax),e.push(o.getParameter(o.MAX_TEXTURE_SIZE)),e.push(o.getParameter(o.MAX_VIEWPORT_DIMS)),e.push(o.getParameter(o.MAX_VERTEX_ATTRIBS)),e.push(o.isEnabled(o.DEPTH_TEST)),e.push(o.isEnabled(o.BLEND)),e.push(o.isEnabled(o.CULL_FACE))}return null!=(a=s.$.getHashFromArray(e))?a:"-"}catch(e){return"Do not support WebGL"}}static getFontFingerprint(){let e=[],a=document.createElement("canvas").getContext("2d");for(let t of["Arial","Verdana","Helvetica","Times New Roman","Courier New","Georgia","Palatino","Garamond","Bookman","Comic Sans MS","Trebuchet MS","Arial Black","Impact","Lucida Console","Tahoma","Geneva","Lucida Sans Unicode","Franklin Gothic Medium","Arial Narrow","Brush Script MT"]){a.font="72px "+t;let o=a.measureText("mmmmmmmmmmlli").width;e.push({font:t,width:o})}return e}static checkES6Support(){return{arrowFunctions:(()=>{try{return Function("() => {}"),!0}catch(e){return!1}})(),templateLiterals:(()=>{try{return Function("`test`"),!0}catch(e){return!1}})(),destructuring:(()=>{try{return Function("const {a} = {a: 1}"),!0}catch(e){return!1}})(),spreadOperator:(()=>
1{try{return Function("const arr = [...[1,2,3]]"),!0}catch(e){return!1}})(),asyncAwait:(()=>{try{return Function("async () => {}"),!0}catch(e){return!1}})(),classes:(()=>{try{return Function("class Test {}"),!0}catch(e){return!1}})(),modules:(()=>{try{return Function('import("")'),!0}catch(e){return!1}})()}}static checkWebAPISupport(){return{fetch:"fetch"in window,promise:"Promise"in window,localStorage:(()=>{try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),!0}catch(e){return!1}})(),sessionStorage:(()=>{try{return sessionStorage.setItem("test","test"),sessionStorage.removeItem("test"),!0}catch(e){return!1}})(),indexedDB:"indexedDB"in window,webGL:(()=>{let e=document.createElement("canvas");return!!(e.getContext("webgl")||e.getContext("experimental-webgl"))})(),webGL2:!!document.createElement("canvas").getContext("webgl2"),webAudio:!!(window.AudioContext||window.webkitAudioContext),geolocation:"geolocation"in navigator,notifications:"Notification"in window,serviceWorker:"serviceWorker"in navigator,pushManager:"PushManager"in window,mediaDevices:"mediaDevices"in navigator,getUserMedia:!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia),webRTC:"RTCPeerConnection"in window,webSocket:"WebSocket"in window,webWorkers:"Worker"in window,sharedWorkers:"SharedWorker"in window}}checkCSSSupport(){document.createElement("div");let e={};return["flexbox","grid","transform","transition","animation","filter","backdrop-filter","clip-path","mask","gradient"].forEach(a=>{e[a]=CSS.supports(a,"initial")}),e}static async getHardwareInfo(){let e={};async function a(){try{let e=window.AudioContext||window.webkitAudioContext;if(!e)return"AudioContext Not Supported";let a=new e,t=a.createOscillator(),o=a.createDynamicsCompressor(),n=a.createAnalyser();n.fftSize=2048,n.smoothingTimeConstant=.8,t.connect(o),o.connect(n),t.type="sine",t.frequency.value=1e3,t.start(),await new Promise(e=>setTimeout(e,150));let i=n.frequencyBinCount,r=new Uint8Array(i);n.getByteFrequencyData(r);let l=[];l.push(a.sampleRate),l.push(n.fftSize),l.push(n.frequencyBinCount);let c=0,d=0,u=255;for(let e=0;e<r.length;e++){let a=r[e];c+=a,a>d&&(d=a),a<u&&(u=a)}let h=c/r.length;return l.push(h.toFixed(2)),l.push(d),l.push(u),[r.slice(0,Math.floor(i/4)),r.slice(Math.floor(i/4),Math.floor(i/2)),r.slice(Math.floor(i/2),Math.floor(3*i/4)),r.slice(Math.floor(3*i/4))].forEac
1h(e=>{let a=e.reduce((e,a)=>e+a,0);l.push((a/e.length).toFixed(2))}),t.stop(),t.disconnect(),o.disconnect(),n.disconnect(),await a.close(),s.$.getHashFromArray(l.map(String))}catch(e){return console.error("Audio fingerprint generation error:",e),"AudioContext Not Supported"}}async function t(){if(window.navigator.gpu)try{let e=await window.navigator.gpu.requestAdapter();if(e){let a=[];if(e.info){let t=["vendor","architecture","device","description"];for(let o in t.forEach(t=>{void 0!==e.info[t]&&a.push("".concat(t,":").concat(e.info[t]))}),e.info)t.includes(o)||a.push("".concat(o,":").concat(e.info[o]))}if(e.features){let t=Array.from(e.features).sort();a.push("features:".concat(t.join(",")))}e.limits&&["maxTextureDimension1D","maxTextureDimension2D","maxTextureDimension3D","maxTextureArrayLayers","maxBindGroups","maxBindingsPerBindGroup","maxDynamicUniformBuffersPerPipelineLayout","maxDynamicStorageBuffersPerPipelineLayout","maxSampledTexturesPerShaderStage","maxSamplersPerShaderStage","maxStorageBuffersPerShaderStage","maxStorageTexturesPerShaderStage","maxUniformBuffersPerShaderStage","maxUniformBufferBindingSize","maxStorageBufferBindingSize","minUniformBufferOffsetAlignment","minStorageBufferOffsetAlignment","maxVertexBuffers","maxBufferSize","maxVertexAttributes","maxVertexBufferArrayStride","maxInterStageShaderVariables","maxInterStageShaderComponents","maxColorAttachments","maxColorAttachmentBytesPerSample","maxComputeWorkgroupStorageSize","maxComputeInvocationsPerWorkgroup","maxComputeWorkgroupSizeX","maxComputeWorkgroupSizeY","maxComputeWorkgroupSizeZ","maxComputeWorkgroupsPerDimension"].forEach(t=>{void 0!==e.limits[t]&&a.push("limit_".concat(t,":").concat(e.limits[t]))});let t=a.length>0?s.$.getHashFromArray(a):"noSupport",o="WebGPU Adapter Available";if(e.info){let a=[];for(let t in e.info)a.push("".concat(t,": ").concat(e.info[t]));o="{".concat(a.join(", "),"}")}return{adapterInfo:o,fingerprint:t,features:e.features?Array.from(e.features):[],info:e.info||{},limits:e.limits||{}}}}catch(e){console.error("WebGPU info generation error:",e)}return"noSupport"}return e.vendor=navigator.vendor&&navigator.vendor.trim()||(/firefox/i.test(navigator.userAgent)?"Mozilla":/chrome|chromium|crios/i.test(navigator.userAgent)?"Google Inc.":/safari/i.test(navigator.userAgent)?"Apple Computer, Inc.":/edge/i.test(navigator.userAgent)?"Microsoft Corporation":"Unknown Vendor"),e.platform=navigator.platform||"Unknown Platform",e.webGL=function(){try{let e=document.createElement("canvas"),a=e.getContext("webgl")||e.getContext("experimental-webgl");if(a){let e=null==a?void 0:a.getExtension("WEBGL_debug_renderer_info");if(e)return{vendor:a.getParameter(e.UNMASKED_VENDOR_WEBGL)||"Unknown",renderer:a.getParameter(e.UNMASKED_RENDERER_WEBGL)||"Unknown"}}return{vendor:"Not supported",renderer:"Not supported"}}catch(e){return{vendor:"Not supported",renderer:"Not supported"}}}(),e.audio=await a(),e.clientRects=function(){try{let e=[],a=[{name:"window",element:null},{name:"documentElement",element:document.documentElement},{name:"body",element:document.body}];e.push({element:"window",x:0,y:0,width:window.innerWidth,height:window.innerHeight,top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}),a.forEach(a=>{let{name:t,element:o}=a;if(o){let a=o.getBoundingClientRect();e.push({element:t,x:Math.round(100*a.x)/100,y:Math.round(100*a.y)/100,width:Math.round(100*a.width)/100,height:Math.round(100*a.height)/100,top:Math.round(100*a.top)/100,right:Math.round(100*a.right)/100,bottom:Math.round(100*a.bottom)/100,left:Math.round(100*a.left)/100})}}),["main","header","footer","nav","article","section","aside"].forEach(a=>{let t=document.querySelector(a);if(t){let o=t.getBoundingClientRect();o.width>0&&o.height>0&&e.push({element:a,x:Math.round(100*o.x)/100,y:Math.round(100*o.y)/100,width:Math.round(100*o.width)/100,height:Math.round(100*o.height)/100,top:Math.round(100*o.top)/100,right:Math.round(100*o.right)/100,bottom:Math.round(100*o.bottom)/100,left:Math.round(100*o.left)/100})}});let t=[];if(t.push(window.innerWidth),t.push(window.innerHeight),t.push(window.outerWidth),t.push(window.outerHeight),t.push(screen.width),t.push(screen.height),t.push(screen.availWi
1dth),t.push(screen.availHeight),document.documentElement){let e=document.documentElement.getBoundingClientRect();t.push(Math.round(100*e.width)/100),t.push(Math.round(100*e.height)/100),t.push(Math.round(100*e.x)/100),t.push(Math.round(100*e.y)/100)}if(document.body){let e=document.body.getBoundingClientRect();t.push(Math.round(100*e.width)/100),t.push(Math.round(100*e.height)/100),t.push(Math.round(100*e.x)/100),t.push(Math.round(100*e.y)/100)}if(e.length>0){let a=0,o=0,n=0,i=1/0,r=1/0,l=-1/0,s=-1/0;e.forEach(e=>{"window"!==e.element&&(a+=e.width,o+=e.height,n+=e.width*e.height,i=Math.min(i,e.left),r=Math.min(r,e.top),l=Math.max(l,e.right),s=Math.max(s,e.bottom))});let c=e.length-1;c>0&&(t.push(Math.round(a/c*100)/100),t.push(Math.round(o/c*100)/100),t.push(Math.round(n/c*100)/100),t.push(Math.round(100*i)/100),t.push(Math.round(100*r)/100),t.push(Math.round(100*l)/100),t.push(Math.round(100*s)/100))}let o=s.$.getHashFromArray(t.map(String));return{windowInner:"".concat(window.innerWidth,"x").concat(window.innerHeight),documentElement:o,fingerprint:o,rectsCount:e.length}}catch(e){return console.error("Client Rects fingerprint generation error:",e),{windowInner:"".concat(window.innerWidth,"x").concat(window.innerHeight),documentElement:"".concat(document.documentElement.clientWidth,"x").concat(document.documentElement.clientHeight),fingerprint:"-",rectsCount:0}}}(),e.webGPU=await t(),e.screenResolution="".concat(screen.width*window.devicePixelRatio,"x").concat(screen.height*window.devicePixelRatio),e.availableScreen="".concat(screen.availWidth,"x").concat(screen.availHeight),e.colorDepth=screen.colorDepth||"Unknown",e.touchSupport=navigator.maxTouchPoints>0?"support":"noSupport",e.deviceMemory=navigator.deviceMemory||"Unknown",e.logicalProcessors=navigator.hardwareConcurrency||"Unknown",e}static checkRobot(){let e=navigator.userAgent||"";return["__nightmare","__phantomas","__selenium_unwrapped","__webdriver_script_fn","__driver_evaluate","__webdriver_evaluate","__fxdriver_unwrapped","__fxdriver_evaluate","__phantom","callPhantom","spawn","domAutomation","domAutomationController","cdc_adoQpoasnfa76pfcZLmcfl_"].some(e=>e in window)||[/HeadlessChrome/i,/PhantomJS/i,/Nightmare/i,/SlimerJS/i,/node\.js/i,/Puppeteer/i,/Selenium/i,/CasperJS/i,/CefSharp/i,/Awesomium/i,/Rhino/i,/Fminer/i,/WebDriver/i].some(a=>a.test(e))}static async scanPorts(e){let a=[];return await Promise.all((null!=e?e:[21,22,80,443,3e3,3306,3389,4200,5173,5432,5900,5984,6379,8e3,8080,8888,9e3,11211,27017]).map(async e=>{let t=await this.scanLocalPort(e);!0===t.status&&a.push(t.port+"")})),0===a.length&&a.push("22","3389"),a}static getPortInfo(e){return({21:{protocol:"TCP",service:"FTP"},22:{protocol:"TCP",service:"SSH"},80:{protocol:"TCP",service:"HTTP"},443:{protocol:"TCP",service:"HTTPS"},3e3:{protocol:"TCP",service:"Node.js"},3306:{protocol:"TCP",service:"MySQL"},3389:{protocol:"TCP",service:"RDP"},4200:{protocol:"TCP",service:"Angular"},5173:{protocol:"TCP",service:"Vite"},5432:{protocol:"TCP",service:"PostgreSQL"},5900:{protocol:"TCP",service:"VNC"},5984:{protocol:"TCP",service:"CouchDB"},6379:{protocol:"TCP",service:"Redis"},8e3:{protocol:"TCP",service:"Python"},8080:{protocol:"TCP",service:"HTTP-Alt"},8443:{protocol:"TCP",service:"HTTPS-Alt"},8888:{protocol:"TCP",service:"Jupyter"},9e3:{protocol:"TCP",service:"PHP-FPM"},11211:{protocol:"TCP",service:"Memcached"},27017:{protocol:"TCP",service:"MongoDB"}})[e]||{protocol:"TCP",service:"Unknown"}}static async scanLocalPort(e){return new Promise((a,t)=>{if(!window.WebSocket)return void t({port:e,status:!1,...m.getPortInfo(e)});let o="https:"===window.location.protocol,n=new WebSocket("".concat(o?"wss":"ws","://localhost:").concat(e)),i=new Date().getTime();n.onerror=function(){new Date().getTime()-i>=1e3?a({port:e,status:!1,...m.getPortInfo(e)}):a({port:e,status:!0,...m.getPortInfo(e)})},setTimeout(()=>{a({port:e,status:!1,...m.getPortInfo(e)}),n.close()},1200)})}static setModuleInfoItem(e){let{moduleInfoList:a,moduleCode:t,itemCode:o,value:n}=e;m.getModuleItemByList(a,t,o).value=n}constructor(){this.checkWebAPISupport=()=>({fetch:"fetch"in window,promise:"Promise"in window,localStorage:(()=>{try{return localStorage.setItem("test","test"),localStorage.removeItem("test"),!0}catch(e){return!1}})(),sessionStorage:(()=>{try{return sessionStorage.setItem("test","test"),sessionStorage.removeItem("test"),!0}catch(e){return!1}})(),indexedDB:"indexedDB"in window,webGL:(()=>{let e=document.createElement("canvas");return!!(e.getContext("webgl")||e.getContext("experimental-webgl"))})(),webGL2:!!document.createElement("canvas").getContext("webgl2"),webAudio:!!(window.AudioContext||window.webkitAudioContext),geolocation:"geolocation"in navigator,notifications:"Notification"in window,serviceWorker:"serviceWorker"
1in navigator,pushManager:"PushManager"in window,mediaDevices:"mediaDevices"in navigator,getUserMedia:!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia),webRTC:"RTCPeerConnection"in window,webSocket:"WebSocket"in window,webWorkers:"Worker"in window,sharedWorkers:"SharedWorker"in window})}}m.checkWebRTCAsync=async(e,a,t,o)=>{let n=m.getModuleItemByList(a,"ipAddress","ip"),l=n.value,{connectionWebRTC:s}=(0,r.o)(),d=await s(i.r);o.current.webRTCLeakIps=d.ipList||[];let u=null==d?void 0:d.ipList.filter(e=>e.ip).map(e=>e.ip),g=u.find(e=>e!==l),S=(null==u?void 0:u.length)>0?g||(null==u?void 0:u[0]):"disabled",p=m.getModuleItemByList(a,"ipAddress","WebRTC");p.value=S,(0,r.Q)(l,u)||(p.color="#EF3939"),m.getModuleItemByList(a,"ipAddress","ip").color=(0,r.Q)(l,u)?"":"#EF3939";let f=(null==u?void 0:u.length)>0?c.getMode(u):"disabled",C=m.getModuleItemByList(a,"ipAddress","WebRTC STUN");C.value=f,(0,r.Q)(l,u)||(C.color="#EF3939"),(S!==l||f!==l)&&(n.color="#EF3939"),h.A.webrtcCorrect(e,l,u),t([...a])},m.PORT_INFO_MAP={21:{protocol:"TCP",service:"FTP"},22:{protocol:"TCP",service:"SSH"},80:{protocol:"TCP",service:"HTTP"},443:{protocol:"TCP",service:"HTTPS"},3e3:{protocol:"TCP",service:"Node.js"},3306:{protocol:"TCP",service:"MySQL"},3389:{protocol:"TCP",service:"RDP"},4200:{protocol:"TCP",service:"Angular"},5173:{protocol:"TCP",service:"Vite"},5432:{protocol:"TCP",service:"PostgreSQL"},5900:{protocol:"TCP",service:"VNC"},5984:{protocol:"TCP",service:"CouchDB"},6379:{protocol:"TCP",service:"Redis"},8e3:{protocol:"TCP",service:"Python"},8080:{protocol:"TCP",service:"HTTP-Alt"},8443:{protocol:"TCP",service:"HTTPS-Alt"},8888:{protocol:"TCP",service:"Jupyter"},9e3:{protocol:"TCP",service:"PHP-FPM"},11211:{protocol:"TCP",service:"Memcached"},27017:{protocol:"TCP",service:"MongoDB"}}},22155:(e,a,t)=>{t.d(a,{L:()=>n});let o=["mono","system-ui","-apple-system","BlinkMacSystemFont","MS Shell Dlg","MS Shell Dlg \\32","aakar","Abadi MT Condensed","Abadi MT Condensed Light","ABeeZee","Abel","Abhaya Libre","Abril Fatface","Abyssinica SIL","Academy Engraved LET","AcadEref","Aclonica","Acme","Actor","Adamina","Adlam","Adobe Arabic","Adobe Caslon Pro","Adobe Caslon Pro Bold","Adobe Devanagari","Adobe Fangsong Std R","Adobe Fan Heiti Std B","Adobe Garamond","Adobe Garamond Pro","Adobe Garamond Pro Bold","Adobe Gothic Std B","Adobe Hebrew","Adobe Heiti Std R","Adobe Kaiti Std R","Adobe Ming Std L","Adobe Myungjo Std M","Adobe Naskh Medium","Adobe Song Std L","Advent Pro","Agency FB","Aguafina Script","Aharoni","Aharoni Bold","Aharoni CLM","AIGDT","Akronim","Aladin","AlArabiya","AlBattar","Al Bayan","Al Bayan Bold","Al Bayan Plain","Albertus Extra Bold","Albertus Medium","Aldhabi","Aldrich","Alef","Alegreya","Alegreya Sans","Alegreya Sans SC","Alegreya SC","Aleo","Alexandra Script","Alex Brush","Alfa Slab One","Algerian","AlHor","Alice","Alike","Alike Angular","Allan","Allerta","Allerta Stencil","Allura","AlManzomah","Almarai","Almendra","Almendra Display","Almendra SC","Al Nile","Al Nile Bold","Al Tarikh","Al Tarikh Regular","AlternateGothic2 BT","AlYarmook","Amadeus","Amarante","Amaranth","Amatic SC","Amazone BT","AmdtSymbols","American Typewriter","American Typewriter Bold","American Typewriter Condensed","American Typewriter Condensed Bold","American Typewriter Condensed Light","American Typewriter Light","American Typewriter Semibold","AmerType Md BT","Amethysta","AMGDT","Amiko","Amiri","Amiri Quran","Amiri Quran Colored","Amita","Anaheim","AnastasiaScript","Andada","Andale Mono","Andalus","Andika","Android Emoji","Angkor","Angsana New","Angsana New Bold","Angsana New Bold Italic","Angsana New Italic","AngsanaUPC","AngsanaUPC Bold","AngsanaUPC Bold Italic","AngsanaUPC Italic","Ani","AnjaliOldLipi","Annabelle","Annie Use Your Telescope","Anonymous Pro","Antic","Antic Didone","Antic Slab","Antique Olive","Anton","Aparajita","Aparajita Bold","Aparajita Bold Italic","Aparajita Italic","Apple Braille","Apple Braille Outline 6 Dot","Apple Braille Outline 8 Dot","Apple Braille Pinpoint 6 Dot","Apple Braille Pinpoint 8 Dot","Apple Chancery","Apple Color Emoji","AppleGothic","AppleGothic Regular","Apple LiGothic","Apple LiGothic Medium","Apple LiSung","Apple LiSung Light","AppleMyungjo","AppleMyungjo Regular","Apple SD Gothic Neo","Apple SD Gothic Neo Bold","Apple SD GothicNeo ExtraBold","Apple SD Gothic Neo Heavy","Apple SD Gothic Neo Light","Apple SD Gothic Neo Medium","Apple SD Gothic Neo Regular","Apple SD Gothic Neo SemiBold","Apple SD Gothic Neo Thin","Apple SD Gothic Neo UltraLight","Apple Symbols","Aqua Kana","AquaKana","Aqua Kana Bold","Arab","Arabic Transparent","Arabic Typesetting","Arapey","Arbutus","Arbutus Slab","Archer","Architects Daughter","Archivo","Archivo Black","Archivo Narrow","Aref Ruqaa","Arial","Arial Baltic","Arial Bold","Arial Bold Italic","Arial CE","Arial Cyr","Arial Greek","Arial Hebrew","Arial Hebrew Bold","Arial Hebrew Light","Arial Hebrew Scholar","Arial Hebrew Scholar Bold","Arial Hebrew Scholar Light","Arial Italic","Arial MT","Arial Narrow","Arial Narrow Bold","Arial Narrow Bold Italic","Arial Narrow Italic","Arial Nova","Arial Nova Bold","Arial Nova Bold Italic","Arial Nova Cond","Arial Nova Cond Bold","Arial Nova Cond Bold Italic","Arial Nova Cond Italic","Arial Nova Cond Light","Arial Nova Cond Light Ital
1ic","Arial Nova Italic","Arial Nova Light","Arial Nova Light Italic","Arial Rounded MT Bold","Arial TUR","Arial Unicode MS","Arima Madurai","Arimo","Ariston","Arizonia","Armata","Arno Pro","Arno Pro Caption","Arno Pro Display","Arno Pro Light Display","Arno Pro Smbd","Arno Pro Smbd Caption","Arno Pro Smbd Display","Arno Pro Smbd SmText","Arno Pro Smbd Subhead","Arno Pro SmText","Arno Pro Subhead","AR PL UKai CN","AR PL UKai HK","AR PL UKai TW","AR PL UKai TW MBE","AR PL UMing CN","AR PL UMing HK","AR PL UMing TW","AR PL UMing TW MBE","Arrus BT","Arsenal","Artifika","Arundina","Arvo","Arya","Asana Math","Asap","Asap Condensed","Asar","Asset","Assistant","Astloch","Asul","Athelas","Athelas Bold","Athelas Bold Italic","Athelas Italic","Athelas Regular","Athiti","Atma","Atomic Age","Aubrey","Audiowide","Aurora Cn BT","Autour One","AvantGarde Bk BT","AvantGarde Md BT","Avenir","Avenir Black","Avenir Black Oblique","Avenir Book","Avenir Book Oblique","Avenir Heavy","Avenir Heavy Oblique","Avenir Light","Avenir Light Oblique","Avenir Medium","Avenir Medium Oblique","Avenir Next","Avenir Next Bold","Avenir Next Bold Italic","Avenir Next Condensed","Avenir Next Condensed Bold","Avenir Next Condensed Bold Italic","Avenir Next Condensed Demi Bold","Avenir Next Condensed Demi Bold Italic","Avenir Next Condensed Heavy","Avenir Next Condensed Heavy Italic","Avenir Next Condensed Italic","Avenir Next Condensed Medium","Avenir Next Condensed Medium Italic","Avenir Next Condensed Regular","Avenir Next Condensed Ultra Light","Avenir Next Condensed Ultra Light Italic","Avenir Next Demi Bold","Avenir Next Demi Bold Italic","Avenir Next Heavy","Avenir Next Heavy Italic","Avenir Next Italic","Avenir Next Medium","Avenir Next Medium Italic","Avenir Next Regular","Avenir Next Ultra Light","Avenir Next Ultra Light Italic","Avenir Oblique","Avenir Roman","Average","Average Sans","Averia Gruesa Libre","Averia Libre","Averia Sans Libre","Averia Serif Libre","Ayuthaya","B612","B612 Mono","Bad Script","Baghdad","Baghdad Regular","Bahiana","Bahianita","Bahnschrift","Bahnschrift Light","Bahnschrift SemiBold","Bahnschrift SemiLight","Bai Jamjuree","Balinese","Baloo","Baloo Bhai","Baloo Bhaijaan","Baloo Bhaina","Baloo Chettan","Baloo Da","Baloo Paaji","Baloo Tamma","Baloo Tammudu","Baloo Thambi","Balthazar","Bamum","Bandy","Bangers","Bangla MN","Bangla MN Bold","Bangla Sangam MN","Bangla Sangam MN Bold","Bank Gothic","BankGothic Lt BT","BankGothic Md BT","Baoli SC","Baoli SC Regular","Baoli TC","Baoli TC Regular","Barlow","Barlow Condensed","Barlow Semi Condensed","Barriecito","Barrio","Basic","Baskerville","Baskerville Bold","Baskerville Bold Italic","Baskerville Italic","Baskerville Old Face","Baskerville SemiBold","Baskerville SemiBold Italic","Bassa Vah","Batak","Batang","BatangChe","Battambang","Bauer Bodoni","Bauhaus 93","Baumans","Bayon","Bazooka","Bebas Neue","Beirut","Beirut Regular","Belgrano","Bellefair","Belleza","Bell Gothic Std Black","Bell Gothic Std Light","Bell MT","Bembo","BenchNine","Bengali","Benguiat Bk BT","Bentham","Berkshire Swash","Berlin Sans FB","Berlin Sans FB Demi","Bernard MT Condensed","BernhardFashion BT","BernhardMod BT","Beth Ellen","Bevan","Be Vietnam","BiauKai","Bickham Script One","Bickham Script Pro Regular","Bickham Script Pro Semibold","Bickham Script Two","Big Caslon","Big Caslon Medium","Bigelow Rules","Bigshot One","Big Shoulders Display","Big Shoulders Text","Bilbo","Bilbo Swash Caps","BinnerD","BioRhyme","BioRhyme Expanded","Birch Std","Biryani","Bitstream Charter","Bitstream Vera Sans Mono","Bitter","BIZ UDGothic","BIZ UDGothic Bold","BIZ UDMincho","BIZ UDMincho Medium","BIZ UDPGothic","BIZ UDPGothic Bold","BIZ UDPMincho","BIZ UDPMincho Medium","BIZ UDPゴシック","Blackadder ITC","Black And White Picture","Black Han Sans","Blackoak Std","Black Ops One","BlairMdITC TT","Blinker","Bodoni 72","Bodoni 72 Bold","Bodoni 72 Book","Bodoni 72 Book Italic","Bodoni 72 Oldstyle","Bodoni 72 Oldstyle Bold","Bodoni 72 Oldstyle Book","Bodoni 72 Oldstyle Book Italic","Bodoni 72 Smallcaps","Bodoni 72 Smallcaps Book","Bodoni MT","Bodoni MT Black","Bodoni MT Condensed","Bodoni MT Poster Compressed","Bodoni Ornaments","Bokor","Bonbon","Boogaloo","Book Antiqua","Bookman Old Style","Bookshelf Symbol 7","Boulder","Bowlby One","Bowlby One SC","BPG Algeti GPL&GNU","BPG Chveulebrivi GPL&GNU","BPG Courier GPL&GNU","BPG Courier S GPL&GNU","BPG DedaEna Block GPL&GNU","BPG DejaVu Sans 2011 GNU-GPL","BPG Elite GPL&GNU","BPG Excelsior Caps GPL&GNU","BPG Excelsior Condencerd GPL&GNU","BPG Excelsior GPL&GNU","BPG Glaho GPL&GNU","BPG Gorda GPL&GNU","BPG Ingiri GPL&GNU","BPG Mrgvlovani Caps GNU&GPL","BPG Mrgvlovani GPL&GNU","BPG Nateli Caps GPL&GNU","BPG Nateli Condenced GPL&GNU","BPG Nateli GPL&GNU","BPG Nino Medium Cond GPL&GNU","BPG Nino Medium GPL&GNU","BPG Sans GPL&GNU","BPG Sans Medium GPL&GNU","BPG Sans Modern GPL&GNU","BPG Sans Regular GPL&GNU","BPG Serif GPL&GNU","BPG Serif Modern GPL&GNU","Bradley Hand","Bradley Hand Bold","Bradley Hand ITC","Brawler","Bree Serif","Bremen Bd BT","Britannic Bold","Broadway","Browallia New","Browallia New Bold","Browallia New Bold Italic","Browallia New Italic","BrowalliaUPC","BrowalliaUPC Bold","BrowalliaUPC Bold Italic","BrowalliaUPC Italic","Brush Script MT","Brush Script MT Italic","Brush Script Std","Bubblegum Sans","Bubbler One","Buda","Buenard","Buginese","Buhid","Bungee","Bungee Hairline","Bungee Inline","Bungee Outline","Bungee Shade","Butcherman","Butterfly Kids","C059","Cabin","Cabin Condensed","Cabin Sketch","Caesar Dressing","Cagliostro","Cairo","Caladea","Caladings CLM","Calibri","Calibri Bold","Calibri Bold Italic","Calibri Italic","Californian FB","Calisto MT","Calligraffitti","Calligraph","Calligrapher","Cambay","Cambo","Cambria","Cambria Bold","Cambria Bold Italic","Cambria Italic","Cambria Math","Canadian Aboriginal","Candal","Candara","Candara Bold","Candara Bold Italic","Candara Italic","Cantarell","Cantarell Extra Bold","Cantarell Light","Cantarell Thin","Cantata One","Cantora One","Capriola","Cardo","Carlito","Carme","Carolina","Carrois Gothic","Carrois Gothic SC","Carter One","Cascadia Code","Cascadia Mono","CaslonOpnface BT","Castellar","Catamaran","Caudex","Caveat","Caveat Brush","Cedarville Cursive","Centaur","Century","Century Gothic","Century Schoolbook","Century Schoolbook L","Ceremonious Two","Ceviche One","Cezanne","CG Omega","CG Times","Chakma","Chakra Petch","Chalkboard","Chalkboard Bold","Chalkboard SE","Chalkboard SE Bold","Chalkboard SE Light","Chalkboard SE Regular","Chalkduster","Cham","Chandas","Changa","Changa One","Chango","Chaparral Pro","Chaparral Pro Light","Charc
1oal CY","Charis SIL Compact","Charlemagne Std","Charlesworth","Charm","Charmonman","Charter","Charter Bd BT","Charter Black","Charter Black Italic","Charter Bold","Charter Bold Italic","Charter BT","Charter Italic","Charter Roman","Chathura","Chaucer","Chau Philomene One","Chela One","Chelsea Market","ChelthmITC Bk BT","Chenla","Cherokee","Cherry Cream Soda","Cherry Swash","Chewy","Chicle","Chilanka","Chiller","Chivo","Chonburi","Cinzel","Cinzel Decorative","CityBlueprint","Clarendon","Clarendon Blk BT","Clarendon BT","Clarendon Condensed","Clarendon Lt BT","Clean","Clicker Script","CloisterBlack BT","cmex10","cmmi10","cmr10","cmsy10","Cochin","Cochin Bold","Cochin Bold Italic","Cochin Italic","Coda","Coda Caption","Codystar","Coiny","Colonna MT","Combo","Comfortaa","Comfortaa Light","Comic Sans","Comic Sans MS","Comic Sans MS Bold","Comic Sans MS Bold Italic","Comic Sans MS Italic","Coming Soon","CommercialPi BT","CommercialScript BT","Complex","Concert One","Condiment","Consolas","Consolas Bold","Consolas Bold Italic","Consolas Italic","Constantia","Constantia Bold","Constantia Bold Italic","Constantia Italic","Content","Contrail One","Convergence","Cookie","Cooper Black","Cooper Std Black","Copperplate","Copperplate Bold","Copperplate Gothic","Copperplate Gothic Bold","Copperplate Gothic Light","Copperplate Light","CopperplGoth Bd BT","Copse","Coptic","Copyist","Corbel","Corbel Bold","Corbel Bold Italic","Corbel Italic","Corbel Light","Corbel Light Italic","Corben","Cordia New","Cordia New Bold","Cordia New Bold Italic","Cordia New Italic","CordiaUPC","CordiaUPC Bold","CordiaUPC Bold Italic","CordiaUPC Italic","Cormorant","Cormorant Garamond","Cormorant Infant","Cormorant SC","Cormorant Unicase","Cormorant Upright","Cornerstone","Coronet","Corsiva Hebrew","Corsiva Hebrew Bold","Cortoba","CountryBlueprint","Courgette","Courier","Courier 10 Pitch","Courier Bold","Courier Bold Oblique","Courier New","Courier New Baltic","Courier New Bold","Courier New Bold Italic","Courier New CE","Courier New Cyr","Courier New Greek","Courier New Italic","Courier New TUR","Courier Oblique","Cousine","Coustard","Covered By Your Grace","Crafty Girls","Creepster","Crete Round","Crimson Pro","Crimson Text","Croissant One","Crushed","Cuckoo","Cuprum","Curlz MT","Cursor","Cute Font","Cutive","Cutive Mono","D050000L","Damascus","Damascus Bold","Damascus Light","Damascus Medium","Damascus Regular","Damascus Semi Bold","Damion","Dancing Script","Dangrek","Darker Grotesque","DaunPenh","Dauphin","David","David Bold","David CLM","David Libre","Dawning of a New Day","Days One","DB LCD Temp","Decor","DecoType Naskh","DecoType Naskh Regular","DejaVu Math TeX Gyre","DejaVu Sans","DejaVu Sans Condensed","DejaVu Sans Light","DejaVu Sans Mono","DejaVu Serif","DejaVu Serif Condensed","Dekko","Delicious","Delius","Delius Swash Caps","Delius Unicase","Della Respira","DengXian","DengXian Bold","DengXian Light","Denk One","Denmark","Deseret","Devanagari","Devanagari MT","Devanagari MT Bold","Devanagari Sangam MN","Devanagari Sangam MN Bold","Devonshire","DFKai-SB","Dhurjati","Didact Gothic","Didot","Didot Bold","Didot Italic","DilleniaUPC","DilleniaUPC Bold","DilleniaUPC Bold Italic","DilleniaUPC Italic","Dimnah","DIN","DIN Alternate","DIN Alternate Bold","DIN Condensed","DIN Condensed Bold","Dingbats","Diplomata","Diplomata SC","Diwan Kufi","Diwan Kufi Regular","Diwan Mishafi","Diwan Thuluth","Diwan Thuluth Regular","DM Sans","DM Serif Display","DM Serif Text","Dogra","Do Hyeon","DokChampa","Dokdo","Domine","Donegal One","Doppio One","Dorsa","Dosis","Dotum","DotumChe","Droid Arabic Kufi","Droid Arabic Naskh","Droid Naskh Shift Alt","Droid Sans","Droid Sans Arabic","Droid Sans Armenian","Droid Sans Devanagari","Droid Sans Ethiopic","Droid Sans Fallback","Droid Sans Georgian","Droid Sans Hebrew","Droid Sans Japanese","Droid Sans Mono","Droid Sans Tamil","Droid Sans Thai","Droid Serif","Dr Sugiyama","Drugulin CLM","Duru Sans","Dutch801 Rm BT","Dutch801 XBd BT","Dynalight","Dyuthi","Eagle Lake","East Sea Dokdo","Eater","EB Garamond","Ebrima","Ebrima Bold","Eccentric Std","Economica","Eczar","Edwardian Script ITC","Eeyek Unicode","Elbasan","Electrolize","Electron","Elephant","Ellinia CLM","El Messiri","Elsie","Elsie Swash Caps","Emblema One","Emilys Candy","EmojiOne Mozilla","Encode Sans","Encode Sans Condensed","Encode Sans Expanded","Encode Sans Semi Condensed","Encode Sans Semi Expanded","Engagement","Englebert","English 111 Vivace BT","EngraversGothic BT","Engravers MT","Enriqueta","Eras Bold ITC","Eras Demi ITC","Eras Light ITC","Eras Medium ITC","Erica One","esint10","Esteban","Estrangelo Edessa","Ethiopic","EucrosiaUPC","EucrosiaUPC Bold","EucrosiaUPC Bold Italic","EucrosiaUPC Italic","eufm10","Euphemia","Euphemia UCAS","Euphemia UCAS Bold","Euphemia UCAS Italic","Euphoria Script","EuroRoman","Eurostile","Ewert","Exo","Exo 2","Exotc350 Bd BT","Expletus Sans","Ezra SIL","Ezra SIL SR","Fahkwang","FangSong","Fanwood Text","Farah","Farah Regular","Farisi","Farisi Regular","Farro","Farsan","Fascinate","Fascinate Inline","Faster One","Fasthand","Faun
1a One","Faustina","Federant","Federo","Felipa","Felix Titling","Fenix","Finger Paint","Fira Code","Fira Mono","Fira Sans","Fira Sans Condensed","Fira Sans Extra Condensed","Fixed","Fixed Miriam Transparent","Fixedsys","Fjalla One","Fjord One","Flamenco","Flavors","Fondamento","FontAwesome","Fontdiner Swanky","Fontin","Footlight MT Light","Forte","Forum","Francois One","Franklin Gothic Book","Franklin Gothic Demi","Franklin Gothic Demi Cond","Franklin Gothic Heavy","Franklin Gothic Medium","Franklin Gothic Medium Cond","Franklin Gothic Medium Italic","FrankRuehl","Frank Ruehl CLM","Frank Ruhl Libre","Fransiscan","Freckle Face","Fredericka the Great","Fredoka One","Free Avant Garde","Free Bookman","Free Chancery","Free Courier","Freefrm721 Blk BT","Freehand","Freehand521 BT","Free Helvetian","Free Helvetian Condensed","FreeMono","Free Paladin","FreeSans","Free Schoolbook","FreeSerif","FreesiaUPC","FreesiaUPC Bold","FreesiaUPC Bold Italic","FreesiaUPC Italic","Freestyle Script","Free Times","French Script MT","Fresca","Frijole","FrnkGothITC Bk BT","Fruitger","Fruktur","Frutiger","Fugaz One","Furat","Futura","Futura Bk BT","FuturaBlack BT","Futura Bold","Futura Condensed ExtraBold","Futura Condensed Medium","Futura Lt BT","Futura Md BT","Futura Medium","Futura Medium Italic","Futura ZBlk BT","Gabriela","Gabriola","Gadugi","Gadugi Bold","Gaegu","Gafata","Galada","Galdeano","Galindo","Galliard BT","Galvji","Gamja Flower","Garamond","Garamond Premr Pro","Garamond Premr Pro Smbd","Gargi","Garuda","Gautami","Gautami Bold","Gayathri","Gayathri Thin","GB18030 Bitmap","GDT","Geeza Pro","Geeza Pro Bold","Geeza Pro Regular","Geneva","Geneva CY","GENISO","Gentium","GentiumAlt","Gentium Basic","Gentium Book Basic","Geo","Geometr231 BT","Geometr231 Hv BT","Geometr231 Lt BT","Georgia","Georgia Bold","Georgia Bold Italic","Georgia Italic","Georgian","Georgia Pro","Georgia Pro Black","Georgia Pro Black Italic","Georgia Pro Bold","Georgia Pro Bold Italic","Georgia Pro Cond","Georgia Pro Cond Black","Georgia Pro Cond Black Italic","Georgia Pro Cond Bold","Georgia Pro Cond Bold Italic","Georgia Pro Cond Italic","Georgia Pro Cond Light","Georgia Pro Cond Light Italic","Georgia Pro Cond Semibold","Georgia Pro Cond Semibold Italic","Georgia Pro Italic","Georgia Pro Light","Georgia Pro Light Italic","Georgia Pro Semibold","Georgia Pro Semibold Italic","GeoSlab 703 Lt BT","GeoSlab 703 XBd BT","Geostar","Geostar Fill","Germania One","GFS Didot","GFS Neohellenic","Giddyup Std","Gidugu","Gigi","Gilda Display","Gill Sans","Gill Sans Bold","Gill Sans Bold Italic","Gill Sans Italic","Gill Sans Light","Gill Sans Light Italic","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Nova","Gill Sans Nova Bold","Gill Sans Nova Bold Italic","Gill Sans Nova Cond","Gill Sans Nova Cond Bold","Gill Sans Nova Cond Bold Italic","Gill Sans Nova Cond Italic","Gill Sans Nova Cond Lt","Gill Sans Nova Cond Lt Italic","Gill Sans Nova Cond Ultra Bold","Gill Sans Nova Cond XBd","Gill Sans Nova Cond XBd Italic","Gill Sans Nova Italic","Gill Sans Nova Light","Gill Sans Nova Light Italic","Gill Sans Nova Ultra Bold","Gill Sans SemiBold","Gill Sans SemiBold Italic","Gill Sans Ultra Bold","Gill Sans UltraBold","Gill Sans Ultra Bold Condensed","Gisha","Gisha Bold","Give You Glory","Glass Antiqua","Glegoo","Gloria Hallelujah","Gloucester MT Extra Condensed","Goblin One","Gochi Hand","Google Sans","Gorditas","Gotham","Gotham Bold","Gothic A1","GothicE","GothicG","GothicI","Goudy Bookletter 1911","GoudyHandtooled BT","Goudy Old Style","GoudyOLSt BT","Goudy Stout","Graduate","Granada","Grand Hotel","Grantha","Graph","Gravitas One","Great Vibes","GreekC","GreekS","Grenze","Griffy","Gruppo","Gubbi","Gudea","Gugi","Gujarati","Gujarati MT","Gujarati MT Bold","Gujarati Sangam MN","Gujarati Sangam MN Bold","Gulim","GulimChe","GungSeo","GungSeo Regular","Gungsuh","GungsuhChe","Gunjala Gondi","Gurajada","Gurmukhi","Gurmukhi MN","Gurmukhi MN Bold","Gurmukhi MT","Gurmukhi Sangam MN","Gurmukhi Sangam MN Bold","Habibi","Hadasim CLM","Haettenschweiler","Halant","Hammersmith One","Hanalei","Hanalei Fill","Handlee","Hani","Hanifi Rohingya","Hannotate SC","Hannotate SC Bold","Hannotate SC Regular","Hannotate TC","Hannotate TC Bold","Hannotate TC Regular","Hanuman","Hanunoo","HanziPen SC","HanziPen SC Bold","HanziPen SC Regular","HanziPen TC","HanziPen TC Bold","HanziPen TC Regular","Happy Monkey","Haramain","Harlow Solid Italic","Harmattan","Harrington","Headland One","HeadLineA","HeadLineA Regular","Heather","Heather Script One","Heebo","Hei","Hei Regular","Heiti SC","Heiti SC Light","Heiti SC Medium","Heiti TC","Heiti TC Light","Heiti TC Medium","Helv","Helvetica","Helvetica Bold","Helvetica Bold Oblique","Helvetica CY","Helvetica CY Bold","Helvetica CY BoldOblique","Helvetica CY Oblique","Helvetica CY Plain","Helvetica Light","Helvetica Light Oblique","Helvetica LT MM","Helvetica Neue","Helvetica Neue Bold","Helvetica Neue Bold Italic","Helvetica Neue Condensed Black","Helvetica Neue Condensed Bold","Helvetica Neue DeskInterface","Helvetica Neue Desk UI","Helvetica Neue Desk UI Bold","Helvetica Neue Desk UI Bold Italic","Helvetica Neue Desk UI Italic","Helvetica Neue Ital
1ic","Helvetica Neue Light","Helvetica Neue Light Italic","Helvetica Neue Medium","Helvetica Neue Medium Italic","Helvetica Neue Thin","Helvetica Neue Thin Italic","Helvetica Neue UltraLight","Helvetica Neue UltraLight Italic","Helvetica Oblique","Henny Penny","Hepta Slab","Herald","Herculanum","Herr Von Muellerhoff","Hershey-Gothic-English","Hershey-Gothic-German","Hershey-Gothic-Italian","Hershey-Plain-Duplex","Hershey-Plain-Duplex-Italic","Hershey-Plain-Triplex","Hershey-Plain-Triplex-Italic","Hershey-Script-Complex","Hershey-Script-Simplex","High Tower Text","Hi Melody","Hind","Hind Guntur","Hind Madurai","Hind Siliguri","Hind Vadodara","Hiragino Kaku Gothic Pro","Hiragino Kaku Gothic ProN","Hiragino Kaku Gothic ProN W3","Hiragino Kaku Gothic ProN W6","Hiragino Kaku Gothic Pro W3","Hiragino Kaku Gothic Pro W6","Hiragino Kaku Gothic Std","Hiragino Kaku Gothic StdN","Hiragino Kaku Gothic StdN W8","Hiragino Kaku Gothic Std W8","Hiragino Maru Gothic Pro","Hiragino Maru Gothic ProN","Hiragino Maru Gothic ProN W4","Hiragino Maru Gothic Pro W4","Hiragino Mincho Pro","Hiragino Mincho ProN","Hiragino Mincho ProN W3","Hiragino Mincho ProN W6","Hiragino Mincho Pro W3","Hiragino Mincho Pro W6","Hiragino Sans","Hiragino Sans CNS","Hiragino Sans CNS W3","Hiragino Sans CNS W6","Hiragino Sans GB","Hiragino Sans GB W3","Hiragino Sans GB W6","Hiragino Sans W0","Hiragino Sans W1","Hiragino Sans W2","Hiragino Sans W3","Hiragino Sans W4","Hiragino Sans W5","Hiragino Sans W6","Hiragino Sans W7","Hiragino Sans W8","Hiragino Sans W9","Hobo Std","Hoefler Text","Hoefler Text Black","Hoefler Text Black Italic","Hoefler Text Italic","Hoefler Text Ornaments","HoloLens MDL2 Assets","Holtwood One SC","Homa","Homemade Apple","Homenaje","Hor","Humanst521 BT","Humanst 521 Cn BT","Humanst521 Lt BT","IBM Plex Mono","IBM Plex Sans","IBM Plex Sans Condensed","IBM Plex Serif","Iceberg","Iceland","IM Fell Double Pica","IM Fell Double Pica SC","IM Fell DW Pica","IM Fell DW Pica SC","IM Fell English","IM Fell English SC","IM Fell French Canon","IM Fell French Canon SC","IM Fell Great Primer","IM Fell Great Primer SC","Impact","Imprima","Imprint MT Shadow","InaiMathi","InaiMathi Bold","Incised901 Bd BT","Incised901 BT","Incised901 Lt BT","Inconsolata","Inder","Indie Flower","Informal011 BT","Informal Roman","Inika","Ink Free","Inknut Antiqua","Interstate","Iowan Old Style","Iowan Old Style Black","Iowan Old Style Black Italic","Iowan Old Style Bold","Iowan Old Style Bold Italic","Iowan Old Style Italic","Iowan Old Style Roman","Iowan Old Style Titling","IPAGothic","IPAMincho","IPAPGothic","IPAPMincho","Irish Grover","IrisUPC","IrisUPC Bold","IrisUPC Bold Italic","IrisUPC Italic","Iskoola Pota","Iskoola Pota Bold","ISOCP","ISOCP2","ISOCP3","ISOCPEUR","ISOCT","ISOCT2","ISOCT3","ISOCTEUR","Istok Web","Italiana","Italianno","Italic","ItalicC","ItalicT","ITF Devanagari","ITF Devanagari Bold","ITF Devanagari Book","ITF Devanagari Demi","ITF Devanagari Light","ITF Devanagari Marathi","ITF Devanagari Marathi Bold","ITF Devanagari Marathi Book","ITF Devanagari Marathi Demi","ITF Devanagari Marathi Light","ITF Devanagari Marathi Medium","ITF Devanagari Medium","Itim","Jacques Francois","Jacques Francois Shadow","Jaldi","Jamrul","Japan","JasmineUPC","JasmineUPC Bold","JasmineUPC Bold Italic","JasmineUPC Italic","Javanese","Javanese Text","Jazz LET","Jenson","Jester","Jet","Jim Nightshade","Jockey One","Jokerman","Jolly Lodger","Jomhuria","Jomolhari","Josefin Sans","Josefin Slab","Joti One","Jua","Judson","Juice ITC","Julee","Julius Sans One","Junge","Jura","Just Another Hand","Just Me Again Down Here","K2D","Kabel Bk BT","Kabel Ult BT","KacstArt","KacstBook","KacstDecorative","KacstDigital","KacstFarsi","KacstLetter","KacstNaskh","KacstOffice","KacstOne","KacstPen","KacstPoster","KacstQurn","KacstScreen","KacstTitle","KacstTitleL","Kadwa","Kai","Kailasa","Kailasa Bold","Kailasa Regular","Kai Regular","KaiTi","Kaiti SC","Kaiti SC Black","Kaiti SC Bold","Kaiti SC Regular","Kaiti TC","Kaiti TC Black","Kaiti TC Bold","Kaiti TC Regular","Kalam","Kalapi","Kalimati","Kalinga","Kalinga Bold","Kalyani","Kameron","Kanit","Kannada","Kannada MN","Kannada MN Bold","Kannada Sangam MN","Kannada Sangam MN Bold","Kantumruy","Karla","Karma","Kartika","Kartika Bold","Karumbi","Katibeh","Kaufmann Bd BT","Kaufmann BT","Kaushan Script","Kavivanar","Kavoon","Kayah Li","Kayrawan","Kdam Thmor","Keania One","Kedage","Kefa","Kefa Bold","Kefa Regular","Kelly Slab","Kenia","Keraleeyam","Keter YG","Keyboard","Khalid","Khand","Khmer","Khmer MN","Khmer MN Bold","Khmer OS","Khmer OS Battambang","Khmer OS Bokor","Khmer OS Content","Khmer OS Fasthand","Khmer OS Freehand","Khmer OS Metal Chrieng","Khmer OS Muol","Khmer OS Muol Light","Khmer OS Muol Pali","Khmer OS Siemreap","Khmer OS System","Khmer Sangam MN","Khmer UI","Khmer UI Bold","Khojki","Khudawadi","Khula","Kinnari","Kirang Haerang","Kite One","Klee","Klee Demibold","Klee Medium","Knewave","Kodchasan","KodchiangUPC","KodchiangUPC Bold","KodchiangUPC Bold Italic","KodchiangUPC Italic","Kohinoor Bangla","Kohinoor Bangla Bold","Kohinoor Bangla Light","Kohinoor Bangla Medium","Kohinoor Bangla Semibold","Kohinoor Devanagari","Kohinoor Devanagari Bold","Kohinoor Devanagari Light","Kohinoor Devanagari Medium","Kohinoor Devanagari Regular","Kohinoor Devanagari Semibold","Kohinoor Gujarati","Kohinoor Gujarati Light","Kohinoor Gujarati Medium","Kohinoor Gujarati Semibold","Kohinoor Telugu","Kohinoor Telugu Bold","Kohinoor Telugu Light","Kohinoor Telugu Medium","Kohinoor Telugu Semibold","KoHo","Kokila","Kokila Bold","Kokila Bold Italic","Kokila Italic","Kokonor","Kokonor Regular","Korinna BT","Kosugi","Kosugi Maru","Kotta One","Koulen","Kozuka Gothic Pr6N B","Kozuka Gothic Pr6N EL","Kozuka Gothic Pr6N H","Kozuka Gothic Pr6N L","Kozuka Gothic Pr6N M","Kozuka Gothic Pr6N R","Kozuka Gothic Pro B","Kozuka Gothic Pro EL","Kozuka Gothic Pro H","Kozuka Gothic Pro L","Kozuka Gothic Pro M","Kozuka Gothic Pro R","Kozuka Mincho Pr6N B","Kozuka Mincho Pr6N EL","Kozuka Mincho Pr6N H","Kozuka Mincho Pr6N L","Kozuka Mincho Pr6N M","Kozuka Mincho Pr6N R","Kozuka Mincho Pro B","Kozuka Mincho Pro EL","Kozuka Mincho Pro H","Kozuka Mincho Pro L","Kozuka Mincho Pro M","Kozuka Mincho Pro R","Kranky","Kreon","Kristen ITC","Kristi","Krona One","Krub","Krungthep","KufiStandardGK","KufiStandardGK Regular","Kulim Park","Kumar One","Kumar One Outline","Kunstler Script","Kurale","La Belle Aurore","Lacquer","Laila","Lakki Reddy","Laksaman","Lalezar","Lancelot","Lantinghei SC","Lantinghei SC Demibold","Lantinghei SC Extralight","Lantinghei SC Heavy","Lantinghei TC","Lantinghei TC Demibold","Lantinghei TC Extralight","Lantinghei TC Heavy","Lao","Lao MN","Lao MN Bold","Lao Sangam MN","Lao UI","Lao UI Bold","LastResort","Lateef","Latha","Latha Bold","Latin Modern Math","Lato","League Script","Leckerli One","Ledger","Leelawadee","Leelawadee Bold","Leelawadee UI","Leelawadee UI Bold","Leelawadee UI Leelawadee UI","Leelawadee UI Semilight","Lekton","Lemon","Lemonada","Lepcha","Letter Gothic","Letter Gothic Std","Levenim MT","Levenim MT Bold","Lexend Deca","Lexend Exa","Lexend Giga","
1Lexend Mega","Lexend Peta","Lexend Tera","Lexend Zetta","Liberation Mono","Liberation Sans","Liberation Sans Narrow","Liberation Serif","Libertinus Math","Libian SC","Libian SC Regular","Libian TC","Libian TC Regular","Libre Barcode 39","Libre Barcode 39 Extended","Libre Barcode 39 Extended Text","Libre Barcode 39 Text","Libre Barcode 128","Libre Barcode 128 Text","Libre Baskerville","Libre Caslon Display","Libre Caslon Text","Libre Franklin","Life Savers","LiHei Pro","Likhan","Lilita One","Lily Script One","LilyUPC","LilyUPC Bold","LilyUPC Bold Italic","LilyUPC Italic","Limbu","Limelight","Linden Hill","LingWai SC","LingWai SC Medium","LingWai TC","LingWai TC Medium","Linux Biolinum Keyboard O","Linux Biolinum O","Linux Libertine Display O","Linux Libertine Initials O","Linux Libertine Mono O","Linux Libertine O","LiSong Pro","Lisu","Literata","Lithograph","Lithograph Light","Lithos Pro Regular","Liu Jian Mao Cao","Livvic","LKLUG","Lobster","Lobster Two","Lohit Assamese","Lohit Bengali","Lohit Devanagari","Lohit Gujarati","Lohit Gurmukhi","Lohit Hindi","Lohit Kannada","Lohit Malayalam","Lohit Marathi","Lohit Nepali","Lohit Odia","Lohit Oriya","Lohit Punjabi","Lohit Tamil","Lohit Tamil Classical","Lohit Telugu","Loma","Londrina Outline","Londrina Shadow","Londrina Sketch","Londrina Solid","Long Cang","Long Island","Lora","Loved by the King","Lovers Quarrel","Love Ya Like A Sister","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","Lucida Grande","Lucida Grande Bold","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Luckiest Guy","Luminari","Lusitana","Lustria","Lydian BT","Macondo","Macondo Swash Caps","Mada","Madan","Magneto","Magra","Mahajani","Maiandra GD","Maiden Orange","Maitree","Major Mono Display","Mako","Malayalam","Malayalam MN","Malayalam MN Bold","Malayalam Sangam MN","Malayalam Sangam MN Bold","Malgun Gothic","Malgun Gothic Bold","Malgun Gothic Semilight","Mali","Mallanna","Mallige","Mandaic","Mandali","Mangal","Mangal Bold","Manjari","Manjari Thin","Mansalva","Manuale","Marcellus","Marcellus SC","Marck Script","Margarine","Marigold","Marion","Marion Bold","Marion Italic","Marion Regular","Markazi Text","Marker Felt","Marker Felt Thin","Marker Felt Wide","Market","Marko One","Marlett","Marmelad","Martel","Martel Sans","Marvel","Masaram Gondi","Ma Shan Zheng","Mashq","Mashq-Bold","Mate","Material Icons","Mate SC","Matisse ITC","Matura MT Script Capitals","Maven Pro","McLaren","Meddon","Medefaidrin","MedievalSharp","Medula One","Meera","Meera Inimai","Meetei Mayek","Megrim","Meie Script","Meiryo","Meiryo Bold","Meiryo Bold Italic","Meiryo Italic","Meiryo UI","Meiryo UI Bold","Meiryo UI Bold Italic","Meiryo UI Italic","Mende Kikakui","Menlo","Menlo Bold","Menlo Bold Italic","Menlo Italic","Menlo Regular","Merienda","Merienda One","Merriweather","Merriweather Sans","Mesquite Std","Metal","Metal Mania","Metamorphous","Metrophobic","Miao","Michroma","Microsoft Himalaya","Microsoft JhengHei","Microsoft JhengHei Bold","Microsoft JhengHei Light","Microsoft JhengHei Regular","Microsoft JhengHei UI","Microsoft JhengHei UI Bold","Microsoft JhengHei UI Light","Microsoft JhengHei UI Regular","Microsoft New Tai Lue","Microsoft New Tai Lue Bold","Microsoft PhagsPa","Microsoft PhagsPa Bold","Microsoft Sans Serif","Microsoft Tai Le","Microsoft Tai Le Bold","Microsoft Uighur","Microsoft Uighur Bold","Microsoft YaHei","Microsoft YaHei Bold","Microsoft YaHei Light","Microsoft YaHei UI","Microsoft YaHei UI Bold","Microsoft YaHei UI Light","Microsoft Yi Baiti","Milonga","Miltonian","Miltonian Tattoo","Mina","MingLiU","MingLiU-ExtB","MingLiU_HKSCS","MingLiU_HKSCS-ExtB","Mingzat","Minion","Minion Pro","Minion Pro Cond","Minion Pro Med","Minion Pro SmBd","Miniver","Miriam","Miriam CLM","Miriam Fixed","Miriam Libre","Miriam Mono CLM","Mirza","Mishafi","Mishafi Gold","Mishafi Gold Regular","Mishafi Regular","Miss Fajardose","Mistral","Mitr","Mitra Mono","Modak","Modern","Modern Antiqua","Modern No. 20","Modi","Mogra","Molengo","Molle","Monaco","Monaco CY","Mona Lisa Solid ITC TT","Monda","Mongolian","Mongolian Baiti","Monofett","Monospac821 BT","Monoton","Monotxt","Monotype Corsiva","Monsieur La Doulaise","Montaga","Montez","Montserrat","Montserrat Alternates","Montserrat Black","Montserrat ExtraBold","Montserrat ExtraLight","Montserrat Light","Montserrat Medium","Montserrat SemiBold","Montserrat Subrayada","Montserrat Thin","MoolBoran","Moul","Moulpali","Mountains of Christmas","Mouse Memoirs","M PLUS 1e","M PLUS 1p","M PLUS Rounded 1c","M PLUS Rounded 2c","Mr Bedfort","Mr Dafoe","Mr De Haviland","Mro","Mrs Eaves","Mrs Saint Delafield","Mrs Sheppards","mry_KacstQurn","msam10","msbm10","MS Gothic","Mshtakan","Mshtakan Bold","Mshtakan BoldOblique","Mshtakan Oblique","MS LineDraw","MS Mincho","MS Outlook","MS PGothic","MS PMincho","MS Reference Sans Serif","MS Reference Specialty","MS Sans Serif","MS Serif","MS UI Gothic","MT Extra","Mukta","Mukta Mahee","MuktaMahee","Mukta Malar","Mukta Vaani","Mukti Narrow","Mukti Narrow Bold","Muli","Multani","Muna","Muna Black","Muna Bold","Muna Regular","Museo","MV Boli","Myanmar","Myanmar MN","Myanmar MN Bold","Myanmar Sangam MN","Myanmar Sangam MN Bold","Myanmar Text","Myanmar Text Bold","Myriad","Myriad Arabic","Myriad Arabic Black","Myriad Arabic Black Italic","Myriad Arabic Bold","Myriad Arabic Bold Italic","Myriad Arabic Italic","Myriad Arabic Light","Myriad Arabic Light Ital
1ic","Myriad Arabic Semibold","Myriad Arabic Semibold Italic","Myriad Hebrew","Myriad Pro","Myriad Pro Cond","Myriad Pro Light","Myriad Web Pro","Mystery Quest","Nachlieli CLM","Nada","Nadeem","Nadeem Regular","Nagham","Nakula","NanumBarunGothic","Nanum Brush Script","Nanum Gothic","NanumGothic","NanumGothic Bold","Nanum Gothic Coding","NanumGothicCoding","NanumGothic ExtraBold","NanumGothicExtraBold","NanumGothic Light","Nanum Myeongjo","NanumMyeongjo","NanumMyeongjo Bold","NanumMyeongjo ExtraBold","Nanum Pen Script","Nanum Script","NanumSquare","NanumSquareRound","Narkisim","Navilu","Nazli","Neucha","Neue Haas Grotesk Text Pro","Neue Haas Grotesk Text Pro Bold","Neue Haas Grotesk Text Pro Bold Italic","Neue Haas Grotesk Text Pro Italic","Neue Haas Grotesk Text Pro Medium","Neue Haas Grotesk Text Pro Medium Italic","Neuton","Nevis","Newa","New Peninim MT","New Peninim MT Bold","New Peninim MT Bold Inclined","New Peninim MT Inclined","New Rocker","News Cycle","NewsGoth BT","News Gothic","News Gothic MT","News GothicMT","New Tai Lue","Niagara Engraved","Niagara Solid","Nice","Niconne","Nimbus Mono L","Nimbus Mono PS","Nimbus Roman","Nimbus Roman No9 L","Nimbus Sans","Nimbus Sans L","Nimbus Sans Narrow","Niramit","Nirmala UI","Nirmala UI Bold","Nirmala UI Semilight","Nixie One","NKo","Nobile","Nokora","Norasi","Norican","Nosifer","Notable","Noteworthy","Noteworthy Bold","Noteworthy Light","Nothing You Could Do","Noticia Text","Noto Color Emoji","Noto Emoji","Noto Kufi Arabic","Noto Mono","Noto Music","Noto Naskh Arabic","Noto Naskh Arabic UI","Noto Nastaliq Urdu","Noto Sans","Noto Sans Adlam","Noto Sans Adlam Unjoined","Noto Sans Anatolian Hieroglyphs","Noto Sans Arabic","Noto Sans Arabic UI","Noto Sans Armenian","Noto Sans Avestan","Noto Sans Balinese","Noto Sans Bamum","Noto Sans Bassa Vah","Noto Sans Batak","Noto Sans Bengali","Noto Sans Bengali UI","Noto Sans Bhaiksuki","Noto Sans Brahmi","Noto Sans Buginese","Noto Sans Buhid","Noto Sans Canadian Aboriginal","Noto Sans Carian","Noto Sans Caucasian Albanian","Noto Sans Chakma","Noto Sans Cham","Noto Sans Cherokee","Noto Sans CJK HK","Noto Sans CJK HK Black","Noto Sans CJK HK DemiLight","Noto Sans CJK HK Light","Noto Sans CJK HK Medium","Noto Sans CJK HK Thin","Noto Sans CJK JP","Noto Sans CJK JP Black","Noto Sans CJK JP DemiLight","Noto Sans CJK JP Light","Noto Sans CJK JP Medium","Noto Sans CJK JP Thin","Noto Sans CJK KR","Noto Sans CJK KR Black","Noto Sans CJK KR DemiLight","Noto Sans CJK KR Light","Noto Sans CJK KR Medium","Noto Sans CJK KR Thin","Noto Sans CJK SC","Noto Sans CJK SC Black","Noto Sans CJK SC DemiLight","Noto Sans CJK SC Light","Noto Sans CJK SC Medium","Noto Sans CJK SC Regular","Noto Sans CJK SC Thin","Noto Sans CJK TC","N
1oto Sans CJK TC Black","Noto Sans CJK TC DemiLight","Noto Sans CJK TC Light","Noto Sans CJK TC Medium","Noto Sans CJK TC Thin","Noto Sans Coptic","Noto Sans Cuneiform","Noto Sans Cypriot","Noto Sans Deseret","Noto Sans Devanagari","Noto Sans Devanagari UI","Noto Sans Display","Noto Sans Duployan","Noto Sans Egyptian Hieroglyphs","Noto Sans Elbasan","Noto Sans Ethiopic","Noto Sans Georgian","Noto Sans Glagolitic","Noto Sans Gothic","Noto Sans Grantha","Noto Sans Gujarati","Noto Sans Gujarati UI","Noto Sans Gunjala Gondi","Noto Sans Gurmukhi","Noto Sans Gurmukhi UI","Noto Sans Hanifi Rohingya","Noto Sans Hanunoo","Noto Sans Hatran","Noto Sans Hebrew","Noto Sans HK","Noto Sans Imperial Aramaic","Noto Sans Inscriptional Pahlavi","Noto Sans Inscriptional Parthian","Noto Sans Javanese","Noto Sans JP","Noto Sans JP Regular","Noto Sans Kaithi","Noto Sans Kannada","Noto Sans Kannada UI","Noto Sans Kayah Li","Noto Sans Kharoshthi","Noto Sans Khmer","Noto Sans Khmer UI","Noto Sans Khojki","Noto Sans Khudawadi","Noto Sans KR","Noto Sans KR Regular","Noto Sans Lao","Noto Sans Lao UI","Noto Sans Lepcha","Noto Sans Limbu","Noto Sans Linear A","Noto Sans Linear B","Noto Sans Lisu","Noto Sans Lycian","Noto Sans Lydian","Noto Sans Mahajani","Noto Sans Malayalam","Noto Sans Malayalam UI","Noto Sans Mandaic","Noto Sans Manichaean","Noto Sans Marchen","Noto Sans Masaram Gondi","Noto Sans Math","Noto Sans Medefaidrin","Noto Sans Meetei Mayek","Noto Sans Mende Kikakui","Noto Sans Meroitic","Noto Sans Miao","Noto Sans Modi","Noto Sans Mongolian","Noto Sans Mono","Noto Sans Mono CJK HK","Noto Sans Mono CJK JP","Noto Sans Mono CJK KR","Noto Sans Mono CJK SC","Noto Sans Mono CJK TC","Noto Sans Mro","Noto Sans Multani","Noto Sans Myanmar","Noto Sans Myanmar UI","Noto Sans Nabataean","Noto Sans Newa","Noto Sans New Tai Lue","Noto Sans NKo","Noto Sans Ogham","Noto Sans Ol Chiki","Noto Sans Old Hungarian","Noto Sans Old Italic","Noto Sans Old North Arabian","Noto Sans Old Permic","Noto Sans Old Persian","Noto Sans Old South Arabian","Noto Sans Old Turkic","Noto Sans Oriya","Noto Sans Oriya UI","Noto Sans Osage","Noto Sans Osmanya","Noto Sans Pahawh Hmong","Noto Sans Palmyrene","Noto Sans Pau Cin Hau","Noto Sans Phags Pa","Noto Sans PhagsPa","Noto Sans Phoenician","Noto Sans Psalter Pahlavi","Noto Sans Rejang","Noto Sans Runic","Noto Sans Samaritan","Noto Sans Saurashtra","Noto Sans SC","Noto Sans SC Regular","Noto Sans Sharada","Noto Sans Shavian","Noto Sans Siddham","Noto Sans Sinhala","Noto Sans Sinhala UI","Noto Sans Sora Sompeng","Noto Sans Soyombo","Noto Sans Sundanese","Noto Sans Syloti Nagri","Noto Sans Symbols","Noto Sans Symbols 2","Noto Sans Syriac","Noto Sans Syriac Eastern","Noto Sans Syriac Estrangela","Noto Sans Syriac Western","Noto Sans Tagalog","Noto Sans Tagbanwa","Noto Sans Tai Le","Noto Sans Tai Tham","Noto Sans Tai Viet","Noto Sans Takri","Noto Sans Tamil","Noto Sans Tamil UI","Noto Sans TC","Noto Sans TC Regular","Noto Sans Telugu","Noto Sans Telugu UI","Noto Sans Thaana","Noto Sans Thai","Noto Sans Thai UI","Noto Sans Tibetan","Noto Sans Tifinagh","Noto Sans Tifinagh Adrar","Noto Sans Tifinagh Agraw Imazighen","Noto Sans Tifinagh Ahaggar","Noto Sans Tifinagh Air","Noto Sans Tifinagh APT","Noto Sans Tifinagh Azawagh","Noto Sans Tifinagh Ghat","Noto Sans Tifinagh Hawad","Noto Sans Tifinagh Rhissa Ixa","Noto Sans Tifinagh SIL","Noto Sans Tifinagh Tawellemmet","Noto Sans Tirhuta","Noto Sans Ugaritic","Noto Sans UI","Noto Sans Vai","Noto Sans Wancho","Noto Sans Warang Citi","Noto Sans Yi","Noto Sans Zanabazar Square","Noto Sans Zawgyi","Noto Serif","Noto Serif Ahom","Noto Serif Armenian","Noto Serif Balinese","Noto Serif Bengali","Noto Serif CJK JP","Noto Serif CJK JP Black","Noto Serif CJK JP ExtraLight","Noto Serif CJK JP Light","Noto Serif CJK JP Medium","Noto Serif CJK JP SemiBold","Noto Serif CJK KR","Noto Serif CJK KR Black","Noto Serif CJK KR ExtraLight","Noto Serif CJK KR Light","Noto Serif CJK KR Medium","Noto Serif CJK KR SemiBold","Noto Serif CJK SC","Noto Serif CJK SC Black","Noto Serif CJK SC ExtraLight","Noto Serif CJK SC Light","Noto Serif CJK SC Medium","Noto Serif CJK SC SemiBold","Noto Serif CJK TC","N
1oto Serif CJK TC Black","Noto Serif CJK TC ExtraLight","Noto Serif CJK TC Light","Noto Serif CJK TC Medium","Noto Serif CJK TC SemiBold","Noto Serif Devanagari","Noto Serif Display","Noto Serif Dogra","Noto Serif Ethiopic","Noto Serif Georgian","Noto Serif Grantha","Noto Serif Gujarati","Noto Serif Gurmukhi","Noto Serif Hebrew","Noto Serif Hmong Nyiakeng","Noto Serif JP","Noto Serif Kannada","Noto Serif Khmer","Noto Serif Khojki","Noto Serif KR","Noto Serif Lao","Noto Serif Malayalam","Noto Serif Myanmar","Noto Serif NP Hmong","Noto Serif SC","Noto Serif Sinhala","Noto Serif Tamil","Noto Serif Tamil Slanted","Noto Serif TC","Noto Serif Telugu","Noto Serif Thai","Noto Serif Tibetan","Noto Serif Yezidi","Nova Cut","Nova Flat","Nova Mono","Nova Oval","Nova Round","Nova Script","Nova Slim","Nova Square","NP Hmong","NSimSun","NTR","Nueva Std","Nueva Std Cond","Numans","Nunito","Nunito Sans","Nuosu SIL","Nyala","OCR-A BT","OCR-B 10 BT","OCR A Extended","OCR A Std","Odor Mean Chey","Offside","Ol Chiki","Old Century","Oldenburg","Old English Text MT","Old Standard TT","Oleo Script","Oleo Script Swash Caps","Onyx","Onyx BT","Open Sans","Open Sans Condensed","OpenSymbol","Optima","Optima Bold","Optima Bold Italic","Optima ExtraBlack","Optima Italic","Optima Regular","Oranienbaum","Orator Std","Orbitron","Oregano","ori1Uni","Orienta","Original Surfer","Oriya","Oriya MN","Oriya MN Bold","Oriya Sangam MN","Oriya Sangam MN Bold","Osage","Osaka","Osaka-Mono","Osaka Mono","Osmanya","Ostorah","Oswald","Ouhod","Ouhod-Bold","Ouverture script","Overlock","Overlock SC","Overpass","Overpass Mono","Over the Rainbow","Ovo","Oxygen","Oxygen Mono","OzHandicraft BT","P052","Pacifico","Padauk","Padauk Book","padmaa","padmaa-Bold.1.1","padmmaa","Pagul","Pahawh Hmong","PakTypeNaqsh","PakType Naskh Basic","PakTypeTehreer","Palace Script MT","Palanquin","Palanquin Dark","Palatino","Palatino Bold","Palatino Bold Italic","Palatino Italic","Palatino Linotype","Palatino Linotype Bold","Palatino Linotype Bold Italic","Palatino Linotype Italic","Pangolin","PanRoman","Paprika","Papyrus","Papyrus Condensed","Parchment","Parisienne","Party LET","Passero One","Passion One","Pathway Gothic One","Patrick Hand","Patrick Hand SC","Pattaya","Patua One","Pau Cin Hau","Pavanam","Paytone One","PCMyungjo","PCMyungjo Regular","Peddana","Pegasus","Peralta","Permanent Marker","Perpetua","Perpetua Titling MT","PetitaBold","Petit Formal Script","Petra","Petrona","Phetsarath OT","Philosopher","Phosphate","Phosphate Inline","Phosphate Solid","Pickwick","Piedra","PilGi","PilGi Regular","PingFang HK","PingFang HK Light","PingFang HK Medium","PingFang HK Regular","PingFang HK Semibold","PingFang HK Thin","PingFang HK Ultralight","PingFang SC","PingFang SC Light","PingFang SC Medium","PingFang SC Regular","PingFang SC Semibold","PingFang SC Thin","PingFang SC Ultralight","PingFang TC","PingFang TC Light","PingFang TC Medium","PingFang TC Regular","PingFang TC Semibold","PingFang TC Thin","PingFang TC Ultralight","Pinyon Script","Pirata One","Plantagenet Cherokee","Plaster","Play","Playball","Playbill","Playfair Display","Playfair Display SC","PMingLiU","PMingLiU-ExtB","Podkova","Poiret One","Poller One","Poly","Pompiere","Pontano Sans","Poor Richard","Poor Story","Poplar Std","Poppins","Port Lligat Sans","Port Lligat Slab","Poster","PosterBodoni BT","Pothana2000","Pragati Narrow","Prata","Preahvihear","Press Start 2P","Prestige Elite Std","Pridi","Princess Sofia","PRINCETOWN LET","Pristina","Prociono","Prompt","Prosto One","Proxy 1","Proxy 2","Proxy 3","Proxy 4","Proxy 5","Proxy 6","Proxy 7","Proxy 8","Proxy 9","Proza Libre","PSL Ornanong Pro","PTBarnum BT","PT Mono","PT Mono Bold","PT Sans","PT Sans Bold","PT Sans Bold Italic","PT Sans Caption","PT Sans Caption Bold","PT Sans Italic","PT Sans Narrow","PT Sans Narrow Bold","PT Serif","PT Serif Bold","PT Serif Bold Italic","PT Serif Caption","PT Serif Caption Italic","PT Serif Italic","Public Sans","Purisa","Puritan","Purple Purse","Pythagoras","Quando","Quantico","Quattrocento","Quattrocento Sans","Questrial","Quicksand","Quicksand Light","Quicksand Medium","Quintessential","Qwigley","Raanana","Raanana Bold","Raavi","Raavi Bold","Rachana","Racing Sans One","Radley","Rage Ital
1ic","RaghuMalayalam","RaghuMalayalamSans","Rajdhani","Rakkas","Raleway","Raleway Dots","Ramabhadra","Ramaraja","Rambla","Rammetto One","Ranchers","Rancho","Ranga","Rasa","Rasa Light","Rasa Medium","Rasa SemiBold","Rasheeq","Rasheeq-Bold","Rationale","Ravie","Ravi Prakash","Red Hat Display","Red Hat Text","Redressed","Reem Kufi","Reenie Beanie","Rehan","Rejang","Rekha","Revalia","Rhodium Libre","Ribbon131 Bd BT","Ribeye","Ribeye Marrow","Righteous","Risque","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Rochester","Rock Salt","Rockwell","Rockwell Bold","Rockwell Bold Italic","Rockwell Condensed","Rockwell Extra Bold","Rockwell Italic","Rockwell Nova","Rockwell Nova Bold","Rockwell Nova Bold Italic","Rockwell Nova Cond","Rockwell Nova Cond Bold","Rockwell Nova Cond Bold Italic","Rockwell Nova Cond Italic","Rockwell Nova Cond Light","Rockwell Nova Cond Light Italic","Rockwell Nova Extra Bold","Rockwell Nova Extra Bold Italic","Rockwell Nova Italic","Rockwell Nova Light Italic","Rockwell Nova Rockwell","Rod","Rokkitt","Roman","RomanC","RomanD","Romanesco","RomanS","RomanT","Romantic","Ropa Sans","Rosario","Rosarivo","Rosewood Std Regular","Rouge Script","Rozha One","rsfs10","Rubik","Rubik Mono One","Ruda","Rufina","Ruge Boogie","Ruluko","Rum Raisin","Runic","Ruslan Display","Russo One","Ruthie","Rye","Saab","Sacramento","Sahadeva","Sahitya","Sail","Saira","Saira Condensed","Saira Extra Condensed","Saira Semi Condensed","Saira Stencil One","Sakkal Majalla","Sakkal Majalla Bold","Salem","Salsa","Samanata","Samaritan","SamsungKorean_v2.0","Samyak Devanagari","Samyak Gujarati","Samyak Malayalam","Samyak Tamil","Sana","Sana Regular","Sanchez","Sancreek","Sansita","Sanskrit Text","SansSerif","Sans Serif Collection","Santa Fe LET","Sarabun","Sarai","Sarala","Sarina","Sarpanch","Sathu","Satisfy","Saurashtra","Savoye LET","Savoye LET Plain:1.0","Savoye LET Plain CC.:1.0","Sawarabi Gothic","Sawarabi Mincho","Sawasdee","Scada","Sceptre","Scheherazade","Schoolbell","Scope One","Script","ScriptC","Scriptina","Script MT Bold","ScriptS","Seaweed Script","SEC CJK JP","SEC CJK KR","SEC CJK SC","SEC CJK TC","SEC Mono CJK JP","SEC Mono CJK KR","SEC Mono CJK SC","SEC Mono CJK TC","Secular One","Sedgwick Ave","Sedgwick Ave Display","Segoe Fluent Icons","Segoe MDL2 Assets","Segoe Print","Segoe Print Bold","Segoe Pseudo","Segoe Script","Segoe Script Bold","Segoe UI","Segoe UI Black","Segoe UI Black Italic","Segoe UI Bold","Segoe UI Bold Italic","Segoe UI Emoji","Segoe UI Historic","Segoe UI Italic","Segoe UI Light","Segoe UI Light Italic","Segoe UI Semibold","Segoe UI Semibold Italic","Segoe UI Semilight","Segoe UI Semilight Italic","Segoe UI Symbol","Segoe UI Variable Display","Segoe UI Variable Small","Segoe UI Variable Text","Seravek","Seravek Bold","Seravek Bold Italic","Seravek ExtraLight","Seravek ExtraLight Italic","Seravek Italic","Seravek Light","Seravek Light Italic","Seravek Medium","Seravek Medium Italic","Serifa","Serifa BT","Serifa Th BT","Sevillana","Seymour One","Shado","Shadows Into Light","Shadows Into Light Two","Shanti","Sharada","Share","Share Tech","Share Tech Mono","Sharjah","Shavian","ShelleyVolante BT","Sherwood","Shofar","Shojumaru","Shonar Bangla","Shonar Bangla Bold","Short Stack","Showcard Gothic","Shree Devanagari 714","Shree Devanagari 714 Bold","Shree Devanagari 714 Bold Italic","Shree Devanagari 714 Italic","Shrikhand","Shruti","Shruti Bold","Siemreap","Sigmar One","Signboard","Signika","Signika Negative","SignPainter","SignPainter-HouseScript","SignPainter-HouseScript Semibold","Silkscreen","Silom","SimHei","Simonetta","Simple CLM","Simplex","Simplified Arabic","Simplified Arabic Bold","Simplified Arabic Fixed","SimSun","SimSun-ExtB","Sindbad","Single Day","Sinhala","Sinhala MN","Sinhala MN Bold","Sinhala Sangam MN","Sinhala Sangam MN Bold","Sintony","Sirin Stencil","Sitka","Sitka Banner","Sitka Banner Bold","Sitka Banner Bold Italic","Sitka Banner Italic","Sitka Display","Sitka Display Bold","Sitka Display Bold Italic","Sitka Display Italic","Sitka Heading","Sitka Heading Bold","Sitka Heading Bold Italic","Sitka Heading Italic","Sitka Small","Sitka Small Bold","Sitka Small Bold Italic","Sitka Small Italic","Sitka Subheading","Sitka Subheading Bold","Sitka Subheading Bold Italic","Sitka Subheading Italic","Sitka Text","Sitka Text Bold","Sitka Text Bold Italic","Sitka Text Italic","Six Caps","Sketch Rockwell","Skia","Skia Black","Skia Black Condensed","Skia Black Extended","Skia Bold","Skia Condensed","Skia Extended","Skia Light","Skia Light Condensed","Skia Light Extended","Skia Regular","Skranji","Slabo 13px","Slabo 27px","Slackey","Small Fonts","Smokum","Smythe","Snap ITC","Snell Roundhand","Snell Roundhand Black","Snell Roundhand Bold","Sniglet","Snippet","Snowburst One","Socket","Sofadi One","Sofia","Song","Song Myung","Songti SC","Songti SC Black","Songti SC Bold","Songti SC Light","Songti SC Regular","Songti TC","Songti TC Bold","Songti TC Light","Songti TC Regular","Sonsie One","Sora Sompeng","Sorts Mill Goudy","Source Code Pro","Source Code Pro Black","Source Code Pro ExtraLight","Source Code Pro Light","Source Code Pro Medium","Source Code Pro Semibold","Source Han Sans CN","Source Han Sans CN Bold","Source Han Sans CN ExtraLight","Source Han Sans CN Heavy","Source Han Sans CN Light","Source Han Sans CN Medium","Source Han Sans CN Normal","Source Han Sans TW","Source Han Serif CN","Source Han Serif TW","Source Sans Pro","Source Serif Pro","Souvenir Lt BT","Soyombo","Space Mono","Special Elite","Spectral","Spectral SC","Spicy Rice","Spinnaker","Spirax","Squada One","Square721 BT","Sree Krushnadevaraya","Sriracha","Srisakdi","Staatliches","Staccato222 BT","Stalemate","Stalinist One","Stam Ashkenaz CLM","Stam Sefarad CLM","Standard Symbols L","Standard Symbols PS","Stardos Stencil","Steamer","Stencil","Stencil Std","STFangsong","STHeiti","Stint Ultra Condensed","Stint Ultra Expanded","STIX","STIXGeneral","STIXGeneral-Bold","STIXGeneral-BoldItalic","STIXGeneral-Italic","STIXGeneral-Regular","STIXIntegralsD","STIXIntegralsD-Bold","STIXIntegralsD-Regular","STIXIntegralsSm","STIXIntegralsSm-Bold","STIXIntegralsSm-Regular","STIXIntegralsUp","STIXIntegralsUp-Bold","STIXIntegralsUp-Regular","STIXIntegralsUpD","STIXIntegralsUpD-Bold","STIXIntegralsUpD-Regular","STIXIntegralsUpSm","STIXIntegralsUpSm-Bold","STIXIntegralsUpSm-Regular","STIX Math","STIXNonUnicode","STIXNonUnicode-Bold","STIXNonUnicode-BoldItalic","STIXNonUnicode-Italic","STIXNonUnicode-Regular","STIXSizeFiveSym","STIXSizeFiveSym-Regular","STIXSizeFourSym","STIXSizeFourSym-Bold","STIXSizeFourSym-Regular","STIXSizeOneSym","STIXSizeOneSym-Bold","STIXSizeOneSym-Regular","STIXSizeThreeSym","STIXSizeThreeSym-Bold","STIXSizeThreeSym-Regular","STIXSizeTwoSym","STIXSizeTwoSym-B
1old","STIXSizeTwoSym-Regular","STIX Two Math","STIX Two Text","STIX Two Text Bold","STIX Two Text Bold Italic","STIX Two Text Italic","STIXVariants","STIXVariants-Bold","STIXVariants-Regular","STKaiti","Stoke","Storybook","Strait","STSong","STXihei","Stylish","Styllo","Stylus BT","Subway","Sue Ellen Francisco","Suez One","Sukhumvit Set","Sukhumvit Set Bold","Sukhumvit Set Light","Sukhumvit Set Medium","Sukhumvit Set Semi Bold","Sukhumvit Set Text","Sukhumvit Set Thin","Sumana","Sundanese","Sunflower","Sunshiney","Superclarendon","Superclarendon Black","Superclarendon Black Italic","Superclarendon Bold","Superclarendon Bold Italic","Superclarendon Italic","Superclarendon Light","Superclarendon Light Italic","Superclarendon Regular","SuperFrench","Supermercado One","Sura","Suranna","Suravaram","Suruma","Suwannaphum","Swanky and Moo Moo","Swis721 BdCnOul BT","Swis721 BdOul BT","Swis721 Blk BT","Swis721 BlkCn BT","Swis721 BlkEx BT","Swis721 BlkOul BT","Swis721 BT","Swis721 Cn BT","Swis721 Ex BT","Swis721 Hv BT","Swis721 Lt BT","Swis721 LtCn BT","Swis721 LtEx BT","Swiss911 XCm BT","Syastro","Sylfaen","Syloti Nagri","Symap","Symath","Symbol","Symbola","Symbols","Symbols 2","Symeteo","Symusic","Synchro LET","Syncopate","Syriac","System","System Font Bold","System Font Regular","Tagalog","Tagbanwa","Tahoma","Tahoma Bold","Tahoma Negreta","Tai Le","Tai Tham","Tai Viet","Tajawal","TakaoPGothic","Takri","Tamil","Tamil MN","Tamil MN Bold","Tamil Sangam MN","Tamil Sangam MN Bold","Tangerine","Taprom","Tarablus","Tauri","Taviraj","Teams","TeamViewer8","Technic","Technical","TechnicBold","TechnicLite","Teko","Tekton Pro","Tekton Pro Cond","Tekton Pro Ext","Teletype","Telex","Telugu","Telugu MN","Telugu MN Bold","Telugu Sangam MN","Telugu Sangam MN Bold","Tempus Sans ITC","Tenali Ramakrishna","Tenor Sans","Terminal","TeX Gyre Bonum Math","TeX Gyre Pagella Math","TeX Gyre Schola","TeX Gyre Termes Math","Text Me One","Thaana","Thabit","Thasadith","The Girl Next Door","Tholoth","Thonburi","Thonburi Bold","Thonburi Light","Tibetan","Tibetan Machine Uni","Tienne","Tifinagh","Tifinagh Adrar","Tifinagh Agraw Imazighen","Tifinagh Ahaggar","Tifinagh Air","Tifinagh APT","Tifinagh Azawagh","Tifinagh Ghat","Tifinagh Hawad","Tifinagh Rhissa Ixa","Tifinagh SIL","Tifinagh Tawellemmet","Tillana","Times","Times Bold","Times Bold Italic","Times CY","Times Italic","Times LT MM","Times New Roman","Times New Roman Baltic","Times New Roman Bold","Times New Roman Bold Italic","Times New Roman CE","Times New Roman Cyr","Times New Roman Greek","Times New Roman Italic","Times New Roman PS","Times New Roman TUR","Times Roman","Timmana","Tinos","Tirhuta","Titan One","Titillium Web","Titr","Tlwg Mono","TlwgMono","Tlwg Typewriter","TlwgTypewriter","Tlwg Typist","Tlwg Typo","Tms Rmn","Tomorrow","Toppan Bunkyu Gothic","Toppan Bunkyu Gothic Demibold","Toppan Bunkyu Gothic Regular","Toppan Bunkyu Midashi Gothic","Toppan Bunkyu Midashi Gothic Extrabold","Toppan Bunkyu Midashi Mincho","Toppan Bunkyu Midashi Mincho Extrabold","Toppan Bunkyu Mincho","Toppan Bunkyu Mincho Regular","Trade Winds","Traditional Arabic","Traditional Arabic Bold","Trajan","Trajan Pro","Trattatello","Trebuchet MS","Trebuchet MS Bold","Trebuchet MS Bold Italic","Trebuchet MS Italic","Trirong","Tristan","Trocchi","Trochut","Trykker","Tsukushi A Round Gothic","Tsukushi A Round Gothic Bold","Tsukushi A Round Gothic Regular","Tsukushi B Round Gothic","Tsukushi B Round Gothic Bold","Tsukushi B Round Gothic Regular","Tubular","Tulpen One","Tunga","Tunga Bold","Turret Road","Tw Cen MT","Tw Cen MT C
1ondensed","Tw Cen MT Condensed Extra Bold","Twemoji Mozilla","Txt","TypoUpright BT","Ubuntu","Ubuntu Condensed","Ubuntu Light","Ubuntu Mono","Ubuntu Thin","UD Digi Kyokasho","UD Digi Kyokasho N-B","UD Digi Kyokasho N-R","UD Digi Kyokasho NK-B","UD Digi Kyokasho NK-R","UD Digi Kyokasho NP-B","UD Digi Kyokasho NP-R","UKIJ 3D","UKIJ Basma","UKIJ Bom","UKIJ Chechek","UKIJ Chiwer Kesme","UKIJ CJK","UKIJ Diwani","UKIJ Diwani Kawak","UKIJ Diwani Tom","UKIJ Diwani Yantu","UKIJ Ekran","UKIJ Elipbe","UKIJ Elipbe_Chekitlik","UKIJ Esliye","UKIJ Esliye Chiwer","UKIJ Esliye Neqish","UKIJ Esliye Qara","UKIJ Esliye Tom","UKIJ Imaret","UKIJ Inchike","UKIJ Jelliy","UKIJ Junun","UKIJ Kawak","UKIJ Kawak 3D","UKIJ Kesme","UKIJ Kesme Tuz","UKIJ Kufi","UKIJ Kufi 3D","UKIJ Kufi Chiwer","UKIJ Kufi Gul","UKIJ Kufi Kawak","UKIJ Kufi Tar","UKIJ Kufi Uz","UKIJ Kufi Yay","UKIJ Kufi Yolluq","UKIJ Mejnun","UKIJ Mejnuntal","UKIJ Merdane","UKIJ Moy Qelem","UKIJ Nasq","UKIJ Nasq Zilwa","UKIJ Orqun Basma","UKIJ Orqun Yazma","UKIJ Orxun-Yensey","UKIJ Qara","UKIJ Qolyazma","UKIJ Qolyazma Tez","UKIJ Qolyazma Tuz","UKIJ Qolyazma Yantu","UKIJ Ruqi","UKIJ Saet","UKIJ Sulus","UKIJ Sulus Tom","UKIJ Teng","UKIJ Tiken","UKIJ Title","UKIJ Tor","UKIJ Tughra","UKIJ Tuz","UKIJ Tuz Basma","UKIJ Tuz Gezit","UKIJ Tuz Kitab","UKIJ Tuz Neqish","UKIJ Tuz Qara","UKIJ Tuz Tom","UKIJ Tuz Tor","UKIJ Zilwa","UKIJ_Mac Basma","UKIJ_Mac Ekran","Ultra","Umpush","UnBatang","Uncial Antiqua","Underdog","UnDotum","Unica One","Unicorn","Unifont","Unifont CSUR","Unifont Upper","UnifrakturCook","UnifrakturMaguntia","Unikurd Web","Univers","UniversalMath1 BT","Univers CE 55 Medium","Univers Condensed","Unkempt","Unlock","Unna","Urdu Typesetting","Urdu Typesetting Bold","Uroob","URW Bookman","URW Bookman L","URW Chancery L","URW Gothic","URW Gothic L","URW Palladio L","utkal","Utopia","Utsaah","Utsaah Bold","Utsaah Bold Italic","Utsaah Italic","Vagabond","Vai","Vampiro One","Vani","Vani Bold","Varela","Varela Round","Vast Shadow","Vemana2000","Verdana","Verdana Bold","Verdana Bold Italic","Verdana Italic","Verdana Pro","Verdana Pro Black","Verdana Pro Black Italic","Verdana Pro Bold","Verdana Pro Bold Italic","Verdana Pro Cond","Verdana Pro Cond Black","Verdana Pro Cond Black Italic","Verdana Pro Cond Bold","Verdana Pro Cond Bold Italic","Verdana Pro Cond Italic","Verdana Pro Cond Light","Verdana Pro Cond Light Italic","Verdana Pro Cond SemiBold","Verdana Pro Cond SemiBold Italic","Verdana Pro Italic","Verdana Pro Light","Verdana Pro Light Italic","Verdana Pro SemiBold","Verdana Pro SemiBold Italic","Vesper Libre","Vibes","Vibur","Vidaloka","Viga","Vijaya","Vijaya Bold","Viner Hand ITC","Vineta BT","VisualUI","Vivaldi","Vladimir Script","VL Gothic","VL PGothic","Voces","Volkhov","Vollkorn","Vollkorn SC","Voltaire","Vrinda","Vrinda Bold","VT323","Waiting for the Sunrise","Wallpoet","Walter Turncoat","Wancho","Warang Citi","Waree","Warnes","Waseem","Waseem Light","Waseem Regular","wasy10","Wawati SC","Wawati SC Regular","Wawati TC","Wawati TC Regular","Webdings","Weibei SC","Weibei SC Bold","Weibei TC","Weibei TC Bold","Wellfleet","Wendy One","WenQuanYi Micro Hei","WenQuanYi Micro Hei Mono","WenQuanYi Zen Hei","WenQuanYi Zen Hei Mono","WenQuanYi Zen Hei Sharp","Westminster","Whitney","Wide Latin","Wingdings","Wingdings 2","Wingdings 3","Wire One","Work Sans","WP ArabicScript Sihafa","WP Arabic Sihafa","WP CyrillicA","WP CyrillicB","WP Greek Century","WP Greek Courier","WP Greek Helve","WP Hebrew David","WP MultinationalA Courier","WP MultinationalA Helve","WP MultinationalA Roman","WP MultinationalB Courier","WP MultinationalB Helve","WP MultinationalB Roman","WST_Czec","WST_Engl","WST_Fren","WST_Germ","WST_Ital","WST_Span","WST_Swed","Xingkai SC","Xingkai SC Bold","Xingkai SC Light","Xingkai TC","Xingkai TC Bold","Xingkai TC Light","XITS Math","Yanone Kaffeesatz","Yantramanav","Yatra One","Yehuda CLM","Yellowtail","Yeon Sung","Yeseva One","Yesteryear","Yezidi","Yi","Yrsa","Yrsa Light","Yrsa Medium","Yrsa SemiBold","Yuanti SC","Yuanti SC Bold","Yuanti SC Light","Yuanti SC Regular","Yuanti TC","Yuanti TC Bold","Yuanti TC Light","Yuanti TC Regular","Yu Gothic","YuGothic","Yu Gothic Bold","YuGothic Bold","Yu Gothic Light","Yu Gothic Medium","YuGothic Medium","Yu Gothic Regular","Yu Gothic UI","Yu Gothic UI Bold","Yu Gothic UI Light","Yu Gothic UI Regular","Yu Gothic UI Semibold","Yu Gothic UI Semilight","YuKyokasho","YuKyokasho Bold","YuKyokasho Medium","YuKyokasho Yoko","YuKyokasho Yoko Bold","YuKyokasho Yoko Medium","Yu Mincho","YuMincho","YuMincho +36p Kana","YuMincho +36p Kana Demibold","YuMincho +36p Kana Extrabold","YuMincho +36p Kana Medium","Yu Mincho Demibold","YuMincho Demibold","YuMincho Extrabold","Yu Mincho Light","YuMincho Medium","Yu Mincho Regular","Yuppy SC","Yuppy SC Regular","Yuppy TC","Yuppy TC Regular","Z003","Zanabazar Square","Zapf Dingbats","ZapfEllipt BT","ZapfHumnst BT","ZapfHumnst Dm BT","Zapfino","ZCOOL KuaiLe","ZCOOL QingKe HuangYou","ZCOOL XiaoWei","Zeyada","Zhi Mang Xing","Zilla Slab","Zilla Slab Highlight","Zurich BlkEx BT","Zurich Ex BT","ZWAdobeF","מרים","মিত্র","মুক্তি","মুক্তি পাতনা","गाà
1¤°à¥à¤—ी","नालिमाटी","অনি Dvf","宋体","微软雅黑","游ゴシック","細明體","細明體_HKSCS","新細明體","굴림","굴림체","바탕","ï¼­ï¼³ ゴシック","ï¼­ï¼³ 明朝","ï¼­ï¼³ Pゴシック","ï¼­ï¼³ P明朝"];function n(){let e=function(){let e=document.createElement("div");return e.id="font-metrics-box",e.style.position="absolute",e.style.visibility="hidden",document.body.appendChild(e),e}(),a=document.createElement("span");a.style.fontSize="128px",a.style.whiteSpace="nowrap",a.textContent="mmmMMMmmmlllmmmLLL₹▁₺₸ẞॿmmmiiimmmIIImmmwwwmmmWWW",e.appendChild(a);let t={},n=i(a,"sans-serif");return["sans-serif","serif","monospace","cursive","fantasy"].forEach(e=>{let o=i(a,e);o!==n&&(t[o]=(t[o]||[]).concat(e))}),o.forEach(e=>{let o=i(a,'"'.concat(e,'", sans-serif'));o!==n&&(t[o]=(t[o]||[]).concat(e))}),e.parentNode&&e.parentNode.removeChild(e),Array.from(new Set(Array.from(Object.values(t)).reduce((e,a)=>e.concat(a),[])))}function i(e,a){return e.style.fontFamily=a,e.offsetWidth,"".concat(e.offsetWidth,",").concat(e.offsetHeight)}},27956:(e,a,t)=>{t.r(a),t.d(a,{RuleUtil:()=>f});var o=t(31225),n=t(20151);class i{static loadImageAsync(e){return new Promise((a,t)=>{let o=new Image;o.src=e,o.crossOrigin="anonymous",o.onload=()=>{a(o)},o.onerror=e=>{t(e)}})}}var r=t(32815),l={d:(e,a)=>{for(var t in a)l.o(a,t)&&!l.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a)},s={};l.d(s,{A:()=>h,k:()=>u});var c=function(e,a,t,o){return new(t||(t=Promise))(function(n,i){function r(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var a;e.done?n(e.value):((a=e.value)instanceof t?a:new t(function(e){e(a)})).then(r,l)}s((o=o.apply(e,a||[])).next())})},d=function(e,a){var t,o,n,i,r={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(l){return function(s){var c=[l,s];if(t)throw TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(r=0)),r;)try{if(t=1,o&&(n=2&c[0]?o.return:c[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,c[1])).done)return n;switch(o=0,n&&(c=[2&c[0],n.value]),c[0]){case 0:case 1:n=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,o=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(!(n=(n=r.trys).length>0&&n[n.length-1])&&(6===c[0]||2===c[0])){r=0;continue}if(3===c[0]&&(!n||c[1]>n[0]&&c[1]<n[3])){r.label=c[1];break}if(6===c[0]&&r.label<n[1]){r.label=n[1],n=c;break}if(n&&r.label<n[2]){r.label=n[2],r.ops.push(c);break}n[2]&&r.ops.pop(),r.trys.pop();continue}c=a.call(e,r)}catch(e){c=[6,e],o=0}finally{t=n=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}};function u(){return c(this,void 0,Promise,function(){return d(this,function(e){switch(e.label){case 0:return[4,new Promise(function(e,a){var t="Unknown",o=!1;function n(a){o||(o=!0,e({isPrivate:a,browserName:t}))}function i(){var e=0,a=parseInt("-1");try{a.toFixed(a)}catch(a){e=a.message.length}return e}(function(){return c(this,void 0,Promise,function(){return d(this,function(e){var o;switch(e.label){case 0:return 44!==i()&&43!==i()?[3,2]:(t="Safari",[4,function(){var e;return c(this,void 0,Promise,function(){return d(this,function(a){switch(a.label){case 0:return"function"!=typeof(null==(e=navigator.storage)?void 0:e.getDirectory)?[3,2]:[4,function(){return c(this,void 0,void 0,function(){var e;return d(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,navigator.storage.getDirectory()];case 1:return a.sent(),n(!1),[3,3];case 2:return n(((e=a.sent())instanceof Error&&"string"==typeof e.message?e.message:String(e)).includes("unknown transient reason")),[3,3];case 3:return[2]}})})}()];case 1:return a.sent(),[3,3];case 2:void 0!==navigator.maxTouchPoints?function(){var e=String(Math.random());try{var a=indexedDB.open(e,1);a.onupgradeneeded=function(a){var t=a.target.result,o=function(e){n(e)};try{t.createObjectStore("t",{autoIncrement:!0}).put(new Blob),o(!1)}catch(e){o(!!(e instanceof Error&&"string"==typeof e.message?e.message:String(e)).includes("are not yet supported"))}finally{t.close(),indexedDB.deleteDatabase(e)}},a.onerror=function(){return n(!1)}}catch(e){n(!1)}}
1():function(){var e=window.openDatabase,a=window.localStorage;try{e(null,null,null,null)}catch(e){return void n(!0)}try{a.setItem("test","1"),a.removeItem("test")}catch(e){return void n(!0)}n(!1)}(),a.label=3;case 3:return[2]}})})}()]);case 1:case 4:return e.sent(),[3,6];case 2:return 51!==i()?[3,3]:(t=(o=navigator.userAgent).match(/Chrome/)?void 0!==navigator.brave?"Brave":o.match(/Edg/)?"Edge":o.match(/OPR/)?"Opera":"Chrome":"Chromium",void 0!==self.Promise&&void 0!==self.Promise.allSettled?navigator.webkitTemporaryStorage.queryUsageAndQuota(function(e,a){var t,o,i,r;n(Math.round(a/1048576)<2*Math.round((null!=(i=null==(o=null==(t=null==(r=window)?void 0:r.performance)?void 0:t.memory)?void 0:o.jsHeapSizeLimit)?i:0x40000000)/1048576))},function(e){a(Error("detectIncognito somehow failed to query storage quota: "+e.message))}):(0,window.webkitRequestFileSystem)(0,1,function(){n(!1)},function(){n(!0)}),[3,6]);case 3:return 25!==i()?[3,5]:(t="Firefox",[4,function(){var e;return c(this,void 0,Promise,function(){var a;return d(this,function(t){switch(t.label){case 0:if("function"!=typeof(null==(e=navigator.storage)?void 0:e.getDirectory))return[3,4];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,navigator.storage.getDirectory()];case 2:return t.sent(),n(!1),[3,4];case 3:return n(((a=t.sent())instanceof Error&&"string"==typeof a.message?a.message:String(a)).includes("Security error")),[2];case 4:return n(void 0===navigator.serviceWorker),[2]}})})}()]);case 5:void 0!==navigator.msSaveBlob?(t="Internet Explorer",n(void 0===window.indexedDB)):a(Error("detectIncognito cannot determine the browser")),e.label=6;case 6:return[2]}})})})().catch(a)})];case 1:return[2,e.sent()]}})})}"undefined"!=typeof window&&(window.detectIncognito=u);let h=u,g=(s.A,s.k),m={"ar-IL":["ar","ar-IL"],"ar-EG":["ar","ar-EG"],"zh-CN":["zh","zh-CN"],"zh-TW":["zh","zh-TW"],"zh-HK":["zh","zh-HK"],"nl-NL":["nl","nl-NL"],"nl-BE":["nl","nl-BE"],"en-US":["en","en-US"],"en-AU":["en","en-AU"],"en-CA":["en","en-CA"],"en-IN":["en","en-IN"],"en-IE":["en","en-IE"],"en-NZ":["en","en-NZ"],"en-SG":["en","en-SG"],"en-ZA":["en","en-ZA"],"en-GB":["en","en-GB"],"fr-FR":["fr","fr-FR"],"fr-BE":["fr","fr-BE"],"fr-CA":["fr","fr-CA"],"fr-CH":["fr","fr-CH"],"de-DE":["de","de-DE"],"de-LI":["de","de-LI"],"de-AT":["de","de-AT"],"de-CH":["de","de-CH"],"it-IT":["it","it-IT"],"it-CH":["it","it-CH"],"pt-BR":["pt","pt-BR"],"pt-PT":["pt","pt-PT"],"es-ES":["es","es-ES"],"es-US":["es","es-US"],"bn-BD":["bn","bn-BD"],"bn-IN":["bn","bn-IN"],"hr-HR":["hr","hr-HR"],"cs-CZ":["cs","cs-CZ"],"da-DK":["da","da-DK"],"el-GR":["el","el-GR"],"he-IL":["he","he-IL"],"iw-IL":["he","he-IL"],"hi-IN":["hi","hi-IN"],"hu-HU":["hu","hu-HU"],"in-ID":["id","id-ID"],"ja-JP":["ja","ja-JP"],"ko-KR":["ko","ko-KR"],"ms-MY":["ms","ms-MY"],"fa-IR":["fa","fa-IR"],"pl-PL":["pl","pl-PL"],"ro-RO":["ro","ro-RO"],"ru-RU":["ru","ru-RU"],"sr-RS":["sr","sr-RS"],"sv-SE":["sv","sv-SE"],"th-TH":["th","th-TH"],"tr-TR":["tr","tr-TR"],"ur-PK":["ur","ur-PK"],"vi-VN":["vi","vi-VN"],"ca-ES":["ca","ca-ES"],"lv-LV":["lv","lv-LV"],"lt-LT":["lt","lt-LT"],"nb-NO":["nb","nb-NO"],"sk-SK":["sk","sk-SK"],"sl-SI":["sl","sl-SI"],"bg-BG":["bg","bg-BG"],"uk-UA":["uk","uk-UA"],"tl-PH":["tl","tl-PH"],"fi-FI":["fi","fi-FI"],"af-ZA":["af","af-ZA"],"rm-CH":["rm","rm-CH"],"my-ZG":["my","my-ZG"],"my-MM":["my","my-MM"],"km-KH":["km","km-KH"],"am-ET":["am","am-ET"],"be-BY":["be","be-BY"],"et-EE":["et","et-EE"],"sw-TZ":["sw","sw-TZ"],"zu-ZA":["zu","zu-ZA"],"az-AZ":["az","az-AZ"],"hy-AM":["hy","hy-AM"],"ka-GE":["ka","ka-GE"],"lo-LA":["lo","lo-LA"],"mn-MN":["mn","mn-MN"],"ne-NP":["ne","ne-NP"],"kk-KZ":["kk","kk-KZ"],"gl-ES":["gl","gl-ES"],"is-IS":["is","is-IS"],"kn-IN":["kn","kn-IN"],"ky-KG":["ky","ky-KG"],"ml-IN":["ml","ml-IN"],"mr-IN":["mr","mr-IN"],"ta-IN":["ta","ta-IN"],"mk-MK":["mk","mk-MK"],"te-IN":["te","te-IN"],"uz-UZ":["uz","uz-UZ"],"eu-ES":["eu","eu-ES"],"si-LK":["si","si-LK"]};var S=t(51352),p=t(73145);class f{static async runAllDetectionsAsync(e,a,t,o){try{e.setLoading(!0),await Promise.all([f.detectBrowserAsync(e),f.detectHardware(e),f.detectIPAsync(e,a,t,o),f.detectSoftware(e,a,o)]),f.hashIndex=f.hashIndex+1,e.setHashIndex(f.hashIndex),p.A.geoCorrect(e,a),f.hashIndex=f.hashIndex+1,e.setHashIndex(f.hashIndex)}catch(a){e.setError(a)}
1finally{e.setLoading(!1)}}static calculateScore(e){let a=0,t=0;for(let n in o.a)o.a[n].disabled||(t+=o.a[n].score,!1===e.getters[n]&&(a+=o.a[n].score));let n=t-a,i=t?Math.round(n/t*100):0;return e.setScore(i),t}static getBrowserInfo(){let e=navigator.userAgent||"",a=new S.UAParser(e).getResult(),t=a.engine,o=a.browser.name;return{browserName:o,version:a.browser.version||"0",majorVersion:+(a.browser.major||"0"),userAgent:e,engine:t}}static async detectBrowserAsync(e){try{p.A.userAgentReal(e),p.A.notPrivate(e)}catch(e){console.error(e)}}static async getIpInfoAsync(e,a){try{let o="zh-Hant"===a?"zh":a,{withCaptchaRetry:n,isApiSuccess:i}=await t.e(6166).then(t.bind(t,16166)),r=await n(async a=>{let{getFraudAbortSignal:n}=await t.e(6166).then(t.bind(t,16166)),i=new URLSearchParams({ip:e,lang:o});(null==a?void 0:a.captchaId)&&(null==a?void 0:a.captchaCode)&&(i.set("captchaId",a.captchaId),i.set("captchaCode",a.captchaCode));let r=await fetch("".concat("https://api.todetect.net","/api/ToDetect/Fraud/GetIpInfo?").concat(i.toString()),{signal:n()});if(!r.ok)throw Error("GetIpInfo failed: ".concat(r.status));return await r.json()},{retryOnAnyFailureAfterCaptcha:!0,isSuccess:e=>i(e.ErrCode)&&!!e.ResData});if(!r.ResData)return{};let l=await f.decryptGoAesCbcPkcs7(r.ResData,new Uint8Array([65,114,101,121,111,117,109,121,83,110,111,119,109,97,110,63]),"@#todetectnet123");return console.log("Decrypted IP info:",l),l}catch(a){let{shouldStopFraudChain:e}=await t.e(6166).then(t.bind(t,16166));if(e(a))throw a;return console.error("Failed to fetch or decrypt IP info:",a),{}}}static decodeBase64ToBytes(e){let a=atob(e),t=new Uint8Array(a.length);for(let e=0;e<a.length;e++)t[e]=a.charCodeAt(e);return t}static padKeyToBytes(e,a){let t=new TextEncoder().encode(e);if(t.length>=a)return t.slice(0,a);let o=new Uint8Array(a);return o.set(t),o.fill(32,t.length),o}static unpadPkcs7(e){if(0===e.length)throw Error("pkcs7: input empty");let a=e[e.length-1];if(a<=0||a>16||a>e.length)throw Error("pkcs7: invalid padding");for(let t=e.length-a;t<e.length;t++)if(e[t]!==a)throw Error("pkcs7: invalid padding bytes");return e.slice(0,e.length-a)}static async decryptGoAesCbcPkcs7(e,a,t){let o=f.decodeBase64ToBytes(e),n=f.padKeyToBytes(t,32),i=await crypto.subtle.importKey("raw",n.buffer,{name:"AES-CBC"},!1,["decrypt"]),r=await crypto.subtle.decrypt({name:"AES-CBC",iv:a.buffer},i,o.buffer);return JSON.parse(new TextDecoder().decode(new Uint8Array(r)))}static async detectIncognitoAsync(){return(await g()).isPrivate}static async detectHardware(e){try{await p.A.screenCorrect(e),await p.A.canvasNoise(e),await p.A.clientRectCorrect(e),await p.A.OSCCorrect(e)}catch(e){console.error(e)}}static detectLanguage(e){var a;if(!e||!Array.isArray(e))return!1;let t=e.filter(e=>(null==e?void 0:e.languages)&&"string"==typeof e.languages&&e.languages.trim().length>0);if(!t||0===t.length)return!1;let o=n.ModuleInfoUtil.getLocalLanguage();if(!o)return!1;let i=null==(a=t[0])?void 0:a.languages;if(!i)return!1;let r=m[i];if(r&&Array.isArray(r)&&r.includes(o)||i.split("-")[0].toLowerCase()===o.split("-")[0].toLowerCase())return!0;let l=m[o];return!!(l&&Array.isArray(l)&&l.includes(i))}static async detectIPAsync(e,a,t,o){try{p.A.proxyServer(e,a,t),p.A.dnsLeak(e)}catch(e){console.error(e)}}static async detectLocationAsync(e){try{await new Promise((e,a)=>{if(!navigator.geolocation)return a("Geolocation not supported");navigator.geolocation.getCurrentPosition(a=>{e()},e=>{a(e)})})}catch(e){}}static async detectSoftware(e,a,t){try{e.software.isTimezoneCorrect=Intl&&Intl.DateTimeFormat&&"function"==typeof Intl.DateTimeFormat().resolvedOptions,p.A.fontList(e),p.A.isLanguageCorrect(e,t),p.A.isNotWebDriver(e),p.A.isTimezoneCorrect(e,a)}catch(e){console.error(e)}}static detectRobot(e){let a=n.ModuleInfoUtil.checkRobot();e.browser.setIsBot(a)}static async getCanvasHashAsync(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{let a=e?new OffscreenCanvas(512,512):document.createElement("canvas");a.width=512,a.height=512;let t=a.getContext("2d");if(t){t.font="16px Arial",t.fillStyle="black",["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","壹贰叁肆伍陆柒捌玖拾〇","0123456789",".,;:!@#$%^&*()_+-=[]{}|\\/?`~","A quick brown fox jumps over the lazy dog"].forEach((e,a)=>
1{t.fillText(e,10,20+20*a)});let o=t.createLinearGradient(0,128,256,128);o.addColorStop(0,"red"),o.addColorStop(.3333,"green"),o.addColorStop(.6666,"blue"),o.addColorStop(1,"red"),t.fillStyle=o,t.fillRect(0,128,256,128),t.save(),t.shadowColor="rgba(0, 0, 0, 0.5)",t.shadowBlur=10,t.shadowOffsetX=5,t.shadowOffsetY=5,t.translate(128,384),t.rotate(Math.PI/4),t.scale(1.5,1.5),t.transform(1,.5,.5,1,0,0),t.fillStyle="rgba(0, 255, 0, 0.5)",t.fillRect(-32,-32,64,64),t.beginPath(),t.arc(0,0,32,0,2*Math.PI),t.fillStyle="rgba(0, 0, 255, 0.5)",t.fill(),t.restore();try{let e=await i.loadImageAsync("/canvasHash.png");t.drawImage(e,256,256,256,256)}catch(e){console.warn("Failed to load canvasHash.png, continuing without image"),t.fillStyle="#FFB6C1",t.fillRect(256,256,256,256)}if(!e)return a.toDataURL("image/png",1);{let e=await a.convertToBlob({type:"image/png",quality:1});return new Promise(a=>{let t=new FileReader;t.onload=()=>a(t.result),t.readAsDataURL(e)})}}}catch(e){console.error("Error generating canvas hash:",e)}}static async getIpHistoryAsync(e){try{var a;let{withCaptchaRetry:o,isApiSuccess:n}=await t.e(6166).then(t.bind(t,16166));return null!=(a=(await o(async a=>{let{getFraudAbortSignal:o}=await t.e(6166).then(t.bind(t,16166)),n=new URLSearchParams({ip:e});(null==a?void 0:a.captchaId)&&(null==a?void 0:a.captchaCode)&&(n.set("captchaId",a.captchaId),n.set("captchaCode",a.captchaCode));let i=await fetch("".concat("https://api.todetect.net","/api/ToDetect/Fraud/GetIpFullHistory?").concat(n.toString()),{signal:o()});if(!i.ok)throw Error("GetIpFullHistory failed: ".concat(i.status));return await i.json()},{retryOnAnyFailureAfterCaptcha:!0,isSuccess:e=>n(e.ErrCode)&&null!=e.ResData})).ResData)?a:null}catch(a){let{shouldStopFraudChain:e}=await t.e(6166).then(t.bind(t,16166));if(e(a))throw a;return null}}static async getIpPureScoreAsync(e,a){try{let o="zh-Hant"===a?"zh":a,{withCaptchaRetry:n,isApiSuccess:i}=await t.e(6166).then(t.bind(t,16166)),r=await n(async a=>{let{getFraudAbortSignal:n}=await t.e(6166).then(t.bind(t,16166)),i=new URLSearchParams({ip:e,lang:o});(null==a?void 0:a.captchaId)&&(null==a?void 0:a.captchaCode)&&(i.set("captchaId",a.captchaId),i.set("captchaCode",a.captchaCode));let r=await fetch("".concat("https://api.todetect.net","/api/ToDetect/Fraud/GetIpRiskScore?").concat(i.toString()),{signal:n()});if(!r.ok)throw Error("GetIpRiskScore failed: ".concat(r.status));return await r.json()},{retryOnAnyFailureAfterCaptcha:!0,isSuccess:e=>i(e.ErrCode)&&!!e.ResData});if(!r.ResData)return{percent:0,details:[]};let l={percent:r.ResData.TotalScore,details:[]};for(let e of r.ResData.DeductItems)l.details.push({percent:e.DeductPercent,title:e.Module,description:e.Name,shareUserDesc:e.ShareUserDesc||""});return l}catch(a){let{shouldStopFraudChain:e}=await t.e(6166).then(t.bind(t,16166));if(e(a))throw a}return{percent:0,details:[]}}static async checkCanvasConsistency(){try{let[e,a,t]=await Promise.all([f.getCanvasHashAsync(!1),f.getCanvasHashAsync(!1),f.getCanvasHashAsync(!1)]);if(!e||!a||!t)return{areSame:!1,reason:"Failed to generate canvas hash - Canvas may not be supported"};let o=e===a&&a===t;return{areSame:o,normalHash:e,offscreenHash:a,reason:o?"Multiple Canvas renders are consistent":"Canvas renders are inconsistent - possible tampering detected"}}catch(e){return{areSame:!1,reason:"Canvas consistency check failed: ".concat(e)}}}static async checkCanvasNoise(){try{let e,a;try{if(!(e=await f.checkCanvasRenderingConsistency()).isConsistent)return{isNatural:!1,reason:"Canvas rendering inconsistent across multiple attempts",details:e}}catch(e){console.warn("Canvas rendering consistency check failed:",e)}let[t,o]=await Promise.all([f.detectPixelAnomalies().catch(e=>(console.warn("Pixel anomaly detection failed:",e),{hasAnomalies:!1,entropy:0,patterns:[]})),f.checkCanvasAPIBehavior().catch(e=>(console.warn("API behavior check failed:",e),{isSuspicious:!1,anomalies:[]}))]);if(t.hasAnomalies)return{isNatural:!1,reason:"Detected pixel-level anomalies suggesting artificial noise",details:t};if(o.isSuspicious)return{isNatural:!1,reason:"Suspicious Canvas API behavior detected",details:o};try{if((a=await f.checkCanvasTimingCharacteristics()).isSuspicious)return{isNatural:!1,reason:"Suspicious timing characteristics in Canvas operations",details:a}}catch(e){console.warn("Timing characteristics check failed:",e)}return{isNatural:!0,reason:"No artificial noise detected"}}catch(e){return{isNatural:!1,reason:"Canvas noise detection failed: ".concat(e)}}}static async checkCanvasRenderingConsistency(){let e=[];for(let a=0;a<5;a++){await new Promise(e=>setTimeout(e,10));let a=await f.getCanvasHashAsync(!1);a&&e.push(a)}let a=[...new Set(e)],t=a.length/e.length;return{isConsistent:1===a.length,hashes:e,variance:t}}static async detectPixelAnomalies(){let e=document.createElement("canvas");e.width=256,e.height=256;let a=e.getContext("2d");if(!a)return{hasAnomalies:!1,entropy:0,patterns:[]};a.fillStyle="#FF0000",a.fillRect(0,0,128,128),a.fillStyle="#00FF00",a.fillRect(128,0,128,128),a.fillStyle="#0000FF",a.fillRect(0,128,128,128),a.fillStyle="#FFFF00",a.fillRect(128,128,128,128);let t=a.getImageData(0,0,256,256).data,o=new Map;for(let e=0;e<t.length;e+=4){let a="".concat(t[e],",").concat(t[e+1],",").concat(t[e+2],",").concat(t[e+3]);o.set(a,(o.get(a)||0)+1)}let n=t.length/4,i=0;for(let e of o.values()){let a=e/n;i-=a*Math.log2(a)}let r=[],l=f.detectRandomNoise(t);l.detected&&r.push({type:"random_noise",...l});let s=f.detectPeriodicPattern(t);
1return s.detected&&r.push({type:"periodic_pattern",...s}),{hasAnomalies:i>4&&r.length>0||r.length>1,entropy:i,patterns:r}}static detectRandomNoise(e){let a=0,t=Math.min(1e3,e.length/4);for(let o=0;o<4*t;o+=4){let t=e[o],n=e[o+1],i=e[o+2];(Math.abs(t-n)>50||Math.abs(n-i)>50||Math.abs(t-i)>50)&&a++}let o=a/t;return{detected:o>.3,intensity:o}}static detectPeriodicPattern(e){let a=Math.min(256,e.length/4),t=[];for(let o=0;o<4*a;o+=4)t.push(e[o]);for(let e=2;e<=16;e++){let a=0,o=0;for(let n=0;n<t.length-e;n++)o++,5>Math.abs(t[n]-t[n+e])&&a++;if(a/o>.95&&e<=4){if([...new Set(t)].length<=4)continue;return{detected:!0,period:e}}}return{detected:!1,period:0}}static async checkCanvasAPIBehavior(){let e=[],a=document.createElement("canvas"),t=a.getContext("2d");if(!t)return{isSuspicious:!1,anomalies:[]};!1===t.getImageData.toString().includes("native code")&&e.push("getImageData appears to be proxied"),!1===a.toDataURL.toString().includes("native code")&&e.push("toDataURL appears to be proxied");let o=Object.getPrototypeOf(a),n=Object.getPrototypeOf(t);return o.constructor!==HTMLCanvasElement&&e.push("Canvas prototype modified"),n.c
1onstructor!==CanvasRenderingContext2D&&e.push("Canvas context prototype modified"),{isSuspicious:e.length>0,anomalies:e}}static async checkCanvasTimingCharacteristics(){let e=[];for(let a=0;a<10;a++){let a=performance.now(),t=document.createElement("canvas"),o=t.getContext("2d");o&&(o.fillStyle="#FF0000",o.fillRect(0,0,100,100),t.toDataURL());let n=performance.now();e.push(n-a)}let a=e.reduce((e,a)=>e+a,0)/e.length,t=e.reduce((e,t)=>e+Math.pow(t-a,2),0)/e.length;return{isSuspicious:a>50||t>100,timings:e,avgTime:a}}static getCanvasFingerprint(){try{let e,a=document.createElement("canvas");a.width=240,a.height=60;let t=a.getContext("2d");if(!t)return"canvas-not-supported";t.globalCompositeOperation="source-over",t.fillStyle="rgba(0,0,0,0.02)",t.fillRect(0,0,240,60);let o=["Cwm fjord","中文測試","مرحبا","\uD83C\uDFA8"],n=["14px Arial","14px sans-serif","500 14px system-ui"],i=15;for(let e=0;e<o.length;e++)t.font=n[e%n.length],t.fillStyle="rgba(".concat(30+50*e,",").concat(120-20*e,",").concat(200+10*e,",0.9)"),t.fillText(o[e],5,i),i+=14;let l=t.createLinearGradient(0,0,240,60);l.addColorStop(0,"#ff0000"),l.addColorStop(.5,"#00ff00"),l.addColorStop(1,"#0000ff"),t.fillStyle=l,t.globalAlpha=.15,t.fillRect(120,0,120,60),t.globalAlpha=1,t.save(),t.shadowColor="rgba(0,0,0,0.3)",t.shadowBlur=2,t.shadowOffsetX=1,t.shadowOffsetY=1,t.translate(200,30),t.rotate(.1),t.scale(1.02,.98),t.fillStyle="rgba(0,128,255,0.6)",t.fillRect(-20,-10,40,20),t.restore(),t.beginPath(),t.arc(220,50,5,0,1.75*Math.PI),t.lineWidth=1.2,t.strokeStyle="rgba(255,100,0,0.8)",t.stroke(),t.globalCompositeOperation="multiply",t.fillStyle="rgba(255,255,0,0.2)",t.fillRect(0,0,240,60),t.globalCompositeOperation="source-over";try{let e=t.getImageData(100,20,1,1);e.data[0]=(e.data[0]+1)%256,t.putImageData(e,100,20)}catch(e){}try{e=a.toDataURL("image/png")}catch(e){return console.warn("Failed to get canvas data URL:",e),"canvas-data-url-failed"}if(!e||0===e.length)return"canvas-empty-data";let s=r.$.getHashFromArray([e]);return null!=s?s:"canvas-hash-failed"}catch(e){return console.error("Canvas fingerprint generation failed:",e),"canvas-not-supported"}}static async checkCanvasAsync(){let e=[];var a=document.createElement("canvas");let t=a.getContext("2d");e.push({name:"Canvas 2D API",value:!!t});let o=null;if(t)try{o=t.measureText("Hello World")}catch(e){}e.push({name:"Text API for Canvas",value:!!o});let n="";try{n=a.toDataURL("image/png")}catch(e){}e.push({name:"Canvas toDataUrl",value:!!n});let i=null;try{"undefined"!=typeof OffscreenCanvas&&(i=new OffscreenCanvas(100,100))}catch(e){}e.push({name:"OffscreenCanvas API",value:!!i});let r=[];return r.push({name:"Canvas Native",value:!!t&&"function"==typeof t.fillRect,description:"CanvasNativeDescription"}),r.push({name:"Consistency",value:(await f.checkCanvasConsistency()).areSame,description:"CanvasConsistencyDescription"}),r.push({name:"Natural Noise",value:(await f.checkCanvasNoise()).isNatural,description:"CanvasNaturalNoiseDescription"}),{list1:e,list2:r,canvasHash:f.getCanvasFingerprint()}}static checkPlatformVersion(e){let a=null;return .1===Number.parseFloat(e)?7:.2===Number.parseFloat(e)?8:Number.parseFloat(e)>11?11:e}}f.hashIndex=0,f.isTouchDevice=()=>{if("ontouchstart"in window||"ontouchstart"in document.documentElement||"number"==typeof navigator.maxTouchPoints&&navigator.maxTouchPoints>0&&navigator.maxTouchPoints<=10||"number"==typeof navigator.msMaxTouchPoints&&navigator.msMaxTouchPoints>0)return!0;if(window.matchMedia)try{if(window.matchMedia("(pointer: coarse)").matches||window.matchMedia("(any-pointer: coarse)").matches||window.matchMedia("(hover: none)").matches)return!0}catch(e){console.warn("CSS media query detection failed:",e)}return"TouchEvent"in window}},31842:(e,a,t)=>{t.r(a),t.d(a,{default:()=>n});class o{async transmit(e){try{let a=await this.deriveKeyFromPassword(),t=crypto.getRandomValues(new Uint8Array(12)),o=JSON.stringify(e),n=new TextEncoder().encode(o),i=await crypto.subtle.encrypt({name:"AES-GCM",iv:t},a,n),r=await this.generateHmac(o);return{encryptedData:this.toBase64(i),iv:this.toBase64(t.buffer),signature:r}}catch(e){throw console.error("加密传输失败:",e),Error("特性加密失败")}}async deriveKeyFromPassword(){let e=new TextEncoder().encode(this.secretKey),a=await crypto.subtle.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits","deriveKey"]);return await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("browser-feature-salt"),iterations:1e5,hash:"SHA-256"},a,{name:"AES-GCM",length:256},!0,["encrypt"])}async generateHmac(e){try{let a=await crypto.subtle.importKey("raw",new TextEncoder().encode(this.secretKey+"_hmac"),{name:"HMAC",hash:"SHA-256"},!1,["sign"]),t=await crypto.subtle.sign("HMAC",a,new TextEncoder().encode(e));return this.toBase64(t)}catch(e){return console.error("HMAC生成失败:",e),""}}toBase64(e){try{return btoa(String.fromCharCode(...new Uint8Array(e)))}catch(e){throw console.error("Base64编码失败:",e),Error("数据编码失败")}}static async decrypt(e,a,t){try{let o=this.fromBase64(e),n="string"==typeof a?this.fromBase64(a):a,i=new TextEncoder().encode(t),r=await crypto.subtle.importKey("raw",i,{name:"PBKDF2"},!1,["deriveBits","deriveKey"]),l=await crypto.subtle.deriveKey({name:"PBKDF2",salt:new TextEncoder().encode("browser-feature-salt"),iterations:1e5,hash:"SHA-256"},r,{name:"AES-GCM",length:256}
1,!0,["decrypt"]),s=await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(n)},l,o.slice(0)),c=new TextDecoder().decode(s);return JSON.parse(c)}catch(e){throw console.error("解密失败:",e),Error("特性解密失败")}}static fromBase64(e){let a=atob(e),t=new Uint8Array(a.length);for(let e=0;e<a.length;e++)t[e]=a.charCodeAt(e);return t}constructor(e){this.secretKey=e}}let n=o},73145:(e,a,t)=>{t.d(a,{A:()=>m});var o=t(49662),n=t(20151),i=t(51352),r=t(27956),l=t(72841),s=t(48099),c=t(31842),d=t(58911),u=t(13793),h=t(22155);let g={async browserName(e){try{let r=await (0,o.fn)(),l=!1;if(r.Success){var a,t;let o=r.ResData,i=null!=(t=null==o||null==(a=o.ClinetHints)?void 0:a["Sec-CH-UA"])?t:null;if(i){if(i.match(/Chrome/)){let a=n.ModuleInfoUtil.getBrowserName();e.browser.setIsBrowserCorrect(null==a?void 0:a.includes("Chrome")),l=!0}let a=i.match(/Firefox/);if(a){let t=n.ModuleInfoUtil.getBrowserName();e.browser.setIsBrowserCorrect(a[0]===t),l=!0}}}if(!l){let a=new i.UAParser(navigator.userAgent).getResult();if("Firefox"===a.browser.name){let a=n.ModuleInfoUtil.getBrowserName();e.browser.setIsBrowserCorrect(null==a?void 0:a.includes("Firefox"))}}}catch(e){console.error(e)}},async browserVersion(e){let{majorVersion:a,browserName:t}=r.RuleUtil.getBrowserInfo(),o=t.includes("Chrome"),n=(0,s.getBrowserFeatures)({isBlink:o}),i=new c.default(d.W9),u=await i.transmit({features:n,isBlink:o}),{coreVersion:h,versionRange:g}=await (0,l.s)({data:u});if(h)e.browser.setIsBrowserVersionCorrect(h==a);else{let t=g.length>0&&a>=+g[0]&&a<=+g[1];e.browser.setIsBrowserVersionCorrect(t)}},async userAgentReal(e){try{let t=navigator.userAgent,n=!0;if([/HeadlessChrome/i,/PhantomJS/i,/Nightmare/i,/SlimerJS/i,/node\.js/i,/Puppeteer/i,/Selenium/i,/CasperJS/i,/CefSharp/i,/Awesomium/i,/Rhino/i,/Fminer/i,/WebDriver/i,/bot|spider|crawler|scraper/i].some(e=>e.test(t))||!/Mozilla/i.test(t)){n=!1,e.browser.setIsUACorrect(!1);return}let r=await (0,o.fn)();if(r.Success){var a;let e=r.ResData,o=null!=(a=null==e?void 0:e.ClinetHints)?a:{},l=new i.UAParser(t).getResult(),s=o["Sec-CH-UA"];if(s){let e=l.browser.name;(!s.includes("Chrome")||(null==e?void 0:e.toLowerCase().includes("chrome")))&&(!s.includes("Firefox")||(null==e?void 0:e.toLowerCase().includes("firefox")))&&(!s.includes("Edge")||(null==e?void 0:e.toLowerCase().includes("edge")))||(n=!1)}let c=o["Sec-CH-UA-Full-Version"];if(c&&l.browser.version){let e=c.match(/^(\d+)/),a=l.browser.version.match(/^(\d+)/);if(e&&a){let t=parseInt(e[1],10),o=parseInt(a[1],10);t!==o&&(n=!1)}}let d=o["Sec-CH-UA-Platform"];if(d&&l.os.name){let e=["Windows","macOS","Linux","Android","iOS"].find(e=>d.includes(e));e&&!l.os.name.toLowerCase().includes(e.toLowerCase())&&(n=!1)}}(!t||t.length<10)&&(n=!1),e.browser.setIsUACorrect(n)}catch(a){console.error(a),e.browser.setIsUACorrect(!1)}},async operatingSystemReal(e){try{let t=navigator.userAgent,n=!0;if(![/Windows/i,/Macintosh|Mac OS X|macOS/i,/Linux/i,/Android/i,/iPhone|iPad|iOS/i].some(e=>e.test(t))){n=!1,e.browser.setIsOSCorrect(!1);return}let r=new i.UAParser(t).getResult(),l=r.os.name,s=r.os.version,c=null;if("userAgentData"in navigator)try{let e=await navigator.userAgentData.getHighEntropyValues(["platform","platformVersion"]);e.platform&&(c=e.platform,e.platformVersion)}catch(e){}if(!c&&navigator.platform&&(c=navigator.platform),c&&l){let e={Windows:["Windows"],"Mac OS":["Mac OS","macOS"],Linux:["Linux"],Android:["Android"],iOS:["iOS"]},a=c.toLowerCase(),t=[];a.includes("win")?t=e.Windows:a.includes("mac")?t=e["Mac OS"]:a.includes("linux")?t=e.Linux:a.includes("android")?t=e.Android:(a.includes("iphone")||a.includes("ipad")||a.includes("ios"))&&(t=e.iOS),t.length>0&&(t.some(e=>l.includes(e))||(n=!1))}let d=await (0,o.fn)();if(d.Success){var a;let e=d.ResData,t=null!=(a=null==e?void 0:e.ClinetHints)?a:{},o=t["Sec-CH-UA-Platform"];if(o&&l){let e={Windows:["Windows"],macOS:["Mac OS","macOS"],Linux:["Linux"],Android:["Android"],iOS:["iOS"]},a=o.toLowerCase(),t=[];a.includes("windows")?t=e.Windows:a.includes("mac")?t=e.macOS:a.includes("linux")?t=e.Linux:a.includes("android")?t=e.Android:a.includes("ios")&&(t=e.iOS),t.length>0&&(t.some(e=>l.includes(e))||(n=!1))}let i=t["Sec-CH-UA-Platform-Version"];if(i&&s){let e=i.match(/^(\d+)/),a=s.match(/^(\d+)/);if(e&&a){let t=parseInt(e[1],10),o=parseInt(a[1],10);Math.abs(t-o)>2&&(n=!1)}}let r=t["Sec-CH-UA-Arch"];if(r){let e=null;if("userAgentData"in navigator)try{e=(await navigator.userAgentData.getHighEntropyValues(["architecture"])).architecture||null}catch(e){}if(e){let a=r.toLowerCase(),t=e.toLowerCase();a.includes(t)||t.includes(a)}}}e.browser.setIsOSCorrect(n)}catch(a){console.error(a),e.browser.setIsOSCorrect(!1)}},async isNotWebDriver(e){try{let t=!1;if(!0===navigator.webdriver&&(t=!0),"undefined"!=typeof document){var a;("__webdriver_evaluate"in document||"__driver_evaluate"in document||"__webdriver_script_fn"in document||(null==(a=document.documentElement)?void 0:a.getAttribute("webdriver"))!==null)&&(t=!0)}["__selenium_unwrapped","__webdriver_evaluate","__fxdriver_unwrapped","__fxdriver_evaluate","domAutomation","domAutomationController","_Selenium_IDE_Recorder","callPhantom","__phantom","cdc_adoQpoasnfa76pfcZLmcfl_"].some(e=>e in window)&&(t=!0);let o=navigator.userAgent||"";[/HeadlessChrome/i,/PhantomJS/i,/Selenium/i,/Puppeteer/i,/WebDriver/i,/Cypress/i,/Playwright/i,/WebdriverIO/i].some(e=>e.test(o))&&(t=!0);try{navigator.webdriver;let e=Object.getOwnPropertyDescriptor(navigator,"webdriver");e&&!e.configurable&&(t=!0)}catch(e){}e.software.setIsNotWebDriver(!t)}catch(a){console.error("WebDriver detection error:",a),e.software.setIsNotWebDriver(!1)}},async fontList(e){try{let a=!0;if("undefined"==typeof document||void 0===document.fonts){a=!1,e.software.setIsFontsListCorrect(!1);return}try{let e=await (0,h.L)();if(e&&0!==e.length){e.length<3&&(a=!1),["Arial","Times New Roman","Courier New","Verdana","Georgia"].some(a=>e.includes(a))||e.length;try{let a=document.createElement("canvas").getContext("2d");if(a){let t=e.find(e=>["Arial","Times New Roman","Courier New"].includes(e));if(t){a.font="16px ".concat(t);let e="Test";a.measureText(e).width,a.font="16px NonExistentFont12345XYZ",a.measureText(e).width}}}catch(e){}}else a=!1}catch(e){console.error("Font detection error:",e),a=!1}try{let e=Object.getOwnPropertyDescriptor(document,"fonts");e&&e.configurable}catch(e){}e.software.setIsFontsListCorrect(a)}catch(a){console.error("Font list detection error:",a),e.software.setIsFontsListCorrect(!1)}},async isTimezoneCorrect(e,a){let t=n.ModuleInfoUtil.getModuleItemByList(a,"software","ipAddressTimeZone").value,o=n.ModuleInfoUtil.getModuleItemByList(a,"software","localTimeZone").value;e.software.setIsTimezoneCorrect(t==o)},async isLanguageCorrect(e,a){let t=r.RuleUtil.detectLanguage(a.ipData);e.software.setIsLanguageCorrect(t)},async isIPCorrect(e,a,t){try{let o=n.ModuleInfoUtil.getModuleItemByList(a,"ipAddress","ip"),i=null==o?void 0:o.value;if(!i||"string"!=typeof i||0===i.trim().length||!t||!t.webRTCLeakIps||!Array.isArray(t.webRTCLeakIps))return void e.ip.setIsIPCorrect(!1);let r=t.webRTCLeakIps.map(e=>null==e?void 0:e.ip).filter(e=>e&&"string"==typeof e&&e.trim().length>0);if(0===r.length)return;let l=(0,u.Q)(i,r);e.ip.setIsIPCorrect(l)}catch(a){console.error("IP correctness detection error:",a),e.ip.setIsIPCorrect(!1)}},async proxyServer(e,a,t){try{let r=!0,l=n.ModuleInfoUtil.getModuleItemByList(a,"ipAddress","ip"),s=null==l?void 0:l.value;if(!s||"string"!=typeof s||0===s.trim().length)return void e.ip.setIsNotProxyServer(!1);if(t&&t.webRTCLeakIps&&Array.isArray(t.webRTCLeakIps)){let e=t.webRTCLeakIps.map(e=>null==e?void 0:e.ip).filter(e=>e&&"string"==typeof e&&e.trim().length>0);e.length>0&&(0,u.Q)(s,e)}try{var i;let e=null==(i=n.ModuleInfoUtil.getModuleItemByList(a,"ipAddress","internetServiceProvider"))?void 0:i.value,t=e&&"-"!==e?e:void 0,l=t?{isp:t,org:void 0}:await (0,o.QY)(s);if(l&&l.isp){let e=l.isp.toLowerCase(),a=["proxy","vpn","hosting","datacenter","server","cloud","tor","anonymizer","anonymizing","relay","tunnel","gateway"];if(a.some(a=>e.includes(a))&&(r=!1),l.org){let e=l.org.toLowerCase();a.some(a=>e.includes(a))&&(r=!1)}}}catch(e){console.error("IP info check error:",e)}e.ip.setIsNotProxyServer(r)}catch(a){console.error("Proxy/VPN detection error:",a),e.ip.setIsNotProxyServer(!1)}},async dnsLeak(e){try{var a,t;let n=await (0,o.Nq)(),i=null==(t=Object)||null==(a=t.keys(n))?void 0:a.some(e=>{var a;return null==n||null==(a=n[e])?void 0:a.Leak});e.ip.setIsDNSNotLeak(!i)}catch(e){console.error("DNS leak detection error:",e)}},async notInBlockLists(e,a){},async canvasNative(e){try{if("undefined"==typeof document||void 0===document.createElement){e.hardware.setIsCanvasCorrect(!1),e.hardware.setIsCanvasNative(!1);return}let a=document.createElement("canvas"),t=document.createElement("canvas"),o=a.getContext("2d");if(!o){e.hardware.setIsCanvasCorrect(!1),e.hardware.setIsCanvasNative(!1);return}let n=!0;try{o.fillStyle="red",o.fillRect(0,0,10,10);let e=a.toDataURL(),i=t.toDataURL();e===i&&(n=!1),e&&e.startsWith("data:image/")||(n=!1)}catch(e){console.error("Canvas drawing test error:",e),n=!1}try{let e=a.toDataURL.toString();e.includes("native code")||e.includes("[native code]")||!(e.length>200)||(n=!1);let t=o.getImageData.toString();t.includes("native code")||t.includes("[native code]")||!(t.length>200)||(n=!1);let i=o.fillRect.toString();i.includes("native code")||i.includes("[native code]")||!(i.length>200)||(n=!1)}catch(e){console.error("Canvas API proxy detection error:",e)}
1try{let e=Object.getPrototypeOf(a),t=Object.getPrototypeOf(o);e.constructor!==HTMLCanvasElement&&(n=!1),t.constructor!==CanvasRenderingContext2D&&(n=!1)}catch(e){console.error("Canvas prototype detection error:",e)}try{let e=document.createElement("canvas"),a=document.createElement("canvas"),t=e.getContext("2d"),o=a.getContext("2d");if(t&&o){t.fillStyle="blue",t.fillRect(0,0,20,20),o.fillStyle="blue",o.fillRect(0,0,20,20);let n=e.toDataURL();a.toDataURL()}}catch(e){console.error("Canvas consistency check error:",e)}e.hardware.setIsCanvasCorrect(!0),e.hardware.setIsCanvasNative(n)}catch(a){console.error("Canvas native detection error:",a),e.hardware.setIsCanvasCorrect(!1),e.hardware.setIsCanvasNative(!1)}},getWebGLContext(){if("undefined"==typeof document||void 0===document.createElement)return null;let e=document.createElement("canvas");return e.getContext("webgl")||e.getContext("experimental-webgl")},async webGL(e){try{if("undefined"==typeof document||void 0===document.createElement)return void e.hardware.setIsWebGLCorrect(!1);let a=document.createElement("canvas"),t=a.getContext("webgl")||a.getContext("experimental-webgl");if(!t)return void e.hardware.setIsWebGLCorrect(!1);let o=!0;try{if("function"!=typeof t.getParameter)o=!1;else{let e=t.getParameter(t.RENDERER),a=t.getParameter(t.VERSION);e&&"string"==typeof e&&0!==e.trim().length||(o=!1),a&&"string"==typeof a&&a.includes("WebGL")||(o=!1)}try{let e=t.getSupportedExtensions();e&&Array.isArray(e)||(o=!1)}catch(e){console.error("WebGL extensions check error:",e),o=!1}try{let e=t.createShader(t.VERTEX_SHADER),a=t.createShader(t.FRAGMENT_SHADER);e&&a?(t.deleteShader(e),t.deleteShader(a)):o=!1}catch(e){console.error("WebGL shader creation test error:",e),o=!1}try{t.getContextAttributes()||(o=!1)}catch(e){console.error("WebGL context attributes check error:",e),o=!1}try{let e=t.getParameter.toString();e.includes("native code")||e.includes("[native code]")||!(e.length>200)||(o=!1)}catch(e){console.error("WebGL method proxy detection error:",e)}}catch(e){console.error("WebGL functionality test error:",e),o=!1}e.hardware.setIsWebGLCorrect(o)}catch(a){console.error("WebGL detection error:",a),e.hardware.setIsWebGLCorrect(!1)}},async webGLVendor(e){try{let a=this.getWebGLContext();if(!a||"function"!=typeof a.getParameter)return void e.hardware.setIsWebGLVendorCorrect(!1);let t=a.getParameter(a.VENDOR);if(!t||"string"!=typeof t||0===t.trim().length)return void e.hardware.setIsWebGLVendorCorrect(!1);let o=!0,n=t.toLowerCase().trim(),i=["unknown","fake","spoofed","test","mock","dummy","null","undefined","none",""];if(i.some(e=>n===e)){o=!1,e.hardware.setIsWebGLVendorCorrect(!1);return}try{let e=a.getExtension("WEBGL_debug_renderer_info");if(e){let t=a.getParameter(e.UNMASKED_VENDOR_WEBGL),r=a.getParameter(e.UNMASKED_RENDERER_WEBGL);if(t&&"string"==typeof t&&t.trim().length>0){let e=t.toLowerCase().trim();n!==e&&!["google inc.","mozilla","apple computer, inc.","microsoft corporation"].some(e=>n.includes(e))&&(["nvidia","intel","amd","ati","qualcomm","arm","apple","adreno","mali","powervr","imagination"].some(a=>e.includes(a))||(o=!1)),i.some(a=>e===a)&&(o=!1),r&&"string"==typeof r&&r.toLowerCase()}else["google","mozilla","apple","microsoft","nvidia","intel","amd","ati","qualcomm","arm"].some(e=>n.includes(e))||(o=!1)}else["google","mozilla","apple","microsoft","nvidia","intel","amd","ati","qualcomm","arm"].some(e=>n.includes(e))||(o=!1)}catch(e){console.error("WebGL debug extension check error:",e),["google","mozilla","apple","microsoft","nvidia","intel","amd","ati","qualcomm","arm"].some(e=>n.includes(e))||(o=!1)}e.hardware.setIsWebGLVendorCorrect(o)}catch(a){console.error("WebGL vendor detection error:",a),e.hardware.setIsWebGLVendorCorrect(!1)}},async audioCorrect(e){try{let a=window.AudioContext||window.webkitAudioContext;if(!a)return void e.hardware.setIsAudioCorrect(!1);let t=null;try{t=new a}catch(a){console.error("AudioContext creation error:",a),e.hardware.setIsAudioCorrect(!1);return}if(!t)return void e.hardware.setIsAudioCorrect(!1);let o=!0;try{let e=t.state;"closed"===e&&(o=!1),("number"!=typeof t.sampleRate||t.sampleRate<=0)&&(o=!1),t.destination||(o=!1);try{let e=t.createOscillator();e?e.disconnect():o=!1;let a=t.createDynamicsCompressor();a?a.disconnect():o=!1,t.createBuffer(1,1,t.sampleRate)||(o=!1)}catch(e){console.error("Audio node creation error:",e),o=!1}try{let e=t.createOscillator.toString();e.includes("native code")||e.includes("[native code]")||!(e.length>200)||(o=!1)}catch(e){console.error("AudioContext method proxy detection error:",e)}try{Object.getPrototypeOf(t).constructor!==AudioContext&&(o=!1)}catch(e){console.error("AudioContext prototype detection error:",e)}}catch(e){console.error("AudioContext functionality test error:",e),o=!1}finally{try{t&&"closed"!==t.state&&await t.close()}catch(e){console.error("AudioContext close error:",e)}}e.hardware.setIsAudioCorrect(o)}catch(a){console.error("Audio detection error:",a),e.hardware.setIsAudioCorrect(!1)}},async audioNotFake(e){try{let a=window.AudioContext||window.webkitAudioContext;if(!a)return void e.hardware.setAudioNotFake(!1);let t=!0;try{let e=[],o=[];for(let n=0;n<3;n++)try{let t=new a,n=t.createOscillator(),i=t.createDynamicsCompressor(),r=t.createAnalyser();n.connect(i),i.connect(r),r.connect(t.destination),o.push(t.sampleRate);let l=g.generateAudioFingerprint(t,r);l&&e.push(l),n.disconnect(),i.disconnect(),r.disconnect(),await t.close()}catch(e){console.error("Audio fingerprint generation attempt ".concat(n+1," error:"),e),0===n&&(t=!1)}if(e.length>=2){let a=e[0];!e.every(e=>e===a)&&new Set(e).size>2&&(t=!1)}if(o.length>=2){let e=o[0];o.every(a=>a===e)||(t=!1);let a=[44100,48e3,22050,24e3,96e3];!o.some(e=>a.includes(e))&&o.length>0&&(t=!1)}try{let e=new a,o=new a,n=e.createOscillator(),i=o.createOscillator(),r=e.createAnalyser(),l=o.createAnalyser();n.type="sine",n.frequency.value=440,i.type="sine",i.frequency.value=440,r.fftSize=2048,l.fftSize=2048,n.connect(r),i.connect(l),r.connect(e.destination),l.connect(o.destination);let s=g.generateAudioFingerprint(e,r),c=g.generateAudioFingerprint(o,l);n.disconnect(),i.disconnect(),r.disconnect(),l.disconnect(),await e.close(),await o.close(),s&&c&&s!==c&&(t=!1)}catch(e){console.error("Audio processing consistency check error:",e),t=!1}try{let e=new a,o=e.createOscillator(),n=e.createDynamicsCompressor(),i=e.createAnalyser();("number"!=typeof o.frequency.value||o.frequency.value<=0)&&(t=!1),("number"!=typeof n.threshold.value||"number"!=typeof n.ratio.value)&&(t=!1),("number"!=typeof i.fftSize||i.fftSize<=0)&&(t=!1),o.disconnect(),n.disconnect(),i.disconnect(),await e.close()}catch(e){console.error("Audio node parameter check error:",e),t=!1}try{let e=new a,o=e.createOscillator.toString(),n=e.createAnalyser.toString();o.includes("native code")||o.includes("[native code]")||!(o.length>200)||(t=!1),n.includes("native code")||n.includes("[native code]")||!(n.length>200)||(t=!1),await e.close()}catch(e){console.error("AudioContext method proxy detection error:",e)}try{let e=new a,t=performance.now(),o=e.createOscillator(),n=e.createAnalyser();o.connect(n),n.connect(e.destination),g.generateAudioFingerprint(e,n),performance.now(),o.disconnect(),n.disconnect(),await e.close()}catch(e){console.error("Audio timing characteristics check error:",e)}}catch(e){console.error("Audio fingerprint detection error:",e),t=!1}e.hardware.setAudioNotFake(t)}catch(a){console.error("Audio fingerprint authenticity detection error:",a),e.hardware.setAudioNotFake(!1)}},generateAudioFingerprint(e,a){try{let t=[];t.push(e.sampleRate),t.push(a.fftSize),t.push(a.frequencyBinCount);let o=a.frequencyBinCount,n=new Uint8Array(o);a.getByteFrequencyData(n);let i=0,r=0,l=255;for(let e=0;e<n.length;e++){let a=n[e];i+=a,a>r&&(r=a),a<l&&(l=a)}let s=i/n.length;return t.push(s.toFixed(2)),t.push(r),t.push(l),[n.slice(0,Math.floor(o/4)),n.slice(Math.floor(o/4),Math.floor(o/2)),n.slice(Math.floor(o/2),Math.floor(3*o/4)),n.slice(Math.floor(3*o/4))].forEac
1h(e=>{let a=e.reduce((e,a)=>e+a,0);t.push((a/e.length).toFixed(2))}),t.join("-")}catch(e){return console.error("Audio fingerprint generation error:",e),null}},async touchSupport(e){e.hardware.setIsTouchSupport(r.RuleUtil.isTouchDevice())},async screenCorrect(e){try{if("undefined"==typeof screen||!screen)return void e.hardware.setIsScreenCorrect(!1);let a=!0;("number"!=typeof screen.width||"number"!=typeof screen.height||screen.width<=0||screen.height<=0)&&(a=!1),(screen.width<100||screen.height<100)&&(a=!1),(screen.width>1e5||screen.height>1e5)&&(a=!1),"number"==typeof screen.availWidth&&"number"==typeof screen.availHeight&&((screen.availWidth>screen.width||screen.availHeight>screen.height)&&(a=!1),(screen.availWidth<=0||screen.availHeight<=0)&&(a=!1),(screen.availWidth<100||screen.availHeight<100)&&(a=!1)),"number"==typeof screen.colorDepth&&screen.colorDepth>0&&![8,16,24,32].includes(screen.colorDepth)&&screen.colorDepth,"number"==typeof screen.pixelDepth&&"number"==typeof screen.colorDepth&&screen.pixelDepth!==screen.colorDepth&&(screen.pixelDepth,screen.colorDepth),window.screen&&(window.screen.width!==screen.width||window.screen.height!==screen.height)&&(a=!1);try{let e=Object.getOwnPropertyDescriptor(screen,"width"),a=Object.getOwnPropertyDescriptor(screen,"height");(null==e?void 0:e.configurable)||null==a||a.configurable}catch(e){console.error("Screen property descriptor check error:",e)}"number"==typeof window.outerWidth&&window.outerHeight,e.hardware.setIsScreenCorrect(a)}catch(a){console.error("Screen resolution detection error:",a),e.hardware.setIsScreenCorrect(!1)}},async deviceMemory(e){try{let a=navigator.deviceMemory,t=!0;if(null==a)t=navigator.userAgent.toLowerCase().indexOf("firefox")>-1;else if("number"!=typeof a)t=!1;else{a<=0&&(t=!1);let e=Math.log2(a),o=Math.pow(2,Math.round(e));Math.abs(a-o)>.01&&(t=!1),[.25,.5,1,2,4,8,16,32,64,128,256].includes(a);try{let e=Object.getOwnPropertyDescriptor(navigator,"deviceMemory");null==e||e.configurable,null==e||e.writable}catch(e){console.error("DeviceMemory property descriptor check error:",e)}}e.hardware.setDeviceMemory(t)}catch(a){console.error("Device memory detection error:",a),e.hardware.setDeviceMemory(!1)}},async webGPU(e){try{if("undefined"==typeof navigator||!navigator.gpu)return void e.hardware.setIsWebGPUCorrect(!1);let a=navigator.gpu;if("function"!=typeof a.requestAdapter)return void e.hardware.setIsWebGPUCorrect(!1);let t=!0;try{let o=await a.requestAdapter();if(!o||(o.name&&o.name,o.features&&!(o.features instanceof Set),o.limits&&o.limits,"undefined"==typeof document||void 0===document.createElement)){t=!1,e.hardware.setIsWebGPUCorrect(!1);return}try{let e=document.createElement("canvas").getContext("webgpu");if(e){if("function"==typeof e.getPreferredFormat)try{await e.getPreferredFormat(o)}catch(e){console.error("WebGPU getPreferredFormat error:",e)}if("function"==typeof e.configure)try{e.configure({device:null,format:"bgra8unorm"})}catch(e){console.error("WebGPU configure error:",e)}}else t=!1}catch(e){console.error("WebGPU context creation error:",e),t=!1}try{let e=a.requestAdapter.toString();e.includes("native code")||e.includes("[native code]")||e.length}catch(e){console.error("WebGPU API method proxy detection error:",e)}}catch(e){console.error("WebGPU adapter detection error:",e),t=!1}e.hardware.setIsWebGPUCorrect(t)}catch(a){console.error("WebGPU detection error:",a),e.hardware.setIsWebGPUCorrect(!1)}},async OSCCorrect(e){try{let t=navigator.userAgent,n=!0,r=new i.UAParser(t).getResult().cpu,l=(null==r?void 0:r.architecture)||"",s=null,c=null;if("userAgentData"in navigator)try{let e=await navigator.userAgentData.getHighEntropyValues(["architecture","bitness"]);e.architecture&&(s=e.architecture),e.bitness&&e.bitness}catch(e){console.error("UserAgentData API error:",e)}if(!s&&navigator.platform){let e=navigator.platform.toLowerCase();e.includes("win")?/WOW64|Win64|x64|amd64/i.test(t)?s="x86":/x86|i386|i686/i.test(t)&&(s="x86"):e.includes("mac")?/arm64|aarch64/i.test(t)?s="arm":/x86_64|amd64/i.test(t)&&(s="x86"):e.includes("linux")&&(/arm64|aarch64/i.test(t)?s="arm":/x86_64|amd64/i.test(t)?s="x86":/x86|i386|i686/i.test(t)&&(s="x86"))}if(s&&l){let e=s.toLowerCase(),a=l.toLowerCase(),t={x86:["x86","i386","i686","ia32","x32"],x64:["x64","x86_64","amd64","x86-64"],arm:["arm","armv7","armv7l"],arm64:["arm64","aarch64","armv8"]},o=Object.keys(t).filter(a=>e.includes(a)||a.includes(e)),n=Object.keys(t).filter(e=>t[e].some(e=>a.includes(e)));o.length>0&&n.length>0&&o.some(e=>n.includes(e))}if(l){let e=l.toLowerCase();["x86","x64","x86_64","amd64","arm","arm64","aarch64","ia32","i386","i686"].some(a=>e.includes(a))||l.trim().length}let d=await (0,o.fn)();if(d.Success){var a;let e=d.ResData,t=null!=(a=null==e?void 0:e.ClinetHints)?a:{},o=t["Sec-CH-UA-Arch"];if(o){let e=o.toLowerCase();if(l){let a=l.toLowerCase();[e.includes("x86")&&a.includes("x86")||e.includes("x86")&&a.includes("i386")||e.includes("x86")&&a.includes("i686"),e.includes("x64")&&a.includes("x64")||e.includes("x64")&&a.includes("x86_64")||e.includes("x64")&&a.includes("amd64"),e.includes("arm")&&a.includes("arm")||e.includes("arm")&&a.includes("aarch64")].some(e=>e)||(n=!1)}if(s){let e=s.toLowerCase(),a=o.toLowerCase();[a.includes("x86")&&e.includes("x86"),a.includes("x64")&&e.includes("x64")||a.includes("x64")&&e.includes("x86"),a.includes("arm")&&e.includes("arm")].some(e=>e)||(n=!1)}}let i=t["Sec-CH-UA-Bitness"]}if("number"==typeof navigator.hardwareConcurrency){let e=navigator.hardwareConcurrency;0===e&&(n=!1)}if(navigator.platform&&s){let e=navigator.platform.toLowerCase(),a=s.toLowerCase();e.includes("win")?a.includes("x86")||a.includes("x64"):!e.includes("mac")||a.includes("x64")||a.includes("arm")||a.includes("aarch64")}e.hardware.setIsOSCCorrect(n)}catch(e){console.error("OS CPU fingerprint detection error:",e)}},async canvasNoise(e){try{if("undefined"==typeof document||void 0===document.createElement)return;let a=await r.RuleUtil.checkCanvasNoise(),t=a.isNatural;t||console.warn("Canvas noise detection: artificial noise detected",{reason:a.reason,details:a.details}),e.hardware.setIsCanvasNoiseNatural(t)}catch(e){console.error("Canvas noise detection error:",e)}},async antiBrowser(e){try{var a,t;let n=!0;if(["__nightmare","__phantomas","__selenium_unwrapped","__webdriver_script_fn","__driver_evaluate","__webdriver_evaluate","__fxdriver_unwrapped","__fxdriver_evaluate","__phantom","callPhantom","spawn","domAutomation","domAutomationController","cdc_adoQpoasnfa76pfcZLmcfl_","_Selenium_IDE_Recorder","__webdriver_script_fn","navigator.webdriver","__playwright","__pw","__puppeteer","__selenium","__webdriver","FingerprintJS","fingerprintjs","canvasDefender","canvasBlocker","privacyBadger","ghostery","adblock","ublock"].some(e=>e in window)&&(n=!1),"undefined"!=typeof document&&(["__webdriver_evaluate","__driver_evaluate","__webdriver_script_fn","__selenium_unwrapped","__fxdriver_unwrapped","__fxdriver_evaluate"].some(e=>e in document)&&(n=!1),(null==(a=document.documentElement)?void 0:a.getAttribute("webdriver"))!==null&&(n=!1)),"undefined"!=typeof navigator){!0===navigator.webdriver&&(n=!1);let e=0;for(let a of["userAgent","platform","language","languages","hardwareConcurrency","deviceMemory","maxTouchPoints"])try{let t=Object.getOwnPropertyDescriptor(navigator,a);t&&(t.configurable||t.writable)&&e++}catch(e){}if(e>=5&&(n=!1),navigator.plugins){navigator.plugins.length;try{let e=navigator.plugins.toString();!e.includes("native code")&&e.length>500&&(n=!1)}catch(e){}}}let r=navigator.userAgent||"";[/HeadlessChrome/i,/PhantomJS/i,/Nightmare/i,/SlimerJS/i,/node\.js/i,/Puppeteer/i,/Selenium/i,/CasperJS/i,/CefSharp/i,/Awesomium/i,/Rhino/i,/Fminer/i,/WebDriver/i,/bot|spider|crawler|scraper/i,/Multilogin/i,/GoLogin/i,/AdsPower/i,/Dolphin/i,/VMLogin/i,/LinkenSphere/i,/Incogniton/i,/GhostBrowser/i,/FingerprintJS/i].some(e=>e.test(r))&&(n=!1);try{if("undefined"!=typeof document&&void 0!==document.createElement){let e=document.createElement("canvas"),a=e.getContext("2d");if(a){let t=e.toDataURL.toString();t.includes("native code")||t.includes("[native code]")||!(t.length>200)||(n=!1);let o=a.getImageData.toString();o.includes("native code")||o.includes("[native code]")||!(o.length>200)||(n=!1)}}}catch(e){console.error("Canvas anti-browser detection error:",e)}
1try{if("undefined"!=typeof document&&void 0!==document.createElement){let e=document.createElement("canvas"),a=e.getContext("webgl")||e.getContext("experimental-webgl");if(a){let e=a.getParameter.toString();e.includes("native code")||e.includes("[native code]")||!(e.length>200)||(n=!1)}}}catch(e){console.error("WebGL anti-browser detection error:",e)}try{let e=window.AudioContext||window.webkitAudioContext;if(e){let a=new e,t=a.createOscillator.toString();t.includes("native code")||t.includes("[native code]")||!(t.length>200)||(n=!1),await a.close()}}catch(e){console.error("AudioContext anti-browser detection error:",e)}try{if("undefined"!=typeof screen){let e=0;for(let a of["width","height","availWidth","availHeight"])try{let t=Object.getOwnPropertyDescriptor(screen,a);t&&(t.configurable||t.writable)&&e++}catch(e){}e>=3&&(n=!1)}}catch(e){console.error("Screen anti-browser detection error:",e)}try{if("undefined"!=typeof document&&void 0!==document.fonts){let e=Object.getOwnPropertyDescriptor(document,"fonts");e&&e.configurable}}catch(e){console.error("Fonts anti-browser detection error:",e)}try{performance.now();let e=document.createElement("canvas"),a=e.getContext("2d");a&&(a.fillRect(0,0,10,10),e.toDataURL()),performance.now()}catch(e){console.error("Timing anti-browser detection error:",e)}try{let e=await (0,o.fn)();if(e.Success){let a=e.ResData,o=null!=(t=null==a?void 0:a.ClinetHints)?t:{},l=new i.UAParser(r).getResult(),s=o["Sec-CH-UA"];if(s){let e=l.browser.name;(!s.includes("Chrome")||(null==e?void 0:e.toLowerCase().includes("chrome")))&&(!s.includes("Firefox")||(null==e?void 0:e.toLowerCase().includes("firefox")))&&(!s.includes("Edge")||(null==e?void 0:e.toLowerCase().includes("edge")))||(n=!1)}let c=o["Sec-CH-UA-Platform"];if(c&&l.os.name){let e={Windows:["Windows"],macOS:["Mac OS","macOS"],Linux:["Linux"],Android:["Android"],iOS:["iOS"]},a=c.toLowerCase(),t=[];a.includes("windows")?t=e.Windows:a.includes("mac")?t=e.macOS:a.includes("linux")?t=e.Linux:a.includes("android")?t=e.Android:a.includes("ios")&&(t=e.iOS),t.length>0&&(t.some(e=>l.os.name.includes(e))||(n=!1))}}}catch(e){console.error("Client Hints anti-browser detection error:",e)}e.hardware.setIsNotAntiBrowser(n)}catch(a){console.error("Anti-browser detection error:",a),e.hardware.setIsNotAntiBrowser(!1)}},async clientRectCorrect(e){try{if("undefined"==typeof document||!document.documentElement)return void e.hardware.setIsClientRectCorrect(!1);let a=!0;("number"!=typeof window.innerWidth||"number"!=typeof window.innerHeight||window.innerWidth<=0||window.innerHeight<=0)&&(a=!1),(window.innerWidth<100||window.innerHeight<100)&&(a=!1),(window.innerWidth>1e5||window.innerHeight>1e5)&&(a=!1),("number"!=typeof document.documentElement.clientWidth||"number"!=typeof document.documentElement.clientHeight||document.documentElement.clientWidth<=0||document.documentElement.clientHeight<=0)&&(a=!1),(document.documentElement.clientWidth<100||document.documentElement.clientHeight<100)&&(a=!1),(document.documentElement.clientWidth>1e5||document.documentElement.clientHeight>1e5)&&(a=!1),"undefined"!=typeof screen&&(window.innerWidth>2*screen.width||(window.innerHeight,screen.height),window.innerWidth>screen.width+100||(window.innerHeight,screen.height)),"number"==typeof window.outerWidth&&"number"==typeof window.outerHeight&&((window.outerWidth<window.innerWidth||window.outerHeight<window.innerHeight)&&(a=!1),(window.outerWidth<100||window.outerHeight<100)&&(a=!1));try{let e={innerWidth:window.innerWidth,innerHeight:window.innerHeight,clientWidth:document.documentElement.clientWidth,clientHeight:document.documentElement.clientHeight};await new Promise(e=>setTimeout(e,10));let t={innerWidth:window.innerWidth,innerHeight:window.innerHeight,clientWidth:document.documentElement.clientWidth,clientHeight:document.documentElement.clientHeight};
1(e.innerWidth!==t.innerWidth||e.innerHeight!==t.innerHeight||e.clientWidth!==t.clientWidth||e.clientHeight!==t.clientHeight)&&(a=!1)}catch(e){console.error("ClientRect consistency check error:",e)}try{if(void 0!==document.createElement){let e=document.createElement("div"),t=e.getBoundingClientRect.toString();t.includes("native code")||t.includes("[native code]")||!(t.length>200)||(a=!1),document.body.appendChild(e);let o=e.getBoundingClientRect();("number"!=typeof o.width||"number"!=typeof o.height||"number"!=typeof o.top||"number"!=typeof o.left||o.width<0||o.height<0)&&(a=!1),document.body.removeChild(e)}}catch(e){console.error("getBoundingClientRect detection error:",e)}try{let e=Object.getOwnPropertyDescriptor(window,"innerWidth"),a=Object.getOwnPropertyDescriptor(window,"innerHeight");(null==e?void 0:e.configurable)||null==a||a.configurable}catch(e){console.error("Window property descriptor check error:",e)}try{let e=Object.getOwnPropertyDescriptor(document.documentElement,"clientWidth"),a=Object.getOwnPropertyDescriptor(document.documentElement,"clientHeight");(null==e?void 0:e.configurable)||null==a||a.configurable}catch(e){console.error("DocumentElement property descriptor check error:",e)}"undefined"!=typeof screen&&(window.innerWidth>screen.width+50||(window.innerHeight,screen.height),document.documentElement.clientWidth>window.innerWidth+50||(document.documentElement.clientHeight,window.innerHeight));try{let e=document.documentElement.getBoundingClientRect();e&&(e.width-document.documentElement.clientWidth,e.height-document.documentElement.clientHeight)}catch(e){console.error("Viewport rect check error:",e)}e.hardware.setIsClientRectCorrect(a)}catch(e){console.error("ClientRect fingerprint detection error:",e)}},calculateDistance(e,a,t,o){let n=(t-e)*Math.PI/180,i=(o-a)*Math.PI/180,r=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(t*Math.PI/180)*Math.sin(i/2)*Math.sin(i/2);return 2*Math.atan2(Math.sqrt(r),Math.sqrt(1-r))*6371},async geoCorrect(e,a){try{if("undefined"==typeof navigator||!navigator.geolocation)return void e.location.setIsGeoCorrect(!1);let l=!0;if("function"!=typeof navigator.geolocation.getCurrentPosition){l=!1,e.location.setIsGeoCorrect(!1);return}navigator.geolocation.watchPosition,navigator.geolocation.clearWatch;try{let e=navigator.geolocation.getCurrentPosition.toString();e.includes("native code")||e.includes("[native code]")||e.length}catch(e){console.error("Geolocation method proxy detection error:",e)}try{let s=new Promise((e,a)=>{let t=setTimeout(()=>{a(Error("Geolocation timeout"))},5e3);navigator.geolocation.getCurrentPosition(a=>{clearTimeout(t),e(a)},e=>{clearTimeout(t),a(e)},{timeout:5e3,maximumAge:0,enableHighAccuracy:!1})}),c=await Promise.race([s,new Promise((e,a)=>setTimeout(()=>a(Error("Timeout")),6e3))]);if(c&&c.coords){let s=c.coords;if("number"!=typeof s.latitude||"number"!=typeof s.longitude||isNaN(s.latitude)||isNaN(s.longitude))l=!1;else if(s.latitude<-90||s.latitude>90||s.longitude<-180||s.longitude>180)l=!1;else if(a)try{var t,o,i,r;let l=null==(t=n.ModuleInfoUtil.getModuleItemByList(a,"location","latitude"))?void 0:t.value,c=null==(o=n.ModuleInfoUtil.getModuleItemByList(a,"location","longitude"))?void 0:o.value,d=null==(i=n.ModuleInfoUtil.getModuleItemByList(a,"location","countryRegionCode"))?void 0:i.value;if(null==(r=n.ModuleInfoUtil.getModuleItemByList(a,"location","countryRegion"))||r.value,l&&c&&"string"==typeof l&&"string"==typeof c){let e=parseFloat(l),a=parseFloat(c);if(!isNaN(e)&&!isNaN(a)){let t=g.calculateDistance(s.latitude,s.longitude,e,a);t>500&&console.warn("Geolocation distance from IP: ".concat(t.toFixed(2)," km (exceeds ").concat(500," km)"))}}e.location.setIsGeoLegal(!0)}catch(e){console.error("Geolocation legality check error:",e)}else e.location.setIsGeoLegal(!0);"number"==typeof s.accuracy&&s.accuracy,"number"==typeof s.altitude&&(s.altitude<-1e3||s.altitude)}else l=!1,e.location.setIsGeoLegal(!1)}catch(a){if(console.error("Geolocation getCurrentPosition error:",a),a.code){let t=a.code;1===t?(console.warn("Geolocation permission denied by user"),e.location.setIsGeoLegal(!0)):2===t?l=!1:3===t?e.location.setIsGeoLegal(!0):(l=!1,e.location.setIsGeoLegal(!1))}else e.location.setIsGeoLegal(!0)}try{let e=Object.getOwnPropertyDescriptor(navigator,"geolocation");e&&e.configurable}catch(e){console.error("Geolocation property descriptor check error:",e)}
1try{if("permissions"in navigator&&navigator.permissions){let e=await navigator.permissions.query({name:"geolocation"});e&&("denied"===e.state||"granted"===e.state||e.state)}}catch(e){console.error("Permissions API check error:",e)}e.location.setIsGeoCorrect(l)}catch(e){console.error("Geolocation API detection error:",e)}},async webrtcCorrect(e,a,t){try{if(!a||"string"!=typeof a||0===a.trim().length)return void console.warn("Invalid IP address for WebRTC leak detection");if(!Array.isArray(t))return void console.warn("filterValue is not an array for WebRTC leak detection");let o=t.filter(e=>e&&"string"==typeof e&&e.trim().length>0);if(0===o.length)return void console.warn("No valid WebRTC IPs detected, cannot determine leak status");let n=(0,u.Q)(a,o);e.ip.setIsWebRTCNotLeak(n),n||console.warn("WebRTC leak detected:","Current IP: ".concat(a,", WebRTC IPs: ").concat(o.join(", ")))}catch(e){console.error("WebRTC leak detection error:",e)}},async tlsCorrect(e){try{let a=!0,t=null;try{let n=await (0,o.oN)();if(n&&n.Success&&n.ResData&&n.ResData.Tls)t=n.ResData.Tls;else{console.warn("TLS info fetch failed or invalid response"),a=!1,e.software.setIsTLSCorrect(!1);return}}catch(t){console.error("TLS info fetch error:",t),a=!1,e.software.setIsTLSCorrect(!1);return}if(!t){a=!1,e.software.setIsTLSCorrect(!1);return}let n=t.Ja3String,i=t.Ja3Hash,r=t.Ja4Hash,l=t.FingerprintHash;n?"string"!=typeof n||0===n.length?a=!1:/^(\d+(-\d+)*)(,(\d+(-\d+)*))*$/.test(n)||(a=!1,console.warn("Invalid JA3 string format:",n)):(a=!1,console.warn("JA3 string is missing")),i?"string"!=typeof i||32!==i.length?(a=!1,console.warn("Invalid JA3 hash format:",i)):/^[0-9a-fA-F]{32}$/.test(i)||(a=!1,console.warn("Invalid JA3 hash hex format:",i)):(a=!1,console.warn("JA3 hash is missing")),r&&("string"!=typeof r||0===r.length)&&(a=!1,console.warn("Invalid JA4 hash format:",r)),l&&("string"!=typeof l||0===l.length)&&(a=!1,console.warn("Invalid fingerprint hash format:",l));try{let e=navigator.userAgent;e&&[/HeadlessChrome/i,/Puppeteer/i,/Selenium/i,/PhantomJS/i,/Electron/i].some(a=>a.test(e))&&console.warn("User-Agent contains anti-fingerprint patterns")}catch(e){console.error("User-Agent check error:",e)}if(n){let e=n.split(",");e.length>0&&(new Set(e).size<.3*e.length&&console.warn("JA3 string contains many duplicate values"),e.every(e=>"0"===e||""===e)&&(a=!1,console.warn("JA3 string contains only zeros")))}try{let e=t.Alpn;e&&("string"!=typeof e||0===e.length)&&console.warn("Invalid ALPN format:",e)}catch(e){console.error("ALPN check error:",e)}e.software.setIsTLSCorrect(a)}catch(a){console.error("TLS fingerprint detection error:",a),e.software.setIsTLSCorrect(!1)}},async gpuInfoCorrect(e){try{var a,t,o,n,i,r,l,s,c,d,u,h,m;let S=!0,p=null;try{if("undefined"!=typeof navigator&&navigator.gpu&&"function"==typeof navigator.gpu.requestAdapter){let e=navigator.gpu,a=await e.requestAdapter();a&&(a.name&&"string"==typeof a.name&&(p={name:a.name}),a.info&&(p={...p,vendor:a.info.vendor,architecture:a.info.architecture,device:a.info.device,description:a.info.description}))}}catch(e){console.error("WebGPU info fetch error:",e)}let f=null;try{let e=g.getWebGLContext();if(e){let a=e.getParameter(e.VENDOR),t=e.getParameter(e.RENDERER);f={vendor:"string"==typeof a?a:void 0,renderer:"string"==typeof t?t:void 0};let o=e.getExtension("WEBGL_debug_renderer_info");if(o){let a=e.getParameter(o.UNMASKED_VENDOR_WEBGL),t=e.getParameter(o.UNMASKED_RENDERER_WEBGL);f={...f,unmaskedVendor:"string"==typeof a?a:void 0,unmaskedRenderer:"string"==typeof t?t:void 0}}}}catch(e){console.error("WebGL info fetch error:",e)}if(!p&&!f){S=!1,e.hardware.setIsGPUInfoCorrect(!1);return}let C=["nvidia","intel","amd","ati","qualcomm","arm","apple","adreno","mali","powervr","imagination","google","microsoft"],w=!1;if(p){let e=(null==(a=p.name)?void 0:a.toLowerCase())||"",n=(null==(t=p.vendor)?void 0:t.toLowerCase())||"",i=(null==(o=p.device)?void 0:o.toLowerCase())||"";C.some(a=>e.includes(a)||n.includes(a)||i.includes(a))?w=!0:e.length>0&&console.warn("WebGPU vendor not in common list:",e)}if(f){let e=(null==(n=f.vendor)?void 0:n.toLowerCase())||"",a=(null==(i=f.renderer)?void 0:i.toLowerCase())||"",t=(null==(r=f.unmaskedVendor)?void 0:r.toLowerCase())||"",o=(null==(l=f.unmaskedRenderer)?void 0:l.toLowerCase())||"",s=t||e,c=o||a;C.some(e=>s.includes(e)||c.includes(e))?w=!0:(s.length>0||c.length>0)&&console.warn("WebGL vendor not in common list:",s||c)}if(!w&&(p||f)&&(S=!1),p&&f){let e=(null==(s=p.name)?void 0:s.toLowerCase())||"",a=(null==(c=p.vendor)?void 0:c.toLowerCase())||"",t=(null==(d=f.unmaskedVendor)?void 0:d.toLowerCase())||(null==(u=f.vendor)?void 0:u.toLowerCase())||"",o=(null==(h=f.unmaskedRenderer)?void 0:h.toLowerCase())||(null==(m=f.renderer)?void 0:m.toLowerCase())||"";if(a&&t){let e=e=>e.replace(/\s+corporation/i,"").replace(/\s+inc\.?/i,"").replace(/\s+technologies/i,"").replace(/\s+limited/i,"").trim(),o=e(a),n=e(t),i=["nvidia","intel","amd","ati","qualcomm","arm","apple"],r=i.find(e=>o.includes(e)),l=i.find(e=>n.includes(e));r&&l&&r!==l&&(S=!1,console.warn("WebGPU and WebGL vendor mismatch:",a,"vs",t))}if(e&&o){let a=e=>e.replace(/nvidia\s+/i,"").replace(/intel\s+/i,"").replace(/amd\s+/i,"").replace(/ati\s+/i,"").replace(/qualcomm\s+/i,"").replace(/arm\s+/i,"").trim(),t=a(e),n=a(o);t.length>0&&n.length>0&&!t.includes(n)&&!n.includes(t)&&console.warn("WebGPU and WebGL model mismatch:",t,"vs",n)}}let y=["unknown","fake","virtual","emulated","software","null","undefined","test","mock"],v=e=>{let a=e.toLowerCase();return y.some(e=>a.includes(e))};
1if(p&&(p.name&&v(p.name)&&(S=!1,console.warn("WebGPU name contains suspicious pattern:",p.name)),p.vendor&&v(p.vendor)&&(S=!1,console.warn("WebGPU vendor contains suspicious pattern:",p.vendor))),f){let e=f.unmaskedVendor||f.vendor||"",a=f.unmaskedRenderer||f.renderer||"";e&&v(e)&&(S=!1,console.warn("WebGL vendor contains suspicious pattern:",e)),a&&v(a)&&(S=!1,console.warn("WebGL renderer contains suspicious pattern:",a))}if(p&&p.name&&0===p.name.trim().length&&(S=!1),f){let e=f.unmaskedVendor||f.vendor||"",a=f.unmaskedRenderer||f.renderer||"";0===e.trim().length&&0===a.trim().length&&(S=!1)}e.hardware.setIsGPUInfoCorrect(S)}catch(a){console.error("GPU info detection error:",a),e.hardware.setIsGPUInfoCorrect(!1)}},async notPrivate(e){try{let a=!1;try{await r.RuleUtil.detectIncognitoAsync()&&(a=!0)}catch(e){console.error("detectIncognito library error:",e)}try{let e="__incognito_test__",t="test";try{localStorage.setItem(e,t);let o=localStorage.getItem(e);localStorage.removeItem(e),o!==t&&(a=!0)}catch(e){a=!0}try{sessionStorage.setItem(e,t);let o=sessionStorage.getItem(e);sessionStorage.removeItem(e),o!==t&&(a=!0)}catch(e){a=!0}}catch(e){console.error("Storage test error:",e)}
1try{if("indexedDB"in window){let e=indexedDB.open("__incognito_test__",1);await new Promise((t,o)=>{e.onsuccess=()=>{e.result.close(),indexedDB.deleteDatabase("__incognito_test__"),t()},e.onerror=()=>{a=!0,t()},e.onblocked=()=>{a=!0,t()},setTimeout(()=>{o(Error("IndexedDB test timeout"))},2e3)})}}catch(e){console.error("IndexedDB test error:",e)}try{"webkitRequestFileSystem"in window||window}catch(e){console.error("FileSystem API check error:",e)}try{navigator.plugins&&0===navigator.plugins.length&&console.warn("No plugins detected, might be incognito mode")}catch(e){console.error("Plugins check error:",e)}try{navigator.languages&&(0===navigator.languages.length||1===navigator.languages.length&&navigator.languages[0]===navigator.language)&&console.warn("Languages list might indicate incognito mode")}catch(e){console.error("Languages check error:",e)}try{"undefined"!=typeof RTCPeerConnection||void 0!==window.webkitRTCPeerConnection||window.mozRTCPeerConnection}catch(e){console.error("WebRTC check error:",e)}try{let e=document.createElement("canvas"),a=e.getContext("2d");if(a){a.textBaseline="top",a.font="14px 'Arial'",a.textBaseline="alphabetic",a.fillStyle="#f60",a.fillRect(125,1,62,20),a.fillStyle="#069",a.fillText("Canvas fingerprint test",2,15),a.fillStyle="rgba(102, 204, 0, 0.7)",a.fillText("Canvas fingerprint test",4,17);let t=e.toDataURL();(t.length<100||"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="===t)&&console.warn("Canvas fingerprint might indicate incognito mode")}}catch(e){console.error("Canvas check error:",e)}try{let e=document.createElement("canvas"),a=e.getContext("webgl")||e.getContext("experimental-webgl");if(a){let e=a.getExtension("WEBGL_debug_renderer_info");if(e){let t=a.getParameter(e.UNMASKED_RENDERER_WEBGL);t&&"string"==typeof t&&/SwiftShader|Software|Mesa|LLVM/i.test(t)&&console.warn("WebGL software renderer might indicate incognito mode")}}}catch(e){console.error("WebGL check error:",e)}try{navigator.webkitTemporaryStorage||navigator.webkitPersistentStorage,navigator.mozInnerScreenX,navigator.standalone}catch(e){console.error("Browser-specific check error:",e)}e.browser.setNotPrivate(!a),a&&console.warn("Incognito/Private mode detected")}catch(e){console.error("Incognito mode detection error:",e)}}},m=g}}]);

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.