ibp-tms 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/tms.js +1 -1
  3. package/tms.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ibp-tms",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Style & JS optimized",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tms.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=300,c=0;function d(o,i){const c=Date.now();if(t&&e){const d=o-t.x,r=i-t.y,l=c-e,a=Math.sqrt(d*d+r*r)/l;n.push({dx:d,dy:r,dt:l,velocity:a}),n.length>100&&n.shift()}t={x:o,y:i},e=c}function r(){if(function(t){if(i>0&&(t=i),n.length-c<(t||20))return!1;c=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),d=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&d}()){let t="/tfp/"+function(){let t=function(t){let e=0,n=0,o=0,i=0,c=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let d=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=d,c.push(d/(t.dt||1e-5))}));let d=c.length?c.reduce(((t,e)=>t+e),0)/c.length:0,r=Math.atan2(n,e);return[Math.round(255*Math.min(1,d/5)),Math.round(255*(r+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n),e=function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(t[0],t[1],t[2]);return btoa(`C100|${e}|${t[0]}|${t[1]}|${t[2]}|7`).replace(/[^A-z0-9\.]/gi,"-e")}()+".png";(new Image).src=t}}function l(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}let a=0;function u(){r(),a++,a<10&&setTimeout((()=>{u()}),5e3*a)}function s(){u(),document.addEventListener("click",(()=>{r()})),document.addEventListener("touchend",(()=>{r()}))}function f(){document.body.addEventListener("ag.tsm.valid",(t=>{let e=l();var n;e.token=t.detail.token,e.id=t.detail.id,n=e,window.localStorage.setItem("TSM",JSON.stringify(n))}))}o=l(),document.body.hasAttribute("r-id")?f():(i=function(){if(navigator.webdriver)return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if((t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):"").includes("Mesa OffScreen"))return 700}}catch(e){}let t=!1;const e=new Error;return Object.defineProperty(e,"stack",{get(){t=!0}}),t?400:0}(),null!=o&&o.valid||(document.addEventListener("mousemove",(t=>d(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{d(window.scrollX,window.scrollY)})),s()))}(),{})));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=300,c=0;function d(o,i){const c=Date.now();if(t&&e){const d=o-t.x,r=i-t.y,l=c-e,a=Math.sqrt(d*d+r*r)/l;n.push({dx:d,dy:r,dt:l,velocity:a}),n.length>100&&n.shift()}t={x:o,y:i},e=c}function r(){if(function(t){if(i>0&&(t=i),n.length-c<(t||20))return!1;c=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),d=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&d}()){let t="/tfp/"+function(){let t=function(t){let e=0,n=0,o=0,i=0,c=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let d=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=d,c.push(d/(t.dt||1e-5))}));let d=c.length?c.reduce(((t,e)=>t+e),0)/c.length:0,r=Math.atan2(n,e);return[Math.round(255*Math.min(1,d/5)),Math.round(255*(r+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n),e=function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(t[0],t[1],t[2]);return btoa(`C100|${e}|${t[0]}|${t[1]}|${t[2]}|7`).replace(/[^A-z0-9\.]/gi,"-e")}()+".png";(new Image).src=t}}function l(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}let a=0;function u(){r(),a++,a<10&&setTimeout((()=>{u()}),5e3*a)}function s(){u(),document.addEventListener("click",(()=>{r()})),document.addEventListener("touchend",(()=>{r()}))}function f(){document.body.addEventListener("ag.tsm.valid",(t=>{let e=l();var n;null==e&&(e={}),e.token=t.detail.token,e.id=t.detail.id,n=e,window.localStorage.setItem("TSM",JSON.stringify(n))}))}o=l(),document.body.hasAttribute("r-id")?f():(i=function(){if(navigator.webdriver)return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl");if(e){const t=e.getExtension("WEBGL_debug_renderer_info");if((t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):"").includes("Mesa OffScreen"))return 700}}catch(e){}let t=!1;const e=new Error;return Object.defineProperty(e,"stack",{get(){t=!0}}),t?400:0}(),null!=o&&o.valid||(document.addEventListener("mousemove",(t=>d(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&d(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{d(window.scrollX,window.scrollY)})),s()))}(),{})));
package/tms.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","\r\n(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 300;\r\n\r\n let lastLength = 0;\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver)return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : ''; \r\n if (renderer.includes('Mesa OffScreen')) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 400;\r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:20)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function updateScore(){\r\n if(isHuman()){ \r\n let src = \"/tfp/\"+getHash()+'.png';\r\n var image = new Image();\r\n image.src = src;\r\n }\r\n }\r\n\r\n function getHash(){\r\n let rgb = huristicAdaption(movements);\r\n let score = rgbToGrayWight(rgb[0],rgb[1],rgb[2]); \r\n return btoa(`C100|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|7`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(){\r\n updateScore();\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate();\r\n document.addEventListener('click',()=>{updateScore();});\r\n document.addEventListener('touchend',()=>{updateScore();});\r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue();\r\n if(document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","updateScore","limit","varying","some","m","arr","abs","nonLinear","irregular","isHuman","src","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","b","direction","atan2","round","min","PI","huristicAdaption","score","r","g","gray","rgbToGrayWight","btoa","replace","getHash","Image","getCurrentValue","window","localStorage","getItem","JSON","parse","currentIndex","autoUpdate","setTimeout","start","document","addEventListener","attachListener","body","e","currentValue","value","token","detail","id","setItem","stringify","hasAttribute","navigator","webdriver","languages","canvas","createElement","gl","getContext","debugInfo","getExtension","getParameter","UNMASKED_RENDERER_WEBGL","includes","cdpDetected","Error","Object","defineProperty","get","getSuspectAutomationScore","valid","clientX","clientY","t","touches","scrollX","scrollY"],"sourceRoot":""}
1
+ {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","\r\n(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 300;\r\n\r\n let lastLength = 0;\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver)return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : ''; \r\n if (renderer.includes('Mesa OffScreen')) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 400;\r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:20)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function updateScore(){\r\n if(isHuman()){ \r\n let src = \"/tfp/\"+getHash()+'.png';\r\n var image = new Image();\r\n image.src = src;\r\n }\r\n }\r\n\r\n function getHash(){\r\n let rgb = huristicAdaption(movements);\r\n let score = rgbToGrayWight(rgb[0],rgb[1],rgb[2]); \r\n return btoa(`C100|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|7`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(){\r\n updateScore();\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate();\r\n document.addEventListener('click',()=>{updateScore();});\r\n document.addEventListener('touchend',()=>{updateScore();});\r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue();\r\n if(document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","updateScore","limit","varying","some","m","arr","abs","nonLinear","irregular","isHuman","src","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","b","direction","atan2","round","min","PI","huristicAdaption","score","r","g","gray","rgbToGrayWight","btoa","replace","getHash","Image","getCurrentValue","window","localStorage","getItem","JSON","parse","currentIndex","autoUpdate","setTimeout","start","document","addEventListener","attachListener","body","e","currentValue","value","token","detail","id","setItem","stringify","hasAttribute","navigator","webdriver","languages","canvas","createElement","gl","getContext","debugInfo","getExtension","getParameter","UNMASKED_RENDERER_WEBGL","includes","cdpDetected","Error","Object","defineProperty","get","getSuspectAutomationScore","valid","clientX","clientY","t","touches","scrollX","scrollY"],"sourceRoot":""}