VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /opt/mattermost/client/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/mattermost/client/8508.9335b87e46db99391307.js.map
{"version":3,"file":"8508.9335b87e46db99391307.js","mappings":"orBAgCA,EAhBA,SAAoBA,GAChB,MAAM,GAACC,EAAE,UAAEC,EAAS,KAAEC,GAAiBH,EAARI,E,qWAAIC,CAAIL,EAAKM,GAE5C,OACIC,IAAAA,cAAA,OAAKC,UAAU,eACXD,IAAAA,cAAA,QAAAE,OAAAC,OAAA,GACQN,EAAI,CACR,aAAYF,EACZ,cAAaD,EACbU,KAAK,cAETJ,IAAAA,cAAA,QAAMC,UAAU,QAAQL,GAGpC,E,6hCC+BA,MAk2BA,EA51BeS,IAAsC,IAAAC,EAAAC,EAAA,IAArC,kBAACC,GAA+BH,EAC5C,MAAMI,GAAOC,EAAAA,EAAAA,YACP,cAACC,GAAiBF,EAClBG,GAAWC,EAAAA,EAAAA,eACXC,GAAUC,EAAAA,EAAAA,eACV,OAACC,IAAUC,EAAAA,EAAAA,eAEXC,EAAS,IAAIC,gBAAgBH,GAC7BI,EAAuB,QAAlBd,EAAGY,EAAOG,IAAI,YAAI,IAAAf,EAAAA,EAAI,GAC3BgB,GAA2B,QAAnBf,EAAGW,EAAOG,IAAI,aAAK,IAAAd,EAAAA,EAAI,GAC/BgB,GAAOL,EAAOG,IAAI,KAClBG,GAAqCD,GAAOE,KAAKC,MAAMH,IAAQ,CAAC,GAC/DI,MAAOC,GAAaC,KAAMC,GAAgBC,kBAAmBC,IAAoBR,GAElFS,IAASC,EAAAA,EAAAA,aAAYC,EAAAA,KACrB,iBACFC,GAAgB,mBAChBC,GAAkB,WAClBC,GAAU,sBACVC,GAAqB,uBACrBC,GAAsB,uBACtBC,GAAsB,0BACtBC,GAAyB,uBACzBC,GAAsB,WACtBC,GAAU,WACVC,GAAU,oBACVC,GAAmB,mBACnBC,GAAkB,SAClBC,GAAQ,sBACRC,GAAqB,iBACrBC,GAAgB,kBAChBC,GAAiB,iBACjBC,GAAgB,kBAChBC,GAAiB,kBACjBC,GAAiB,gBACjBC,GAAe,mBACfC,GAAkB,kBAClBC,IACAxB,IACE,WAACyB,KAAcxB,EAAAA,EAAAA,aAAYyB,EAAAA,IAC3BC,GAAWC,SAAQ3B,EAAAA,EAAAA,aAAY4B,EAAAA,KAC/BC,IAAwB7B,EAAAA,EAAAA,aAAY8B,EAAAA,IACpCC,IAAa/B,EAAAA,EAAAA,cAAagC,GAAyB5C,IAAasC,KAAYxC,OAA4C+C,GAApCC,EAAAA,EAAAA,IAAcF,EAAO9C,EAAO,QAEhHiD,IAAaC,EAAAA,EAAAA,QAAyB,MACtCC,IAAYD,EAAAA,EAAAA,QAAyB,MACrCE,IAAgBF,EAAAA,EAAAA,QAAyB,MAEzCG,GAA4B,SAAff,GAEbgB,GAA4C,SAAvBrC,GACrBsC,GAA4B,SAAfrC,GACbsC,GAAwBF,IAAgD,SAA1BnC,GAC9CsC,GAAyBH,IAAiD,SAA3BlC,GAC/CsC,GAAyBJ,IAAiD,SAA3BjC,GAC/CsC,GAA4BL,IAAoD,SAA9BhC,GAClDsC,GAAyBN,IAAiD,SAA3B/B,GAC/CsC,GAA4B,SAAfrC,GACbsC,GAA4B,SAAfrC,GACbsC,GAA0C,SAAtB7B,GAEpB8B,KAAgB9D,IAAaF,GAZW,SAArBgB,IAYyCuC,IAAeD,KAE1E/C,GAAO0D,KAAYC,EAAAA,EAAAA,UAAS1D,SAAAA,GAAe,KAC3CC,GAAM0D,KAAWD,EAAAA,EAAAA,UAAS,KAC1BE,GAAUC,KAAeH,EAAAA,EAAAA,UAAS,KAClCI,GAASC,KAAcL,EAAAA,EAAAA,UAASzB,QAAQvC,MACxCsE,GAAWC,KAAgBP,EAAAA,EAAAA,WAAS,IACpCQ,GAAYC,KAAiBT,EAAAA,EAAAA,UAAS,KACtCU,GAAWC,KAAgBX,EAAAA,EAAAA,UAAS,KACpCY,GAAeC,KAAoBb,EAAAA,EAAAA,UAAS,KAC5Cc,GAAiBC,KAAsBf,EAAAA,EAAAA,WAAS,IAChDgB,GAAaC,KAAkBjB,EAAAA,EAAAA,UAAS,KACxCkB,GAAUC,KAAenB,EAAAA,EAAAA,UAASxD,SAAAA,GAAkB,KACpD4E,GAAaC,KAAkBrB,EAAAA,EAAAA,UAAkC,OACjEsB,GAAcC,KAAmBvB,EAAAA,EAAAA,WAAS,IAC1CwB,GAA+BC,KAAoCzB,EAAAA,EAAAA,WAAS,GAE7E0B,IAAkBC,EAAAA,EAAAA,KAElBC,GAAuBrC,IAA0BE,IAA6BD,IAA0BE,IAA0BC,IAAcC,GAChJiC,GAAWtD,QAAQiC,IAAcE,IAAaE,IAAiBI,IAAeI,IAC9EU,GAAYvD,QAAQlC,IAASE,IAAQ2D,MAAc2B,KAAazB,GAChE2B,IAAiBnF,EAAAA,EAAAA,aAAYoF,EAAAA,KAC5BC,MAAOC,KAAgBC,EAAAA,EAAAA,GAAgB,GAAIJ,GAAgB5G,IAE3DiH,GAAkBC,KAAuBrC,EAAAA,EAAAA,UAAS,IA8FnDsC,IAAgCC,EAAAA,EAAAA,cAAY,KACzClD,KACDmD,EAAAA,EAAAA,IAAW,eAAgB,cAG/BhH,EAAQiH,QAAQ,GACjB,CAACpD,GAAY7D,IAEVkH,GAAsBC,IAIsB,IAC1CC,GALqB,gBAEzBC,EAAe,QACfC,GACyCH,EAGjB,+CAApBE,GACoB,0DAApBA,IACAD,EAAeE,GAGnB7B,GAAe2B,GAAgBvH,EAAc,CAACjB,GAAI,6CAA8C2I,eAAgB,iCAChH1C,IAAW,EAAM,EA0Bf2C,IAAmBT,EAAAA,EAAAA,cAAY,IACjC7H,IAAAA,cAACuI,EAAAA,EAAmB,CAChBtI,UAAU,6BACVuI,iBAAkB7H,EAAc,CAC5BjB,GAAI,oCACJ2I,eAAgB,6BAEpBI,kBAAkB,SAClBC,mBAAoB/H,EAAc,CAC9BjB,GAAI,+BACJ2I,eAAgB,cAGzB,IAEGM,GAAiBC,KAAS,KAC5B/B,GAAgBgC,OAAOC,WAzPH,KAyPoC,GACzD,KAEGC,GAAuBC,GACjBC,KACAC,EAAAA,EAAAA,QACAD,EAAME,iBAENxB,GAAoBqB,GACpBlI,EAAQsI,KAAK,gCAADC,OAAiCrI,IACjD,EAkDR,IA9CAsI,EAAAA,EAAAA,YAAU,KACN1I,GAAS2I,EAAAA,EAAAA,IAAiB,UAC1BzB,EAAAA,EAAAA,IAAW,SAAU,yBAAwB0B,EAAAA,EAAA,IAAMC,EAAAA,EAAAA,QAA2BC,EAAAA,EAAAA,QAE9Ef,KAEAE,OAAOc,iBAAiB,SAAUhB,IAE9B3H,KACKM,IAAYF,IAAUwC,GA9DGgG,OAAOxI,EAAeE,KACxD,MAAOC,KAAMsI,EAAI,MAAEtC,SAAe3G,GAASkJ,EAAAA,EAAAA,IAAwB1I,EAAOE,IAEtEuI,EACA/I,EAAQsI,KAAK,IAAMS,EAAKhI,KAAO,aAAHwH,OAAgBU,EAAAA,GAAUC,kBAC/CzC,GACPS,GAAoBT,EACxB,EAwDQ0C,CAA8B7I,EAAOE,IAC9BA,GAtDGsI,WAClB,MAAM,KAACrI,EAAI,MAAEgG,SAAe3G,GAASsJ,EAAAA,EAAAA,IAAkB5I,IAEnDC,GACAgF,GAAe,IACfE,GAAYlF,EAAKM,OACV0F,GACPS,GAAoBT,GAGxB5B,IAAW,EAAM,EA6CTwE,CAAc7I,IACPsC,KACHG,GAKAjD,EAAQsI,KAAK,MAEbgB,EAAAA,EAAAA,QAKL,KACHvB,OAAOwB,oBAAoB,SAAU1B,GAAe,IAEzD,KAEHW,EAAAA,EAAAA,YAAU,KACFtG,KACAsH,SAASC,MAAQvH,GACrB,GACD,CAACA,MAEJsG,EAAAA,EAAAA,YAAU,KACF9I,GACAA,EAAkB,CACdgK,kBAAmB5C,GACnB6C,cAAe7D,GAAe0B,UAAqBnE,GAE3D,GACD,CAAC3D,EAAmBoH,GAA+BhB,GAAc0B,GAAkBtH,IAElF0E,GACA,OAAQ1F,IAAAA,cAAC0K,EAAAA,EAAa,MAG1B,MAAMC,GAAwBA,KAC1BtE,IAAmB,EAAK,EAGtBuE,GAAkBC,IAChBA,EAAEC,MAAQf,EAAAA,GAAUgB,SAASC,MAAM,IAAM5D,IACzC6D,GAAaJ,EACjB,EAeEK,GAAqBA,IACnB/F,GACO5B,GACHvD,IAAAA,cAAA,OAAKC,UAAU,wCACXD,IAAAA,cAACmL,EAAAA,EAAQ,CACL/C,QAAS7E,GACT6H,QAAS,CAACC,kBAAkB,MAGpC,KAIJrL,IAAAA,cAAA,KAAGC,UAAU,gCACRU,EAAc,CACXjB,GAAI,iCACJ2I,eAAgB,0EAM1BiD,GAAsBC,IAAmE,IAAjEC,QAASC,MAAO9J,IAA4C4J,EACtFlG,GAAS1D,GACT+J,KAEI5F,IACAC,GAAc,GAClB,EAGE4F,GAAqBC,IAAkE,IAAhEJ,QAASC,MAAO5J,IAA2C+J,EACpFrG,GAAQ1D,GACR6J,KAEI1F,IACAC,GAAa,GACjB,EAGE4F,GAA8BC,IAAsE,IAApEN,QAASC,MAAOjG,IAA+CsG,EACjGrG,GAAYD,GACZkG,KAEIxF,IACAC,GAAiB,GACrB,EAsCE4F,GAAoBnC,UACtB,MAAMoC,EAAc,IAAI7K,gBAAgBH,GAASK,IAAI,qBAE/CT,GAASqL,EAAAA,EAAAA,OAEX7K,IACA8K,EAAAA,EAAAA,IAAc9K,EAAOK,KAAK0K,UAAU,CAAClI,YAAY,KAGjD+H,EACAlL,EAAQsI,KAAK4C,GACNjI,GAKPjD,EAAQsI,KAAK,MAEbgB,EAAAA,EAAAA,KACJ,EAGJ,SAASgC,GAA0BC,EAAqB5M,IACpDqI,EAAAA,EAAAA,IAAW,SAAUuE,EAAa5M,EACtC,CAIA,MAiEMiM,GAAeA,KACjB/E,GAAe,KAAK,EAGlBsE,GAAerB,UAKjB,GAJAiB,EAAE1B,iBACFiD,GAA0B,wBAAwB3C,EAAAA,EAAAA,OAClD5D,IAAa,GAxEGyG,MAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACtB,IAAIC,GAAU,EAEd,MAAMC,EAAkC,QAArBL,EAAGlI,GAAWwI,eAAO,IAAAN,OAAA,EAAlBA,EAAoBd,MAAMqB,OAC1CC,EAAsC,CAACC,OAAQ,GAAIC,SAAS,GAE7DL,GAIOM,EAAAA,EAAAA,IAAQN,KAChB7G,GAAcpF,EAAc,CAACjB,GAAI,mCAAoC2I,eAAgB,wCACrF0E,EAAgBC,OAAO5D,KAAK,CAAC+D,MAAO,QAASC,KAAM,kBACnDT,GAAU,IANV5G,GAAcpF,EAAc,CAACjB,GAAI,iCAAkC2I,eAAgB,4BACnF0E,EAAgBC,OAAO5D,KAAK,CAAC+D,MAAO,QAASC,KAAM,iBACnDT,GAAU,GAOd,MAAMU,EAAoC,QAApBb,EAAGjI,GAAUsI,eAAO,IAAAL,OAAA,EAAjBA,EAAmBf,MAAMqB,OAAOQ,cAEzD,GAAID,EAAkB,CAClB,MAAME,GAAgBC,EAAAA,EAAAA,IAAgBH,GAEtC,GAAIE,EAAe,CACf,IAAIvH,EAAY,GAEZA,EADAuH,EAAc7N,KAAO+N,EAAAA,GAAiBC,cAC1B/M,EAAc,CAACjB,GAAI,iCAAkC2I,eAAgB,wDAErE1H,EACR,CACIjB,GAAI,uCACJ2I,eAAgB,iKAEpB,CACIsF,IAAK5D,EAAAA,GAAU6D,oBACfC,IAAK9D,EAAAA,GAAU+D,sBAI3Bf,EAAgBC,OAAO5D,KAAK,CAAC+D,MAAO,WAAYC,KAAMG,EAAc7N,GAAG4N,gBACvErH,GAAaD,GACb2G,GAAU,CACd,CACJ,MACI1G,GAAatF,EAAc,CAACjB,GAAI,iCAAkC2I,eAAgB,4BAClF0E,EAAgBC,OAAO5D,KAAK,CAAC+D,MAAO,WAAYC,KAAM,iBACtDT,GAAU,EAGd,MAAMoB,EAA+C,QAA/BtB,EAAwB,QAAxBC,EAAGlI,GAAcqI,eAAO,IAAAH,OAAA,EAArBA,EAAuBjB,aAAK,IAAAgB,EAAAA,EAAI,IACnD,MAAClF,EAAK,kBAAEyG,IAAqBvG,EAAAA,EAAAA,GAAgBsG,EAAkB1G,GAAgB5G,GAcrF,OAZI8G,IACApB,GAAiBoB,GACjBwF,EAAgBC,OAAS,IAAID,EAAgBC,UAAWgB,GACxDrB,GAAU,GAGVI,EAAgBC,OAAOiB,SACvBlB,EAAgBE,SAAU,GAG9Bb,GAA0B,gBAAiBW,GAEpCJ,CAAO,EAYVL,GAAe,KAAA4B,EAAAC,EAAAC,EACfnI,GAAa,IACbF,GAAc,IACdI,GAAiB,IACjBI,GAAe,IACfV,IAAa,GAEb,MAAMwI,EAAO,CACT1M,MAAyB,QAApBuM,EAAE7J,GAAWwI,eAAO,IAAAqB,OAAA,EAAlBA,EAAoBzC,MAAMqB,OACjCwB,SAA2B,QAAnBH,EAAE5J,GAAUsI,eAAO,IAAAsB,OAAA,EAAjBA,EAAmB1C,MAAMqB,OAAOQ,cAC1C9H,SAA+B,QAAvB4I,EAAE5J,GAAcqI,eAAO,IAAAuB,OAAA,EAArBA,EAAuB3C,OAG/BO,EAAc,IAAI7K,gBAAgBH,GAASK,IAAI,gBAE/C,KAACE,EAAI,MAAEgG,SAAe3G,GAAS2N,EAAAA,EAAAA,IAAWF,EAAMjN,EAAOE,GAAU0K,IAEvE,GAAIzE,EAOA,OANAZ,GAAe,CACX6H,KAAM,SACNjE,MAAQhD,EAAsBa,QAC9BqG,UAAW/C,UAEf7F,IAAa,QAhKG+D,OAAOyE,EAAmB9M,MAClDuG,EAAAA,EAAAA,IAAW,SAAU,2BAA2B2B,EAAAA,EAAAA,OAE5CzH,KACA8F,EAAAA,EAAAA,IAAW,SAAU,wBAAFuB,OAA0BrH,IAAoB,CAACqM,KAAMA,EAAK3O,KAGjF,MAAMsM,EAAc,IAAI7K,gBAAgBH,GAASK,IAAI,gBAE/C,MAACkG,SAAe3G,GAAS8N,EAAAA,EAAAA,IAAUnN,EAAK7B,GAAI2O,EAAK7I,WAEvD,GAAI+B,EACA,GAA8B,0CAA1BA,EAAMY,gBAA6D,CACnE,IAAIwG,EAAY,8BAAgCC,mBAAmBP,EAAK1M,OAEpE6E,KACAmI,GAAa,aAAeC,mBAAmBpI,KAG/CwF,IACA2C,GAAa,gBAAkB3C,GAGnClL,EAAQsI,KAAKuF,EACjB,MACIpI,GAAegB,EAAMa,SACrBvC,IAAa,cAMfkG,IAAmB,EAoIf8C,CAAoBR,EAAM9M,GAC5BuF,IAvc8BgI,MACtC,IACIC,EAAAA,GAAQC,sBAAsB,CAACrN,SAAOsN,mBAAoB,uBAC9D,CAAE,MAAO1H,GAEL2H,QAAQ3H,MAAMA,EAClB,GAkcQuH,EAER,MACIjJ,IAAa,EACjB,EAGEsJ,GAA4BA,IAAMrO,EAAQsO,QAAQ,KAgElDC,GAAeA,CAACxE,EAAuDyE,KAC5DzE,EAAEW,OAAOC,OAItBW,GAA0B,eAAD/C,OAAgBiG,GAAU,EAuOvD,OACItP,IAAAA,cAAA,OAAKC,UAAU,eACXD,IAAAA,cAAA,OAAKC,UAAU,uBAtOJsP,MACf,IAAK3K,KAA0BsC,GAC3B,OACIlH,IAAAA,cAACwP,EAAAA,EAAY,CACTjF,MAAO5J,EAAc,CAACjB,GAAI,wBAAyB2I,eAAgB,yDACnED,QAASzH,EAAc,CAACjB,GAAI,2BAA4B2I,eAAgB,gEAKpF,IAAKzC,KAAcR,IAAgBkB,IAAerC,IAAa,CAC3D,MAAMwL,EAAcrK,GAChBzE,EAAc,CAACjB,GAAI,6CAA8C2I,eAAgB,2CAEjF/B,IACA3F,EAAc,CAACjB,GAAI,6CAA8C2I,eAAgB,gCAGrF,OACIrI,IAAAA,cAACwP,EAAAA,EAAY,CACTjF,MAAOkF,EACPrH,QAASzH,EAAc,CAACjB,GAAI,+CAAgD2I,eAAgB,mEAC5FqH,aACI1P,IAAAA,cAAA,OAAKC,UAAU,wCACXD,IAAAA,cAAA,UACIC,UAAU,oCACV0P,QAASR,IAERxO,EAAc,CAACjB,GAAI,+BAAgC2I,eAAgB,wBAM5F,CAEA,GAAIX,GACA,OACI1H,IAAAA,cAAC4P,EAAAA,MAAK,CACFC,KAAM,gCACNC,OAAQA,IACJ9P,IAAAA,cAAC+P,EAAAA,EAAgB,CACb/G,KAAMtB,GACNsI,QAASjE,OAO7B,IAAIkE,EAAmDrO,GAAc,CACjExB,KAAM8P,EAAAA,GAAWC,KACjB1E,MAAO9K,EACH,CACIjB,GAAI,gCACJ2I,eAAgB,qDAEpB,CAAC+H,SAAUpN,MAEf,KAOJ,OAJI8C,KACAmK,EAA2B,CAAC7P,KAAM8P,EAAAA,GAAWG,MAAO5E,MAAO3F,KAI3D9F,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OACIC,UAAWqQ,IACP,sBACA,CACI,kBAAmBnL,GACnB,mBAAoBA,KAAsBiB,GAC1C,uBAAwBQ,MAI/BzB,KAAsBiB,GACnBpG,IAAAA,cAAA,OACIC,UAAWqQ,IAAW,qCACtBC,IAAI,cACJC,IAAKzB,EAAAA,GAAQ0B,iBAAiB,KAC9BC,QAAS/F,KAGb3K,IAAAA,cAAA,MAAIC,UAAU,6BACTU,EAAc,CAACjB,GAAI,8BAA+B2I,eAAgB,uBAG1E6C,MAELlL,IAAAA,cAAA,OAAKC,UAAU,uBACT2G,IAAgB0B,KAClBtI,IAAAA,cAAA,OAAKC,UAAWqQ,IAAW,mBAAoB,CAAC,kBAAmBnL,GAAmB,aAAcgC,MAChGnH,IAAAA,cAAA,OACIC,UAAU,2BACV0Q,UAAW/F,GACXgG,SAAU,GAEV5Q,IAAAA,cAAA,KAAGC,UAAU,0BArZ7BgD,IAKOtC,GADNiE,IAAyBsC,GACL,CAACxH,GAAI,2CAA4C2I,eAAgB,kDAGrE,CAAC3I,GAAI,kCAAmC2I,eAAgB,yBAgZxDlD,IAAqB+F,KACrBxE,IACG1G,IAAAA,cAAC6Q,EAAAA,EAAW,CACR5Q,UAAU,yBACVuO,KAAM9H,GAAY8H,KAClBjE,MAAO7D,GAAY6D,MACnBkE,UAAW/H,GAAY+H,YAG9B7J,IACG5E,IAAAA,cAAA,OAAKC,UAAU,yBACXD,IAAAA,cAAC8Q,EAAAA,EAAK,CACFC,IAAK1M,GACLxC,KAAK,QACL5B,UAAU,oCACVG,KAAK,OACL4Q,UAAWC,EAAAA,EAAKC,MAChBzF,MAAO9J,GACPwP,SAAU7F,GACV8F,YAAazQ,EAAc,CACvBjB,GAAI,mCACJ2I,eAAgB,kBAEpBgJ,SAAUzL,IAAa/B,QAAQjC,IAC/B0P,WAAW,EACXC,cAAetB,EACfuB,OAAS3G,GAAMwE,GAAaxE,EAAG,WAEnC7K,IAAAA,cAAC8Q,EAAAA,EAAK,CACFC,IAAKxM,GACL1C,KAAK,OACL5B,UAAU,mCACVG,KAAK,OACL4Q,UAAWC,EAAAA,EAAKC,MAChBzF,MAAO5J,GACPsP,SAAUxF,GACVyF,YAAazQ,EAAc,CACvBjB,GAAI,mCACJ2I,eAAgB,sBAEpBgJ,SAAUzL,GACV0L,UAAWzN,QAAQjC,IACnB2P,cACIvL,GAAY,CAAC5F,KAAM8P,EAAAA,GAAWG,MAAO5E,MAAOzF,IAAa,CACrD5F,KAAM8P,EAAAA,GAAWC,KACjB1E,MAAO9K,EAAc,CAACjB,GAAI,iCAAkC2I,eAAgB,+EAGpFmJ,OAAS3G,GAAMwE,GAAaxE,EAAG,cAEnC7K,IAAAA,cAACyR,EAAAA,EAAa,CACVV,IAAKvM,GACLvE,UAAU,uCACVwL,MAAOjG,GACPwL,UAAWC,EAAAA,EAAKC,MAChBC,SAAUtF,GACVwF,SAAUzL,GACV8L,YAAY,EACZC,KAAMnK,GACND,MAAOrB,GACPsL,OAAS3G,GAAMwE,GAAaxE,EAAG,cAxO3D7D,KAAoB4K,EAAAA,EAA0BC,UAE1C7R,IAAAA,cAAC8R,EAAU,CACPpS,GAAG,yCACHC,UAAWgB,EAAc,CAACjB,GAAI,iCAAkC2I,eAAgB,wBAChFxG,KAAK,aACLsP,SAAUA,IAAMpK,IAAkCD,IAClDlH,KACIe,EACI,CAACjB,GAAI,kCAAmC2I,eAAgB,qSACxD,CACI0J,EAAIC,GACAhS,IAAAA,cAACiS,EAAAA,EAAY,CACTC,SAAS,8BACTlJ,KAAMmJ,EAAAA,GAAoBC,SAEzBJ,GAGTK,GAAKL,GACDhS,IAAAA,cAACiS,EAAAA,EAAY,CACTC,SAAS,8BACTlJ,KAAMmJ,EAAAA,GAAoBG,6BAEzBN,GAGTO,KAAOP,GACHhS,IAAAA,cAAA,QAAMC,UAAU,UAAU+R,KAI1CQ,QAAS1L,KAKjB9G,IAAAA,cAAA,OAAKC,UAAU,cACXD,IAAAA,cAAA,QAAMC,UAAU,cACXU,EAAc,CAACjB,GAAI,yBAA0B2I,eAAgB,mHAElErI,IAAAA,cAAA,QAAMC,UAAU,QACXU,EACG,CAACjB,GAAI,wBAAyB2I,eAAgB,6BAC9C,CACIoK,KAAMN,EAAAA,GAAoBO,iBAC1BX,EAAIC,GACAhS,IAAAA,cAACiS,EAAAA,EAAY,CACTC,SAAS,SACTlJ,KAAMmJ,EAAAA,GAAoBO,kBAEzBV,OAwLDhS,IAAAA,cAAC2S,EAAAA,EAAU,CACPC,aAAa,4CACbC,OAAQjN,GACRyL,UAAWjK,GACXuI,QAAS1E,GACT5C,eAAgB1H,EAAc,CAACjB,GAAI,+BAAgC2I,eAAgB,mBACnFyK,cAAenS,EAAc,CAACjB,GAAI,+BAAgC2I,eAAgB,yBAI7FzD,IAAyBsC,IACtBlH,IAAAA,cAAA,OAAKC,UAAU,iCACXD,IAAAA,cAAA,QAAMC,UAAU,uCACXU,EAAc,CAACjB,GAAI,2BAA4B2I,eAAgB,gCAI3EnB,IACGlH,IAAAA,cAAA,OAAKC,UAAWqQ,IAAW,sCAAuC,CAACyC,QAASnO,MAtsBvEoO,MAC7B,MAAMC,EAAkD,GAExD,IAAK/L,GACD,OAAO+L,EAGX,GAAIpO,GAAwB,CACxB,MAAMqO,EAAM,GAAH7J,OAAM0F,EAAAA,GAAQoE,gBAAe,kBAAA9J,OAAiBrI,GACvDiS,EAAqB7J,KAAK,CACtB1J,GAAI,SACJwT,MACAE,KAAMpT,IAAAA,cAACqT,EAAAA,EAAe,MACtBC,MAAOpQ,IAAoBvC,EAAc,CAACjB,GAAI,eAAgB2I,eAAgB,WAC9EkL,MAAO,CAACC,MAAOrQ,GAAmBsQ,YAAatQ,IAC/CwM,QAAS5G,GAAoBmK,IAErC,CAEA,GAAIzO,IAAcK,GAAwB,CACtC,MAAMoO,EAAM,GAAH7J,OAAM0F,EAAAA,GAAQoE,gBAAe,kBAAA9J,OAAiBrI,GACvDiS,EAAqB7J,KAAK,CACtB1J,GAAI,SACJwT,MACAE,KAAMpT,IAAAA,cAAC0T,EAAAA,EAAe,MACtBJ,MAAO3S,EAAc,CAACjB,GAAI,eAAgB2I,eAAgB,WAC1DsH,QAAS5G,GAAoBmK,IAErC,CAEA,GAAIzO,IAAcM,GAA2B,CACzC,MAAMmO,EAAM,GAAH7J,OAAM0F,EAAAA,GAAQoE,gBAAe,qBAAA9J,OAAoBrI,GAC1DiS,EAAqB7J,KAAK,CACtB1J,GAAI,YACJwT,MACAE,KAAMpT,IAAAA,cAAC2T,EAAAA,EAAW,MAClBL,MAAO3S,EAAc,CAACjB,GAAI,kBAAmB2I,eAAgB,aAC7DsH,QAAS5G,GAAoBmK,IAErC,CAEA,GAAIzO,IAAcO,GAAwB,CACtC,MAAMkO,EAAM,GAAH7J,OAAM0F,EAAAA,GAAQoE,gBAAe,kBAAA9J,OAAiBrI,GACvDiS,EAAqB7J,KAAK,CACtB1J,GAAI,SACJwT,MACAE,KAAMpT,IAAAA,cAAC4T,EAAAA,EAAe,MACtBN,MAAOlQ,IAAoBzC,EAAc,CAACjB,GAAI,eAAgB2I,eAAgB,YAC9EkL,MAAO,CAACC,MAAOnQ,GAAmBoQ,YAAapQ,IAC/CsM,QAAS5G,GAAoBmK,IAErC,CAEA,GAAIzO,IAAcQ,GAAY,CAC1B,MAAM4O,EAAiB,IAAI1S,gBAAgBH,GAC3C6S,EAAeC,IAAI,QAAS/J,EAAAA,GAAUgK,aAEtCd,EAAqB7J,KAAK,CACtB1J,GAAI,OACJwT,IAAK,GAAF7J,OAAK0F,EAAAA,GAAQiF,SAAQ,WAAA3K,OAAUwK,EAAeI,YACjDb,KAAMpT,IAAAA,cAACkU,EAAAA,EAAQ,MACfZ,MAAOvQ,IAAsBpC,EAAc,CAACjB,GAAI,cAAe2I,eAAgB,wBAC/EsH,QAASA,QAEjB,CAEA,GAAIlL,IAAcS,GAAY,CAC1B,MAAM2O,EAAiB,IAAI1S,gBAAgBH,GAC3C6S,EAAeC,IAAI,SAAU,UAE7B,MAAMZ,EAAM,GAAH7J,OAAM0F,EAAAA,GAAQiF,SAAQ,oBAAA3K,OAAmBwK,EAAeI,YACjEhB,EAAqB7J,KAAK,CACtB1J,GAAI,OACJwT,MACAE,KAAMpT,IAAAA,cAACkU,EAAAA,EAAQ,MACfZ,MAAOxQ,IAAuBnC,EAAc,CAACjB,GAAI,aAAc2I,eAAgB,SAC/EsH,QAAS5G,GAAoBmK,IAErC,CAEA,OAAOD,CAAoB,EAunBED,GAA2BmB,KAAKC,GAC7BpU,IAAAA,cAACqU,EAAAA,EAAmBnU,OAAAC,OAAA,CAChB2K,IAAKsJ,EAAO1U,GACZ4U,UAAW1P,QAAwBT,EAAY,UAC3CiQ,OAKnBxP,KAA0B0B,IACvBtG,IAAAA,cAAA,KAAGC,UAAU,8BACTD,IAAAA,cAACuU,EAAAA,iBAAgB,CACb7U,GAAG,mBACH2I,eAAe,sOACfmM,OAAQ,CACJpE,SAAUpN,GACVyR,eAAiBzC,GACbhS,IAAAA,cAACiS,EAAAA,EAAY,CACTjJ,KAAMxF,GACN0O,SAAS,uBAERF,GAGT0C,kBAAoB1C,GAChBhS,IAAAA,cAACiS,EAAAA,EAAY,CACTjJ,KAAMvF,GACNyO,SAAS,yBAERF,UAUtC,EAOEzC,IAEH,C,yGCh5BP,SAAS9H,EAAgBjC,EAAkB6B,EAAgC5G,GAC9E,IAAIkU,EAAUC,EAAe1O,cAAcxG,GAC3C,MAAMsO,EAAoB,GAC1B,IAAI6G,GAAQ,EACZ,MAAMC,EAAgBzN,EAAeyN,eAAiB/K,EAAAA,GAAUgL,oBA2ChE,IAAIxN,EAyBJ,OAlEI/B,EAASyI,OAAS6G,GAAiBtP,EAASyI,OAASlE,EAAAA,GAAUiL,uBAC/DH,GAAQ,EACR7G,EAAkB5E,KAAK,CAAC+D,MAAO,WAAYC,KAAM,kBAGjD/F,EAAe4N,mBACVzP,EAAS0P,MAAM,WAChBL,GAAQ,GAGZF,GAAW,YACX3G,EAAkB5E,KAAK,CAAC+D,MAAO,WAAYC,KAAM,eAGjD/F,EAAe8N,mBACV3P,EAAS0P,MAAM,WAChBL,GAAQ,GAGZF,GAAW,YACX3G,EAAkB5E,KAAK,CAAC+D,MAAO,WAAYC,KAAM,eAGjD/F,EAAe+N,gBACV5P,EAAS0P,MAAM,WAChBL,GAAQ,GAGZF,GAAW,SACX3G,EAAkB5E,KAAK,CAAC+D,MAAO,WAAYC,KAAM,YAGjD/F,EAAegO,gBACV7P,EAAS0P,MAAM,yCAChBL,GAAQ,GAGZF,GAAW,SACX3G,EAAkB5E,KAAK,CAAC+D,MAAO,WAAYC,KAAM,YAIhDyH,IACDtN,EAAQ9G,EACJA,EAAKE,cACD,CACIjB,GAAIiV,EACJtM,eAAgB,wCAEpB,CACIsF,IAAKmH,EACLjH,IAAK9D,EAAAA,GAAUiL,sBAIvBhV,IAAAA,cAACuU,EAAAA,iBAAgB,CACb7U,GAAIiV,EACJtM,eAAe,uCACfmM,OAAQ,CACJ7G,IAAKmH,EACLjH,IAAK9D,EAAAA,GAAUiL,wBAMxB,CAACH,QAAOtN,QAAOyG,oBAC1B,CAEO,MAAM4G,GAAiBU,EAAAA,EAAAA,gBAAe,CACzCpP,cAAe,CAACxG,GAAI,uCAAwC2I,eAAgB,wCAC5EkN,uBAAwB,CAAC7V,GAAI,gDAAiD2I,eAAgB,sEAC9FmN,6BAA8B,CAAC9V,GAAI,sDAAuD2I,eAAgB,kFAC1GoN,mCAAoC,CAAC/V,GAAI,4DAA6D2I,eAAgB,uGACtHqN,6BAA8B,CAAChW,GAAI,sDAAuD2I,eAAgB,6FAC1GsN,gCAAiC,CAACjW,GAAI,yDAA0D2I,eAAgB,yFAChHuN,sCAAuC,CAAClW,GAAI,+DAAgE2I,eAAgB,sGAC5HwN,4CAA6C,CAACnW,GAAI,qEAAsE2I,eAAgB,0HACxIyN,sCAAuC,CAACpW,GAAI,+DAAgE2I,eAAgB,iHAC5H0N,oBAAqB,CAACrW,GAAI,6CAA8C2I,eAAgB,4DACxF2N,0BAA2B,CAACtW,GAAI,mDAAoD2I,eAAgB,mFACpG4N,oBAAqB,CAACvW,GAAI,6CAA8C2I,eAAgB,uEACxF6N,uBAAwB,CAACxW,GAAI,gDAAiD2I,eAAgB,sEAC9F8N,6BAA8B,CAACzW,GAAI,sDAAuD2I,eAAgB,mFAC1G+N,mCAAoC,CAAC1W,GAAI,4DAA6D2I,eAAgB,uGACtHgO,6BAA8B,CAAC3W,GAAI,sDAAuD2I,eAAgB,+F","sources":["webpack://mattermost-webapp/./src/components/widgets/inputs/check/index.tsx","webpack://mattermost-webapp/./src/components/signup/signup.tsx","webpack://mattermost-webapp/./src/utils/password.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {ReactNode} from 'react';\nimport './check.scss';\n\ntype Props = {\n    id: string;\n    ariaLabel: string;\n    name: string;\n    text: ReactNode;\n    onChange: () => void;\n    checked: boolean;\n}\n\nfunction CheckInput(props: Props) {\n    const {id, ariaLabel, text, ...rest} = props;\n\n    return (\n        <div className='check-input'>\n            <input\n                {...rest}\n                aria-label={ariaLabel}\n                data-testid={id}\n                type='checkbox'\n            />\n            <span className='text'>{text}</span>\n        </div>\n    );\n}\n\nexport default CheckInput;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport classNames from 'classnames';\nimport throttle from 'lodash/throttle';\nimport React, {useState, useEffect, useRef, useCallback} from 'react';\nimport type {FocusEvent} from 'react';\nimport {FormattedMessage, useIntl} from 'react-intl';\nimport {useSelector, useDispatch} from 'react-redux';\nimport {useLocation, useHistory, Route} from 'react-router-dom';\n\nimport type {ServerError} from '@mattermost/types/errors';\nimport type {UserProfile} from '@mattermost/types/users';\n\nimport {getTeamInviteInfo} from 'mattermost-redux/actions/teams';\nimport {createUser, loadMe} from 'mattermost-redux/actions/users';\nimport {Client4} from 'mattermost-redux/client';\nimport {getConfig, getLicense, getPasswordConfig} from 'mattermost-redux/selectors/entities/general';\nimport {getIsOnboardingFlowEnabled} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';\nimport {isEmail} from 'mattermost-redux/utils/helpers';\n\nimport {redirectUserToDefaultTeam} from 'actions/global_actions';\nimport {removeGlobalItem, setGlobalItem} from 'actions/storage';\nimport {addUserToTeamFromInvite} from 'actions/team_actions';\nimport {trackEvent} from 'actions/telemetry_actions.jsx';\nimport {loginById} from 'actions/views/login';\nimport {getGlobalItem} from 'selectors/storage';\n\nimport AlertBanner from 'components/alert_banner';\nimport type {ModeType, AlertBannerProps} from 'components/alert_banner';\nimport useCWSAvailabilityCheck, {CSWAvailabilityCheckTypes} from 'components/common/hooks/useCWSAvailabilityCheck';\nimport DesktopAuthToken from 'components/desktop_auth_token';\nimport ExternalLink from 'components/external_link';\nimport ExternalLoginButton from 'components/external_login_button/external_login_button';\nimport type {ExternalLoginButtonType} from 'components/external_login_button/external_login_button';\nimport AlternateLinkLayout from 'components/header_footer_route/content_layouts/alternate_link';\nimport ColumnLayout from 'components/header_footer_route/content_layouts/column';\nimport type {CustomizeHeaderType} from 'components/header_footer_route/header_footer_route';\nimport LoadingScreen from 'components/loading_screen';\nimport Markdown from 'components/markdown';\nimport SaveButton from 'components/save_button';\nimport EntraIdIcon from 'components/widgets/icons/entra_id_icon';\nimport LockIcon from 'components/widgets/icons/lock_icon';\nimport LoginGitlabIcon from 'components/widgets/icons/login_gitlab_icon';\nimport LoginGoogleIcon from 'components/widgets/icons/login_google_icon';\nimport LoginOpenIDIcon from 'components/widgets/icons/login_openid_icon';\nimport CheckInput from 'components/widgets/inputs/check';\nimport Input, {SIZE} from 'components/widgets/inputs/input/input';\nimport type {CustomMessageInputType} from 'components/widgets/inputs/input/input';\nimport PasswordInput from 'components/widgets/inputs/password_input/password_input';\n\nimport {Constants, HostedCustomerLinks, ItemStatus, ValidationErrors} from 'utils/constants';\nimport {isValidPassword} from 'utils/password';\nimport {isDesktopApp} from 'utils/user_agent';\nimport {isValidUsername, getRoleFromTrackFlow, getMediumFromTrackFlow} from 'utils/utils';\n\nimport type {GlobalState} from 'types/store';\n\nimport './signup.scss';\n\nconst MOBILE_SCREEN_WIDTH = 1200;\n\ntype SignupProps = {\n    onCustomizeHeader?: CustomizeHeaderType;\n}\n\nconst Signup = ({onCustomizeHeader}: SignupProps) => {\n    const intl = useIntl();\n    const {formatMessage} = intl;\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const {search} = useLocation();\n\n    const params = new URLSearchParams(search);\n    const token = params.get('t') ?? '';\n    const inviteId = params.get('id') ?? '';\n    const data = params.get('d');\n    const parsedData: Record<string, string> = data ? JSON.parse(data) : {};\n    const {email: parsedEmail, name: parsedTeamName, reminder_interval: reminderInterval} = parsedData;\n\n    const config = useSelector(getConfig);\n    const {\n        EnableOpenServer,\n        EnableUserCreation,\n        NoAccounts,\n        EnableSignUpWithEmail,\n        EnableSignUpWithGitLab,\n        EnableSignUpWithGoogle,\n        EnableSignUpWithOffice365,\n        EnableSignUpWithOpenId,\n        EnableLdap,\n        EnableSaml,\n        SamlLoginButtonText,\n        LdapLoginFieldName,\n        SiteName,\n        CustomDescriptionText,\n        GitLabButtonText,\n        GitLabButtonColor,\n        OpenIdButtonText,\n        OpenIdButtonColor,\n        EnableCustomBrand,\n        CustomBrandText,\n        TermsOfServiceLink,\n        PrivacyPolicyLink,\n    } = config;\n    const {IsLicensed} = useSelector(getLicense);\n    const loggedIn = Boolean(useSelector(getCurrentUserId));\n    const onboardingFlowEnabled = useSelector(getIsOnboardingFlowEnabled);\n    const usedBefore = useSelector((state: GlobalState) => (!inviteId && !loggedIn && token ? getGlobalItem(state, token, null) : undefined));\n\n    const emailInput = useRef<HTMLInputElement>(null);\n    const nameInput = useRef<HTMLInputElement>(null);\n    const passwordInput = useRef<HTMLInputElement>(null);\n\n    const isLicensed = IsLicensed === 'true';\n    const enableOpenServer = EnableOpenServer === 'true';\n    const enableUserCreation = EnableUserCreation === 'true';\n    const noAccounts = NoAccounts === 'true';\n    const enableSignUpWithEmail = enableUserCreation && EnableSignUpWithEmail === 'true';\n    const enableSignUpWithGitLab = enableUserCreation && EnableSignUpWithGitLab === 'true';\n    const enableSignUpWithGoogle = enableUserCreation && EnableSignUpWithGoogle === 'true';\n    const enableSignUpWithOffice365 = enableUserCreation && EnableSignUpWithOffice365 === 'true';\n    const enableSignUpWithOpenId = enableUserCreation && EnableSignUpWithOpenId === 'true';\n    const enableLDAP = EnableLdap === 'true';\n    const enableSAML = EnableSaml === 'true';\n    const enableCustomBrand = EnableCustomBrand === 'true';\n\n    const noOpenServer = !inviteId && !token && !enableOpenServer && !noAccounts && !enableUserCreation;\n\n    const [email, setEmail] = useState(parsedEmail ?? '');\n    const [name, setName] = useState('');\n    const [password, setPassword] = useState('');\n    const [loading, setLoading] = useState(Boolean(inviteId));\n    const [isWaiting, setIsWaiting] = useState(false);\n    const [emailError, setEmailError] = useState('');\n    const [nameError, setNameError] = useState('');\n    const [passwordError, setPasswordError] = useState('');\n    const [brandImageError, setBrandImageError] = useState(false);\n    const [serverError, setServerError] = useState('');\n    const [teamName, setTeamName] = useState(parsedTeamName ?? '');\n    const [alertBanner, setAlertBanner] = useState<AlertBannerProps | null>(null);\n    const [isMobileView, setIsMobileView] = useState(false);\n    const [subscribeToSecurityNewsletter, setSubscribeToSecurityNewsletter] = useState(false);\n\n    const cwsAvailability = useCWSAvailabilityCheck();\n\n    const enableExternalSignup = enableSignUpWithGitLab || enableSignUpWithOffice365 || enableSignUpWithGoogle || enableSignUpWithOpenId || enableLDAP || enableSAML;\n    const hasError = Boolean(emailError || nameError || passwordError || serverError || alertBanner);\n    const canSubmit = Boolean(email && name && password) && !hasError && !loading;\n    const passwordConfig = useSelector(getPasswordConfig);\n    const {error: passwordInfo} = isValidPassword('', passwordConfig, intl);\n\n    const [desktopLoginLink, setDesktopLoginLink] = useState('');\n\n    const subscribeToSecurityNewsletterFunc = () => {\n        try {\n            Client4.subscribeToNewsletter({email, subscribed_content: 'security_newsletter'});\n        } catch (error) {\n            // eslint-disable-next-line no-console\n            console.error(error);\n        }\n    };\n\n    const getExternalSignupOptions = () => {\n        const externalLoginOptions: ExternalLoginButtonType[] = [];\n\n        if (!enableExternalSignup) {\n            return externalLoginOptions;\n        }\n\n        if (enableSignUpWithGitLab) {\n            const url = `${Client4.getOAuthRoute()}/gitlab/signup${search}`;\n            externalLoginOptions.push({\n                id: 'gitlab',\n                url,\n                icon: <LoginGitlabIcon/>,\n                label: GitLabButtonText || formatMessage({id: 'login.gitlab', defaultMessage: 'GitLab'}),\n                style: {color: GitLabButtonColor, borderColor: GitLabButtonColor},\n                onClick: desktopExternalAuth(url),\n            });\n        }\n\n        if (isLicensed && enableSignUpWithGoogle) {\n            const url = `${Client4.getOAuthRoute()}/google/signup${search}`;\n            externalLoginOptions.push({\n                id: 'google',\n                url,\n                icon: <LoginGoogleIcon/>,\n                label: formatMessage({id: 'login.google', defaultMessage: 'Google'}),\n                onClick: desktopExternalAuth(url),\n            });\n        }\n\n        if (isLicensed && enableSignUpWithOffice365) {\n            const url = `${Client4.getOAuthRoute()}/office365/signup${search}`;\n            externalLoginOptions.push({\n                id: 'office365',\n                url,\n                icon: <EntraIdIcon/>,\n                label: formatMessage({id: 'login.office365', defaultMessage: 'Entra ID'}),\n                onClick: desktopExternalAuth(url),\n            });\n        }\n\n        if (isLicensed && enableSignUpWithOpenId) {\n            const url = `${Client4.getOAuthRoute()}/openid/signup${search}`;\n            externalLoginOptions.push({\n                id: 'openid',\n                url,\n                icon: <LoginOpenIDIcon/>,\n                label: OpenIdButtonText || formatMessage({id: 'login.openid', defaultMessage: 'Open ID'}),\n                style: {color: OpenIdButtonColor, borderColor: OpenIdButtonColor},\n                onClick: desktopExternalAuth(url),\n            });\n        }\n\n        if (isLicensed && enableLDAP) {\n            const newSearchParam = new URLSearchParams(search);\n            newSearchParam.set('extra', Constants.CREATE_LDAP);\n\n            externalLoginOptions.push({\n                id: 'ldap',\n                url: `${Client4.getUrl()}/login?${newSearchParam.toString()}`,\n                icon: <LockIcon/>,\n                label: LdapLoginFieldName || formatMessage({id: 'signup.ldap', defaultMessage: 'AD/LDAP Credentials'}),\n                onClick: () => {},\n            });\n        }\n\n        if (isLicensed && enableSAML) {\n            const newSearchParam = new URLSearchParams(search);\n            newSearchParam.set('action', 'signup');\n\n            const url = `${Client4.getUrl()}/login/sso/saml?${newSearchParam.toString()}`;\n            externalLoginOptions.push({\n                id: 'saml',\n                url,\n                icon: <LockIcon/>,\n                label: SamlLoginButtonText || formatMessage({id: 'login.saml', defaultMessage: 'SAML'}),\n                onClick: desktopExternalAuth(url),\n            });\n        }\n\n        return externalLoginOptions;\n    };\n\n    const handleHeaderBackButtonOnClick = useCallback(() => {\n        if (!noAccounts) {\n            trackEvent('signup_email', 'click_back');\n        }\n\n        history.goBack();\n    }, [noAccounts, history]);\n\n    const handleInvalidInvite = ({\n        // eslint-disable-next-line @typescript-eslint/naming-convention\n        server_error_id,\n        message,\n    }: {server_error_id: string; message: string}) => {\n        let errorMessage;\n\n        if (server_error_id === 'store.sql_user.save.max_accounts.app_error' ||\n            server_error_id === 'api.team.add_user_to_team_from_invite.guest.app_error') {\n            errorMessage = message;\n        }\n\n        setServerError(errorMessage || formatMessage({id: 'signup_user_completed.invalid_invite.title', defaultMessage: 'This invite link is invalid'}));\n        setLoading(false);\n    };\n\n    const handleAddUserToTeamFromInvite = async (token: string, inviteId: string) => {\n        const {data: team, error} = await dispatch(addUserToTeamFromInvite(token, inviteId));\n\n        if (team) {\n            history.push('/' + team.name + `/channels/${Constants.DEFAULT_CHANNEL}`);\n        } else if (error) {\n            handleInvalidInvite(error);\n        }\n    };\n\n    const getInviteInfo = async (inviteId: string) => {\n        const {data, error} = await dispatch(getTeamInviteInfo(inviteId));\n\n        if (data) {\n            setServerError('');\n            setTeamName(data.name);\n        } else if (error) {\n            handleInvalidInvite(error);\n        }\n\n        setLoading(false);\n    };\n\n    const getAlternateLink = useCallback(() => (\n        <AlternateLinkLayout\n            className='signup-body-alternate-link'\n            alternateMessage={formatMessage({\n                id: 'signup_user_completed.haveAccount',\n                defaultMessage: 'Already have an account?',\n            })}\n            alternateLinkPath='/login'\n            alternateLinkLabel={formatMessage({\n                id: 'signup_user_completed.signIn',\n                defaultMessage: 'Log in',\n            })}\n        />\n    ), []);\n\n    const onWindowResize = throttle(() => {\n        setIsMobileView(window.innerWidth < MOBILE_SCREEN_WIDTH);\n    }, 100);\n\n    const desktopExternalAuth = (href: string) => {\n        return (event: React.MouseEvent) => {\n            if (isDesktopApp()) {\n                event.preventDefault();\n\n                setDesktopLoginLink(href);\n                history.push(`/signup_user_complete/desktop${search}`);\n            }\n        };\n    };\n\n    useEffect(() => {\n        dispatch(removeGlobalItem('team'));\n        trackEvent('signup', 'signup_user_01_welcome', {...getRoleFromTrackFlow(), ...getMediumFromTrackFlow()});\n\n        onWindowResize();\n\n        window.addEventListener('resize', onWindowResize);\n\n        if (search) {\n            if ((inviteId || token) && loggedIn) {\n                handleAddUserToTeamFromInvite(token, inviteId);\n            } else if (inviteId) {\n                getInviteInfo(inviteId);\n            } else if (loggedIn) {\n                if (onboardingFlowEnabled) {\n                    // need info about whether admin or not,\n                    // and whether admin has already completed\n                    // first tiem onboarding. Instead of fetching and orchestrating that here,\n                    // let the default root component handle it.\n                    history.push('/');\n                } else {\n                    redirectUserToDefaultTeam();\n                }\n            }\n        }\n\n        return () => {\n            window.removeEventListener('resize', onWindowResize);\n        };\n    }, []);\n\n    useEffect(() => {\n        if (SiteName) {\n            document.title = SiteName;\n        }\n    }, [SiteName]);\n\n    useEffect(() => {\n        if (onCustomizeHeader) {\n            onCustomizeHeader({\n                onBackButtonClick: handleHeaderBackButtonOnClick,\n                alternateLink: isMobileView ? getAlternateLink() : undefined,\n            });\n        }\n    }, [onCustomizeHeader, handleHeaderBackButtonOnClick, isMobileView, getAlternateLink, search]);\n\n    if (loading) {\n        return (<LoadingScreen/>);\n    }\n\n    const handleBrandImageError = () => {\n        setBrandImageError(true);\n    };\n\n    const onEnterKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n        if (e.key === Constants.KeyCodes.ENTER[0] && canSubmit) {\n            handleSubmit(e);\n        }\n    };\n\n    const getCardTitle = () => {\n        if (CustomDescriptionText) {\n            return CustomDescriptionText;\n        }\n\n        if (!enableSignUpWithEmail && enableExternalSignup) {\n            return formatMessage({id: 'signup_user_completed.cardtitle.external', defaultMessage: 'Create your account with one of the following:'});\n        }\n\n        return formatMessage({id: 'signup_user_completed.cardtitle', defaultMessage: 'Create your account'});\n    };\n\n    const getMessageSubtitle = () => {\n        if (enableCustomBrand) {\n            return CustomBrandText ? (\n                <div className='signup-body-custom-branding-markdown'>\n                    <Markdown\n                        message={CustomBrandText}\n                        options={{mentionHighlight: false}}\n                    />\n                </div>\n            ) : null;\n        }\n\n        return (\n            <p className='signup-body-message-subtitle'>\n                {formatMessage({\n                    id: 'signup_user_completed.subtitle',\n                    defaultMessage: 'Create your Mattermost account to start collaborating with your team',\n                })}\n            </p>\n        );\n    };\n\n    const handleEmailOnChange = ({target: {value: email}}: React.ChangeEvent<HTMLInputElement>) => {\n        setEmail(email);\n        dismissAlert();\n\n        if (emailError) {\n            setEmailError('');\n        }\n    };\n\n    const handleNameOnChange = ({target: {value: name}}: React.ChangeEvent<HTMLInputElement>) => {\n        setName(name);\n        dismissAlert();\n\n        if (nameError) {\n            setNameError('');\n        }\n    };\n\n    const handlePasswordInputOnChange = ({target: {value: password}}: React.ChangeEvent<HTMLInputElement>) => {\n        setPassword(password);\n        dismissAlert();\n\n        if (passwordError) {\n            setPasswordError('');\n        }\n    };\n\n    const handleSignupSuccess = async (user: UserProfile, data: UserProfile) => {\n        trackEvent('signup', 'signup_user_02_complete', getRoleFromTrackFlow());\n\n        if (reminderInterval) {\n            trackEvent('signup', `signup_from_reminder_${reminderInterval}`, {user: user.id});\n        }\n\n        const redirectTo = (new URLSearchParams(search)).get('redirect_to');\n\n        const {error} = await dispatch(loginById(data.id, user.password));\n\n        if (error) {\n            if (error.server_error_id === 'api.user.login.not_verified.app_error') {\n                let verifyUrl = '/should_verify_email?email=' + encodeURIComponent(user.email);\n\n                if (teamName) {\n                    verifyUrl += '&teamname=' + encodeURIComponent(teamName);\n                }\n\n                if (redirectTo) {\n                    verifyUrl += '&redirect_to=' + redirectTo;\n                }\n\n                history.push(verifyUrl);\n            } else {\n                setServerError(error.message);\n                setIsWaiting(false);\n            }\n\n            return;\n        }\n\n        await postSignupSuccess();\n    };\n\n    const postSignupSuccess = async () => {\n        const redirectTo = (new URLSearchParams(search)).get('redirect_to');\n\n        await dispatch(loadMe());\n\n        if (token) {\n            setGlobalItem(token, JSON.stringify({usedBefore: true}));\n        }\n\n        if (redirectTo) {\n            history.push(redirectTo);\n        } else if (onboardingFlowEnabled) {\n            // need info about whether admin or not,\n            // and whether admin has already completed\n            // first tiem onboarding. Instead of fetching and orchestrating that here,\n            // let the default root component handle it.\n            history.push('/');\n        } else {\n            redirectUserToDefaultTeam();\n        }\n    };\n\n    function sendSignUpTelemetryEvents(telemetryId: string, props?: any) {\n        trackEvent('signup', telemetryId, props);\n    }\n\n    type TelemetryErrorList = {errors: Array<{field: string; rule: string}>; success: boolean};\n\n    const isUserValid = () => {\n        let isValid = true;\n\n        const providedEmail = emailInput.current?.value.trim();\n        const telemetryEvents: TelemetryErrorList = {errors: [], success: true};\n\n        if (!providedEmail) {\n            setEmailError(formatMessage({id: 'signup_user_completed.required', defaultMessage: 'This field is required'}));\n            telemetryEvents.errors.push({field: 'email', rule: 'not_provided'});\n            isValid = false;\n        } else if (!isEmail(providedEmail)) {\n            setEmailError(formatMessage({id: 'signup_user_completed.validEmail', defaultMessage: 'Please enter a valid email address'}));\n            telemetryEvents.errors.push({field: 'email', rule: 'invalid_email'});\n            isValid = false;\n        }\n\n        const providedUsername = nameInput.current?.value.trim().toLowerCase();\n\n        if (providedUsername) {\n            const usernameError = isValidUsername(providedUsername);\n\n            if (usernameError) {\n                let nameError = '';\n                if (usernameError.id === ValidationErrors.RESERVED_NAME) {\n                    nameError = formatMessage({id: 'signup_user_completed.reserved', defaultMessage: 'This username is reserved, please choose a new one.'});\n                } else {\n                    nameError = formatMessage(\n                        {\n                            id: 'signup_user_completed.usernameLength',\n                            defaultMessage: 'Usernames have to begin with a lowercase letter and be {min}-{max} characters long. You can use lowercase letters, numbers, periods, dashes, and underscores.',\n                        },\n                        {\n                            min: Constants.MIN_USERNAME_LENGTH,\n                            max: Constants.MAX_USERNAME_LENGTH,\n                        },\n                    );\n                }\n                telemetryEvents.errors.push({field: 'username', rule: usernameError.id.toLowerCase()});\n                setNameError(nameError);\n                isValid = false;\n            }\n        } else {\n            setNameError(formatMessage({id: 'signup_user_completed.required', defaultMessage: 'This field is required'}));\n            telemetryEvents.errors.push({field: 'username', rule: 'not_provided'});\n            isValid = false;\n        }\n\n        const providedPassword = passwordInput.current?.value ?? '';\n        const {error, telemetryErrorIds} = isValidPassword(providedPassword, passwordConfig, intl);\n\n        if (error) {\n            setPasswordError(error as string);\n            telemetryEvents.errors = [...telemetryEvents.errors, ...telemetryErrorIds];\n            isValid = false;\n        }\n\n        if (telemetryEvents.errors.length) {\n            telemetryEvents.success = false;\n        }\n\n        sendSignUpTelemetryEvents('validate_user', telemetryEvents);\n\n        return isValid;\n    };\n\n    const dismissAlert = () => {\n        setAlertBanner(null);\n    };\n\n    const handleSubmit = async (e: React.MouseEvent | React.KeyboardEvent) => {\n        e.preventDefault();\n        sendSignUpTelemetryEvents('click_create_account', getRoleFromTrackFlow());\n        setIsWaiting(true);\n\n        if (isUserValid()) {\n            setNameError('');\n            setEmailError('');\n            setPasswordError('');\n            setServerError('');\n            setIsWaiting(true);\n\n            const user = {\n                email: emailInput.current?.value.trim(),\n                username: nameInput.current?.value.trim().toLowerCase(),\n                password: passwordInput.current?.value,\n            } as UserProfile;\n\n            const redirectTo = (new URLSearchParams(search)).get('redirect_to') as string;\n\n            const {data, error} = await dispatch(createUser(user, token, inviteId, redirectTo));\n\n            if (error) {\n                setAlertBanner({\n                    mode: 'danger' as ModeType,\n                    title: (error as ServerError).message,\n                    onDismiss: dismissAlert,\n                });\n                setIsWaiting(false);\n                return;\n            }\n\n            await handleSignupSuccess(user, data!);\n            if (subscribeToSecurityNewsletter) {\n                subscribeToSecurityNewsletterFunc();\n            }\n        } else {\n            setIsWaiting(false);\n        }\n    };\n\n    const handleReturnButtonOnClick = () => history.replace('/');\n\n    const getNewsletterCheck = () => {\n        if (cwsAvailability === CSWAvailabilityCheckTypes.Available) {\n            return (\n                <CheckInput\n                    id='signup-body-card-form-check-newsletter'\n                    ariaLabel={formatMessage({id: 'newsletter_optin.checkmark.box', defaultMessage: 'newsletter checkbox'})}\n                    name='newsletter'\n                    onChange={() => setSubscribeToSecurityNewsletter(!subscribeToSecurityNewsletter)}\n                    text={\n                        formatMessage(\n                            {id: 'newsletter_optin.checkmark.text', defaultMessage: '<span>I would like to receive Mattermost security updates via newsletter.</span> By subscribing, I consent to receive emails from Mattermost with product updates, promotions, and company news. I have read the <a>Privacy Policy</a> and understand that I can <aa>unsubscribe</aa> at any time'},\n                            {\n                                a: (chunks: React.ReactNode | React.ReactNodeArray) => (\n                                    <ExternalLink\n                                        location='signup-newsletter-checkmark'\n                                        href={HostedCustomerLinks.PRIVACY}\n                                    >\n                                        {chunks}\n                                    </ExternalLink>\n                                ),\n                                aa: (chunks: React.ReactNode | React.ReactNodeArray) => (\n                                    <ExternalLink\n                                        location='signup-newsletter-checkmark'\n                                        href={HostedCustomerLinks.NEWSLETTER_UNSUBSCRIBE_LINK}\n                                    >\n                                        {chunks}\n                                    </ExternalLink>\n                                ),\n                                span: (chunks: React.ReactNode | React.ReactNodeArray) => (\n                                    <span className='header'>{chunks}</span>\n                                ),\n                            },\n                        )}\n                    checked={subscribeToSecurityNewsletter}\n                />\n            );\n        }\n        return (\n            <div className='newsletter'>\n                <span className='interested'>\n                    {formatMessage({id: 'newsletter_optin.title', defaultMessage: 'Interested in receiving Mattermost security, product, promotions, and company updates updates via newsletter?'})}\n                </span>\n                <span className='link'>\n                    {formatMessage(\n                        {id: 'newsletter_optin.desc', defaultMessage: 'Sign up at <a>{link}</a>.'},\n                        {\n                            link: HostedCustomerLinks.SECURITY_UPDATES,\n                            a: (chunks: React.ReactNode | React.ReactNodeArray) => (\n                                <ExternalLink\n                                    location='signup'\n                                    href={HostedCustomerLinks.SECURITY_UPDATES}\n                                >\n                                    {chunks}\n                                </ExternalLink>\n                            ),\n                        },\n                    )}\n                </span>\n            </div>\n        );\n    };\n\n    const handleOnBlur = (e: FocusEvent<HTMLInputElement | HTMLTextAreaElement>, inputId: string) => {\n        const text = e.target.value;\n        if (!text) {\n            return;\n        }\n        sendSignUpTelemetryEvents(`typed_input_${inputId}`);\n    };\n\n    const getContent = () => {\n        if (!enableSignUpWithEmail && !enableExternalSignup) {\n            return (\n                <ColumnLayout\n                    title={formatMessage({id: 'login.noMethods.title', defaultMessage: 'This server doesn’t have any sign-in methods enabled'})}\n                    message={formatMessage({id: 'login.noMethods.subtitle', defaultMessage: 'Please contact your System Administrator to resolve this.'})}\n                />\n            );\n        }\n\n        if (!isWaiting && (noOpenServer || serverError || usedBefore)) {\n            const titleColumn = noOpenServer ? (\n                formatMessage({id: 'signup_user_completed.no_open_server.title', defaultMessage: 'This server doesn’t allow open signups'})\n            ) : (\n                serverError ||\n                formatMessage({id: 'signup_user_completed.invalid_invite.title', defaultMessage: 'This invite link is invalid'})\n            );\n\n            return (\n                <ColumnLayout\n                    title={titleColumn}\n                    message={formatMessage({id: 'signup_user_completed.invalid_invite.message', defaultMessage: 'Please speak with your Administrator to receive an invitation.'})}\n                    extraContent={(\n                        <div className='signup-body-content-button-container'>\n                            <button\n                                className='signup-body-content-button-return'\n                                onClick={handleReturnButtonOnClick}\n                            >\n                                {formatMessage({id: 'signup_user_completed.return', defaultMessage: 'Return to log in'})}\n                            </button>\n                        </div>\n                    )}\n                />\n            );\n        }\n\n        if (desktopLoginLink) {\n            return (\n                <Route\n                    path={'/signup_user_complete/desktop'}\n                    render={() => (\n                        <DesktopAuthToken\n                            href={desktopLoginLink}\n                            onLogin={postSignupSuccess}\n                        />\n                    )}\n                />\n            );\n        }\n\n        let emailCustomLabelForInput: CustomMessageInputType = parsedEmail ? {\n            type: ItemStatus.INFO,\n            value: formatMessage(\n                {\n                    id: 'signup_user_completed.emailIs',\n                    defaultMessage: \"You'll use this address to sign in to {siteName}.\",\n                },\n                {siteName: SiteName},\n            ),\n        } : null;\n\n        // error will have preference over info message\n        if (emailError) {\n            emailCustomLabelForInput = {type: ItemStatus.ERROR, value: emailError};\n        }\n\n        return (\n            <>\n                <div\n                    className={classNames(\n                        'signup-body-message',\n                        {\n                            'custom-branding': enableCustomBrand,\n                            'with-brand-image': enableCustomBrand && !brandImageError,\n                            'with-alternate-link': !isMobileView,\n                        },\n                    )}\n                >\n                    {enableCustomBrand && !brandImageError ? (\n                        <img\n                            className={classNames('signup-body-custom-branding-image')}\n                            alt='brand image'\n                            src={Client4.getBrandImageUrl('0')}\n                            onError={handleBrandImageError}\n                        />\n                    ) : (\n                        <h1 className='signup-body-message-title'>\n                            {formatMessage({id: 'signup_user_completed.title', defaultMessage: 'Let’s get started'})}\n                        </h1>\n                    )}\n                    {getMessageSubtitle()}\n                </div>\n                <div className='signup-body-action'>\n                    {!isMobileView && getAlternateLink()}\n                    <div className={classNames('signup-body-card', {'custom-branding': enableCustomBrand, 'with-error': hasError})}>\n                        <div\n                            className='signup-body-card-content'\n                            onKeyDown={onEnterKeyDown}\n                            tabIndex={0}\n                        >\n                            <p className='signup-body-card-title'>\n                                {getCardTitle()}\n                            </p>\n                            {enableCustomBrand && getMessageSubtitle()}\n                            {alertBanner && (\n                                <AlertBanner\n                                    className='login-body-card-banner'\n                                    mode={alertBanner.mode}\n                                    title={alertBanner.title}\n                                    onDismiss={alertBanner.onDismiss}\n                                />\n                            )}\n                            {enableSignUpWithEmail && (\n                                <div className='signup-body-card-form'>\n                                    <Input\n                                        ref={emailInput}\n                                        name='email'\n                                        className='signup-body-card-form-email-input'\n                                        type='text'\n                                        inputSize={SIZE.LARGE}\n                                        value={email}\n                                        onChange={handleEmailOnChange}\n                                        placeholder={formatMessage({\n                                            id: 'signup_user_completed.emailLabel',\n                                            defaultMessage: 'Email address',\n                                        })}\n                                        disabled={isWaiting || Boolean(parsedEmail)}\n                                        autoFocus={true}\n                                        customMessage={emailCustomLabelForInput}\n                                        onBlur={(e) => handleOnBlur(e, 'email')}\n                                    />\n                                    <Input\n                                        ref={nameInput}\n                                        name='name'\n                                        className='signup-body-card-form-name-input'\n                                        type='text'\n                                        inputSize={SIZE.LARGE}\n                                        value={name}\n                                        onChange={handleNameOnChange}\n                                        placeholder={formatMessage({\n                                            id: 'signup_user_completed.chooseUser',\n                                            defaultMessage: 'Choose a Username',\n                                        })}\n                                        disabled={isWaiting}\n                                        autoFocus={Boolean(parsedEmail)}\n                                        customMessage={\n                                            nameError ? {type: ItemStatus.ERROR, value: nameError} : {\n                                                type: ItemStatus.INFO,\n                                                value: formatMessage({id: 'signup_user_completed.userHelp', defaultMessage: 'You can use lowercase letters, numbers, periods, dashes, and underscores.'}),\n                                            }\n                                        }\n                                        onBlur={(e) => handleOnBlur(e, 'username')}\n                                    />\n                                    <PasswordInput\n                                        ref={passwordInput}\n                                        className='signup-body-card-form-password-input'\n                                        value={password}\n                                        inputSize={SIZE.LARGE}\n                                        onChange={handlePasswordInputOnChange}\n                                        disabled={isWaiting}\n                                        createMode={true}\n                                        info={passwordInfo as string}\n                                        error={passwordError}\n                                        onBlur={(e) => handleOnBlur(e, 'password')}\n                                    />\n                                    {getNewsletterCheck()}\n                                    <SaveButton\n                                        extraClasses='signup-body-card-form-button-submit large'\n                                        saving={isWaiting}\n                                        disabled={!canSubmit}\n                                        onClick={handleSubmit}\n                                        defaultMessage={formatMessage({id: 'signup_user_completed.create', defaultMessage: 'Create account'})}\n                                        savingMessage={formatMessage({id: 'signup_user_completed.saving', defaultMessage: 'Creating account…'})}\n                                    />\n                                </div>\n                            )}\n                            {enableSignUpWithEmail && enableExternalSignup && (\n                                <div className='signup-body-card-form-divider'>\n                                    <span className='signup-body-card-form-divider-label'>\n                                        {formatMessage({id: 'signup_user_completed.or', defaultMessage: 'or create an account with'})}\n                                    </span>\n                                </div>\n                            )}\n                            {enableExternalSignup && (\n                                <div className={classNames('signup-body-card-form-login-options', {column: !enableSignUpWithEmail})}>\n                                    {getExternalSignupOptions().map((option) => (\n                                        <ExternalLoginButton\n                                            key={option.id}\n                                            direction={enableSignUpWithEmail ? undefined : 'column'}\n                                            {...option}\n                                        />\n                                    ))}\n                                </div>\n                            )}\n                            {enableSignUpWithEmail && !serverError && (\n                                <p className='signup-body-card-agreement'>\n                                    <FormattedMessage\n                                        id='signup.agreement'\n                                        defaultMessage='By proceeding to create your account and use {siteName}, you agree to our <termsOfUseLink>Terms of Use</termsOfUseLink> and <privacyPolicyLink>Privacy Policy</privacyPolicyLink>.  If you do not agree, you cannot use {siteName}.'\n                                        values={{\n                                            siteName: SiteName,\n                                            termsOfUseLink: (chunks: string) => (\n                                                <ExternalLink\n                                                    href={TermsOfServiceLink as string}\n                                                    location='signup-terms-of-use'\n                                                >\n                                                    {chunks}\n                                                </ExternalLink>\n                                            ),\n                                            privacyPolicyLink: (chunks: string) => (\n                                                <ExternalLink\n                                                    href={PrivacyPolicyLink as string}\n                                                    location='signup-privacy-policy'\n                                                >\n                                                    {chunks}\n                                                </ExternalLink>\n                                            ),\n                                        }}\n                                    />\n                                </p>\n                            )}\n                        </div>\n                    </div>\n                </div>\n            </>\n        );\n    };\n\n    return (\n        <div className='signup-body'>\n            <div className='signup-body-content'>\n                {getContent()}\n            </div>\n        </div>\n    );\n};\n\nexport default Signup;\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {IntlShape} from 'react-intl';\nimport {FormattedMessage, defineMessages} from 'react-intl';\n\nimport type {PasswordConfig} from 'mattermost-redux/selectors/entities/general';\n\nimport Constants from 'utils/constants';\n\nexport function isValidPassword(password: string, passwordConfig: PasswordConfig, intl?: IntlShape) {\n    let errorId = passwordErrors.passwordError.id;\n    const telemetryErrorIds = [];\n    let valid = true;\n    const minimumLength = passwordConfig.minimumLength || Constants.MIN_PASSWORD_LENGTH;\n\n    if (password.length < minimumLength || password.length > Constants.MAX_PASSWORD_LENGTH) {\n        valid = false;\n        telemetryErrorIds.push({field: 'password', rule: 'error_length'});\n    }\n\n    if (passwordConfig.requireLowercase) {\n        if (!password.match(/[a-z]/)) {\n            valid = false;\n        }\n\n        errorId += 'Lowercase';\n        telemetryErrorIds.push({field: 'password', rule: 'lowercase'});\n    }\n\n    if (passwordConfig.requireUppercase) {\n        if (!password.match(/[A-Z]/)) {\n            valid = false;\n        }\n\n        errorId += 'Uppercase';\n        telemetryErrorIds.push({field: 'password', rule: 'uppercase'});\n    }\n\n    if (passwordConfig.requireNumber) {\n        if (!password.match(/[0-9]/)) {\n            valid = false;\n        }\n\n        errorId += 'Number';\n        telemetryErrorIds.push({field: 'password', rule: 'number'});\n    }\n\n    if (passwordConfig.requireSymbol) {\n        if (!password.match(/[ !\"\\\\#$%&'()*+,-./:;<=>?@[\\]^_`|~]/)) {\n            valid = false;\n        }\n\n        errorId += 'Symbol';\n        telemetryErrorIds.push({field: 'password', rule: 'symbol'});\n    }\n\n    let error;\n    if (!valid) {\n        error = intl ? (\n            intl.formatMessage(\n                {\n                    id: errorId,\n                    defaultMessage: 'Must be {min}-{max} characters long.',\n                },\n                {\n                    min: minimumLength,\n                    max: Constants.MAX_PASSWORD_LENGTH,\n                },\n            )\n        ) : (\n            <FormattedMessage\n                id={errorId}\n                defaultMessage='Must be {min}-{max} characters long.'\n                values={{\n                    min: minimumLength,\n                    max: Constants.MAX_PASSWORD_LENGTH,\n                }}\n            />\n        );\n    }\n\n    return {valid, error, telemetryErrorIds};\n}\n\nexport const passwordErrors = defineMessages({\n    passwordError: {id: 'user.settings.security.passwordError', defaultMessage: 'Must be {min}-{max} characters long.'},\n    passwordErrorLowercase: {id: 'user.settings.security.passwordErrorLowercase', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters.'},\n    passwordErrorLowercaseNumber: {id: 'user.settings.security.passwordErrorLowercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters and numbers.'},\n    passwordErrorLowercaseNumberSymbol: {id: 'user.settings.security.passwordErrorLowercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters, numbers, and special characters.'},\n    passwordErrorLowercaseSymbol: {id: 'user.settings.security.passwordErrorLowercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include lowercase letters and special characters.'},\n    passwordErrorLowercaseUppercase: {id: 'user.settings.security.passwordErrorLowercaseUppercase', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters.'},\n    passwordErrorLowercaseUppercaseNumber: {id: 'user.settings.security.passwordErrorLowercaseUppercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, and numbers.'},\n    passwordErrorLowercaseUppercaseNumberSymbol: {id: 'user.settings.security.passwordErrorLowercaseUppercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, numbers, and special characters.'},\n    passwordErrorLowercaseUppercaseSymbol: {id: 'user.settings.security.passwordErrorLowercaseUppercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include both lowercase and uppercase letters, and special characters.'},\n    passwordErrorNumber: {id: 'user.settings.security.passwordErrorNumber', defaultMessage: 'Must be {min}-{max} characters long and include numbers.'},\n    passwordErrorNumberSymbol: {id: 'user.settings.security.passwordErrorNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include numbers and special characters.'},\n    passwordErrorSymbol: {id: 'user.settings.security.passwordErrorSymbol', defaultMessage: 'Must be {min}-{max} characters long and include special characters.'},\n    passwordErrorUppercase: {id: 'user.settings.security.passwordErrorUppercase', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters.'},\n    passwordErrorUppercaseNumber: {id: 'user.settings.security.passwordErrorUppercaseNumber', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, and numbers.'},\n    passwordErrorUppercaseNumberSymbol: {id: 'user.settings.security.passwordErrorUppercaseNumberSymbol', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, numbers, and special characters.'},\n    passwordErrorUppercaseSymbol: {id: 'user.settings.security.passwordErrorUppercaseSymbol', defaultMessage: 'Must be {min}-{max} characters long and include uppercase letters, and special characters.'},\n});\n"],"names":["props","id","ariaLabel","text","rest","_objectWithoutProperties","_excluded","React","className","Object","assign","type","_ref","_params$get","_params$get2","onCustomizeHeader","intl","useIntl","formatMessage","dispatch","useDispatch","history","useHistory","search","useLocation","params","URLSearchParams","token","get","inviteId","data","parsedData","JSON","parse","email","parsedEmail","name","parsedTeamName","reminder_interval","reminderInterval","config","useSelector","getConfig","EnableOpenServer","EnableUserCreation","NoAccounts","EnableSignUpWithEmail","EnableSignUpWithGitLab","EnableSignUpWithGoogle","EnableSignUpWithOffice365","EnableSignUpWithOpenId","EnableLdap","EnableSaml","SamlLoginButtonText","LdapLoginFieldName","SiteName","CustomDescriptionText","GitLabButtonText","GitLabButtonColor","OpenIdButtonText","OpenIdButtonColor","EnableCustomBrand","CustomBrandText","TermsOfServiceLink","PrivacyPolicyLink","IsLicensed","getLicense","loggedIn","Boolean","getCurrentUserId","onboardingFlowEnabled","getIsOnboardingFlowEnabled","usedBefore","state","undefined","getGlobalItem","emailInput","useRef","nameInput","passwordInput","isLicensed","enableUserCreation","noAccounts","enableSignUpWithEmail","enableSignUpWithGitLab","enableSignUpWithGoogle","enableSignUpWithOffice365","enableSignUpWithOpenId","enableLDAP","enableSAML","enableCustomBrand","noOpenServer","setEmail","useState","setName","password","setPassword","loading","setLoading","isWaiting","setIsWaiting","emailError","setEmailError","nameError","setNameError","passwordError","setPasswordError","brandImageError","setBrandImageError","serverError","setServerError","teamName","setTeamName","alertBanner","setAlertBanner","isMobileView","setIsMobileView","subscribeToSecurityNewsletter","setSubscribeToSecurityNewsletter","cwsAvailability","useCWSAvailabilityCheck","enableExternalSignup","hasError","canSubmit","passwordConfig","getPasswordConfig","error","passwordInfo","isValidPassword","desktopLoginLink","setDesktopLoginLink","handleHeaderBackButtonOnClick","useCallback","trackEvent","goBack","handleInvalidInvite","_ref2","errorMessage","server_error_id","message","defaultMessage","getAlternateLink","AlternateLinkLayout","alternateMessage","alternateLinkPath","alternateLinkLabel","onWindowResize","throttle","window","innerWidth","desktopExternalAuth","href","event","isDesktopApp","preventDefault","push","concat","useEffect","removeGlobalItem","_objectSpread","getRoleFromTrackFlow","getMediumFromTrackFlow","addEventListener","async","team","addUserToTeamFromInvite","Constants","DEFAULT_CHANNEL","handleAddUserToTeamFromInvite","getTeamInviteInfo","getInviteInfo","redirectUserToDefaultTeam","removeEventListener","document","title","onBackButtonClick","alternateLink","LoadingScreen","handleBrandImageError","onEnterKeyDown","e","key","KeyCodes","ENTER","handleSubmit","getMessageSubtitle","Markdown","options","mentionHighlight","handleEmailOnChange","_ref3","target","value","dismissAlert","handleNameOnChange","_ref4","handlePasswordInputOnChange","_ref5","postSignupSuccess","redirectTo","loadMe","setGlobalItem","stringify","sendSignUpTelemetryEvents","telemetryId","isUserValid","_emailInput$current","_nameInput$current","_passwordInput$curren","_passwordInput$curren2","isValid","providedEmail","current","trim","telemetryEvents","errors","success","isEmail","field","rule","providedUsername","toLowerCase","usernameError","isValidUsername","ValidationErrors","RESERVED_NAME","min","MIN_USERNAME_LENGTH","max","MAX_USERNAME_LENGTH","providedPassword","telemetryErrorIds","length","_emailInput$current2","_nameInput$current2","_passwordInput$curren3","user","username","createUser","mode","onDismiss","loginById","verifyUrl","encodeURIComponent","handleSignupSuccess","subscribeToSecurityNewsletterFunc","Client4","subscribeToNewsletter","subscribed_content","console","handleReturnButtonOnClick","replace","handleOnBlur","inputId","getContent","ColumnLayout","titleColumn","extraContent","onClick","Route","path","render","DesktopAuthToken","onLogin","emailCustomLabelForInput","ItemStatus","INFO","siteName","ERROR","classNames","alt","src","getBrandImageUrl","onError","onKeyDown","tabIndex","AlertBanner","Input","ref","inputSize","SIZE","LARGE","onChange","placeholder","disabled","autoFocus","customMessage","onBlur","PasswordInput","createMode","info","CSWAvailabilityCheckTypes","Available","CheckInput","a","chunks","ExternalLink","location","HostedCustomerLinks","PRIVACY","aa","NEWSLETTER_UNSUBSCRIBE_LINK","span","checked","link","SECURITY_UPDATES","SaveButton","extraClasses","saving","savingMessage","column","getExternalSignupOptions","externalLoginOptions","url","getOAuthRoute","icon","LoginGitlabIcon","label","style","color","borderColor","LoginGoogleIcon","EntraIdIcon","LoginOpenIDIcon","newSearchParam","set","CREATE_LDAP","getUrl","toString","LockIcon","map","option","ExternalLoginButton","direction","FormattedMessage","values","termsOfUseLink","privacyPolicyLink","errorId","passwordErrors","valid","minimumLength","MIN_PASSWORD_LENGTH","MAX_PASSWORD_LENGTH","requireLowercase","match","requireUppercase","requireNumber","requireSymbol","defineMessages","passwordErrorLowercase","passwordErrorLowercaseNumber","passwordErrorLowercaseNumberSymbol","passwordErrorLowercaseSymbol","passwordErrorLowercaseUppercase","passwordErrorLowercaseUppercaseNumber","passwordErrorLowercaseUppercaseNumberSymbol","passwordErrorLowercaseUppercaseSymbol","passwordErrorNumber","passwordErrorNumberSymbol","passwordErrorSymbol","passwordErrorUppercase","passwordErrorUppercaseNumber","passwordErrorUppercaseNumberSymbol","passwordErrorUppercaseSymbol"],"sourceRoot":""}

VaKeR 2022