{"version":3,"sources":["images/mobile_off.svg","components/Spinner.js","App.js","serviceWorker.js","index.js","images/logo.svg","images/home_page.png"],"names":["module","exports","__webpack_require__","p","Spinner","_ref","darkBackground","size","absolute","fancy","view","react_default","a","createElement","className","concat","style","width","height","marginLeft","marginTop","defaultProps","PlotHeight","PlotPadding","Intensity","Sharpness","Continuous","Transient","TransientWidth","BackendBasePath","State","NEW","EDIT","DELETE","App","state","plotState","showTransient","showContinuous","selected","selectedType","selectedDirection","permalink","lastUpdate","saving","copy","isModalOpen","isLoadModalOpen","isCodeViewVisibile","continuousSelection","timeInterval","loadError","loadFile","screen","window","innerWidth","innerHeight","mouse","x","y","duration","data","Version","Pattern","updateTimeout","updateHaptic","_this","clearInterval","setTimeout","onSave","onMouseMove","event","container","stage","content","getBoundingClientRect","evt","clientX","left","clientY","top","plotXOffset","pattern","Object","toConsumableArray","value","Math","max","min","time","Event","EventType","Time","EventDuration","EventParameters","map","e","ParameterID","ParameterValue","setState","objectSpread","onResize","onDurationChange","target","onNewTransient","onMouseDown","_ref2","index","type","direction","show","onMouseUp","_ref3","onNewItemMove","_ref4","onMouseLeave","_ref5","onDeleteEvent","splice","showModal","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","status","moment","res","JSON","parse","responseText","history","replaceState","toggleModal","console","log","error","stringify","send","file","hintForCurrentState","toggleCodeView","toggleLoadView","onCopy","scrollToContent","SmoothScroll","speed","easing","updateURL","animateScroll","document","querySelector","onLoadTextChange","el","onLoadConfirm","_unused","_this2","this","addEventListener","location","pathname","hash","split","fetching","setInterval","_this3","_this$state","outputCodeView","right","onClick","bind","onChange","readOnly","opacity","marginRight","lib","text","fontSize","loadView","display","paddingBottom","modalView","href","rel","margin","color","background","borderRadius","padding","alignItems","qrcode_react_lib_default","renderAs","flexDirection","flex","backgroundImage","require","src","alt","minWidth","position","transform","id","src_components_Spinner","ReactKonva","ref","App_Plot","parameter","step","small","fromNow","justifyContent","marginBottom","Component","Plot","_ref6","axisWidth","axisHeight","plotYOffset","hoverValue","hoverTime","fill","points","stroke","Array","keys","reverse","i","offset","centerOffset","fontFamily","toFixed","toString","key","fontStyle","idx","px","item","filter","h","clickHandler","w","radius","Boolean","hostname","match","ReactDOM","render","src_App_0","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"mGAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,iOCIlCC,UAAU,SAAAC,GAAoD,IAAjDC,EAAiDD,EAAjDC,eAAgBC,EAAiCF,EAAjCE,KAAMC,EAA2BH,EAA3BG,SAAUC,EAAiBJ,EAAjBI,MAC7CC,EACFC,EAAAC,EAAAC,cAAA,OAAKC,UAAS,WAAAC,OAAaT,EAAiB,QAAU,GAAxC,KAAAS,OAA8CR,GAAQ,GAAK,QAAU,IAAMS,MAAO,CAAEC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,SA8B9H,OA3BIC,IACFE,EACEC,EAAAC,EAAAC,cAAA,OACEC,UAAS,WAAAC,OAAaT,EAAiB,QAAU,GAAxC,KAAAS,OAA8CR,GAAQ,GAAK,QAAU,GAArE,sBACTS,MAAO,CACLC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,MAAeY,WAAU,IAAAJ,OAAMR,EAAO,EAAb,MAAoBa,UAAS,IAAAL,OAAMR,EAAO,EAAb,UAMpFE,IACFC,EACEC,EAAAC,EAAAC,cAAA,OACEC,UAAS,YAAAC,OAAcT,EAAiB,QAAU,GAAzC,KAAAS,OAA+CR,GAAQ,GAAK,QAAU,GAAtE,KAAAQ,OAA4EP,EAAW,WAAa,IAC7GQ,MAAO,CACLC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,MAAeY,WAAU,IAAAJ,OAAMP,EAAWD,EAAO,EAAI,EAA5B,MAAmCa,UAAS,IAAAL,OAAMP,EAAWD,EAAO,EAAI,EAA5B,QAGjGI,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,SACxCI,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,SACxCI,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,SACxCI,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEC,MAAK,GAAAF,OAAKR,EAAL,MAAeW,OAAM,GAAAH,OAAKR,EAAL,WAKvCG,IAUTN,EAAQiB,aAAe,CACrBf,gBAAgB,EAChBC,KAAM,GACNC,UAAU,EACVC,OAAO,GAGML,0CC5CTkB,EAAa,IAEbC,EAAc,GACdC,EAAY,kBACZC,EAAY,kBACZC,EAAa,mBACbC,EAAY,kBACZC,EAAiB,EAEjBC,EAAkB,6BAElBC,EAAQ,CACZC,IAAK,MACLC,KAAM,OACNC,OAAQ,UAGJC,6MACJC,MAAQ,CACNC,UAAWN,EAAMC,IACjBM,eAAe,EACfC,gBAAgB,EAChBC,SAAU,KACVC,aAAc,KACdC,kBAAmB,KACnBC,UAAW,KACXC,WAAY,KACZC,QAAQ,EACRC,KAAM,KACNC,aAAa,EACbC,iBAAiB,EACjBC,oBAAoB,EACpBC,oBAAqB,KACrBC,aAAc,KACdC,UAAW,KACXC,SAAU,GACVC,OAAQ,CACNpC,MAAOqC,OAAOC,WACdrC,OAAQoC,OAAOE,aAEjBC,MAAO,CACLC,EAAG,EAAGC,EAAG,GAEXC,SAAU,EACVC,KAAM,CACJC,QAAS,EACTC,QAAS,OAyCbC,cAAgB,OAEhBC,aAAe,WACTC,EAAK/B,MAAMO,YACbyB,cAAcD,EAAKF,eACnBE,EAAKF,cAAgBI,WAAW,WAC9BF,EAAKG,QAAO,IACX,SAIPC,YAAc,SAACC,GACb,IAAMC,EAAYN,EAAKO,MAAMC,QAAQC,wBAC/BjB,EAAIa,EAAMK,IAAIC,QAAUL,EAAUM,KAClCnB,EAAIY,EAAMK,IAAIG,QAAUP,EAAUQ,IAExC,GAAId,EAAK/B,MAAMC,YAAcN,EAAME,MAAgC,OAAxBkC,EAAK/B,MAAMI,SAAmB,CACvE,IACMtB,EAAQiD,EAAK/B,MAAMkB,OAAOpC,MAAuB,EAAdM,EAAoB0D,GACvDC,EAAOC,OAAAC,EAAA,EAAAD,CAAOjB,EAAK/B,MAAM0B,KAAKE,SAGhCsB,IAAU1B,GAFMO,EAAK/B,MAAMK,eAAiBf,EAAYH,EAAa,IAExCA,EAA4B,EAAdC,GAAoBA,GACnE8D,EAAQC,KAAKC,IAAID,KAAKE,IAAIH,GAAS/D,EAA2B,EAAdC,GAAkB,GAAI,GAEtE,IAAIkE,EAAOH,KAAKC,IAAID,KAAKE,KAAM9B,EAAInC,EAA+B,EAAjBK,EAR7B,IAQiEX,EAAQiD,EAAK/B,MAAMyB,SAAWM,EAAK/B,MAAMyB,UAAW,GAMzI,GAJIsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMC,YAAchE,IACnDuD,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAME,KAAOH,GAGxCP,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMC,YAAcjE,EACnD,GAAqC,SAAjCwC,EAAK/B,MAAMM,kBAA8B,CAC3C,IAAImB,EAAWsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMG,eAAiBX,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAME,KAAOH,GAC7G,GAAI7B,EAAW,IAAQ,OACvBsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMG,cAAgBjC,EACnDsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAME,KAAOH,MACrC,CACL,IAAI7B,EAAW6B,EAAOP,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAME,KACzD,GAAIhC,EAAW,IAAQ,OACvBsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMG,cAAgBjC,EAIvDsB,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMI,gBAAkBZ,EAAQhB,EAAK/B,MAAMI,UAAUmD,MAAMI,gBAAgBC,IAAI,SAAAC,GAAC,OAAIA,EAAEC,cAAgB/B,EAAK/B,MAAMK,aAAe,CAAEyD,YAAaD,EAAEC,YAAaC,eAAgBb,GAAUW,IAErN9B,EAAKiC,SAALhB,OAAAiB,EAAA,EAAAjB,CAAA,GAAmBjB,EAAK/B,MAAxB,CAA+BsB,MAAO,CAAEC,IAAGC,KAAKE,KAAM,CAAEC,QAAS,EAAKC,QAASmB,WAE/EhB,EAAKiC,SAALhB,OAAAiB,EAAA,EAAAjB,CAAA,GAAmBjB,EAAK/B,MAAxB,CAA+BsB,MAAO,CAAEC,IAAGC,WAI/C0C,SAAW,SAAC9B,GACVL,EAAKiC,SAAS,CAAE9C,OAAQ,CAAEpC,MAAOqC,OAAOC,WAAYrC,OAAQoC,OAAOE,kBAGrE8C,iBAAmB,SAAC/B,GAClBL,EAAKiC,SAAS,CAAEvC,SAAUW,EAAMgC,OAAOlB,WAGzCmB,eAAiB,SAAAnG,GAAqB,IAAlBgF,EAAkBhF,EAAlBgF,MAAOI,EAAWpF,EAAXoF,KACzBvB,EAAKiC,SAALhB,OAAAiB,EAAA,EAAAjB,CAAA,GAAmBjB,EAAK/B,MAAxB,CAA+B0B,KAAM,CACnCC,QAASI,EAAK/B,MAAM0B,KAAKC,QACzBC,QAAO,GAAAhD,OAAAoE,OAAAC,EAAA,EAAAD,CACFjB,EAAK/B,MAAM0B,KAAKE,SADd,CAEL,CACE2B,MAAO,CACLE,KAAMH,EAAOvB,EAAK/B,MAAMyB,SACxB+B,UAAWhE,EACXmE,gBAAiB,CACf,CAAEG,YAAazE,EAAW0E,eAAgBb,GAC1C,CAAEY,YAAaxE,EAAWyE,eAAgBb,SAMnDpC,oBAAqB,WAIxBwD,YAAc,SAAAC,GAA6C,IAA1CrB,EAA0CqB,EAA1CrB,MAAOI,EAAmCiB,EAAnCjB,KAAMkB,EAA6BD,EAA7BC,MAAOC,EAAsBF,EAAtBE,KAAMC,EAAgBH,EAAhBG,UACrC3C,EAAK/B,MAAMC,YAAcN,EAAMC,KACjCmC,EAAKiC,SAAS,CAAElD,oBAAqB,CAAEwC,OAAMqB,MAAM,EAAOzB,WAC1DnB,EAAKD,gBAELC,EAAKiC,SAAS,CAAE5D,SAAUoE,EAAOnE,aAAcoE,EAAMnE,kBAAmBoE,OAI5EE,UAAY,SAAAC,GAAqB,IAAlB3B,EAAkB2B,EAAlB3B,MAAkB2B,EAAXvB,KAChBvB,EAAK/B,MAAMc,qBAAuBiB,EAAK/B,MAAMc,oBAAoB6D,MACnE5C,EAAKiC,SAALhB,OAAAiB,EAAA,EAAAjB,CAAA,GAAmBjB,EAAK/B,MAAxB,CAA+B0B,KAAM,CACjCC,QAASI,EAAK/B,MAAM0B,KAAKC,QACzBC,QAAO,GAAAhD,OAAAoE,OAAAC,EAAA,EAAAD,CACFjB,EAAK/B,MAAM0B,KAAKE,SADd,CAEL,CACE2B,MAAO,CACLE,KAAM1B,EAAK/B,MAAMc,oBAAoBwC,KAAOvB,EAAK/B,MAAMyB,SACvD+B,UAAWjE,EACXmE,cAAe3B,EAAK/B,MAAMc,oBAAoBW,SAAWM,EAAK/B,MAAMyB,SACpEkC,gBAAiB,CACf,CAAEG,YAAazE,EAAW0E,eAAgBb,GAC1C,CAAEY,YAAaxE,EAAWyE,eAAgBb,SAMpDpC,oBAAqB,QAGzBiB,EAAKD,kBAGPgD,cAAgB,SAAAC,GAAqB,IAAlB7B,EAAkB6B,EAAlB7B,MAAOI,EAAWyB,EAAXzB,KACpBvB,EAAK/B,MAAMc,qBAAuBiB,EAAK/B,MAAMc,oBAAoBwC,MACnEvB,EAAKiC,SAAS,CAAElD,oBAAoBkC,OAAAiB,EAAA,EAAAjB,CAAA,GAAMjB,EAAK/B,MAAMc,oBAAlB,CAAuCW,SAAU0B,KAAKC,IAAI,KAAOE,EAAOvB,EAAK/B,MAAMc,oBAAoBwC,MAAOJ,QAAOyB,MAAM,SAIlKK,aAAe,SAAAC,GAAqBA,EAAlB/B,MAAkB+B,EAAX3B,KACvBvB,EAAKiC,SAAS,CAAElD,oBAAqB,UAGvCoE,cAAgB,SAACV,GAAU,IACjB9C,EAASK,EAAK/B,MAAd0B,KACFqB,EAAOC,OAAAC,EAAA,EAAAD,CAAOtB,EAAKE,SACzBmB,EAAQoC,OAAOX,EAAO,GACtBzC,EAAKiC,SAALhB,OAAAiB,EAAA,EAAAjB,CAAA,GAAmBjB,EAAK/B,MAAxB,CAA+B0B,KAAM,CACjCE,QAASmB,MAGbhB,EAAKD,kBAGPI,OAAS,SAACkD,GACR,IAAMC,EAAM,IAAIC,eAChBD,EAAIE,KAAKxD,EAAK/B,MAAMO,UAAY,QAAU,OAA1C,GAAA3B,OAAqDc,EAArD,UAAAd,OAA6EmD,EAAK/B,MAAMO,UAAX,IAAA3B,OAA2BmD,EAAK/B,MAAMO,WAAc,KAAM,GACvI8E,EAAIG,iBAAiB,eAAgB,oBACrCH,EAAII,mBAAqB,SAACrD,GACxB,GAAuB,IAAnBiD,EAAIK,WACN,GAAmB,MAAfL,EAAIM,OACN,GAAK5D,EAAK/B,MAAMO,UAYdwB,EAAKiC,SAAS,CAAEvD,QAAQ,EAAOD,WAAYoF,aAX3C,IACE,IAAMC,EAAMC,KAAKC,MAAL,GAAAnH,OAAcyG,EAAIW,eAC9BjE,EAAKiC,SAAS,CAAEzD,UAAWsF,EAAItF,UAAWE,QAAQ,EAAOD,WAAYoF,QACrEzE,OAAO8E,QAAQC,aAAa,GAAI,OAAQL,EAAItF,WACxC6E,GACFrD,EAAKoE,aAAY,GAEnB,MAAOtC,GACPuC,QAAQC,IAAIxC,QAMhB9B,EAAKiC,SAAS,CAAEsC,OAAO,EAAM7F,QAAQ,KAI3C,IAAM8B,EAAUuD,KAAKS,UAAUxE,EAAK/B,MAAM0B,MAC1CK,EAAKiC,SAAS,CAAEvD,QAAQ,IACxB4E,EAAImB,KAAKV,KAAKS,UAAU,CACtBE,KAAM,CACJlE,iBAKNmE,oBAAsB,WACpB,OAAQ3E,EAAK/B,MAAMC,WACjB,KAAKN,EAAMC,IACT,OAAOpB,EAAAC,EAAAC,cAAA,oFACT,KAAKiB,EAAME,KACT,OAAOrB,EAAAC,EAAAC,cAAA,oHACT,KAAKiB,EAAMG,OACT,OAAOtB,EAAAC,EAAAC,cAAA,4CAGX,OAAO,QAGTyH,YAAc,SAACxF,GACboB,EAAKiC,SAAS,CAAErD,cAAaE,oBAAoB,OAGnD8F,eAAiB,SAAC9F,GAChBkB,EAAKiC,SAAS,CAAErD,aAAa,EAAOE,0BAGtC+F,eAAiB,SAAChG,GAChBmB,EAAKiC,SAAS,CAAErD,aAAa,EAAOE,oBAAoB,EAAOD,uBAGjEiG,OAAS,SAACnG,GACRqB,EAAKiC,SAAS,CAAEtD,SAChBuB,WAAW,WAAQF,EAAKiC,SAAS,CAAEtD,KAAM,QAAY,QAGvDoG,gBAAkB,WACD,IAAIC,IAAa,eAAgB,CAAEC,MAAO,KAAMC,OAAQ,iBAAkBC,WAAW,IAC7FC,cAAcC,SAASC,cAAc,gBAG9CC,iBAAmB,SAACC,GAClBxF,EAAKiC,SAAS,CAAE/C,SAAUsG,EAAGnD,OAAOlB,WAGtCsE,cAAgB,WACd,IACE,IAAMvG,EAAW6E,KAAKC,MAAMhE,EAAK/B,MAAMiB,UACnCA,GAAYA,EAASU,SAAWV,EAASW,QAC3CG,EAAKiC,SAAS,CAAEtC,KAAMT,EAAUA,SAAU,GAAIL,iBAAiB,EAAOI,UAAW,OAEjFe,EAAKiC,SAAS,CAAEhD,UAAW,iCAE7B,MAAAyG,GACA1F,EAAKiC,SAAS,CAAEhD,UAAW,sHAhQX,IAAA0G,EAAAC,KAGlB,GAFAxG,OAAOyG,iBAAiB,SAAUD,KAAKzD,UAEN,MAA7B/C,OAAO0G,SAASC,SAAkB,CACpCH,KAAKb,kBACL,IAAMiB,EAAO5G,OAAO0G,SAASC,SAASE,MAAM,KAAK,GACjD,GAAID,EAAM,CACR,IAAM1C,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAT,GAAA3G,OAAmBc,EAAnB,KAAAd,OAAsCmJ,EAAtC,UAAmD,GACnD1C,EAAIG,iBAAiB,eAAgB,oBACrCH,EAAII,mBAAqB,SAACrD,GACxB,GAAuB,IAAnBiD,EAAIK,WACN,GAAmB,MAAfL,EAAIM,OACN,IACE,IAAME,EAAMC,KAAKC,MAAL,GAAAnH,OAAcyG,EAAIW,eAC9B0B,EAAK1D,SAAS,CAAEzD,UAAWwH,EAAMrG,KAAMmE,EAAKoC,UAAU,IACtD,MAAOpE,GACPuC,QAAQC,IAAIxC,QAGd6D,EAAK1D,SAAS,CAAEsC,OAAO,EAAM2B,UAAU,IACvC9G,OAAO8E,QAAQC,aAAa,GAAI,OAAQ,MAI9CyB,KAAK3D,SAAS,CAAEiE,UAAU,IAC1B5C,EAAImB,QAIHmB,KAAK3H,MAAMe,cACd4G,KAAK3D,SAAS,CACZjD,aAAcmH,YAAY,WAAQR,EAAK1D,SAAS,KAAQ,wCAoOrD,IAAAmE,EAAAR,KAAAS,EAC8CT,KAAK3H,MAAlDsB,EADD8G,EACC9G,MAAOJ,EADRkH,EACQlH,OAAQQ,EADhB0G,EACgB1G,KAAMD,EADtB2G,EACsB3G,SAAUxB,EADhCmI,EACgCnI,UAEjCoI,EACJ7J,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aAAaE,MAAO,CAAEyJ,MAAOX,KAAK3H,MAAMa,mBAAqB,IAAM,WAChFrC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aACbH,EAAAC,EAAAC,cAAA,yBACAF,EAAAC,EAAAC,cAAA,oCACAF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,yCAAwC4J,QAASZ,KAAKhB,eAAe6B,KAAK,MAAM,MAE/FhK,EAAAC,EAAAC,cAAA,YAAUwE,MAAO4C,KAAKS,UAAU7E,EAAM,KAAM,GAAI+G,SAAU,aAAUC,UAAQ,IAC5ElK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACbH,EAAAC,EAAAC,cAAA,QAAMC,UAAU,uBAAuBE,MAAO,CAAE8J,QAA6B,WAApBhB,KAAK3H,MAAMU,KAAoB,MAAQ,MAAOlC,EAAAC,EAAAC,cAAA,KAAGC,UAAU,kCAAkCE,MAAO,CAAE+J,YAAa,YAA5K,WACApK,EAAAC,EAAAC,cAACmK,EAAA,gBAAD,CAAiBC,KAAMhD,KAAKS,UAAU7E,EAAM,KAAM,GAAImF,OAAQc,KAAKd,OAAO2B,KAAK,KAAM,WACnFhK,EAAAC,EAAAC,cAAA,QAAMC,UAAU,eAAcH,EAAAC,EAAAC,cAAA,KAAGC,UAAU,YAAYE,MAAO,CAAE+J,YAAa,QAASG,SAAU,WAAhG,WAMFC,EACJxK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YAAYE,MAAO,CAAEoK,QAAStB,KAAK3H,MAAMY,gBAAkB,UAAY,SACpFpC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YAAYE,MAAO,CAAEqK,cAAe,SACjD1K,EAAAC,EAAAC,cAAA,4BACAF,EAAAC,EAAAC,cAAA,uCAEAF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,yCAAwC4J,QAASZ,KAAKf,eAAe4B,KAAK,MAAM,MAE/FhK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YACbH,EAAAC,EAAAC,cAAA,YAAUwE,MAAOyE,KAAK3H,MAAMiB,SAAUwH,SAAUd,KAAKL,mBACnDK,KAAK3H,MAAMgB,UAAYxC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBAAkBgJ,KAAK3H,MAAMgB,WAAmB,KACxFxC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,mBAAmB4J,QAASZ,KAAKH,eAC9ChJ,EAAAC,EAAAC,cAAA,KAAGC,UAAU,kBAAkBE,MAAO,CAAE+J,YAAa,WADvD,UAOAO,EACJ3K,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YAAYE,MAAO,CAAEoK,QAAStB,KAAK3H,MAAMW,YAAc,UAAY,SAChFnC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YAAYE,MAAO,CAAEqK,cAAe,SACjD1K,EAAAC,EAAAC,cAAA,2BACAF,EAAAC,EAAAC,cAAA,mDAA0CF,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,qCAAqChF,OAAO,SAASiF,IAAI,uBAAjE,YAAmG7K,EAAAC,EAAAC,cAAA,WAA7I,2DAEAF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,yCAAwC4J,QAASZ,KAAKxB,YAAYqC,KAAK,MAAM,MAE5FhK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gCAAgCE,MAAO,CAAEyK,OAAQ,gBAC9D9K,EAAAC,EAAAC,cAAA,SAAO+F,KAAK,OAAOvB,MAAK,+CAAAtE,OAAiDc,EAAjD,KAAAd,OAAoE+I,KAAK3H,MAAMO,UAA/E,aAAqGkI,SAAU,aAAUC,UAAQ,IACzJlK,EAAAC,EAAAC,cAACmK,EAAA,gBAAD,CAAiBC,KAAI,+CAAAlK,OAAiDc,EAAjD,KAAAd,OAAoE+I,KAAK3H,MAAMO,UAA/E,aAAqGsG,OAAQc,KAAKd,OAAO2B,KAAK,KAAM,SACvJhK,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0BE,MAAO,CAAE8J,QAA6B,SAApBhB,KAAK3H,MAAMU,KAAkB,MAAQ,IAAK6I,MAAO,WAC1G/K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,YAAYE,MAAO,CAAE8J,QAA6B,SAApBhB,KAAK3H,MAAMU,KAAkB,MAAQ,UAKtFlC,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEyK,OAAQ,iBAAkBE,WAAY,kBAAmBzK,OAAQ,MAAOD,MAAO,OAAQ2K,aAAc,SAEnHjL,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAE6K,QAAS,cAAeT,QAAS,OAAQU,WAAY,WAC/DhC,KAAK3H,MAAMO,UAAY/B,EAAAC,EAAAC,cAAA,OAAKC,UAAU,wBAAuBH,EAAAC,EAAAC,cAACkL,EAAAnL,EAAD,CAAQyE,MAAK,GAAAtE,OAAKc,EAAL,KAAAd,OAAwB+I,KAAK3H,MAAMO,UAAnC,SAAqDnC,KAAM,IAAKyL,SAAS,YAAoB,KACzKrL,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEoK,QAAS,OAAQa,cAAe,SAAUC,KAAM,aAC5DvL,EAAAC,EAAAC,cAAA,QAAMC,UAAU,YAAYE,MAAO,CAAEkK,SAAU,SAA/C,cACAvK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,iCACbH,EAAAC,EAAAC,cAAA,SAAO+F,KAAK,OAAOvB,MAAK,GAAAtE,OAAKc,EAAL,KAAAd,OAAwB+I,KAAK3H,MAAMO,WAAakI,SAAU,aAAUC,UAAQ,IACpGlK,EAAAC,EAAAC,cAACmK,EAAA,gBAAD,CAAiBC,KAAI,GAAAlK,OAAKc,EAAL,KAAAd,OAAwB+I,KAAK3H,MAAMO,WAAasG,OAAQc,KAAKd,OAAO2B,KAAK,KAAM,cAClGhK,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0BE,MAAO,CAAE8J,QAA6B,cAApBhB,KAAK3H,MAAMU,KAAuB,MAAQ,IAAK6I,MAAO,WAC/G/K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,YAAYE,MAAO,CAAE8J,QAA6B,cAApBhB,KAAK3H,MAAMU,KAAuB,MAAQ,UAK3FlC,EAAAC,EAAAC,cAAA,QAAMC,UAAU,YAAYE,MAAO,CAAEkK,SAAU,SAA/C,gBACAvK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,iCACbH,EAAAC,EAAAC,cAAA,SAAO+F,KAAK,OAAOvB,MAAK,GAAAtE,OAAKc,EAAL,KAAAd,OAAwB+I,KAAK3H,MAAMO,UAAnC,SAAqDkI,SAAU,aAAUC,UAAQ,IACzGlK,EAAAC,EAAAC,cAACmK,EAAA,gBAAD,CAAiBC,KAAI,GAAAlK,OAAKc,EAAL,KAAAd,OAAwB+I,KAAK3H,MAAMO,UAAnC,SAAqDsG,OAAQc,KAAKd,OAAO2B,KAAK,KAAM,SACvGhK,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0BE,MAAO,CAAE8J,QAA6B,SAApBhB,KAAK3H,MAAMU,KAAkB,MAAQ,IAAK6I,MAAO,WAC1G/K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,YAAYE,MAAO,CAAE8J,QAA6B,SAApBhB,KAAK3H,MAAMU,KAAkB,MAAQ,aAS9F,OACElC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,OACbH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,SAASE,MAAO,CAAEmL,gBAAe,QAAApL,OAAUqL,EAAQ,IAAlB,QAC9CzL,EAAAC,EAAAC,cAAA,OAAKwL,IAAKD,EAAQ,IAAsBE,IAAI,SAC5C3L,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YACbH,EAAAC,EAAAC,cAAA,oHACuGF,EAAAC,EAAAC,cAAA,WADvG,qFAGAF,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEoK,QAAS,OAAQhK,UAAW,SACxCT,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,mGAAmGhF,OAAO,SAASiF,IAAI,sBAAsB1K,UAAU,mBAAmBE,MAAO,CAAE+J,YAAa,OAAQ7J,OAAQ,SAAUqL,SAAU,UAA5O,oBACA5L,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,qCAAqChF,OAAO,SAASiF,IAAI,sBAAsB1K,UAAU,mBAAmBE,MAAO,CAAEG,WAAY,OAAQD,OAAQ,SAAUqL,SAAU,UAA7K,cAGJ5L,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBAAkB4J,QAASZ,KAAKb,iBAAiBtI,EAAAC,EAAAC,cAAA,KAAGC,UAAU,+BAC7EH,EAAAC,EAAAC,cAAA,QAAMC,UAAU,uBAAuBE,MAAO,CAAEwL,SAAU,WAAYxH,IAAK,OAAQF,KAAM,MAAO2H,UAAW,uBACzG9L,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,6BAA6BhF,OAAO,SAASiF,IAAI,uBAAsB7K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,cAA5F,gBAAuHH,EAAAC,EAAAC,cAAA,QAAMG,MAAO,CAAE0K,MAAO,0BAAtB,eAG3H/K,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAU4L,GAAG,WAC1B/L,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aACbH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACbH,EAAAC,EAAAC,cAAA,OAAKwL,IAAKD,EAAQ,IAAsBE,IAAI,gBAE9C3L,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YACXgJ,KAAKjB,uBAENiB,KAAK3H,MAAMiI,SAiDZzJ,EAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACbH,EAAAC,EAAAC,cAAC8L,EAAD,CAASlM,OAAK,EAACF,KAAM,GAAIC,UAAQ,KAjDnCG,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,CAAO3L,MAAOoC,EAAOpC,MAAQ,GAAIC,OAva3B,IAuagDoD,YAAawF,KAAKxF,YAAayC,UAAW,kBAAMuD,EAAKnE,SAAS,CAAE5D,SAAU,QAASsK,IAAK,SAAC7G,GAAQsE,EAAK7F,MAAQuB,IAClKrF,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,KACEjM,EAAAC,EAAAC,cAACiM,EAAD,CACEpJ,EAAG,EACHC,EAAG,EACHN,OAAQA,EACRwI,QAAuB,EAAdtK,EACTL,OAAQI,EACRsC,SAAUA,EACVsB,QAASrB,EAAKE,QACdgJ,UAAWvL,EACXiC,MAAOA,EACPR,oBAAqB6G,KAAK3H,MAAMc,oBAChCV,SAAUuH,KAAK3H,MAAMI,SACrBF,cAAeyH,KAAK3H,MAAME,cAC1BC,eAAgBwH,KAAK3H,MAAMG,eAC3BmE,YAAaqD,KAAKrD,YAClBM,UAAW+C,KAAK/C,UAChBzC,YAAawF,KAAK7C,cAClBE,aAAc2C,KAAK3C,aACnBX,eAAgBsD,KAAKtD,eACrBa,cAAeyC,KAAKzC,cACpBlF,MAAOC,IAETzB,EAAAC,EAAAC,cAACiM,EAAD,CACEpJ,EAAG,EACHC,EAAGrC,EACH+B,OAAQA,EACRwI,QAAuB,EAAdtK,EACTL,OAAQI,EACRsC,SAAUA,EACVsB,QAASrB,EAAKE,QACdgJ,UAAWtL,EACXgC,MAAOA,EACPR,oBAAqB6G,KAAK3H,MAAMc,oBAChCV,SAAUuH,KAAK3H,MAAMI,SACrBF,cAAeyH,KAAK3H,MAAME,cAC1BC,eAAgBwH,KAAK3H,MAAMG,eAC3BmE,YAAaqD,KAAKrD,YAClBM,UAAW+C,KAAK/C,UAChBzC,YAAawF,KAAK7C,cAClBE,aAAc2C,KAAK3C,aACnBX,eAAgBsD,KAAKtD,eACrBa,cAAeyC,KAAKzC,cACpBlF,MAAOC,MASfzB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACbH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,QAAMC,UAAS,0BAAAC,OAA4B+I,KAAK3H,MAAME,cAAgB,uBAAyB,IAAMqI,QAAS,kBAAMJ,EAAKnE,SAAS,CAAE9D,eAAgBiI,EAAKnI,MAAME,kBAAkB1B,EAAAC,EAAAC,cAAA,mBAAjL,aACAF,EAAAC,EAAAC,cAAA,QAAMC,UAAS,2BAAAC,OAA6B+I,KAAK3H,MAAMG,eAAiB,uBAAyB,IAAMoI,QAAS,kBAAMJ,EAAKnE,SAAS,CAAE7D,gBAAiBgI,EAAKnI,MAAMG,mBAAmB3B,EAAAC,EAAAC,cAAA,mBAArL,eAEFF,EAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACbH,EAAAC,EAAAC,cAAA,QAAMC,UAAU,aAAhB,YACAH,EAAAC,EAAAC,cAAA,kBACAF,EAAAC,EAAAC,cAAA,SAAOC,UAAU,aAAa8F,KAAK,QAAQpB,IAAI,MAAMD,IAAI,OAAOF,MAAOzB,EAAUgH,SAAUd,KAAKxD,iBAAkB0G,KAAM,KACxHrM,EAAAC,EAAAC,cAAA,qBAIJF,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACbH,EAAAC,EAAAC,cAAA,OAAKC,UAAS,eAAAC,OAAiBqB,IAAcN,EAAMC,IAAM,uBAAyB,IAAM2I,QAAS,kBAAMJ,EAAKnE,SAAS,CAAE/D,UAAWN,EAAMC,QAAQpB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,gCAAgCE,MAAO,CAAEkK,SAAU,aAChNvK,EAAAC,EAAAC,cAAA,OAAKC,UAAS,eAAAC,OAAiBqB,IAAcN,EAAME,KAAO,uBAAyB,IAAM0I,QAAS,kBAAMJ,EAAKnE,SAAS,CAAE/D,UAAWN,EAAME,SAASrB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,qBAAqBE,MAAO,CAAEkK,SAAU,YACvMvK,EAAAC,EAAAC,cAAA,OAAKC,UAAS,eAAAC,OAAiBqB,IAAcN,EAAMG,OAAS,uBAAyB,IAAMyI,QAAS,kBAAMJ,EAAKnE,SAAS,CAAE/D,UAAWN,EAAMG,WAAWtB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,oBAAoBE,MAAO,CAAEkK,SAAU,cAG5MvK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gBAAgB4J,QAASZ,KAAKhB,eAAe6B,KAAK,MAAM,IACrEhK,EAAAC,EAAAC,cAAA,KAAGC,UAAU,kBAAkBE,MAAO,CAAE+J,YAAa,WADvD,QAGApK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gBAAgB4J,QAASZ,KAAKf,eAAe4B,KAAK,MAAM,IACrEhK,EAAAC,EAAAC,cAAA,KAAGC,UAAU,kBAAkBE,MAAO,CAAE+J,YAAa,WADvD,kBAGApK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YACXgJ,KAAK3H,MAAMO,UACT/B,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXgJ,KAAK3H,MAAMS,OACTjC,EAAAC,EAAAC,cAAC8L,EAAD,CAASrM,gBAAc,EAACC,KAAM,GAAIE,OAAK,EAACwM,OAAK,IAG3CtM,EAAAC,EAAAC,cAAA,yCAC4BF,EAAAC,EAAAC,cAAA,WACxBiJ,KAAK3H,MAAMQ,WAAamH,KAAK3H,MAAMQ,WAAWuK,UAAYnF,MAASmF,YAM/EvM,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACbH,EAAAC,EAAAC,cAAA,2DAAkDF,EAAAC,EAAAC,cAAA,WAAlD,kCAAsFF,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,qCAAqChF,OAAO,SAASiF,IAAI,uBAAjE,SAI5F7K,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXgJ,KAAK3H,MAAMO,UACX/B,EAAAC,EAAAC,cAAA,QAAMC,UAAU,mBAAmB4J,QAASZ,KAAKxB,YAAYqC,KAAK,MAAM,IAAxE,iBAEAhK,EAAAC,EAAAC,cAAA,QAAMC,UAAU,mBAAmB4J,QAASZ,KAAKzF,OAAOsG,KAAK,MAAM,IAASb,KAAK3H,MAAMS,OAASjC,EAAAC,EAAAC,cAAC8L,EAAD,CAASrM,gBAAc,EAACC,KAAM,GAAIE,OAAK,EAACwM,OAAK,IAAM,sBAM7JtM,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UACbH,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,qCAAqChF,OAAO,SAASiF,IAAI,uBAAjE,aACJ7K,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,mGAAmGhF,OAAO,SAASiF,IAAI,uBAA/H,kBACJ7K,EAAAC,EAAAC,cAAA,UAAIF,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,4CAA4ChF,OAAO,SAASiF,IAAI,uBAAxE,cAEN7K,EAAAC,EAAAC,cAAA,QAAMC,UAAU,wBACdH,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,6BAA6BhF,OAAO,SAASiF,IAAI,uBAAsB7K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,cAA5F,gBAAuHH,EAAAC,EAAAC,cAAA,QAAMG,MAAO,CAAE0K,MAAO,0BAAtB,eAK3H/K,EAAAC,EAAAC,cAAA,OAAKC,UAAU,cAAc4J,QAAS,WAAQJ,EAAKhC,aAAY,GAAQgC,EAAKxB,gBAAe,IAAW9H,MAAO,CAAEoK,QAAStB,KAAK3H,MAAMW,aAAegH,KAAK3H,MAAMa,oBAAsB8G,KAAK/G,gBAAkB,OAAS,UAEjNuI,EAEAd,EAEAW,EAEFxK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,mBAAmBE,MAAO,CAAEmL,gBAAe,QAAApL,OAAUqL,EAAQ,IAAlB,QACxDzL,EAAAC,EAAAC,cAAA,OAAKwL,IAAKD,EAAQ,IAAsBE,IAAI,OAAOxL,UAAU,oBAC7DH,EAAAC,EAAAC,cAAA,OAAKG,MAAO,CAAEoK,QAAS,OAAQa,cAAe,SAAUH,WAAY,SAAUqB,eAAgB,WAC5FxM,EAAAC,EAAAC,cAAA,OAAKwL,IAAKD,EAAQ,KAA4BE,IAAI,sBAAsBxL,UAAU,0BAClFH,EAAAC,EAAAC,cAAA,qBACAF,EAAAC,EAAAC,cAAA,uEACAF,EAAAC,EAAAC,cAAA,0CAEFF,EAAAC,EAAAC,cAAA,QAAMC,UAAU,uBAAuBE,MAAO,CAAEoM,aAAc,OAAQlC,SAAU,WAC9EvK,EAAAC,EAAAC,cAAA,KAAG0K,KAAK,6BAA6BhF,OAAO,SAASiF,IAAI,uBAAsB7K,EAAAC,EAAAC,cAAA,KAAGC,UAAU,cAA5F,gBAAuHH,EAAAC,EAAAC,cAAA,QAAMG,MAAO,CAAE0K,MAAO,0BAAtB,uBAhiBjH2B,aA6jBZC,EAAO,SAAAC,GAAmO,IAAhO7J,EAAgO6J,EAAhO7J,EAAGC,EAA6N4J,EAA7N5J,EAAGN,EAA0NkK,EAA1NlK,OAAQwI,EAAkN0B,EAAlN1B,QAAS3K,EAAyMqM,EAAzMrM,OAAQ0C,EAAiM2J,EAAjM3J,SAAUsB,EAAuLqI,EAAvLrI,QAAS6H,EAA8KQ,EAA9KR,UAAWtJ,EAAmK8J,EAAnK9J,MAAOtB,EAA4JoL,EAA5JpL,MAAOG,EAAqJiL,EAArJjL,eAAgBC,EAAqIgL,EAArIhL,SAAUF,EAA2HkL,EAA3HlL,cAAeY,EAA4GsK,EAA5GtK,oBAAqBwD,EAAuF8G,EAAvF9G,YAAaM,EAA0EwG,EAA1ExG,UAAyBzC,GAAiDiJ,EAA/DpG,aAA+DoG,EAAjDjJ,aAAakC,EAAoC+G,EAApC/G,eAAgBa,EAAoBkG,EAApBlG,cAEpNmG,EAAYnK,EAAOpC,MAAmB,EAAV4K,EAAgB5G,GAAmB,GAC/DwI,EAAavM,EAAoB,EAAV2K,EAEvB6B,EAAcX,IAActL,EAAYP,EAAS,EAGjDyM,IAAelK,EAAME,EAAI+J,EAAcD,EAAa5B,GACpD+B,EAAYlK,EAAImI,EAAUpI,EAAMC,EAAImI,EAE1C,OACElL,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,CAAOtI,YAAaA,EAAYqG,KAAK,KAAM,CAAElF,MAAOmI,EAAY/B,GAAW2B,EAAWnI,MAAOsI,EAAaF,IAAe1G,UAAWA,EAAU4D,KAAK,KAAM,CAAElF,MAAOmI,EAAY/B,GAAW2B,EAAWnI,MAAOsI,EAAaF,KAEtN9M,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAASlI,EAAGA,EAAIkI,EAAS5K,MAAOuM,EAAWtM,OAAQuM,EAAYI,KAAK,cAGjFlN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAASlI,EAAGA,EAAIkI,EAAU,EAAGiC,OAAQ,CAAC,EAAGL,EAAYD,EAAWC,GAAaM,OAAO,YAI/F5I,OAAAC,EAAA,EAAAD,CAAI6I,MAAM,GAAGC,QAAQC,UAAUnI,IAAI,SAACoI,GAClC,IAAMC,EAAUZ,EAAY,EAAKW,EAC7BE,EAAe,EACfF,EAAI,IACNE,EAAe,IAEP,IAANF,IACFE,EAAe,IAEjB,IAAMhJ,EAASzB,EAAW,EAAMuK,EAEhC,OAAoB,KAAP,EAAJA,GAAgBxN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAUuC,EAASC,EAAc1K,EAAGA,EAAIzC,EAAS2K,EA5BzE,GA4BkGyC,WAAW,aAAarD,KAAI,GAAAlK,OAAKsE,EAAMkJ,QAAQ,GAAGC,WAAtB,KAAqCtD,SAAU,GAAI2C,KAAK,QAAQY,IAAG,QAAA1N,OAAUoN,KAAU,OAIvOxN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU,EAAGlI,EAAGA,EAAIzC,EAAS2K,EAhCxB,GAgCiDyC,WAAW,aAAarD,KAAK,IAAIC,SAAU,GAAI2C,KAAK,SACvHlN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU,EAAGlI,EAAGA,EAAIzC,EAAS2K,EAjCxB,GAiCkD4B,EAAYa,WAAW,aAAarD,KAAK,IAAIC,SAAU,GAAI2C,KAAK,SAEpIlN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU,EAAGlI,EAAGA,EAAIzC,EAAQoN,WAAW,aAAaI,UAAU,OAAOzD,KAAM8B,IAAcvL,EAAY,YAAc,YAAa0J,SAAU,GAAI2C,KAAK,SAI9J3I,EAAQa,IAAI,SAACC,EAAG2I,GACd,IAAMC,EAAM5I,EAAEN,MAAME,KAAOhC,EAAY4J,EACjCqB,EAAO7I,EAAEN,MAAMI,gBAAgBgJ,OAAO,SAAA3O,GAAC,OAAIA,EAAE8F,cAAgB8G,IAAW,GAC9E,IAAK8B,EAAQ,OAAO,KACpB,IAAME,EAAIF,EAAK3I,eAAiBuH,EAE5BuB,EAAe,KAKnB,GAJI7M,IAAUL,EAAMG,SAClB+M,EAAe3H,EAAcsD,KAAK,KAAMgE,IAGtC3I,EAAEN,MAAMC,YAAcjE,GAAcY,EAAgB,CACtD,IAAM2M,EAAKjJ,EAAEN,MAAMG,cAAgBjC,EAAY4J,EAE/C,OACET,IAAcvL,EAEZb,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,CAAO6B,IAAG,GAAA1N,OAAKgM,EAAL,KAAAhM,OAAkB4N,IAC1BhO,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOgO,EAAG/N,QAAS6N,EAAGlB,KAAK,UAAUnD,QAASsE,IACtGrO,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAKK,EAAI,EAAGtL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOgO,EAAI,EAAG/N,QAAS6N,EAAGlB,KAAM1L,IAAUL,EAAME,KAAO,YAAc,YAAa0I,QAASsE,IACzJ7M,IAAUL,EAAME,KAAOrB,EAAAC,EAAAC,cAAC+L,EAAA,OAAD,CAAQlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAasB,EAAGG,OAAQ3M,IAAaoM,EAAM,EAAI,EAAGd,KAAK,QAAQpH,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,SAAW,OAAW,KAC/P1E,IAAUL,EAAME,KAAOrB,EAAAC,EAAAC,cAAC+L,EAAA,OAAD,CAAQlJ,EAAGA,EAAImI,EAAU+C,EAAKK,EAAGtL,EAAGA,EAAIkI,EAAU4B,EAAasB,EAAGG,OAAQ3M,IAAaoM,EAAM,EAAI,EAAGd,KAAK,QAAQpH,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,UAAY,OAAW,MAGxQlG,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,CAAO6B,IAAG,GAAA1N,OAAKgM,EAAL,KAAAhM,OAAkB4N,IAE1BhO,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOgO,EAAI,EAAG/N,QAAS6N,EAAGlB,KAAK,YAAYnD,QAASsE,EAAcvI,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,SAAW,OAC1OlG,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAKK,EAAI,EAAGtL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOgO,EAAI,EAAG/N,QAAS6N,EAAGlB,KAAK,YAAYnD,QAASsE,EAAcvI,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,UAAY,OACnPlG,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYK,OAAQ,CAAC,EAAG,EAAG,GAAIiB,GAAIhB,OAAO,YACtFpN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYK,OAAQ,CAAC,GAAIiB,EAAGE,GAAIF,GAAIhB,OAAO,YACvFpN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYK,OAAQ,CAACmB,GAAIF,EAAGE,EAAG,GAAIlB,OAAO,YACpF5L,IAAUL,EAAME,KAAOrB,EAAAC,EAAAC,cAAC+L,EAAA,OAAD,CAAQlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAasB,EAAGG,OAAQ3M,IAAaoM,EAAM,EAAI,EAAGd,KAAK,QAAQpH,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,SAAW,OAAW,KAC/P1E,IAAUL,EAAME,KAAOrB,EAAAC,EAAAC,cAAC+L,EAAA,OAAD,CAAQlJ,EAAGA,EAAImI,EAAU+C,EAAKK,EAAGtL,EAAGA,EAAIkI,EAAU4B,EAAasB,EAAGG,OAAQ3M,IAAaoM,EAAM,EAAI,EAAGd,KAAK,QAAQpH,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,EAAWlG,UAAW,UAAY,OAAW,MAIvQ,OAAIb,EAAEN,MAAMC,YAAchE,GAAaU,EAE1C0K,IAAcvL,EACZb,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOW,EAAgBV,QAAS6N,EAAGlB,KAAK,UAAUY,IAAG,GAAA1N,OAAKgM,EAAL,KAAAhM,OAAkB4N,GAAOjE,QAASsE,EAAcvI,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,IAAe,OAE3PpM,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,CAAO6B,IAAG,GAAA1N,OAAKgM,EAAL,KAAAhM,OAAkB4N,IAE1BhO,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYxM,MAAOW,EAAgBV,QAAS6N,EAAGlB,KAAK,YAAYnD,QAASsE,EAAcvI,YAAatE,IAAUL,EAAME,KAAOyE,EAAYkE,KAAK,KAAM,CAAEhE,MAAOgI,EAAK/H,KAAMmG,IAAe,OACjOpM,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYK,OAAQ,CAAC,EAAG,EAAG,GAAIiB,GAAIhB,OAAO,YACtFpN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAU+C,EAAIjL,EAAGA,EAAIkI,EAAU4B,EAAYK,OAAQ,CAAC,GAAIiB,EAAGnN,GAAiBmN,GAAIhB,OAAO,aAKrG,OAMR5L,IAAUL,EAAMC,KAAO0B,EAAMC,EAAImI,GAAWpI,EAAMC,EAAKL,EAAOpC,MAAQ4K,EAAW5G,GAAmB,GAAKrD,GAAmB6B,EAAME,EAAK+J,EAAc7B,GAAYpI,EAAME,EAAK+J,EAAcxM,EAAS2K,EAElMlL,EAAAC,EAAAC,cAAC+L,EAAA,MAAD,KACEjM,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CACElJ,EAAIT,GAAuBA,EAAoB6D,KAAQpD,EAAImI,EAAU5I,EAAoBwC,KAAO+H,EAAYI,EAC5GjK,EAAGA,EAAIkI,EAAU4B,EACjBxM,MAAQgC,GAAuBA,EAAoB6D,KAAQ7D,EAAoBW,SAAW4J,EAAY5L,EACtGV,QAASyM,EACTE,KAAO5K,GAAuBA,EAAoB6D,KAAQ,YAAc,YACxE2H,IAAG,GAAA1N,OAAKgM,EAAL,UACHrC,QAASvI,IAAUL,EAAMC,IAAMyE,EAAemE,KAAK,KAAM,CAAElF,MAAOmI,EAAY/B,GAAW2B,EAAWnI,MAAOsI,EAAaF,IAAgB,KACxIhH,YAAaA,EAAYkE,KAAK,KAAM,CAAElF,MAAOmI,EAAY/B,GAAW2B,EAAWnI,MAAOsI,EAAaF,MAErG9M,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGkK,EAAY,GAAIjK,EAAGA,EAAIzC,EAAS2K,EA5G7B,GA4GsDyC,WAAW,aAAarD,OAAQ2C,EAAY/B,GAAW2B,EAAY5J,GAAU2K,QAAQ,GAAGC,WAAYtD,SAAU,GAAI2C,KAAK,OAAOY,IAAG,gBAEnM,KAIN9N,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAASlI,EAAGA,EAAIkI,EAAU,EAAGiC,OAAQ,CAAC,EAAG,EAAG,EAAGL,GAAaM,OAAO,YAChFpN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAASlI,EAAGA,EAAIkI,EAAU,EAAGiC,OAAQ,CAAC,EAAG,EAAGN,EAAW,GAAIO,OAAO,UAAU9M,MAAO,KAChGN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAASlI,EAAGA,EAAIkI,EAAU,EAAGiC,OAAQ,CAACN,EAAW,EAAGA,EAAWC,GAAaM,OAAO,UAAU9M,MAAO,KAI/GkE,OAAAC,EAAA,EAAAD,CAAI6I,MAAM,GAAGC,QAAQC,UAAUnI,IAAI,SAACoI,GAClC,IAAMC,EAAUZ,EAAY,EAAKW,EAEjC,OAAOxN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGA,EAAImI,EAAUuC,EAAQzK,EAAGA,EAAIzC,EAAS2K,EAAU,EAAGiC,OAAQ,CAAC,GAAI,EAAG,EAAG,GAAIC,OAAO,UAAUU,IAAG,SAAA1N,OAAWoN,OAI7HxN,EAAAC,EAAAC,cAAC+L,EAAA,KAAD,CAAMlJ,EAAGmI,EAAU2B,EAAY,EAAG7J,EAAGA,EAAIkI,EAAS5K,MAAO4K,EAAS3K,OAAQuM,EAAYI,KAAK,cAKlF3L,ICntBKiN,QACW,cAA7B7L,OAAO0G,SAASoF,UAEe,UAA7B9L,OAAO0G,SAASoF,UAEhB9L,OAAO0G,SAASoF,SAASC,MACvB,2DCXNC,IAASC,OAAO5O,EAAAC,EAAAC,cAAC2O,EAAD,MAASjG,SAASkG,eAAe,SD0H3C,kBAAmBC,WACrBA,UAAUC,cAAcC,MAAMC,KAAK,SAAAC,GACjCA,EAAaC,mCEnInB/P,EAAAC,QAAiBC,EAAAC,EAAuB,qDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB","file":"static/js/main.26292778.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/mobile_off.41fed46c.svg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './Spinner.css';\n\nconst Spinner = ({ darkBackground, size, absolute, fancy }: any) => {\n let view = (\n
\n );\n\n if (absolute) {\n view = (\n \n );\n }\n\n if (fancy) {\n view = (\n \n
\n
\n
\n
\n
\n );\n }\n\n return view;\n};\n\nSpinner.propTypes = {\n darkBackground: PropTypes.bool,\n size: PropTypes.number,\n absolute: PropTypes.bool,\n fancy: PropTypes.bool\n};\n\nSpinner.defaultProps = {\n darkBackground: false,\n size: 32,\n absolute: false,\n fancy: false\n};\n\nexport default Spinner;","import React, { Component } from 'react';\nimport { Stage, Group, Layer, Circle, Line, Rect, Text } from 'react-konva';\nimport './App.css';\nimport moment from 'moment';\nimport { CopyToClipboard } from 'react-copy-to-clipboard' ;\nimport Spinner from './components/Spinner';\nimport QRCode from 'qrcode.react';\nimport SmoothScroll from 'smooth-scroll';\n\nconst PlotHeight = 250;\nconst StageHeight = 520;\nconst PlotPadding = 20;\nconst Intensity = \"HapticIntensity\";\nconst Sharpness = \"HapticSharpness\";\nconst Continuous = \"HapticContinuous\";\nconst Transient = \"HapticTransient\";\nconst TransientWidth = 8;\n\nconst BackendBasePath = \"https://ahap.fancypixel.it\"\n\nconst State = {\n NEW: 'NEW',\n EDIT: 'EDIT',\n DELETE: 'DELETE'\n}\n\nclass App extends Component {\n state = {\n plotState: State.NEW,\n showTransient: true,\n showContinuous: true,\n selected: null,\n selectedType: null, // Intensity | Sharpness\n selectedDirection: null, // 'left | 'right'\n permalink: null,\n lastUpdate: null,\n saving: false,\n copy: null,\n isModalOpen: false,\n isLoadModalOpen: false,\n isCodeViewVisibile: false,\n continuousSelection: null,\n timeInterval: null,\n loadError: null,\n loadFile: '',\n screen: {\n width: window.innerWidth,\n height: window.innerHeight\n },\n mouse: {\n x: 0, y: 0\n },\n duration: 1.0,\n data: {\n Version: 1.0,\n Pattern: []\n }\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.onResize);\n\n if (window.location.pathname !== '/') {\n this.scrollToContent();\n const hash = window.location.pathname.split('/')[1];\n if (hash) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', `${BackendBasePath}/${hash}.json`, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.onreadystatechange = (event) => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n try {\n const res = JSON.parse(`${xhr.responseText}`);\n this.setState({ permalink: hash, data: res, fetching: false });\n } catch (e) {\n console.log(e);\n }\n } else {\n this.setState({ error: true, fetching: false });\n window.history.replaceState({}, 'AHAB', '/');\n }\n }\n };\n this.setState({ fetching: true });\n xhr.send();\n }\n }\n\n if (!this.state.timeInterval) {\n this.setState({\n timeInterval: setInterval(() => { this.setState({}); }, 1000 * 60)\n });\n }\n }\n\n updateTimeout = null;\n\n updateHaptic = () => {\n if (this.state.permalink) {\n clearInterval(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.onSave(false);\n }, 1000);\n }\n }\n\n onMouseMove = (event) => {\n const container = this.stage.content.getBoundingClientRect();\n const x = event.evt.clientX - container.left;\n const y = event.evt.clientY - container.top;\n\n if (this.state.plotState === State.EDIT && this.state.selected !== null) {\n const plotXOffset = 15;\n const width = this.state.screen.width - (PlotPadding * 2) - (plotXOffset * 2);\n const pattern = [...this.state.data.Pattern];\n const plotYOffset = this.state.selectedType === Sharpness ? PlotHeight : 0;\n\n let value = -(y - plotYOffset - (PlotHeight - (PlotPadding * 2)) - PlotPadding);\n value = Math.max(Math.min(value / (PlotHeight - PlotPadding * 2), 1), 0);\n\n let time = Math.max(Math.min(((x - PlotPadding - TransientWidth * 2 + plotXOffset) / width * this.state.duration), this.state.duration), 0);\n\n if (pattern[this.state.selected].Event.EventType === Transient) {\n pattern[this.state.selected].Event.Time = time;\n }\n\n if (pattern[this.state.selected].Event.EventType === Continuous) {\n if (this.state.selectedDirection === 'left') {\n let duration = pattern[this.state.selected].Event.EventDuration + (pattern[this.state.selected].Event.Time - time);\n if (duration < 0.01) { return; }\n pattern[this.state.selected].Event.EventDuration = duration;\n pattern[this.state.selected].Event.Time = time;\n } else {\n let duration = time - pattern[this.state.selected].Event.Time;\n if (duration < 0.01) { return; }\n pattern[this.state.selected].Event.EventDuration = duration;\n }\n }\n\n pattern[this.state.selected].Event.EventParameters = pattern[this.state.selected].Event.EventParameters.map(e => e.ParameterID === this.state.selectedType ? { ParameterID: e.ParameterID, ParameterValue: value } : e);\n\n this.setState({ ...this.state, mouse: { x, y }, data: { Version: 1.0, Pattern: pattern } });\n } else {\n this.setState({ ...this.state, mouse: { x, y } });\n }\n }\n\n onResize = (event) => {\n this.setState({ screen: { width: window.innerWidth, height: window.innerHeight } });\n }\n\n onDurationChange = (event) => {\n this.setState({ duration: event.target.value });\n }\n\n onNewTransient = ({ value, time }) => {\n this.setState({ ...this.state, data: {\n Version: this.state.data.Version,\n Pattern: [\n ...this.state.data.Pattern,\n {\n Event: {\n Time: time * this.state.duration,\n EventType: Transient,\n EventParameters: [\n { ParameterID: Intensity, ParameterValue: value },\n { ParameterID: Sharpness, ParameterValue: value }\n ]\n }\n }\n ]\n },\n continuousSelection: null\n });\n }\n\n onMouseDown = ({ value, time, index, type, direction }) => {\n if (this.state.plotState === State.NEW) {\n this.setState({ continuousSelection: { time, show: false, value } });\n this.updateHaptic();\n } else {\n this.setState({ selected: index, selectedType: type, selectedDirection: direction });\n }\n }\n\n onMouseUp = ({ value, time }) => {\n if (this.state.continuousSelection && this.state.continuousSelection.show) {\n this.setState({ ...this.state, data: {\n Version: this.state.data.Version,\n Pattern: [\n ...this.state.data.Pattern,\n {\n Event: {\n Time: this.state.continuousSelection.time * this.state.duration,\n EventType: Continuous,\n EventDuration: this.state.continuousSelection.duration * this.state.duration,\n EventParameters: [\n { ParameterID: Intensity, ParameterValue: value },\n { ParameterID: Sharpness, ParameterValue: value }\n ]\n }\n }\n ]\n },\n continuousSelection: null\n });\n }\n this.updateHaptic();\n }\n\n onNewItemMove = ({ value, time }) => {\n if (this.state.continuousSelection && this.state.continuousSelection.time) {\n this.setState({ continuousSelection: { ...this.state.continuousSelection, duration: Math.max(0.005, time - this.state.continuousSelection.time), value, show: true } });\n }\n }\n\n onMouseLeave = ({ value, time }) => {\n this.setState({ continuousSelection: null });\n }\n\n onDeleteEvent = (index) => {\n const { data } = this.state;\n const pattern = [...data.Pattern];\n pattern.splice(index, 1);\n this.setState({ ...this.state, data: {\n Pattern: pattern\n }\n });\n this.updateHaptic();\n }\n\n onSave = (showModal: boolean) => {\n const xhr = new XMLHttpRequest();\n xhr.open(this.state.permalink ? 'PATCH' : 'POST', `${BackendBasePath}/files${this.state.permalink ? `/${this.state.permalink}` : ''}`, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.onreadystatechange = (event) => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n if (!this.state.permalink) {\n try {\n const res = JSON.parse(`${xhr.responseText}`);\n this.setState({ permalink: res.permalink, saving: false, lastUpdate: moment() });\n window.history.replaceState({}, 'AHAP', res.permalink);\n if (showModal) {\n this.toggleModal(true);\n }\n } catch (e) {\n console.log(e);\n }\n } else {\n this.setState({ saving: false, lastUpdate: moment() });\n }\n } else {\n this.setState({ error: true, saving: false });\n }\n }\n };\n const content = JSON.stringify(this.state.data);\n this.setState({ saving: true });\n xhr.send(JSON.stringify({\n file: {\n content\n }\n }));\n }\n\n hintForCurrentState = () => {\n switch (this.state.plotState) {\n case State.NEW:\n return Click to add a transient event, click and drag for a continuous one.;\n case State.EDIT:\n return Drag up on an item to change the intensity or sharpness. Drag left and right to change its position.;\n case State.DELETE:\n return Click on the item to delete.;\n default: break;\n }\n return null;\n }\n\n toggleModal = (isModalOpen: boolean) => {\n this.setState({ isModalOpen, isCodeViewVisibile: false });\n }\n\n toggleCodeView = (isCodeViewVisibile: boolean) => {\n this.setState({ isModalOpen: false, isCodeViewVisibile });\n }\n\n toggleLoadView = (isLoadModalOpen: boolean) => {\n this.setState({ isModalOpen: false, isCodeViewVisibile: false, isLoadModalOpen });\n }\n\n onCopy = (copy) => {\n this.setState({ copy });\n setTimeout(() => { this.setState({ copy: null }); }, 4000);\n }\n\n scrollToContent = () => {\n const scroll = new SmoothScroll('a[href*=\"#\"]', { speed: 1500, easing: 'easeInOutCubic', updateURL: false });\n scroll.animateScroll(document.querySelector('#content'));\n }\n\n onLoadTextChange = (el) => {\n this.setState({ loadFile: el.target.value });\n }\n\n onLoadConfirm = () => {\n try {\n const loadFile = JSON.parse(this.state.loadFile);\n if (loadFile && loadFile.Version && loadFile.Pattern) {\n this.setState({ data: loadFile, loadFile: '', isLoadModalOpen: false, loadError: null });\n } else {\n this.setState({ loadError: 'The AHAP format is not valid' });\n }\n } catch {\n this.setState({ loadError: 'The AHAP format is not valid' });\n }\n }\n\n render() {\n const { mouse, screen, data, duration, plotState } = this.state;\n\n const outputCodeView = (\n
\n
\n

AHAP Output

\n

Here is your AHAP file.

\n \n
\n \n
\n Copied!\n \n Copy\n \n
\n
\n );\n\n const loadView = (\n
\n
\n

Load from JSON

\n

Load a previous AHAP file:

\n\n \n
\n
\n \n { this.state.loadError ?
{this.state.loadError}
: null }\n
\n Load\n
\n
\n
\n );\n\n const modalView = (\n
\n
\n

Share options

\n

You can test your new pattern with our Moby App
or directly in your own app with a single line of code:

\n\n \n
\n
\n {}} readOnly />\n \n \n \n \n \n \n
\n\n
\n\n
\n { this.state.permalink ?
: null }\n
\n Permalink:\n
\n {}} readOnly />\n \n \n \n \n \n \n
\n\n JSON Format:\n
\n {}} readOnly />\n \n \n \n \n \n \n
\n
\n
\n
\n );\n\n return (\n
\n
\n \"logo\"\n
\n \n Apple introduced in iOS 13 the ability to design your own haptic experiences using the new AHAP file.
This tool provides a quick and easy way to graphically design your own patterns.\n
\n \n
\n
\n \n FANCY PIXEL PROJECTS\n \n
\n
\n
\n
\n \"small\n
\n
\n { this.hintForCurrentState() }\n
\n { !this.state.fetching ? (\n this.setState({ selected: null })} ref={(e) => { this.stage = e; }}>\n \n \n \n \n \n ) : (\n
\n \n
\n )}\n\n
\n
\n this.setState({ showTransient: !this.state.showTransient })}>
Transient\n this.setState({ showContinuous: !this.state.showContinuous })}>
Continuous\n
\n
\n Duration\n 0s\n \n 30s\n
\n
\n\n
\n
this.setState({ plotState: State.NEW })}>
\n
this.setState({ plotState: State.EDIT })}>
\n
this.setState({ plotState: State.DELETE })}>
\n
\n\n
\n Code\n
\n
\n Load from JSON\n
\n
\n { this.state.permalink ? (\n
\n { this.state.saving ?\n \n :\n (\n \n Automatically synchronized
\n { this.state.lastUpdate ? this.state.lastUpdate.fromNow() : moment().fromNow() }\n
\n )\n }\n
\n ) : (\n
\n Save this configuration to get the permalink
and share the json file to our App
\n
\n )\n }\n
\n { this.state.permalink ? (\n Share Options\n ) : (\n { this.state.saving ? : \"Save and Share\" }\n )}\n
\n
\n
\n
\n \n\n\n
{ this.toggleModal(false); this.toggleCodeView(false); }} style={{ display: this.state.isModalOpen || this.state.isCodeViewVisibile || this.isLoadModalOpen ? 'flex' : 'none' }} />\n\n { modalView }\n\n { outputCodeView }\n\n { loadView }\n\n
\n \"Logo\"\n
\n \"Not\n

Arghh!!

\n

Moby ate our developers before they made this responsive.

\n

Please use a desktop device

\n
\n \n FANCY PIXEL PROJECTS\n \n
\n
\n );\n }\n}\n\n/*\n x: plot's X position\n y: plot's Y position\n screen: whole screen dimensions\n padding: padding relative to x and y\n duration: haptic duration in seconds\n pattern: the data\n parameter: either intensity or sharpness\n mouse: mouse coorinates reltive to the canvas\n state: the editing state\n selected: the selected event\n continuousSelection: determines if a new continous event is being dragged\n showTransient: the plot filter (to hide a certain type of event)\n showContinuous: the plot filter (to hide a certain type of event)\n onMouseDown: handle the mouse down event\n onMouseUp: handle the mouse up event\n onMouseLeave: handle the mouse leave event\n onMouseMove: handle the mouse move event\n onNewTransient: handle the click to insert a new transient\n onDeleteEvent: handle the event deletion\n*/\nconst Plot = ({ x, y, screen, padding, height, duration, pattern, parameter, mouse, state, showContinuous, selected, showTransient, continuousSelection, onMouseDown, onMouseUp, onMouseLeave, onMouseMove, onNewTransient, onDeleteEvent }) => {\n const plotXOffset = 15;\n const axisWidth = screen.width - (padding * 2) - (plotXOffset * 2) - 10;\n const axisHeight = height - (padding * 2);\n const textMarginTop = 10;\n const plotYOffset = parameter === Sharpness ? height : 0;\n\n // New Transient data\n const hoverValue = -(mouse.y - plotYOffset - axisHeight - padding);\n const hoverTime = x + padding + mouse.x - padding;\n\n return (\n \n {/* Capture move and leave events */}\n \n\n {/* Plot lines */}\n \n\n {/* Axis Text */}\n {\n [...Array(9).keys()].reverse().map((i) => {\n const offset = (axisWidth / 8) * i;\n let centerOffset = 0;\n if (i > 0) {\n centerOffset = 10;\n }\n if (i === 8) {\n centerOffset = 20;\n }\n const value = (duration / 8) * i;\n\n return ((i & 1) === 0) ? : null;\n })\n }\n\n \n \n\n \n\n {/* Events */}\n {\n pattern.map((e, idx) => {\n const px = (e.Event.Time / duration) * axisWidth;\n const item = e.Event.EventParameters.filter(p => p.ParameterID === parameter)[0];\n if (!item) { return null; }\n const h = item.ParameterValue * axisHeight;\n\n let clickHandler = null;\n if (state === State.DELETE) {\n clickHandler = onDeleteEvent.bind(null, idx);\n }\n\n if (e.Event.EventType === Continuous && showContinuous) {\n const w = (e.Event.EventDuration / duration) * axisWidth;\n\n return (\n parameter === Intensity\n ? (\n \n \n \n { state === State.EDIT ? : null }\n { state === State.EDIT ? : null }\n \n ) : (\n \n { /* The transparent rect receives the taps */ }\n \n \n \n \n \n { state === State.EDIT ? : null }\n { state === State.EDIT ? : null }\n \n )\n );\n } else if (e.Event.EventType === Transient && showTransient) {\n return (\n parameter === Intensity\n ? \n : (\n \n { /* The transparent rect receives the taps */ }\n \n \n \n \n )\n );\n }\n return null;\n })\n }\n\n {/* Ghost for a new event */}\n {\n (state === State.NEW && mouse.x > padding && mouse.x < (screen.width - padding - (plotXOffset * 2) - 10 - TransientWidth) && mouse.y > (plotYOffset + padding) && mouse.y < (plotYOffset + height - padding))\n ? (\n \n \n \n \n ) : null\n }\n\n {/* Plot lines */}\n \n \n \n\n {/* Axis Notches */}\n {\n [...Array(9).keys()].reverse().map((i) => {\n const offset = (axisWidth / 8) * i;\n\n return ;\n })\n }\n\n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport './icomoon.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/logo.1bd48eb6.svg\";","module.exports = __webpack_public_path__ + \"static/media/home_page.9ed04430.png\";"],"sourceRoot":""}