{"version":3,"file":"frontend.js","mappings":"wBAAA,SAAWA,GAKP,SAASC,EAAiBC,EAAYC,EAAQC,EAAcC,EAAyBC,EAAYC,EAAUC,EAASC,EAAMC,GACtH,IAAIC,EAAKC,KAyBT,SAASC,EAAuBC,GAC5B,IAAIC,EAAe,eAAiBD,EAAYE,SAEhD,GAAIL,EAAGM,OAAOF,IAAiBJ,EAAGM,OAAOF,GAAcG,OAAOC,QAAS,OAAO,EAE9E,GAAIL,EAAYM,YAAa,CAEzB,IAAKT,EAAGU,uBAAyBV,EAAGU,qBAAqBP,EAAYE,UAAW,OAAO,EAGvF,GAAIF,EAAYQ,SAAWR,EAAYQ,QAAQC,OAAS,EACpD,YAAyDC,IAAlDb,EAAGU,qBAAqBP,EAAYE,UAI/C,IAAKL,EAAGU,qBAAqBP,EAAYE,UAAUO,OAAQ,OAAO,CACtE,CAGA,GAAIT,EAAYE,SAASS,QAAQ,UAAY,EAAG,CAC5C,GAAId,EAAGe,4BAA8Bf,EAAGe,2BAA2BZ,EAAYE,UAAW,OAAO,EAEjG,GAAIL,EAAGU,qBAAqBP,EAAYE,YAAcL,EAAGgB,cAAchB,EAAGU,qBAAqBP,EAAYE,WAAW,GAAO,OAAO,CACxI,CAEA,OAAO,CACX,CAMA,SAASY,EAAkBC,GACvB,OAAiE,IAA1DA,EAAMb,SAASc,cAAcC,WAAW,aACnD,CA6LA,SAASC,EAAiBC,GACtB,GAAIA,EAASC,gBACT,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAASC,gBAAgBX,OAAQY,IAAK,KAAAC,EACtD,IAAuC,QAAnCA,EAAAH,EAASC,gBAAgBC,GAAGb,eAAO,IAAAc,OAAA,EAAnCA,EAAqCb,QAAS,EAE9C,IADA,IAAIc,EAAUJ,EAASC,gBAAgBC,GAAGb,QACjCgB,EAAI,EAAGA,EAAID,EAAQd,OAAQe,IAChCD,EAAQC,GAAGC,GAAKF,EAAQC,GAAGE,MAI/BZ,EAAkBK,EAASC,gBAAgBC,MAC3CxB,EAAG8B,qBAAsB,EAEjC,CAEJ9B,EAAG+B,aAAeT,EAClBU,QAAQC,IAAI,kBAAmBjC,EAAG+B,aACtC,CAvQA/B,EAAGkC,yBAA2BzC,EAAa0C,KAC3CnC,EAAGoC,cAAe,EAElBpC,EAAGqC,cAAgB,iBACnBrC,EAAGsC,gBAAkB,+BAErBtC,EAAGuC,QAiGH,WACI7C,EAAwB8C,oBAAoBxC,EAAGkC,0BAA0BO,MAEzE,SAAqCC,GACjC,IAAIC,EAASC,mBAAmBC,iBAAiBH,GACjD1C,EAAG8C,KAAOH,EAAOG,KACjBzB,EAAiBsB,EAAOI,UACxB/C,EAAGgD,aAAc,CACrB,IAEA,SAAqBN,GACO,MAApBA,EAASO,SACTjD,EAAGoC,cAAe,EAClBpC,EAAGkD,oBAAsBN,mBAAmBC,iBAAiBH,GAErE,GACJ,EAhHA1C,EAAGmD,qBAqIH,WAEI,IAEIC,EAFAC,EAASrD,EAAGsD,YAGZC,GAAgB,EAChBvD,EAAG+B,cAAgB/B,EAAG+B,aAAayB,oBACnCJ,EAAWpD,EAAGyD,iBAEVF,GAAgB,IAIxB,IAAIG,EAAc1D,EAAGgB,cAAchB,EAAG8C,KAAKa,UAAY3D,EAAG4D,eAEtDC,GAAqB,EACzB,GAAI7D,EAAG+B,aAAaR,gBAChB,IAAK,IAAIC,EAAI,EAAGA,EAAIxB,EAAG+B,aAAaR,gBAAgBX,OAAQY,IAAK,CAC7D,IAAIrB,EAAcH,EAAG+B,aAAaR,gBAAgBC,GAElD,GAAIP,EAAkBd,KAAiBD,EAAuBC,GAAc,CACxE0D,GAAqB,EACrB,KACJ,CACJ,CAIJ,GAAI7D,EAAGM,OAAOwD,QAAUT,GAAUE,GAAiBG,IAAgB1D,EAAG+D,aAAe/D,EAAGgE,WAAaH,EAAoB,KACjHI,EACJ,GAAIjE,EAAGU,qBAGH,IAAK,IAAIwD,KAFTD,EAAuB5E,EAAQ8E,KAAKnE,EAAGU,sBAGnC,GAAIuD,EAAqBG,eAAeF,GAAW,CAC/C,IAAIG,EAAOJ,EAAqBC,GAC5BG,IAASA,EAAKxC,OAAwB,KAAfwC,EAAKxC,SAC5BoC,EAAqBC,GAAYG,EAAKxC,MAE9C,CAIRG,QAAQC,IAAI,YAAagC,GACzBjE,EAAGsE,gBAAiB,EACpBtE,EAAG+D,YAAa,EAEhB/D,EAAG8C,KAAKyB,OAASlB,EAEjB3D,EAAwByD,qBAAqBnD,EAAGkC,yBAA0BlC,EAAG8C,KAAMM,EAAUa,EAAsBjE,EAAGwE,kBAAkB/B,MAExI,SAAsCC,GAClC,IAAIC,EAASC,mBAAmBC,iBAAiBH,GAIjD,GAHAV,QAAQC,IAAI,SAAUU,GACtB3C,EAAGgE,WAAY,EACfhE,EAAGyE,QAAU9B,EAAO8B,QACfzE,EAAGyE,QAED,CACHzE,EAAG0E,eAAiB5E,EAAK6E,YAAYhC,EAAOiC,SAC5C,IAAIC,EAAclC,EAAOmC,UAAUC,YAC/BF,IACIA,EAAYzD,WAAW,MAAQyD,EAAY1D,cAAcL,QAAQ,SAAW,GAC5EkE,kBAAkB,iBAAkB,QAGxChF,EAAGiF,gBAAkBrF,GAAS,WAC1BsF,SAASC,KAAOtF,EAAQ,WAARA,CAAoBgF,EACxC,GAAG,KAEX,MAbI7E,EAAG4E,QAAU9E,EAAK6E,YAAYhC,EAAOiC,QAc7C,IAEA,WACI5C,QAAQC,IAAI,gBACZjC,EAAGyE,SAAU,EACbzE,EAAGgE,WAAY,EACfhE,EAAGoF,eAAgB,EACnBpF,EAAG4E,QAAU,+CACjB,GACJ,MACI5C,QAAQC,IAAI,aACZjC,EAAGsE,gBAAiB,CAG5B,EAzNAtE,EAAGqF,YAyFH,SAAqBhC,GACjB,IAAK,IAAI7B,EAAI,EAAGA,EAAIxB,EAAGsF,QAAQ1E,OAAQY,IACnCxB,EAAGsF,QAAQ9D,GAAG+D,QAAUvF,EAAGsF,QAAQ9D,KAAO6B,CAElD,EA5FArD,EAAGsD,UAgHH,WACI,IAAK,IAAI9B,EAAI,EAAGA,EAAIxB,EAAGsF,QAAQ1E,OAAQY,IACnC,GAAIxB,EAAGsF,QAAQ9D,GAAG+D,QACd,OAAOvF,EAAGsF,QAAQ9D,GAAGgE,WAG7B,OAAO,IACX,EAtHAxF,EAAGgB,cA6EH,SAAuByE,EAAQC,GAC3B,QAAKD,IAEDA,EAAOrE,WAAW,QAAUpB,EAAGsC,kBAAoBoD,EAC5C1F,EAAGsC,gBAAgBqD,KAAKF,GAExBzF,EAAGqC,cAAcsD,KAAKF,GAErC,EApFAzF,EAAG4F,iBAwNH,WACIjG,EAAW,CACP,kCACA,iCAED8C,MAAK,SAAUoD,GAAc,IAAAC,EAAAC,EAExBC,EAAqD,QAAlDF,EAAGD,EAAa,0CAAkC,IAAAC,OAAA,EAA/CA,EAAiDG,WACvDC,EAAmD,QAA/CH,EAAGF,EAAa,uCAA+B,IAAAE,OAAA,EAA5CA,EAA8CE,WAErDjG,EAAGmG,aADHH,GAAOE,EACWF,EAAII,QAAQ,iBAAkB,mBAAqBF,EAAO,KAAOA,EAAO,QAExEF,EAEtBhE,QAAQC,IAAI,YAAajC,EAAGmG,aAEhC,GACJ,EAxOAnG,EAAGyD,YA0HH,WACI,GAAIzD,EAAGqG,oBAAsBrG,EAAGsG,UAAYtG,EAAGsG,WAAatG,EAAGuG,eAC3D,OAAOvG,EAAGsG,QAElB,EA7HAtG,EAAGwG,aA8CH,WACI,SAAKxG,EAAG8C,OAAS9C,EAAG8C,KAAK2D,UACpBzG,EAAG0G,cAED1G,EAAG0G,aAAaf,KAAK3F,EAAG8C,KAAK2D,OACxC,EAlDAzG,EAAG2G,qBAoDH,WAgBI,SAASC,IACL5E,QAAQC,IAAI,+BAChB,CAjBIjC,EAAGwG,eACH9G,EAAwBiH,qBAAqB3G,EAAGkC,yBAA0BlC,EAAG8C,KAAK2D,OAAOhE,MAK7F,SAAsCC,GACrBE,mBAAmBC,iBAAiBH,GAE7C1C,EAAG6G,sBAAuB,EAE1BD,GAER,GAZgIA,GAE5H5G,EAAG8G,kBAAmB,CAe9B,EAtEA9G,EAAGqG,iBAmHH,WACI,OAAQrG,EAAGyD,aAAelE,EAAWwH,cAAcpB,KAAK3F,EAAGsG,SAC/D,EAnHAtG,EAAGgH,kBAkCH,SAA2B9F,GACvB,OAAiE,IAA1DA,EAAMb,SAASc,cAAcC,WAAW,aACnD,EAnCApB,EAAGiB,kBAAoBA,EACvBjB,EAAGE,uBAAyBA,EAE5BF,EAAGiH,SAAW1H,EAAW2H,uBAgSzBlH,EAAGmH,QA5CH,WAEIpH,EAAYqH,aAAa3E,MA8BzB,SAA4BC,GACxB,IAAI2E,EAAUzE,mBAAmBC,iBAAiBH,GAClD1C,EAAGsF,QAAU+B,EAAQC,QAAO,SAAAC,GAAC,MAAqB,UAAjBA,EAAE/B,UAAsB,GAC7D,IAhCAxF,EAAG4F,mBACHlG,EAAwB8H,YAAYxH,EAAGkC,0BAA0BO,MAEjE,SAA6BC,GACzB,IAAIC,EAASC,mBAAmBC,iBAAiBH,GAEjD,GADAV,QAAQC,IAAI,sBAAuBU,GACf,0BAAhBA,EAAO8E,KACPzH,EAAGuC,eACA,GAAoB,yBAAhBI,EAAO8E,KAAiC,CAI/C,GAHAzH,EAAG0H,mBAAoB,EACvBrG,EAAiBsB,EAAOI,UAEpB/C,EAAG+B,aAAa4F,mBAAqB3H,EAAG+B,aAAa4F,kBAAkB/G,OAAS,EAAG,CACnF,IAAIgH,EAAe5H,EAAG+B,aAAa4F,kBAAkBE,KAAK,KAE1D7H,EAAG0G,aAAe,IAAIoB,OAAO,yBAA2BF,EAAe,KAC3E,CAEA5H,EAAGgD,aAAc,CACrB,CACJ,IAEA,SAAqBN,GACO,MAApBA,EAASO,SACTjD,EAAGoC,cAAe,EAClBpC,EAAGkD,oBAAsBN,mBAAmBC,iBAAiBH,GAErE,IAOAlD,EAAOuI,IAAI,YAAY,WACf/H,EAAGiF,iBACHrF,EAASoI,OAAOhI,EAAGiF,gBAE3B,GACJ,CAIJ,CA9TA5F,EAAQ4I,OAAO,iBAAiBC,WAAW,6BAA8B5I,GAEzEA,EAAiB6I,QAAU,CAAC,aAAc,SAAU,eAAgB,+BAAgC,aAAc,WAAY,UAAW,OAAQ,qBA6TpJ,CAhUD,CAgUGC,OAAO/I,Q,aChUV,SAAWA,GAKP,SAASgJ,EAAQ9I,EAAY+I,GACzB,IAAItI,EAAKC,KAGHsI,EAAQC,OAAOD,MACfE,EAAM,CACRC,OAAQH,EAAQ,KAAO,MAAQ,MAC/BA,MAAOA,EAAQ,KAAO,MAAQ,MAC9BI,IAAK,MACLC,KAAML,EAAQ,KAAO,MAAQ,KAC7BM,UACI,uGACJC,aAAc,OAGlBvJ,EAAWwI,IAAI,0BAA0B,SAAUgB,EAAGC,GAClDhJ,EAAGiJ,kBAAmB,EACtBX,EAAQY,OAAOC,YACX,CAAEC,MAAM,EAAOC,eAAe,EAAOZ,IAAK,CAAC,GAC3C,IAER,IAEAlJ,EAAWwI,IAAI,qBAAqB,SAAUgB,EAAGC,GAC7ChJ,EAAGiJ,kBAAmB,EACtB,IAAIK,EAAW,CACXF,MAAM,EACNC,eAAe,EACfZ,IAAKA,GAETH,EAAQY,OAAOC,YAAYG,EAAU,IACzC,GACJ,CACDlB,OAAO/I,QArCE4I,OAAO,iBAAiBC,WAAW,oBAAqBG,GAEhEA,EAAQF,QAAU,CAAC,aAAc,UAmCpC,CAtCD,E,aCAA,SAAW9I,GAOV,SAASkK,EAAyBhK,EAAYiK,EAAuBC,EAAW9J,EAAY+J,EAAsBC,EAAUC,GAC3H,IAAI5J,EAAKC,KACTD,EAAG6J,WAAY,EACf7J,EAAG8J,KAAO,kBACV9J,EAAG+J,4BAiBH,WACC/J,EAAG4E,QAAU,GACT5E,EAAG8C,KAAK2D,OAASzG,EAAG8C,KAAK2D,MAAM3F,QAAQ,KAAO,EAEjD0I,EAAsBQ,0BAA0BhK,EAAG8C,KAAK2D,OAAOhE,MAE/D,SAA+BC,GACD,GAAzBA,EAASsG,KAAKvE,SACjBzE,EAAG8C,KAAK2D,MAAQ,GAChB9G,EAAW,iCAAiC8C,MAAK,SAASwH,GACzDjK,EAAG4E,QAAUqF,GAAe,cAC7B,KAEQvH,EAASsG,KAAKpE,QAAQhE,OAAS,IACvCZ,EAAG4E,QAAUlC,EAASsG,KAAKpE,SAGb5E,EAAGkK,YAAcxH,EAASsG,KAAKmB,MAC/C,IAIAxK,EAAW,4CAA4C8C,MAAK,SAAUwH,GACrEjK,EAAG4E,QAAUqF,GAAe,6BAC7B,GAEF,EA1CAjK,EAAG4E,QAAU,GACP5E,EAAGoK,UAWT,WACC7K,EAAW8K,WAAW,uBACvB,EAZMrK,EAAGkK,YAAc,KACvBlK,EAAGsK,OAEHtK,EAAGuK,gBAAkB,uBACrBvK,EAAGwK,qBAAsB,EAEzBxK,EAAG8C,KAAO,CACT2D,MAAO,IAsDRzG,EAAGmH,QARH,WACKiB,OAAOlD,SAASuF,OAAO3J,QAAQ,WAAa,IAC/Cd,EAAG6J,WAAY,GAZhBL,EAAsBkB,qBAAqBjI,MAAK,SAAUC,GACrDA,EAAS9B,OAAS,IACrBZ,EAAGuK,gBAAkB7H,GAEtB1C,EAAGwK,qBAAsB,CAC1B,IAEAjL,EAAWoL,mBAAqBC,gBAAgB,qBASjD,CAGD,CAEG,SAASC,EAAyBtL,EAAYiK,EAAuBC,EAAW9J,EAAY+J,EAAsBC,EAAUlK,EAAcqL,EAAQlB,GACpJ,IAAI5J,EAAKC,KACTD,EAAG+K,KAAOtL,EAAa0C,KACvBnC,EAAG8J,KAAO,iBACV9J,EAAGgL,oBAAqB,EACxBhL,EAAGiL,aAAc,EAEjBjL,EAAGuK,gBAAkB,uBACrBvK,EAAGwK,qBAAsB,EAEzBxK,EAAGkL,eA4BH,WACMlL,EAAGmL,QAAQrH,QAAU9D,EAAGsG,UAAYtG,EAAGuG,gBAgB1CiD,EAAsB0B,eAAelL,EAAG+K,KAAM/K,EAAGsG,UAAU7D,MAE3D,SAAuBC,GACO,GAAzBA,EAASsG,KAAKvE,SACjB9E,EAAW,oCAAoC8C,MAAK,SAAUwH,GAC7DjK,EAAG4E,QAAUqF,GAAe,mBAC7B,IAEAjK,EAAGgL,oBAAqB,EACxBhL,EAAGsG,SAAW,GACOtG,EAAGuG,eAAiB,IAGzCvG,EAAG4E,QAAUlC,EAASsG,KAAKpE,OAE7B,GAIH,EA/DA5E,EAAGoL,KAEG,WAiBL5B,EAAsBkB,qBAAqBjI,MAAK,SAAUC,GACrDA,EAAS9B,OAAS,IACrBZ,EAAGuK,gBAAkB7H,GAEtB1C,EAAGwK,qBAAsB,CAC1B,IAnBAhB,EAAsB6B,yBAAyBrL,EAAG+K,MAAMtI,MAExD,SAAyCC,GACxC1C,EAAGiL,YAAcvI,EAASsG,KAAKvE,QAET,GAAlBzE,EAAGiL,aACNtL,EAAW,oCAAoC8C,MAAK,SAAUwH,GAC7DjK,EAAG4E,QAAUqF,GAAe,6BAC7B,GAEF,GACK,EAiDNjK,EAAGmH,QAAUnH,EAAGoL,IACjB,CA1JA/L,EAAQ4I,OAAO,iBAAiBC,WAAW,sBAAuBqB,GAClElK,EAAQ4I,OAAO,iBAAiBC,WAAW,sBAAuB2C,GAElEtB,EAAyBpB,QAAU,CAAC,aAAc,6BAA8B,YAAa,aAAc,uBAAwB,WAAY,kBAC5I0C,EAAyB1C,QAAU,CAAC,aAAc,6BAA8B,YAAa,aAAc,uBAAwB,WAAY,eAAgB,SAAU,iBAuJ5K,CA5JD,CA4JGC,OAAO/I,Q,aC5JV,SAAWA,GAMP,SAASiM,EAAgB/L,EAAYgM,EAAc/B,EAAuB5J,EAAUkL,EAAQxC,EAASkD,EACjG/L,EAAciK,EAAsB/J,EAAYiK,GAChD,IAAI5J,EAAKC,KACTD,EAAGyL,eAAgB,EACnBzL,EAAGwK,qBAAsB,EACzBxK,EAAGuK,gBAAkB,uBACrBvK,EAAG0L,oBAAsB,wBACzB1L,EAAG4E,QAAU,GACb5E,EAAGkK,YAAc,KACjBlK,EAAG2L,YAAa,EAChB3L,EAAG4L,YAAa,EAChB5L,EAAGgL,oBAAqB,EACxBhL,EAAG6L,iBAAkB,EACrB7L,EAAG8L,SAAWvM,EAAWwM,aAAaC,MAAMF,SAC5C9L,EAAGiM,eAAiB1M,EAAWwM,aAAaC,MAAMC,eACxB,SAAtBxM,EAAa0C,KACbnC,EAAGkM,qBAAsB,EAEzBlM,EAAGmM,oBAAsB1M,EAAa0C,KAG1CnC,EAAGoM,aAAe3M,EAAa4M,aAE/BrM,EAAGsM,qBAAuB7M,EAAa8M,qBACvCvM,EAAGwM,gBAAkB/M,EAAagN,gBAE9BzM,EAAGsM,uBACHtM,EAAGiH,SAAW1H,EAAWmN,eAAe,SAG5C1K,QAAQC,IAAI,0BAA2BjC,EAAGuM,sBAC1CvK,QAAQC,IAAI,qBAAsBjC,EAAGwM,iBACrCxK,QAAQC,IAAI,yBAA0BjC,EAAGkM,qBAEzClM,EAAGsK,OAEHtK,EAAGgM,MAUH,WACIhM,EAAG2M,SAAW3M,EAAG2M,SAASC,OAC1B5M,EAAGsG,SAAWtG,EAAGsG,SAASsG,OAEA,GAAtB5M,EAAG2M,SAAS/L,QAAqC,GAAtBZ,EAAGsG,SAAS1F,SAG3C4K,EAAiBqB,wBACd7M,EAAG4L,WAAY5L,EAAG8M,oBAChBC,mBAAmB/M,EAAG0L,qBAE9BH,EAAaS,MAAMhM,EAAG2M,SAAU3M,EAAGsG,UAAU7D,MAE1C,SAAuBC,GACfA,EAASsG,KAAKgE,OAAgC,IAAvBtK,EAASsG,KAAKgE,QACrCC,cAAc,oBACdC,oBAAoBxK,EAASsG,KAAKgE,MAAOtK,EAASsG,KAAKpH,KAG3D5B,EAAGkK,YAAcxH,EAASsG,KAAKmB,OAE3BzH,EAASsG,KAAKpH,IAAM,EAChBc,EAASsG,KAAKjE,YACoB,MAA9BrC,EAASsG,KAAKjE,YACduD,EAAQpD,SAAWiI,aAEnB7E,EAAQpD,SAAWiI,aAAezK,EAASsG,KAAKjE,YAIhDrC,EAASsG,KAAKoE,eAElB9E,EAAQpD,SAAW3F,EAAWwM,aAAaC,MAAMqB,cAE5CC,WACLhF,EAAQpD,SAAWiI,aAAeG,WAGlChF,EAAQpD,SAAWiI,cAI1B3B,EAAiB+B,8BACdvN,EAAG2L,YAAa,EAExB,GAlC8DH,EAAiB+B,6BAmCnF,EAvDAvN,EAAG8M,kBAyDH,WACIU,gBAAgBxN,EAAG0L,oBAAqB1L,EAAG2M,SAC/C,EA1DA3M,EAAGkL,eAyEH,WACSlL,EAAGmL,QAAQrH,QAAU9D,EAAGsG,UAAYtG,EAAGuG,gBAapCiD,EAAsB0B,eAAelL,EAAGmM,oBAAqBnM,EAAGsG,UAAU7D,MAE1E,SAAuBC,GACU,GAAzBA,EAASsG,KAAKvE,SACd9E,EAAW,oCAAoC8C,MAAK,SAAUwH,GAC1DjK,EAAG4E,QAAUqF,GAAe,mBAChC,IAEAjK,EAAGgL,oBAAqB,EACxBhL,EAAGsG,SAAW,GACdtG,EAAGuG,eAAiB,GAEhB7D,EAASsG,KAAKmB,QACVzH,EAASsG,KAAKmB,OAAOtF,cACrB7E,EAAG+E,YAAcrC,EAASsG,KAAKmB,OAAOtF,cAK9C7E,EAAG4E,QAAUlC,EAASsG,KAAKpE,QAG/B5E,EAAGkK,YAAcxH,EAASsG,KAAKmB,MACnC,GAGZ,EAhHAnK,EAAGyN,kBAGH,WACIzI,kBAAkB,iBAAkB,OACxC,EAJAhF,EAAG0N,sBA0DH,WACsE,GAA9DhE,EAAqBiE,UAAU3N,EAAG4N,2BAGlC5N,EAAG6N,0BAA2B,EAC9BtC,EAAamC,sBAAsB1N,EAAG8N,UAAW9N,EAAGsM,qBAAsBtM,EAAGwM,iBAAiB/J,MAE9F,SAAuCC,GACnC,IAGZ,EAiHA1C,EAAGmH,QA5CH,WAMI,GA9BAqC,EAAsBkB,qBAAqBjI,MAAK,SAAUC,GAClDA,EAAS9B,OAAS,IAClBZ,EAAGuK,gBAAkB7H,GAEzB1C,EAAGwK,qBAAsB,CAC7B,IAEAZ,EAAemE,mBAAmBtL,MAAK,SAASC,GAC5C1C,EAAGsK,OAAS5H,EAASsG,IACzB,IAEAY,EAAeoE,iBAAiB,wBAAwBvL,MAAK,SAAUC,GACnE1C,EAAG6L,gBAAoC,SAAlBnJ,EAASsG,IAClC,IAEiBiF,eAAkC,oBAE4B,yCAAlDC,0BAA0B,IAAKhJ,SAASC,QAE7DnF,EAAGmO,YAAa,IASxB5O,EAAWoL,mBAAqBC,gBAAgB,sBAE5C5K,EAAGmM,oBACHZ,EAAa6C,gBAAgBpO,EAAGmM,qBAAqB1J,MAErD,SAAiCC,GAAU,IAAA2L,EAAAC,EACvCtM,QAAQC,IAAIS,GACZ1C,EAAG4E,QAAUlC,EAASsG,KAAKpE,QAC3B5E,EAAGuO,uBAAyB7L,EAASsG,KAAKvE,QAC1CzE,EAAGkK,YAAcxH,EAASsG,KAAKmB,OAE3BzH,EAASsG,KAAKvE,SAAkC,QAA3B4J,EAAI3L,EAASsG,KAAKlE,iBAAS,IAAAuJ,GAAvBA,EAAyB1B,SAClD3H,kBAAkB,2BAA4BtC,EAASsG,KAAKlE,UAAU6H,UACxC,QAA3B2B,EAAI5L,EAASsG,KAAKlE,iBAAS,IAAAwJ,GAAvBA,EAAyB3B,WAChC3H,kBAAkB,2BAA4BtC,EAASsG,KAAKlE,UAAU6H,UACtErE,EAAQpD,SAAWiI,aAAe5N,EAAWwM,aAAoB,MAA8B,2BAEvG,QAEC,CACD,IAAIyC,EAAgB5D,gBAAgB5K,EAAG0L,qBACnC+C,EAAyBC,kBAAkB,4BAC3CD,GACAE,qBAAqB,6BAGrBH,GAAiBC,KACjBzO,EAAG2M,SAAW6B,GAAiBC,EAC3BD,IACAxO,EAAG4L,YAAa,GAEpBgD,YAAW,WACPC,SAASC,eAAe,YAAYC,OACxC,GAAG,IAEX,CAEA/O,EAAGyL,eAAgB,CACvB,CAGJ,CAEDrD,OAAO/I,QAtOE4I,OAAO,iBAAiBC,WAAW,aAAcoD,GAEzDA,EAAgBnD,QAAU,CAAC,aAAc,eAAgB,6BAA8B,WAAY,SAAU,UAAW,mBACpH,eAAgB,uBAAwB,aAAc,iBAmO7D,CAvOD,E,aCAC,SAAU9I,GAKP,SAAS2P,EAAiBzP,EAAYQ,GAOlCR,EAAWyD,YAAYP,MAJvB,WACI1C,EAAYkP,QAChB,GAGJ,CACF7G,OAAO/I,QAbG4I,OAAO,iBAAiBC,WAAW,cAAe8G,GAE1DA,EAAiB7G,QAAU,CAAC,aAAc,qBAW7C,CAdA,E,aCAD,SAAU9I,GAmBN,SAAS6P,EAAyB3P,EAAYQ,EAAa4J,EAAUhK,EAAYF,EAAc0P,GAC3F,IAAInP,EAAKC,KAETD,EAAGoP,OAA+B,IAAvB3P,EAAa4P,MAExBrP,EAAGsP,eAkBH,SAAwBC,EAAgBR,GACpC/O,EAAGwP,aAAaC,KAAK,CACjBC,UAAW,CAAC,CACRC,eAAgBJ,EAChBK,aAAcrQ,EAAWsQ,aAAajO,KAE1CkO,MAAOf,GAEf,EAzBA/O,EAAG+P,kBA2BH,SAA2BC,GACvB,IAAIC,EAAQjQ,EAAGwP,aAAa1O,QAAQkP,GAChCC,GAAS,IACTjQ,EAAGwP,aAAaU,OAAOD,EAAO,GAC9BjQ,EAAGM,OAAO6P,YAElB,EAhCAnQ,EAAGoQ,qBAGH,SAA8Bb,GAC1B,OAAO,SAAUS,GACb,IAAKA,EAAKN,UAAW,OAAO,EAE5B,IAAIW,EAAYL,EAAKN,UAAUY,gBAAgB,iBAAkBf,GACjE,QAAKc,IAEY,OADFA,EAAUE,eAAe,eAAgBhR,EAAWsQ,aAAajO,KAGD,OAAxEyO,EAAUE,eAAe,cAAehR,EAAWsQ,aAAajO,IAC3E,CACJ,EAbA5B,EAAGwQ,KAiCH,WACIzQ,EAAY0Q,mBAAmBzQ,EAAGwP,cAAc/M,MAAK,SAASC,GAC1D1C,EAAGwP,aAAe9M,EAASsG,MAAQ,GAEnChJ,EAAGM,OAAOoQ,eACV1Q,EAAGM,OAAOqQ,gBAEV3Q,EAAG4Q,UAAW,EAGdjR,EAAW,+BAA+B8C,MAAK,SAAUwH,GACrDN,EAASP,KAAKO,EAASkH,SAASC,QAAQ7G,GAAa8G,SAAS,gBAClE,GACJ,IAAG,WACCpH,EAASP,KAAKO,EAASkH,SAASC,QAAQ,gBAAgBC,SAAS,gBACrE,GACJ,EAqBAxR,EAAWyD,YAAYP,MAnBvB,WACI0M,EAAG6B,IAAI,CACHjR,EAAYkR,mBACZlR,EAAYmR,oBACbzO,MAAK,SAAUE,GAId,GAHA3C,EAAGmR,cAAgBxO,EAAO,GAAGqG,KAC7BhJ,EAAGwP,aAAe7M,EAAO,GAAGqG,MAAQ,GAEhChJ,EAAGoP,OAAoC,IAA3BpP,EAAGwP,aAAa5O,QAAgBrB,EAAWwM,aAAsB,QAAEqF,wCAAwCxQ,OAEvH,IADA,IAAIyQ,EAAwB9R,EAAWwM,aAAsB,QAAEqF,wCACtD5P,EAAI,EAAGA,EAAIxB,EAAGmR,cAAcvQ,OAAQY,IACrC6P,EAAsBC,SAAStR,EAAGmR,cAAc3P,GAAGgE,aACnDxF,EAAGsP,eAAetP,EAAGmR,cAAc3P,GAAGI,GAItD,GACJ,GAGJ,CAEA,SAAS2P,EAA2BhS,EAAYQ,EAAa4J,EAAUhK,EAAYH,GAC/E,IAAIQ,EAAKC,KACTD,EAAGM,OAAS,KACZN,EAAGgD,aAAc,EAEjBhD,EAAGoL,KA2DH,WAEIrL,EAAYyR,aAAa/O,MAOzB,SAAyBC,GAKrB,GAJA1C,EAAGgD,aAAc,EACjBhD,EAAG8C,KAAOJ,EAASsG,KACnBhH,QAAQC,IAAI,UAAWjC,EAAG8C,MAEtB9C,EAAG8C,KAAK2O,WAAY,CAEpB,IADA,IAAIC,EAAe,KACVlQ,EAAI,EAAGA,EAAIxB,EAAG8C,KAAK2O,WAAW7Q,OAAQY,IAAK,KAAAmQ,EAAAC,EAAAC,EAC5C1R,EAAcH,EAAG8C,KAAK2O,WAAWjQ,GACjCsQ,EAA6C,QAAxCH,EAA6B,QAA7BC,EAAGzR,EAAY4R,sBAAc,IAAAH,OAAA,EAA1BA,EAA4BI,iBAAS,IAAAL,EAAAA,EAAI,KAOrD,GANID,IAAiBI,IAAUtQ,EAAI,GAAKsQ,KACpC3R,EAAY8R,UAAW,GAG3BP,EAAeI,EAEe,QAA9BD,EAAI1R,EAAY4R,sBAAc,IAAAF,GAA1BA,EAA4BlR,QAAS,CACrC,IAAMuR,EAAW/R,EAAY4R,eAAepR,QAAQ4P,eAAe,KAAMpQ,EAAY0B,OACjFqQ,IACA/R,EAAYgS,eAAiBD,EAErC,CACJ,CAEA1S,EAAO4S,OAAO,sBAAsB,SAAUC,EAAUC,GAAU,IAAAC,EAC9D,IAAa,QAAbA,EAAIvS,EAAGM,cAAM,IAAAiS,IAATA,EAAWC,SAIXH,GAAYC,EACZ,IAAK,IAAI9Q,EAAI,EAAGA,EAAI6Q,EAASzR,OAAQY,IAC7B6Q,EAAS7Q,GAAG2Q,iBAAmBG,EAAS9Q,GAAG2Q,gBAC3CnS,EAAGM,OAAO6P,WAI1B,IAAG,EACP,CACJ,IA5CApQ,EAAY0S,6BAA6BhQ,MA8CzC,SAA2CC,GACvC1C,EAAG0S,iBAAmBhQ,EAASsG,IACnC,IA9CArJ,EAAW,CACP,mCACD8C,MA8CH,SAAiCoD,GAC7B7F,EAAG2S,2BAA6B,qCAEhC,IAAIC,EAAI/M,EAAa,kCAAkCI,WAC7C,mCAAN2M,IACA5S,EAAG2S,2BAA6BC,EAExC,GACJ,EAvHA5S,EAAGwQ,KAgCH,WAEI,GAAIxQ,EAAG8C,KAAK2O,WACR,IAAK,IAAIjQ,EAAI,EAAGA,EAAIxB,EAAG8C,KAAK2O,WAAW7Q,OAAQY,IAAK,CAChD,IAAIrB,EAAcH,EAAG8C,KAAK2O,WAAWjQ,GACjCrB,EAAYgS,iBACZhS,EAAY0B,MAAQ1B,EAAYgS,eAAevQ,GAEvD,CAGJ7B,EAAY8S,sBAAsB7S,EAAG8C,MAAML,MAE3C,SAAyBC,GACrB1C,EAAGM,OAAOoQ,eACV1Q,EAAGM,OAAOqQ,gBAEVhH,EAASP,KAAKO,EAASkH,SAASC,QAAQ,sBAAsBC,SAAS,gBAC3E,IAEA,WACI/O,QAAQC,IAAI,UACZ0H,EAASP,KAAKO,EAASkH,SAASC,QAAQ,wBAAwBC,SAAS,gBAC7E,GACJ,EAvDA/Q,EAAG8S,kBAwBH,SAA2B5R,GACvB,QAAKlB,EAAG0S,uBAGK7R,IADLb,EAAG0S,iBAAiBK,MAAK,SAAAC,GAAE,OAAqB,IAAjBA,EAAGC,WAAmBD,EAAGE,KAAK/R,gBAAkBD,EAAMC,aAAa,GAE9G,EA5BAnB,EAAGmT,iBAEH,SAA0BhT,GAAa,IAAAiT,EAAAC,EACnC,GAAIlT,EAAYM,YACZ,OAAO,EAGX,IAAMqR,EAAkC,QAA7BsB,EAAGjT,EAAY4R,sBAAc,IAAAqB,OAAA,EAA1BA,EAA4BpB,UAC1C,IAAKF,EAAO,OAAO,EAGnB,KAD0D,QAA7BuB,EAAGlT,EAAY4R,sBAAc,IAAAsB,OAAA,EAA1BA,EAA4BC,yBAC9B,OAAO,EAErC,IAAK,IAAI9R,EAAI,EAAGA,EAAIxB,EAAG8C,KAAK2O,WAAW7Q,OAAQY,IAAK,KAAA+R,EAC1CpT,EAAcH,EAAG8C,KAAK2O,WAAWjQ,GACvC,IAA8B,QAA1B+R,EAAApT,EAAY4R,sBAAc,IAAAwB,OAAA,EAA1BA,EAA4BvB,aAAcF,GAAS3R,EAAY0B,MAC/D,OAAO,CAEf,CAEA,OAAO,CACX,EAkGAtC,EAAWyD,YAAYP,KAAKzC,EAAGoL,KACnC,CAEA,SAASoI,EAAqBjU,EAAYQ,EAAa4J,GACnD,IAAI3J,EAAKC,KACTD,EAAGM,OAAS,KACZN,EAAGyT,YACHzT,EAAG0T,YACH1T,EAAG2T,kBACH3T,EAAG4T,eAAgB,EAEnB5T,EAAGwQ,KAiBH,WACI,GAAgC,MAP5BxQ,EAAGyT,aAAiC,IAAlBzT,EAAGyT,cAAqBzT,EAAG0T,aAAiC,IAAlB1T,EAAG0T,aAAqB1T,EAAG0T,cAAgB1T,EAAG2T,mBAQ1G,OAAO,EAEX5T,EAAY8T,iBAAiB7T,EAAG0T,YAAa1T,EAAGyT,aAAahR,MAE7D,SAAiCC,GAU7B,OATHiH,EAASP,KAAKO,EAASkH,SAASC,QAAQpO,EAASsG,MAAM+H,SAAS,iBAEhE/Q,EAAGyT,iBAAc5S,EACjBb,EAAG0T,iBAAc7S,EACdb,EAAG2T,uBAAoB9S,EAEvBb,EAAGM,OAAOoQ,eACV1Q,EAAGM,OAAOqQ,iBAEH,CACX,GACJ,EAlCA3Q,EAAG8T,mBAEH,WACI9T,EAAG4T,eAAiB5T,EAAG4T,cAEvB/E,SAASC,eAAe,eAAeiF,aAAa,OAAQ/T,EAAG4T,cAAgB,OAAS,YACxF/E,SAASC,eAAe,qBAAqBiF,aAAa,OAAQ/T,EAAG4T,cAAgB,OAAS,WAClG,CA4BJ,CAEA,SAASI,EAAiBzU,EAAYuL,EAAQmJ,EAAkBlU,EAAamU,EAAcC,EAAwBC,EAAeC,GAC9H,IAAIrU,EAAKC,KACTD,EAAGsU,QAAU,GACbtU,EAAGuU,eAAY1T,EACfb,EAAGwU,UAAYC,sBACfzU,EAAG0U,OAASC,OAEZ3U,EAAG4U,gBAAkB,EACrB5U,EAAG6U,WAAa,EAChB7U,EAAG8U,YAAc,EACjB9U,EAAG+U,YAAc,EACjB/U,EAAGgV,WAAa,EAChBhV,EAAGiV,qBAAuB,EAE1BjV,EAAGkV,cAAgB,GACnBlV,EAAGmV,kBAAoB,EACvBnV,EAAGoV,YAAc,GACjBpV,EAAGqV,gBAAkB,EACrBrV,EAAGsV,mBAAqB,GACxBtV,EAAGuV,uBAAyB,EAC5BvV,EAAGwV,qBAAuB,GAC1BxV,EAAGyV,yBAA2B,EAC9BzV,EAAG0V,mBAAqB,EACxB1V,EAAG2V,wBAA0B,EAE7B3V,EAAG4V,kBAuIH,WACI3B,EAAiB2B,oBAAoBnT,MAErC,SAAkCC,GAC9B1C,EAAG2V,wBAA0BjT,EAASsG,KAAK6M,UAC3C7V,EAAG2V,yBAA2BjT,EAASsG,KAAK8M,uBAE5C9V,EAAG0V,mBAAqBhT,EAASsG,KAAK+M,aAC1C,GACJ,EA/IA/V,EAAGgW,6BAiJH,SAAsCC,GAClClW,EAAYiW,6BAA6BhW,EAAGsU,QAAS2B,GAAMxT,MAE3D,SAA6CC,GACzC1C,EAAGkV,cAAgBxS,EAASsG,IAChC,GACJ,EAtJAhJ,EAAGkW,sCAwJH,SAA+CD,GAC3C/B,EAAagC,sCAAsClW,EAAGsU,QAAS2B,GAAMxT,MAErE,SAAsDC,GAClD1C,EAAGwV,qBAAuB9S,EAASsG,IACvC,GACJ,EA7JAhJ,EAAGmW,6BA+JH,SAAsCF,GAClC9B,EAAuBgC,6BAA6BF,EAAMjW,EAAGsU,SAAS7R,MAEtE,SAA6CC,GACzC1C,EAAGoV,YAAc1S,EAASsG,IAC9B,GACJ,EApKAhJ,EAAGoW,eAsKH,SAAwBH,GACpB7B,EAAcgC,eAAeH,EAAMjW,EAAGsU,SAAS7R,MAE/C,SAA+BC,GAC3B1C,EAAGsV,mBAAqB5S,EAASsG,IACrC,GACJ,EA3KAhJ,EAAGqW,eA6KH,SAAwBhS,GACpB,OAAQA,EAAKiS,aACT,IAAK,iBACDxL,EAAOyL,GAAG,8BAA+B,CAACC,GAAInS,EAAKxC,MAAMD,KAC7D,MACA,IAAK,UACDkJ,EAAOyL,GAAG,4BAA6B,CAACC,GAAInS,EAAKxC,MAAMD,KAGnE,EArLA5B,EAAGyW,kBAuLH,SAA2BpS,GACvB,OAAQA,EAAKiS,aACT,IAAK,iBACD,MAAO,oBACX,IAAK,UACD,MAAO,UAEnB,EA7LAtW,EAAG0W,iBA2GH,WAUC,SAASC,EAAsBlN,GACrBxJ,KAEN2W,gBAEH,WAEA,CACD,CAjBAnN,UAAUL,KAAK,CACdyN,YAAa1J,aAAe,8CAC5B2J,aAAc,KACd5O,WAAYyO,EAClBI,kBAAkB,IAGbJ,EAAsBxO,QAAU,CAAC,YAWlC,EA7HAnI,EAAGgX,gBA+DH,WACIjX,EAAYiX,kBAAkBvU,MAAK,SAASC,GACxC1C,EAAGuU,UAAY7R,EAASsG,KAOxB,IALA,IAAIiO,EAAW,EACXC,EAAY,EACZC,EAAa,EACbC,EAAa,EACbC,EAAY,EACP7V,EAAI,EAAGA,EAAIxB,EAAGuU,UAAU+C,iBAAiB1W,OAAQY,IACtD,IAAgD,IAA5CxB,EAAGuU,UAAU+C,iBAAiB9V,GAAG+V,OACjC,OAAQvX,EAAGuU,UAAU+C,iBAAiB9V,GAAGgW,kBACrC,KAAK,EACDP,IACA,MACJ,KAAK,EACDC,IACA,MACJ,KAAK,EACDC,IACA,MACJ,KAAK,EACDC,IACA,MACJ,KAAK,EACDC,IAOhBrX,EAAG4U,eAAiBqC,EACpBjX,EAAG6U,UAAYqC,EACflX,EAAG8U,WAAaqC,EAChBnX,EAAG+U,WAAaqC,EAChBpX,EAAGgV,UAAYqC,EACfrX,EAAGiV,oBAAsBgC,EAAWG,EAEpCpV,QAAQC,IAAI,aAChB,GACJ,EAvGAjC,EAAGyX,aAqCH,SAAsBC,GAClB,IAAIC,GAAS,EACb,GAAGD,GAAS1X,EAAGuU,UAEX,GAAGmD,EAAM9W,OAAS,EACd,IAAI,IAAIY,EAAI,EAAGA,EAAIkW,EAAM9W,OAAQY,IAC7B,IAAI,IAAIoW,EAAI,EAAGA,EAAI5X,EAAGuU,UAAU+C,iBAAiB1W,OAAQgX,IAClD5X,EAAGuU,UAAU+C,iBAAiBM,GAAGJ,mBAAqBE,EAAMlW,KAAkD,IAA5CxB,EAAGuU,UAAU+C,iBAAiBM,GAAGL,QAClGI,SAMZ,IAAQnW,EAAI,EAAGA,EAAIxB,EAAGuU,UAAU+C,iBAAiB1W,OAAQY,IAClDxB,EAAGuU,UAAU+C,iBAAiB9V,GAAGgW,mBAAqBE,IAAqD,IAA5C1X,EAAGuU,UAAU+C,iBAAiB9V,GAAG+V,QAC/FI,IAMhB,OAAOA,CACX,EA3DA3X,EAAG6X,WAkMH,WACI7X,EAAG4V,oBACH5V,EAAGgW,6BAA6BhW,EAAGmV,mBACnCnV,EAAGmW,6BAA6BnW,EAAGqV,iBACnCrV,EAAGoW,eAAepW,EAAGuV,wBAErBvV,EAAGgX,kBAXH3C,EAAsByD,2BAA2BrV,MAAK,SAASC,GAC3D1C,EAAG+X,UAAYrV,EAASsG,IAC5B,IAYIgP,oBAAoB,yBACpBhY,EAAGkW,sCAAsClW,EAAGyV,yBAEpD,EA7MAzV,EAAGiY,SAEH,SAAkB5T,GAEd,GAAKA,EAAKtB,YAAcsB,EAAKtB,SAASmV,kBAAoB,GAAK7T,EAAKtB,SAASmV,oBAAsB3Y,EAAWsQ,aAAajO,GACvH,OAAQyC,EAAK8T,YACT,IAAK,OACDrN,EAAOyL,GAAG,6BAA8B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QACtF,MACJ,IAAK,OACDtN,EAAOyL,GAAG,6BAA8B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QACtF,MACJ,IAAK,WACDtN,EAAOyL,GAAG,8BAA+B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QAMnG,OAAQ/T,EAAK8T,YACT,IAAK,QACDrN,EAAOyL,GAAG,8BAA+B,CAAEC,GAAInS,EAAK+T,WACpD,MACJ,IAAK,gBACDtN,EAAOyL,GAAG,yBAA0B,CAAEC,GAAInS,EAAK+T,WAC/C,MACJ,IAAK,OACDtN,EAAOyL,GAAG,oBAAqB,CAAEC,GAAInS,EAAK+T,WAC1C,MACJ,IAAK,QACDlT,SAASC,KAAOgI,aAAe,SAAW9I,EAAK+T,SAG3D,EA8KApY,EAAG6X,YACP,CAEA,SAASQ,EAAqB9Y,EAAYQ,EAAa0J,EAAW9J,EAAY2Y,EAAqBC,EAA2B5O,EAAUwF,EAAIvF,EAAgB4O,EAAiB3Y,EAASL,GAClL,IAAIQ,EAAKC,KA6YT,SAASwY,EAAwBhP,GACpBxJ,KAENyY,MAGH,WACIjP,EAAUzB,QACd,EAPS/H,KAGN0Y,GAMH,WACIlP,EAAUmP,MAAK,EACnB,CACJ,CAzZA5Y,EAAGM,OAAS,KACZN,EAAGgD,aAAc,EACjBhD,EAAG6Y,mBAAqB1J,EAAG2J,QAC3B9Y,EAAG+Y,qBAAuB5J,EAAG2J,QAC7B9Y,EAAGgZ,qBAAuB7J,EAAG2J,QAC7B9Y,EAAGiZ,qBAAuB9J,EAAG2J,QAE7B9Y,EAAGuC,QA+CH,WACIxC,EAAYyR,aAAa/O,MAEzB,SAAgCC,GAC5B1C,EAAGgD,aAAc,EACjBhD,EAAG8C,KAAOJ,EAASsG,KACnBhJ,EAAGkZ,sBACHlZ,EAAGmZ,sBACHnZ,EAAGoZ,YA4BPpZ,EAAG+Y,qBAAqBM,QAAQ5W,MAAK,WACjC,GAAIzC,EAAG8C,KAAKwW,UAAY,EAAG,CACvB,IAAIC,EAAcvZ,EAAGwZ,UAAUlS,QAAO,SAAAmS,GAAC,OAAIA,EAAE7X,KAAO5B,EAAG8C,KAAKwW,SAAS,IAC1C,IAAvBC,EAAY3Y,OACZZ,EAAG0Z,gBAAkBH,EAAY,GAEjCvX,QAAQC,IAAI,uDAGpB,CACJ,IA7BAjC,EAAGgZ,qBAAqBK,QAAQ5W,MAAK,WAEjC,IAAK,IAAIjB,EAAI,EAAGA,EAAIxB,EAAG8C,KAAK6W,MAAM/Y,OAAQY,IAAK,CAC3C,IAAIoY,EAAK5Z,EAAG6Z,uBAAuBtJ,eAAe,KAAMvQ,EAAG8C,KAAK6W,MAAMnY,GAAGsY,YACzE,GAAIF,EAAI,CACJ,IAAIG,EAAOH,EAAGD,MAAMpJ,eAAe,KAAMvQ,EAAG8C,KAAK6W,MAAMnY,GAAGI,IACtDmY,IACAH,EAAGI,aAAeD,EAE1B,CACJ,CAEA/X,QAAQC,IAAI,sBAAuBjC,EAAG8C,MAEtC9C,EAAGiZ,qBAAqBgB,QAAQ,GACpC,IApBIja,EAAGka,yBAA2Bla,EAAG8C,KAAKqX,YAAcna,EAAG8C,KAAKqX,WAAWvZ,OAAS,CACpF,GACJ,EA5DAZ,EAAGoa,uBA0HH,WACIra,EAAYqa,uBAAuB,EAAGpa,EAAG8C,KAAKlB,GAAI5B,EAAGqa,eAAe5X,MAEpE,SAAuCC,GACvC,GACJ,EA9HA1C,EAAGkZ,oBAgHH,WACInZ,EAAYmZ,oBAAoB,EAAGlZ,EAAG8C,KAAKlB,IAAIa,MAE/C,SAAoCC,GAC7BA,EAASsG,OACRhJ,EAAGqa,cAAgB3X,EAASsG,KAAKnH,MAAQa,EAASsG,KAAKnH,WAAQhB,EACvE,GACJ,EArHAb,EAAGsa,UAAW,EACdta,EAAGua,mBAAqBC,mBACxBxa,EAAGya,qBAAuBC,qBAE1B1a,EAAG2a,cAqKH,SAAuBC,GACnB,GAAI5a,EAAG6a,SACH7a,EAAG8a,QAAQ,CAAC9a,EAAG6a,WAAWpY,KAAKsY,OAC9B,CAKD,GAJA/a,EAAG8C,KAAKkY,WAAchb,EAAGib,kBAAoBjb,EAAGib,iBAAiBrZ,GAAK,EAAI5B,EAAGib,iBAAiBrZ,IAAM,EACpG5B,EAAG8C,KAAKwW,UAAatZ,EAAG0Z,iBAAmB1Z,EAAG0Z,gBAAgB9X,GAAK,EAAI5B,EAAG0Z,gBAAgB9X,IAAM,EAG5F5B,EAAG6Z,uBACH,IAAK,IAAIrY,EAAI,EAAGA,EAAIxB,EAAG6Z,uBAAuBjZ,OAAQY,IAAK,CACvD,IAAIoY,EAAK5Z,EAAG6Z,uBAAuBrY,GAC/B0Z,EAA0Blb,EAAG8C,KAAK6W,MAAMrS,QAAO,SAAA6T,GAAC,OAAIA,EAAErB,aAAeF,EAAGhY,EAAE,IAC9E,GAAIsZ,EAAwBta,OAAS,EACjCoB,QAAQoZ,MAAM,yDADlB,CAKA,IAAIC,EAAqD,IAAnCH,EAAwBta,OAAesa,EAAwB,GAAK,KAEtFI,EAAoBD,KAAqBzB,EAAGI,cAAgBJ,EAAGI,aAAapY,KAAOyZ,EAAgBzZ,IACnG2Z,EAAa3B,EAAGI,gBAAkBqB,GAAmBzB,EAAGI,aAAapY,KAAOyZ,EAAgBzZ,IAE5F0Z,IACAtb,EAAG8C,KAAK6W,MAAQ3Z,EAAG8C,KAAK6W,MAAMrS,QAAO,SAAA6T,GAAC,OAAIA,EAAEvZ,KAAOyZ,EAAgBzZ,EAAE,KAGrE2Z,GACAvb,EAAG8C,KAAK6W,MAAMlK,KAAKmK,EAAGI,aAZ1B,CAcJ,CAGJja,EAAYyb,iBAAiBxb,EAAG8C,MAAML,KAAKsY,EAC/C,CAOA,SAASA,EAAgBrY,GACxBnD,EAAWsQ,aAAexQ,EAAQ8E,KAAKnE,EAAG8C,MAEvC9C,EAAGyb,YAAa,EAEhBzb,EAAGM,OAAOoQ,eACV1Q,EAAGM,OAAOqQ,gBAETiK,GACHjb,EAAW,uBAAuB8C,MAAK,SAASwH,GAC/CN,EAASP,KAAKO,EAASkH,SAASC,QAAQ7G,GAAa8G,SAAS,gBAC/D,GAEF,CAlBH/Q,EAAG0b,gCAEI1b,EAAGqa,eAAqC,IAApBra,EAAGqa,eACvBra,EAAGoa,wBAgBX,EA1NApa,EAAG2b,WA4NH,WACI5b,EAAY6b,WAAWnZ,MAEvB,WACI2F,OAAOlD,SAASC,KAAOgI,YAC3B,GACJ,EAjOAnN,EAAG6b,gBAmOH,WACIlc,EAAW,wBAAwB8C,MAAK,SAASwH,GAC7CR,EAAUL,KAAK,CACXyN,YAAa2B,EAAgBsD,QAAQ,cAAe,8CACpD5T,WAAYuQ,EACZ3B,aAAc,KACdiF,OAAQ,CACJC,KAAM/R,EACNgS,aAAa,GAEjBlF,kBAAkB,IACnBtU,MAAK,SAAUC,GACVA,GACA1C,EAAG2b,YAEX,GACJ,GACJ,EAnPA3b,EAAG0b,8BAqPH,WACI3b,EAAY2b,8BAA8B1b,EAAGsa,UAAU7X,MAEvD,SAA8CC,GAE9C,IAJiG,OAMjG,SAA4CwZ,GACxClc,EAAGsa,UAAYta,EAAGsa,SAElB3a,EAAW,wBAAwB8C,MAAK,SAAUwH,GAC9CR,EAAUL,KAAK,CACXyN,YAAa2B,EAAgBsD,QAAQ,cAAe,8CACpD5T,WAAYuQ,EACZ3B,aAAc,KACdiF,OAAQ,CACJC,KAAM/R,GAEV8M,kBAAkB,IACnBtU,MAAK,SAAUC,GAClB,GACJ,GACJ,GACJ,EA3QA1C,EAAGmc,uBA6QH,SAAgCC,EAAKC,GACjCtc,EAAYoc,uBAAuBC,GAAK3Z,KAAK4Z,EACjD,EA9QArc,EAAGsc,gCAgRH,SAAyCF,EAAKC,GAC1Ctc,EAAYuc,gCAAgCF,GAAK3Z,KAAK4Z,EAC1D,EAjRArc,EAAG8a,QA8HH,SAAiByB,GAChB,GAAIA,EAAK3b,OAAS,EAAG,CACpBZ,EAAGwc,KAAOD,EAAK,GAEf,IAAIjb,EAAW,CACdmb,SAAUnE,EAAoBoE,UAAUC,MACxCC,aAActE,EAAoBuE,gBAAgBC,YAClDC,YAAa,GACbC,WAAW,EACXC,aAAa,EACbC,wBAAwB,EACxBC,0BAA0B,EAC1BC,QAAQ,GAGL/D,EAAUd,EAA0B8E,WAAWrd,EAAGwc,KAAMxc,EAAGwc,KAAKc,KAAM,GAAIhF,EAAoBuE,gBAAgBC,aAAa,GAAM,EAAMxb,EAAU,GAAI,IAGzJ,OAFA+X,EAAQ5W,MAIR,SAAmCC,GAClC,GAAIA,EAAU,CACb,IAAIO,EAASP,EAASsG,KACtBhJ,EAAGwc,KAAOvZ,EAAOkH,OACjBnK,EAAG8C,KAAKya,MAAQvd,EAAGwc,KAAKgB,QACxBje,EAAWsQ,aAAa0N,MAAQvd,EAAGwc,KAAKgB,QACxCxd,EAAG6a,cAAWha,EACFd,EAAYyb,iBAAiBxb,EAAG8C,KAC7C,CACD,IAXOuW,CAYR,CACD,EA5JArZ,EAAGyd,YAmHH,SAAqBC,GACfA,EAAM9c,SAGXZ,EAAG6a,SAAW6C,EAAM,GACjB1b,QAAQC,IAAIjC,EAAG6a,UAEf7a,EAAGM,OAAO6P,YACd,EA1HAnQ,EAAG2d,mBASH,WACI,OAAK3d,EAAG8C,KAGA9C,EAAG6a,SAAYhb,EAAQ,aAARA,CAAsBG,EAAG6a,UAAchb,EAAQ,WAARA,CAAoBG,EAAG8C,KAAKya,MAAQvd,EAAG8C,KAAKya,MAAQ,mCAFvG1d,EAAQ,WAARA,CAAoB,kCAGnC,EAbAG,EAAG4d,kBAgRH,SAA2BC,GAC1B,OAAO7d,EAAG8d,wBAAsCjd,IAAjBgd,EAAIE,UAA0BF,EAAIE,QAClE,EAjRA/d,EAAGmZ,oBAmRH,WACQnZ,EAAGge,WAAahe,EAAG8C,OACnB9C,EAAGib,iBAAmBjb,EAAGge,UAAUzN,eAAe,KAAMvQ,EAAG8C,KAAKkY,YAExE,EAtRAhb,EAAGyS,2BAoBH,WACI1S,EAAY0S,6BAA6BhQ,MAEzC,SAA2CC,GACvC1C,EAAG0S,iBAAmBhQ,EAASsG,IACnC,GACJ,EAzBAhJ,EAAG8S,kBAYH,SAA2B5R,GACvB,QAAKlB,EAAG0S,uBAGK7R,IADLb,EAAG0S,iBAAiBK,MAAK,SAAAC,GAAE,OAAqB,IAAjBA,EAAGC,WAAmBD,EAAGE,KAAK/R,gBAAkBD,EAAMC,aAAa,GAE9G,EAhBAnB,EAAGoZ,UA2EH,WACIpZ,EAAG6Y,mBAAmBQ,QAAQ5W,MAAK,WAC/B,GAAIzC,EAAG8C,KAAKyB,OAAQ,CAChB,IAAI0Z,EAAaje,EAAGsF,QAAQgC,QAAO,SAAAC,GAAC,OAAIA,EAAE/B,WAAWrE,eAAiBnB,EAAG8C,KAAKyB,OAAOpD,aAAa,IACxE,IAAtB8c,EAAWrd,OACXZ,EAAG8C,KAAKyB,OAAS0Z,EAAW,GAAGzY,WACF,IAAtByY,EAAWrd,OAClBZ,EAAGsF,QAAQmK,KAAK,CACZjK,WAAYxF,EAAG8C,KAAKyB,OACpB2Z,YAAale,EAAG8C,KAAKyB,SAGzBvC,QAAQC,IAAI,sDAEpB,CACJ,GACJ,EAzFAjC,EAAG6X,WAoRH,WAEI9X,EAAYqH,aAAa3E,MA6BzB,SAA4BC,GACxB,IAAI2E,EAAUzE,mBAAmBC,iBAAiBH,GAC9CnD,EAAWwM,aAAsB,QAAEoS,qBACnCne,EAAGsF,QAAU/F,EAAWwM,aAAsB,QAAEoS,qBAAqB9W,GAErErH,EAAGsF,QAAU+B,EAGjBrH,EAAG6Y,mBAAmBoB,QAAQ,GAClC,IApCAja,EAAGyS,6BACNzS,EAAGuC,UAEAvC,EAAGsc,gCAAgC,eAAe,SAAS5Z,GACvD1C,EAAGsa,SAAW5X,EAASsG,IAC3B,IAEAY,EAAewU,WAAW7e,EAAWsQ,aAAawO,kBAAkB5b,MAKpE,SAAyBC,GACxB1C,EAAGse,KAAO5b,EAASsG,IACpB,IANAjJ,EAAYwe,eAAe9b,MAQ3B,SAA8BC,GAC1B1C,EAAGge,UAAYtb,EAASsG,KACxBhJ,EAAGge,UAAYne,EAAQ,UAARA,CAAmBG,EAAGge,UAAW,QAChDhe,EAAGmZ,qBACP,IAXAvP,EAAe4U,wBAAwB/b,MAavC,SAAuCC,GACnC1C,EAAGwZ,UAAY9W,EAASsG,KACxBhJ,EAAG+Y,qBAAqBkB,QAAQ,GACpC,IAfAla,EAAY0e,+BAA+Bhc,MA4B3C,SAA8CC,GAC1C1C,EAAG0e,mBAAqBhc,EAASsG,KACjChJ,EAAG6Z,uBAAyB,GAC5B,IAAK,IAAIrY,EAAI,EAAGA,EAAIxB,EAAG0e,mBAAmB9d,OAAQY,IAAK,CACnD,IAAIoY,EAAK5Z,EAAG6Z,uBAAuBtJ,eAAe,KAAMvQ,EAAG0e,mBAAmBld,GAAGsY,YAC5EF,IACDA,EAAK,CACDhY,GAAI5B,EAAG0e,mBAAmBld,GAAGsY,WAC7B5G,KAAMlT,EAAG0e,mBAAmBld,GAAGmd,aAC/BhF,MAAO,IAEX3Z,EAAG6Z,uBAAuBpK,KAAKmK,IAEnCA,EAAGD,MAAMlK,KAAKzP,EAAG0e,mBAAmBld,GACxC,CACAxB,EAAGgZ,qBAAqBiB,QAAQ,GACpC,IAEAza,EAAO4S,OAAO,sBAAsB,SAAUC,EAAUC,GAAU,IAAAsM,EACjD,QAAbA,EAAI5e,EAAGM,cAAM,IAAAse,GAATA,EAAWpM,QAIXF,GAAYD,GAAYC,GACxBtS,EAAGM,OAAO6P,WAElB,IAAG,GAEHnQ,EAAGiZ,qBAAqBI,QAAQ5W,MAAK,WACjCjD,EAAO4S,OAAO,6BAA6B,SAAUC,EAAUC,GAAU,IAAAuM,EACrE,IAAa,QAATA,EAAA7e,EAAGM,cAAM,IAAAue,IAATA,EAAWrM,SAAWH,GAAaC,EAIvC,IAAK,IAAI9Q,EAAI,EAAGA,EAAI6Q,EAASzR,OAAQY,IAAK,KAAAsd,EAAAC,EAC6BC,EAAAC,GAAvC,QAAxBH,EAAAzM,EAAS7Q,GAAGwY,oBAAY,IAAA8E,OAAA,EAAxBA,EAA0Bld,OAA+B,QAA7Bmd,EAAKzM,EAAS9Q,GAAGwY,oBAAY,IAAA+E,OAAA,EAAxBA,EAA0Bnd,MAC3DI,QAAQC,IAAI,oBAA6C,QAA1B+c,EAAE3M,EAAS7Q,GAAGwY,oBAAY,IAAAgF,OAAA,EAAxBA,EAA0Bpd,IAC3DI,QAAQC,IAAI,oBAA6C,QAA1Bgd,EAAE3M,EAAS9Q,GAAGwY,oBAAY,IAAAiF,OAAA,EAAxBA,EAA0Brd,IAC3D5B,EAAGM,OAAO6P,YAElB,CAEJ,IAAG,EACP,GACJ,EAEAsI,EAAwBtQ,QAAU,CAAC,aAiBnC5I,EAAWyD,YAAYP,KAAKzC,EAAG6X,WAGnC,CAEA,SAASqH,EAAuB3f,EAAY4f,GACxC,IAAInf,EAAKC,KAyBT,SAASmf,EAAeC,GACpBrf,EAAGsf,UAAY,GACfH,EAAYC,eAAeC,GAAQ5c,MAEnC,SAA+BC,GAC3B1C,EAAGsf,UAAY5c,EAASsG,IAC5B,GACJ,CA/BAhJ,EAAGuf,OAAS,CAAC,EACbvf,EAAGsf,UAAY,GACftf,EAAG2Z,MAAQ,GACX3Z,EAAGwf,kBAAmB,EAEtBxf,EAAGof,eAAiBA,EACpBpf,EAAG6X,WAmCH,WARA,IAA0B4H,EAxBsB,GAAxClgB,EAAWsQ,aAAa8J,MAAM/Y,SAC9BZ,EAAGuf,OAAShgB,EAAWsQ,aAAa8J,MAAM,KAEpC3Z,EAAGuf,OAAOG,SAAW,GAqBTD,IApBKzf,EAAGuf,OAAOG,SAqBrCP,EAAYQ,iBAAiBF,GAAUhd,MAEvC,SAAiCC,GAC7B1C,EAAG2Z,MAAQjX,EAASsG,IACxB,KAtBQoW,EAAepf,EAAGuf,OAAO3d,IA2BrC,EAEA5B,EAAG6X,YACP,CAEA,SAAS+H,EAAyBrgB,EAAY4f,EAAaU,GACvD,IAAI7f,EAAKC,KAiBT,SAAS6f,IACDvgB,EAAWsQ,aAAa8J,MAAM/Y,QAAU,IAC3CZ,EAAGuf,OAAShgB,EAAWsQ,aAAa8J,MAAM,GAK/C,CAsDA,SAASoG,EAAyBrd,GAC9B1C,EAAGggB,yBAA2Btd,EAASsG,IAC3C,CAEA,SAASiX,EAAwBvd,GAC7B1C,EAAGkgB,wBAA0Bxd,EAASsG,IAC1C,CAEA,SAASmX,EAA6Bzd,GAClC1C,EAAGogB,qBAAuB1d,EAASsG,IACvC,CAEA,SAASqX,EAA4B3d,GACjC1C,EAAGsgB,oBAAsB5d,EAASsG,IACtC,CA3FAhJ,EAAGuf,OAAS,CAAC,EACbvf,EAAGugB,oBAAsB,GACzBvgB,EAAGggB,yBAA2B,GAC9BhgB,EAAGkgB,wBAA0B,GAC7BlgB,EAAGwgB,gBAAkB,GACrBxgB,EAAGogB,qBAAuB,GAC1BpgB,EAAGsgB,oBAAsB,GACzBtgB,EAAGygB,MAAQ,EAEXzgB,EAAG6X,WA0CH,WACCiI,IAEF9f,EAAGuf,QAAUvf,EAAGuf,OAAOG,WAC1B1f,EAAG0gB,yBACH1gB,EAAG2gB,mCAAmCC,SAASC,QAAQ,SAASC,OAAO,oBAAqBF,SAASG,MAAM,SAASD,OAAO,oBAAqBf,GAChJ/f,EAAG2gB,mCAAmCC,SAASC,QAAQ,QAAQC,OAAO,oBAAqBF,SAASG,MAAM,QAAQD,OAAO,oBAAqBb,IAG3IjgB,EAAGuf,SACNvf,EAAGghB,qBACHhhB,EAAGihB,+BAA+BL,SAASC,QAAQ,SAASC,OAAO,oBAAqBF,SAASG,MAAM,SAASD,OAAO,oBAAqBX,GAC5IngB,EAAGihB,+BAA+BL,SAASC,QAAQ,QAAQC,OAAO,oBAAqBF,SAASG,MAAM,QAAQD,OAAO,oBAAqBT,IAGtIrgB,EAAGuf,SACPM,EAAmBqB,sBAAsBlhB,EAAGygB,OAAOhe,MAAK,SAAUC,GAAY1C,EAAGmhB,mBAAqBze,EAASsG,IAAM,IAErH6W,EAAmBqB,sBAAsBlhB,EAAGygB,MAAOG,SAASC,QAAQ,SAASC,OAAO,oBAAqBF,SAASG,MAAM,SAASD,OAAO,qBACtIre,MAAK,SAAUC,GAAY1C,EAAGohB,wBAA0B1e,EAASsG,IAAM,IAEzE6W,EAAmBqB,sBAAsBlhB,EAAGygB,MAAOG,SAASC,QAAQ,QAAQC,OAAO,oBAAqBF,SAASG,MAAM,QAAQD,OAAO,qBACpIre,MAAK,SAAUC,GAAY1C,EAAGqhB,uBAAyB3e,EAASsG,IAAM,IAEpE,EAjEAhJ,EAAG8f,eAAiBA,EACpB9f,EAAG0gB,uBAcH,WACIb,EAAmBa,uBAAuB1gB,EAAGygB,OAAOhe,MAEpD,SAAuCC,GACnC1C,EAAGugB,oBAAsB7d,EAASsG,KAElChH,QAAQC,IAAI,yBAA0BjC,EAAGugB,oBAC7C,GACJ,EArBAvgB,EAAG2gB,mCAuBH,SAA4CW,EAAWC,EAASlF,GAC5DwD,EAAmBc,mCAAmC3gB,EAAGygB,MAAOa,EAAWC,GAAS9e,KAAK4Z,EAC7F,EAxBArc,EAAGghB,mBA0BH,WACInB,EAAmBmB,mBAAmBhhB,EAAGygB,OAAOhe,MAEhD,SAAmCC,GAC/B1C,EAAGwgB,gBAAkB9d,EAASsG,IAClC,GACJ,EA/BAhJ,EAAGihB,+BAiCH,SAAwCK,EAAWC,EAASlF,GACxDwD,EAAmBoB,+BAA+BjhB,EAAGygB,MAAOa,EAAWC,GAAS9e,KAAK4Z,EACzF,EA4CA9c,EAAWyD,YAAYP,KAAKzC,EAAG6X,WACnC,CA7jCAxY,EAAQ4I,OAAO,iBAAiBC,WAAW,cAAe8L,GAC1D3U,EAAQ4I,OAAO,iBAAiBC,WAAW,kBAAmBmQ,GAC9DhZ,EAAQ4I,OAAO,iBAAiBC,WAAW,kBAAmBsL,GAC9DnU,EAAQ4I,OAAO,iBAAiBC,WAAW,wBAAyBqJ,GACpElS,EAAQ4I,OAAO,iBAAiBC,WAAW,oBAAqBgX,GAChE7f,EAAQ4I,OAAO,iBAAiBC,WAAW,sBAAuB0X,GAClEvgB,EAAQ4I,OAAO,iBAAiBC,WAAW,sBAAuBgH,GAElE8E,EAAiB7L,QAAU,CAAC,aAAc,SAAU,4BAA6B,qBAAsB,qBACnG,gCAAiC,sBAAuB,kCAC5DkQ,EAAqBlQ,QAAU,CAAC,aAAc,qBAAsB,YAAa,aAAc,sBAC3F,4BAA6B,WAAY,KAAM,iBAAkB,UAAW,UAAW,UAC3FqL,EAAqBrL,QAAU,CAAC,aAAc,qBAAsB,YACpEoJ,EAA2BpJ,QAAU,CAAC,aAAc,qBAAsB,WAAY,aAAc,UACpG+W,EAAuB/W,QAAU,CAAC,aAAc,qBAChDyX,EAAyBzX,QAAU,CAAC,aAAc,oBAAqB,4BACvE+G,EAAyB/G,QAAU,CAAC,aAAc,qBAAsB,WAAY,aAAc,eAAgB,KA8iCrH,CA/jCD,CA+jCGC,OAAO/I,Q,aC/jCT,SAAUA,GAKP,SAASmiB,EAAwBzhB,EAAa+K,EAAQ2W,GAClD,IAAIzhB,EAAKC,KACTD,EAAGsU,QAAU,IACbtU,EAAGmV,kBAAoB,EAEvBnV,EAAG+C,SAAW2X,qBAEd1a,EAAGoL,KAkDH,WACIpL,EAAGgW,6BAA6BhW,EAAGmV,kBACvC,EAnDAnV,EAAGgW,6BAyCH,SAAsCC,GAClClW,EAAYiW,6BAA6BhW,EAAGsU,QAAS2B,GAAMxT,MAE3D,SAA6CC,GACzC1C,EAAGkV,cAAgBxS,EAASsG,IAChC,GACJ,EA9CAhJ,EAAGiY,SAOH,SAAkB5T,GAEd,GAAKA,EAAKtB,YAAcsB,EAAKtB,SAASmV,kBAAoB,GAAK7T,EAAKtB,SAASmV,oBAAsB3Y,WAAWsQ,aAAajO,GACvH,OAAQyC,EAAK8T,YACT,IAAK,OACDrN,EAAOyL,GAAG,6BAA8B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QACtF,MACJ,IAAK,OACDtN,EAAOyL,GAAG,6BAA8B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QACtF,MACJ,IAAK,WACDtN,EAAOyL,GAAG,8BAA+B,CAAEC,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QAMnG,OAAQ/T,EAAK8T,YACT,IAAK,QACDrN,EAAOyL,GAAG,8BAA+B,CAAEC,GAAInS,EAAK+T,WACpD,MACJ,IAAK,gBACDtN,EAAOyL,GAAG,yBAA0B,CAAEC,GAAInS,EAAK+T,WAC/C,MACJ,IAAK,OACDtN,EAAOyL,GAAG,oBAAqB,CAAEC,GAAInS,EAAK+T,WAC1C,MACJ,IAAK,QACDlT,SAASC,KAAOgI,aAAe,SAAW9I,EAAK+T,SAG3D,EArCApY,EAAG0hB,KAEH,WACItZ,OAAOuZ,QAAQC,MACnB,EA+CA5hB,EAAGmH,QAAUnH,EAAGoL,IACpB,CACFhD,OAAO/I,QAnEG4I,OAAO,iBAAiBC,WAAW,qBAAsBsZ,GAEjEA,EAAwBrZ,QAAU,CAAC,qBAAsB,SAAU,UAiEtE,CApEA,E,aCAD,SAAW9I,GAKP,SAASwiB,EAAmBtiB,EAAYuiB,EAAiBniB,EAAYI,EAAauI,GAC9E,IAAItI,EAAKC,KACTD,EAAG+hB,SAkDH,WAEI,IAAI1e,EAASrD,EAAGsD,YAEhBtD,EAAGsE,gBAAiB,GAChBtE,EAAGM,OAAOwD,QAAY9D,EAAGgiB,oBAAqB3e,GAAoC,GAAzBrD,EAAGiiB,oBAA+BjiB,EAAG+D,YAAe/D,EAAGgE,YAEhHhC,QAAQC,IAAI,aACZjC,EAAGsE,gBAAiB,EACpBtE,EAAG+D,YAAa,EAChB/D,EAAG4E,QAAU,GAEb5E,EAAG8C,KAAKyB,OAASlB,EACjBrD,EAAG8C,KAAKof,UAAW,EACnBliB,EAAG8C,KAAKqf,UAAY5iB,EAAWsQ,aAAawO,iBAC5Cre,EAAG8C,KAAKsf,WAAa7iB,EAAW8iB,SAAS9R,eAAe,KAAMhR,EAAWsQ,aAAawO,kBAAkBiE,YAExGR,EAAgBS,WAAWviB,EAAG8C,MAAML,MAEpC,SAAyBC,GAErB1C,EAAGgE,WAAY,EACfhE,EAAGyE,QAAU/B,EAASsG,KAAKvE,QAEE,GAAzB/B,EAASsG,KAAKvE,QAEd9E,EAAW,6BAA6B8C,MAAK,SAAUwH,GACnDjK,EAAG0E,eAAiBuF,GAAe,oGACvC,IAGAjK,EAAG4E,QAAUlC,EAASsG,KAAKpE,QAG3B0D,EAAQka,WACRla,EAAQka,UAAU/S,KAAK,CACnBgT,MAAO,cACPC,WAAY,CACRtG,IAAK,qBACLuG,QAAS3iB,EAAGyE,UAI5B,IAER,EA9FAzE,EAAGiiB,oBAAqB,EACxBjiB,EAAG4iB,MAAQ,GACX5iB,EAAG8C,KAAO,CAAC,EACX9C,EAAG4E,QAAU,GACb5E,EAAGwG,aA6BH,WACI,SAAKxG,EAAG8C,OAAS9C,EAAG8C,KAAK2D,UACpBzG,EAAG0G,cAED1G,EAAG0G,aAAaf,KAAK3F,EAAG8C,KAAK2D,OACxC,EAjCAzG,EAAGgB,cAsBH,WACI,QAAKhB,EAAG8C,KAAKa,QAEN3D,EAAGqC,cAAcsD,KAAK3F,EAAG8C,KAAKa,OACzC,EAzBA3D,EAAGqF,YAeH,SAAqBhC,GACjB,IAAK,IAAI7B,EAAI,EAAGA,EAAIxB,EAAGsF,QAAQ1E,OAAQY,IACnCxB,EAAGsF,QAAQ9D,GAAG+D,QAAUvF,EAAGsF,QAAQ9D,KAAO6B,CAElD,EAlBArD,EAAGsD,UAiCH,WACI,IAAK,IAAI9B,EAAI,EAAGA,EAAIxB,EAAGsF,QAAQ1E,OAAQY,IACnC,GAAIxB,EAAGsF,QAAQ9D,GAAG+D,QACd,OAAOvF,EAAGsF,QAAQ9D,GAAGgE,WAG7B,OAAO,IACX,EAtCAxF,EAAGqC,cAAgB,iBACnBrC,EAAG0G,aAAe,4JAsFlB1G,EAAGmH,QAlFH,WACIpH,EAAYqH,aAAa3E,MACzB,SAA4BC,GACxB1C,EAAGsF,QAAU1C,mBAAmBC,iBAAiBH,EACrD,GACJ,CA8EJ,CACD0F,OAAO/I,QAzGE4I,OAAO,iBAAiBC,WAAW,gBAAiB2Z,GAE5DA,EAAmB1Z,QAAU,CAAC,aAAc,uBAAwB,aAAc,qBAAsB,UAuG3G,CA1GD,E,aCAC,SAAU9I,GAKV,SAASwjB,EAAoBC,GAC5B,IAAI9iB,EAAKC,KACTD,EAAG+iB,SAEH,WACC/iB,EAAGgjB,eAAgB,EACnBF,EAAaG,iBAAiBxgB,MAE9B,SAA0BC,GACzB1C,EAAGgjB,eAAgB,EAEnB,IADA,IAAIE,EAAQtgB,mBAAmBC,iBAAiBH,EAAU,IACjDlB,EAAI,EAAGA,EAAI0hB,EAAMtiB,OAAQY,IACjC0hB,EAAM1hB,GAAG2hB,sBAAuB,EAEjCnjB,EAAGojB,MAAQF,CACZ,GACD,EAEAljB,EAAG+iB,UACJ,CACC3a,OAAO/I,QAxBA4I,OAAO,iBAAiBC,WAAW,kBAAmB2a,GAE9DA,EAAoB1a,QAAU,CAAC,qBAsB/B,CAzBA,E,aCAA,SAAU9I,GAKP,SAASgkB,IAKL,SAASjY,IACLpJ,QAAQC,IAAI,qBAChB,CANShC,KAENmL,KAAOA,EAFDnL,KAQNkH,QAAUiE,CACjB,CACFhD,OAAO/I,QAfG4I,OAAO,iBAAiBC,WAAW,kBAAmBmb,GAE9DA,EAAqBlb,QAAU,EAalC,CAhBA,E,aCAD,SAAW9I,GAKP,SAASikB,EAAY/jB,GAIrB,CACD6I,OAAO/I,QATE4I,OAAO,iBAAiBC,WAAW,wBAAyBob,GAEpEA,EAAYnb,QAAU,CAAC,aAO1B,CAVD,E,aCAC,SAAU9I,GAKP,SAASkkB,EAAkBhkB,EAAYqK,GACnC,IAAI5J,EAAKC,KAETD,EAAGoL,KAOH,WACIxB,EAAe4Z,kBAAkB/gB,MAAK,SAAUC,GAC5C,IACI+gB,EADAC,GAAe,EAEnB,GAAIhhB,EAASsG,MAA0B,KAAlBtG,EAASsG,MAAiC,OAAlBtG,EAASsG,KAAe,CACjE,IAAMA,EAAO2a,KAAKC,MAAMlhB,EAASsG,MACjC0a,EAAe1a,EAAK6a,YACpBJ,EAAQza,EAAKya,KACjB,CACAzjB,EAAG0jB,aAAeA,EAClB1jB,EAAGyjB,MAAQA,CACf,GACJ,EAlBAzjB,EAAG0hB,KAEH,WACItZ,OAAOuZ,QAAQC,MACnB,EAgBAriB,EAAWyD,YAAYP,KAAKzC,EAAGoL,KACnC,CACFhD,OAAO/I,QA9BG4I,OAAO,iBAAiBC,WAAW,eAAgBqb,GAE3DA,EAAkBpb,QAAU,CAAC,aAAc,iBA4B9C,CA/BA,E,aCAD,SAAW9I,GAiEV,SAASykB,EAA2BC,GACnC,IAAIC,EAAU7W,aAAe,wBAE7B,MAAO,CACN8W,qBAID,SAA8BC,GAC7B,OAAOH,EAAMI,IAAIH,EAAU,uBAAwB,CAClDI,OAAQ,CACPF,aAAcA,IAGjB,EATCG,0BAWD,SAAmCC,GAClC,OAAOP,EAAMQ,KAAKP,EAAU,4BAA6BM,EAC1D,EACD,CAnFAjlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,uBAK1C,WACC,MAAO,CACNC,SAAU,KACV5N,YAAa1J,aAAe,wDAC5B2J,aAAc,KACd5O,WAKD,SAAuC4b,EAA4BY,EAAwB7kB,EAASsP,EAAI5P,GACvG,IAAIS,EAAKC,KAETD,EAAG6X,WAqBH,WACKtY,EAAWsQ,aAAajO,IAAM,GAGlCkiB,EAA2BG,qBAAqB,GAAGxhB,MAEnD,SAA4BC,GAG3B,IAFA,IAAIiiB,EAAY/hB,mBAAmBC,iBAAiBH,EAAU,IAErDlB,EAAI,EAAGA,EAAImjB,EAAU/jB,OAAQY,IACrC,GAAKmjB,EAAUnjB,GAAGojB,SAAlB,CAGA5kB,EAAG6kB,cAAgBF,EAAUnjB,GAAGojB,SAChC,KAHS,CAMV5kB,EAAG8kB,UAAYH,CAChB,GACD,EAvCA3kB,EAAG+kB,sBAIH,SAA+BT,GAC9B,GAAIA,EAASU,mBACZ,OAAOV,EAASU,mBAEjB,IAAIC,EAAW1lB,EAAWsQ,aAAa8J,MAAM/Y,OAASrB,EAAWsQ,aAAa8J,MAAM,GAAGzG,KAAO,GAC1FgS,EAAiB3lB,EAAWsQ,aAAasV,YAAYvkB,OAASrB,EAAWsQ,aAAasV,YAAY,GAAGjS,KAAO,GAQhH,OANAoR,EAASU,mBAAqB,CAC7B,SAAUV,EAASc,SAASC,UAAY,IAAMf,EAASc,SAASE,SAChE,SAA0C,GAAhChB,EAASiB,oBAA2BN,EAAWC,EACzD,cAAeZ,EAASkB,QAAQ5kB,OAAS,GAGnC0jB,EAASU,kBACjB,EAhBAN,EAAuBe,SAAS,oBAuChCzlB,EAAG6X,YACJ,EACD,IA7DAxY,EAAQ4I,OAAO,iBAAiByd,QAAQ,6BAA8B5B,GAEtEA,EAA2B3b,QAAU,CAAC,QAiFtC,CArFD,CAqFGC,OAAO/I,Q,aCrFV,SAAWA,GAOV,SAASsmB,IACR,MAAO,CACNlB,SAAU,IACV5N,YAAa1J,aAAe,+CAC5B2J,aAAc,KACd5O,WAAY0d,EACZ7O,kBAAkB,EAClB8O,MAAO,CACNC,WAAY,IACZC,oBAAqB,MAGrB,CAIA,SAASH,EAAsBrmB,EAAYqK,EAAgBtB,EAASzI,EAAS4J,EAAWuc,EAAoBvE,EAASwE,EAAcnb,EAAQrL,EAAc0P,GACrJ,IAAInP,EAAKC,KAETD,EAAGoL,KAsKH,WACIpL,EAAGkmB,cAEH,IAAMC,EAAa,SAACC,EAAKC,EAAYC,GACjC,IAAMC,EAAWpX,EAAG2J,QAUpB,OATAkN,EAAmBQ,kBAAkBH,EAAYC,GAAY7jB,MAAK,SAAAC,GAC9D,IAAM8T,EAAK5T,mBAAmBC,iBAAiBH,GAC/C,KAAM8T,EAAK,EAAG,CACV,IAAMiQ,EAAOL,EAAIhgB,QAAQ,SAAUoQ,GACnC+P,EAAStM,QAAQwM,EACrB,MACIF,EAASG,OAAO,eAExB,IACOH,EAASlN,OACpB,EAEArZ,EAAG2mB,aAAe,IAAIC,IAAI,CACtB,CAAC,oBAAqB,CAClBR,IAAK,kCACLS,cAAe,SAEnB,CAAC,yBAA0B,CACvBT,IAAK,wCACLS,cAAe,OACfC,SAAS,EACTC,YAAa,SAAAX,GAAG,OAAID,EAAWC,EAAK,OAAQ3mB,EAAaunB,MAAM,IAEnE,CAAC,qBAAsB,CACnBZ,IAAK,yCACLS,cAAe,cAEnB,CAAC,yBAA0B,CACvBT,IAAK,6CACLS,cAAe,YACfC,SAAS,EACTC,YAAa,SAAAX,GAAG,OAAID,EAAWC,EAAK,gBAAiB3mB,EAAa+W,GAAG,IAEzE,CAAC,uBAAwB,CACrB4P,IAAK,uBACLS,cAAe,eAIyC,IAA5DtnB,EAAWwM,aAAwB,UAAmB,iBACtD/L,EAAG2mB,aAAaM,IAAI,YAAa,CAC7Bb,IAAK,gCACLS,cAAe,WAIvB7mB,EAAGknB,gBAEHjB,EAAakB,UAAU,CAAC,GAAG,SAACC,GACxBpnB,EAAGknB,eACP,GACJ,EA7NAlnB,EAAGkmB,YA8HH,WACItc,EAAesc,cAAczjB,MAE7B,SAA6BC,GACzB1C,EAAGqiB,SAAW3f,EAASsG,KACvBhJ,EAAGqnB,eAAiBrnB,EAAGqiB,SAAS9R,eAAe,OAAQ+W,iBAC3D,GACJ,EApIAtnB,EAAGunB,cAyHH,SAAuBC,GACnBlf,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,UAAY2nB,EAAQlF,YAAYmF,UAAU,EAAG,GAC7F,EA1HAznB,EAAG0nB,iBAoBH,WACI1B,EAAmB0B,mBAAmBjlB,MAEtC,SAAkCC,GAC9B,IAAIilB,EAAajlB,EAASsG,KAC1B4e,aAAa,oBACb1a,oBAAoBya,EAAWE,qBAAsBF,EAAWG,mBAAmB,GACnFnZ,qBAAqB,gBACrBrG,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,IAChD,GACJ,EA7BAG,EAAG+nB,iBA+BH,WAUI,SAASC,EAA6Bve,EAAWjK,GAC7C,IAAIQ,EAAKC,KAETD,EAAGioB,MAAQ,GACXjoB,EAAGkoB,WAAa,GAChBloB,EAAGmoB,UAAY,EACfnoB,EAAGooB,WAAa,GAChBpoB,EAAGqoB,iBAAkB,EACrBroB,EAAGsoB,QAAU,EAEbtoB,EAAG0Y,MA4CH,WACIjP,EAAUmP,MACd,EA7CA5Y,EAAGuoB,YAIH,SAAqBC,GACjBxoB,EAAGmoB,UAAYK,GAAa,EAC5BxoB,EAAGyoB,cAAe,EAClBzC,EAAmBuC,YAAYvoB,EAAGkoB,WAAYloB,EAAGmoB,UAAWnoB,EAAGooB,WAAYpoB,EAAGqoB,gBAAiBroB,EAAGsoB,QAAQ7lB,MAE1G,SAA6BC,GACzB1C,EAAG0oB,SAAWhmB,EAASsG,KAEH,GAAhBhJ,EAAGmoB,UACHnoB,EAAGioB,MAAQjoB,EAAG0oB,SAASC,mBAEvB3oB,EAAGioB,MAAQjoB,EAAGioB,MAAMW,OAAO5oB,EAAG0oB,SAASC,oBAE3C3oB,EAAGyoB,cAAe,CACtB,GACJ,EAlBAzoB,EAAG6oB,aAwBH,SAAsB7Y,GAClBhQ,EAAG8oB,qBAAsB,EACzB9C,EAAmB6C,aAAa7Y,EAAKpO,GAAI5B,EAAG+oB,MAAMtmB,MAElD,SAA8BC,GAE1B,IAAIsmB,EAActmB,EAASsG,KACtBggB,IAGL9b,oBAAoB8b,EAAYhc,MAAOgc,EAAYC,QAC/CjpB,EAAG+oB,MACH/jB,kBAAkB,eAAgB4b,OAAO5gB,EAAG+oB,MAAMjI,OAAO,qBAE7DxY,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,KAChD,GACJ,EAvCAG,EAAGkpB,gBAmBH,WACIlpB,EAAGuoB,YAAYvoB,EAAGmoB,UAAY,EAClC,EAgCA3oB,EAAO4S,OAAO,mBAAmB,SAAUC,EAAUC,GACvB,IAAA6W,EAAtB9W,GAAYC,IACZtS,EAAGsoB,OAAqB,QAAfa,EAAG9W,aAAQ,EAARA,EAAUzQ,UAAE,IAAAunB,EAAAA,GAAK,EAC7BnpB,EAAGuoB,YAAY,GAEvB,IAZI3e,EAAewf,MAAMC,aAAY,GAAO5mB,MAExC,SAA6BC,GACzB1C,EAAG4iB,MAAQlgB,EAASsG,IACxB,IAWJhJ,EAAGuoB,aACP,CApFA9e,EAAUL,KAAK,CACXyN,YAAa,gBACb3O,WAAY8f,EACZlR,aAAc,KACdC,kBAAkB,IAGtBiR,EAA6B7f,QAAU,CAAC,YAAa,SA8EzD,EApHAnI,EAAGspB,YAcH,WACI,OAAOtD,EAAmBuD,UAAY1pB,EAAQ,WAARA,CAAoB,QAC9D,EAfAG,EAAGwpB,gBAMH,WAEQ,OAAO,CAGf,EAVAxpB,EAAGknB,cAiIH,WACIllB,QAAQC,IAAI,QAAS6I,EAAO2e,SAC5B,IAAIC,GAAU,EACRC,EAAY7e,EAAO2e,QAAQnM,KACjC,GAAItd,EAAG2mB,aAAaiD,IAAID,GAAY,CAChC,IAAME,EAAY7pB,EAAG2mB,aAAaxC,IAAIwF,IACjCE,EAAUhD,eAAiBtnB,EAAWuqB,uBAAuBD,EAAUhD,eACxE6C,GAAU,EAEV1nB,QAAQC,IAAI,YAEpB,CACAjC,EAAG+pB,eAAiBL,CACxB,EA7IA1pB,EAAGgqB,cA+IH,WACI,IAAML,EAAY7e,EAAO2e,QAAQnM,KAEjC,GAAItd,EAAG2mB,aAAaiD,IAAID,GAAY,CAChC,IAAME,EAAY7pB,EAAG2mB,aAAaxC,IAAIwF,GAClCE,EAAU/C,QACV+C,EAAU9C,YAAY8C,EAAUzD,KAAK3jB,MAAK,SAAA2jB,GACtC9d,EAAQpD,SAAWiI,aAAeiZ,CACtC,IAEA9d,EAAQpD,SAAWiI,aAAe0c,EAAUzD,GAEpD,CACJ,EA1JApmB,EAAGiqB,eAAiBrnB,mBAAmBsnB,mBAsNvC3qB,EAAWyD,YAAYP,KAAKzC,EAAGoL,KACnC,CAEH,SAAS4a,EAAmBjC,GAC3B,MAAO,CACNwE,YAiBD,SAAqB4B,EAAY3B,EAAW4B,EAAYC,EAAiBC,GACxE,OAAOvG,EAAMQ,KAAKpX,aAAe,iCAAkC,CAClEgd,WAAYA,EACZ3B,UAAWA,EACX4B,WAAYA,EACAC,gBAAiBA,EACjBC,OAAQA,GAEhB,EAxBLzB,aAKD,SAAsB0B,EAAQC,GACpB,OAAOzG,EAAMQ,KAAKpX,aAAe,6BAA8B,CAC3D8b,OAAQsB,EACRxB,KAAMyB,GAEpB,EATU9C,iBAWV,WACC,OAAO3D,EAAMQ,KAAKpX,aAAe,gCAClC,EAZUqZ,kBAwBJ,SAA2BiE,EAAYnE,GACnC,OAAOvC,EAAMI,IAAIhX,aAAe,+BAAgC,CAC5DiX,OAAQ,CACJqG,WAAAA,EACAnE,WAAAA,GAEJoE,QAAS,CACLC,cAAc,IAG1B,EACP,CApSAtrB,EAAQ4I,OAAO,iBAAiBuc,UAAU,cAAemB,GACzDtmB,EAAQ4I,OAAO,iBAAiByd,QAAQ,qBAAsBM,GAE9DL,EAAYxd,QAAU,GACtB6d,EAAmB7d,QAAU,CAAC,SAgB3Byd,EAAsBzd,QAAU,CAAC,aAAc,iBAAkB,UAAW,UAAW,YAAa,qBAAsB,UAAW,eAAgB,SAAU,eAAgB,KAiRlL,CAtSD,CAsSGC,OAAO/I,Q,aCtSV,SAAWA,GAKV,SAASurB,EAA2BpS,GACnC,IAAIgM,EAAY,CACfC,SAAU,IACVoB,MAAO,CAEP,EACAhP,YAAa,SAAUgU,EAASC,GAC/B,OAAIA,EAAKC,YACD5d,aAAe2d,EAAKC,YAGpBvS,EAAgBsD,QAAQ,iCAAkC,qDAEnE,EACA/E,kBAAkB,EAClB7O,WAAY8iB,EACZlU,aAAc,MAKf,SAASkU,EAA4BzrB,EAAYqK,GACvC3J,KAeNgrB,aAEH,SAAsB5mB,GACrB9E,EAAWoL,oBAAsBpL,EAAWoL,mBAC5C6C,gBAAgB,qBAAsBjO,EAAWoL,oBAE7CpL,EAAW2rB,YACdthB,EAAeuhB,kBAAkB,qBAAsB5rB,EAAWoL,oBAAoBlI,MAAK,SAAUC,GAErG,GAEO,EA1BAzC,KA+BNkH,QAAU,WAEb,CACD,CAEA,OAvCA6jB,EAA4B7iB,QAAU,CAAC,aAAc,kBAuC9Cqc,CACR,CACEpc,OAAO/I,QAhED4I,OAAO,iBAAiBuc,UAAU,oBAAqBoG,GAE/DA,EAA2BziB,QAAU,CAAC,UA8DtC,CAjED,E,aCAA,SAAW9I,GAOP,SAAS+rB,EAAkBC,EAASC,EAAqB7J,GACrD,IAAI+C,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAawU,EAAQvP,QAAQ,iCAAkC,sDAC/DyP,KAMJ,SAAwB1F,EAAOgF,EAASW,GAEhC/J,EAAQgK,gBAAgB,YAAa,MACrC5F,EAAM6F,WACNb,EAAQc,SAEhB,EAXI5U,kBAAkB,EAClB7O,WAAY0jB,EACZ9U,aAAc,MAalB,SAAS8U,EAAqBrsB,EAAYssB,GACtC,IAAI7rB,EAAKC,KACTD,EAAG8rB,UAAY,CAAC,EAChB9rB,EAAG+rB,SAEH/rB,EAAGgsB,WAIH,SAAoBC,GACbjsB,EAAGksB,wBAA0BD,IAC5BjsB,EAAG8rB,UAAUK,UAAYvL,SAASwL,MAAMtL,SACxCwK,EAAoBe,eAAersB,EAAG8rB,WAAWrpB,MAAK,SAASC,GAC3D1C,EAAG8rB,UAAUlqB,GAAKc,EAASsG,KAAKpH,EACpC,KAGJ5B,EAAG+rB,SAAWF,GAAU,aACf7rB,EAAG8rB,UAAUQ,SAAW,GACzBtsB,EAAG8rB,UAAUQ,QAAU,GACvBtsB,EAAG8rB,UAAUS,WAAavsB,EAAG8rB,UAAUS,QAAU,GAAGtmB,aAGpDjG,EAAG8rB,UAAUQ,WAAatsB,EAAG8rB,UAAUQ,QAAU,GAAGrmB,aAC/CjG,EAAG8rB,UAAUQ,QAAU,KAAItsB,EAAG8rB,UAAUQ,QAAU,OAAStsB,EAAG8rB,UAAUQ,SAASrmB,eAGrFjG,EAAG8rB,UAAUS,QAAU,KAAIvsB,EAAG8rB,UAAUS,QAAU,OAASvsB,EAAG8rB,UAAUS,SAAStmB,cAEjFjG,EAAG8rB,UAAUS,SAAW,GAAKvsB,EAAG8rB,UAAUQ,SAAW,IACtDT,EAAU7jB,OAAOhI,EAAG+rB,UACpB/rB,EAAGwsB,cAAe,EAG1B,GAAG,IAAM,GAAG,EAAMxsB,GAClBA,EAAGwsB,cAAe,CACtB,EA9BAxsB,EAAGysB,YAgCH,WACOzsB,EAAGksB,uBACFZ,EAAoBoB,gBAAgB1sB,EAAG8rB,WAG3CD,EAAU7jB,OAAOhI,EAAG+rB,UACpB/rB,EAAGwsB,cAAe,CACtB,EAtCAxsB,EAAG2sB,UAwCH,WACI3sB,EAAG8rB,UAAUS,QAAU,KACvBvsB,EAAG8rB,UAAUQ,QAAU,IAC3B,EAoCA,IAAIM,EAAertB,EAAWwI,IAAI,iBAAiB,SAAS0a,EAAOoK,GAC/D,IAAIpT,EAAIkK,KAAKC,MAAMiJ,EAAKC,SACpB9sB,EAAGwsB,cAAiB/S,EAAEsT,WAIE,IAApB/sB,EAAGwsB,eAAyC,IAAhB/S,EAAEsT,WAClC/sB,EAAGysB,eAJHzsB,EAAG8rB,UAAYrS,EACfzZ,EAAGgsB,YAAW,GAKtB,IAOAhsB,EAAGmH,QAlDH,WACInH,EAAG2sB,YACH3sB,EAAGksB,sBAAwBzK,EAAQgK,gBAAgB,YAAa,IAE7DhK,EAAQgK,gBAAgB,YAAa,KACpCH,EAAoB0B,8BAA8BvqB,MAGtD,SAA4CC,GACxC,GAAGA,EAASsG,KAAM,CACd,IAAIikB,EAAYvqB,EAASsG,KACzBhJ,EAAG8rB,UAAUlqB,GAAKqrB,EAAUrrB,GAC5B5B,EAAG8rB,UAAUoB,sBAAwBD,EAAUC,sBAC/C,IAAIC,EAAiBvM,OAAOA,SAASwL,OAAOgB,KAAKH,EAAUd,UAAW,WAClEkB,EAAiBC,KAAKC,MAAMJ,EAAiB,IACjDA,EAAiBG,KAAKC,MAAMJ,EAAiB,IAE7CntB,EAAG8rB,UAAUS,QAAUU,EAAUV,QAAUc,EAE3C,IAAIG,EAAcP,EAAUX,QAAUa,EAEnCK,EAAc,GACbxtB,EAAG8rB,UAAUS,UACbvsB,EAAG8rB,UAAUQ,QAAU,GAAKkB,GAG5BxtB,EAAG8rB,UAAUQ,QAAUkB,EAG3BxtB,EAAGgsB,YAAW,EAClB,CACJ,GACJ,EAmBAhsB,EAAGytB,WANH,WAEIb,GACJ,CAIJ,CAEA,OA5GAhB,EAAqBzjB,QAAU,CAAC,aAAc,aA4GvCqc,CACX,CAEA,SAAS8G,EAAoBvH,GACzB,IAAI2J,EAAcvgB,aAAe,iBAEjClN,KAAK+sB,4BAA8B,WAC/B,OAAOjJ,EAAMI,IAAIuJ,EAAc,8BACnC,EAEAztB,KAAKosB,eAAiB,SAASY,GAC3B,OAAOlJ,EAAMQ,KAAKmJ,EAAc,iBAAkBT,EACtD,EAEAhtB,KAAKysB,gBAAkB,SAASO,GAC5B,OAAOlJ,EAAMQ,KAAKmJ,EAAc,kBAAmBT,EACvD,CACJ,CAvJA5tB,EAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqB4G,GAC/D/rB,EAAQ4I,OAAO,iBAAiByd,QAAQ,sBAAuB4F,GAE/DF,EAAkBjjB,QAAU,CAAC,UAAW,sBAAuB,WAC/DmjB,EAAoBnjB,QAAU,CAAC,QAqJlC,CA1JD,CA0JGC,OAAO/I,Q,aC1JV,SAAWA,GAKP,SAASsuB,EAA4BnV,GACjC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH+H,eAAgB,MAEpB/W,YAAa,SAAUgU,EAASC,GAC5B,OAAIA,EAAKC,YACE5d,aAAe2d,EAAKC,YAGpBvS,EAAgBsD,QAAQ,kCAAmC,sDAE1E,EACA/E,kBAAkB,EAClB7O,WAAY2lB,EACZ/W,aAAc,MAKlB,SAAS+W,EAA6BjkB,EAAgBrK,GAClD,IAAIS,EAAKC,KAETD,EAAGkmB,YAGH,WACItc,EAAesc,cAAczjB,MAE7B,SAA6BC,GACzB,IAAIorB,EAAWprB,EAASsG,KAExBhJ,EAAGqiB,SAAW,GACd,IAAK,IAAI7gB,EAAI,EAAGA,EAAIssB,EAASltB,OAAQY,IACjCssB,EAAStsB,GAAGusB,KAAO,oBAAsBC,EAAaF,EAAStsB,GAAG8gB,aAClEwL,EAAStsB,GAAGysB,iBAAmBC,EAAoBJ,EAAStsB,GAAG8gB,aAE3DwL,EAAStsB,GAAG2sB,WACZnuB,EAAGqiB,SAAS5S,KAAKqe,EAAStsB,IAMlC,SAAS0sB,EAAoBE,GACzB,IAAIC,EAAUD,EAAYE,MAAM,KAChC,OAAID,EAAQztB,OAAS,EACVytB,EAAQ,GAEZD,CACX,CAEA,SAASJ,EAAaI,GAClB,IAAIC,EAAUD,EAAYE,MAAM,KAChC,GAAID,EAAQztB,OAAS,EAAG,CACpB,IAAI2tB,EAAcF,EAAQ,GAO1B,OALIruB,EAAG4tB,gBAC8B,MAA7BW,EAAYptB,gBACZotB,EAAc,MAGfA,EAAc,MACzB,CACAvsB,QAAQC,IAAI,iDAAkDmsB,EAClE,CAvBApuB,EAAGqnB,eAAiBrnB,EAAGqiB,SAAS9R,eAAe,OAAQ+W,iBAwB3D,GACJ,EA3CAtnB,EAAGwuB,eA6CH,SAAwBJ,GACpB,IACIK,EADArI,EAAMhe,OAAOlD,SAASC,KAEtBupB,EAAQtI,EAAIkI,MAAM,KACtB,GAAII,EAAM9tB,QAAU,EAAG,CACnBwlB,EAAMsI,EAAM,GAGZ,IADA,IAAIC,EAAUD,EAAM,GAAGJ,MAAM,SACpB9sB,EAAI,EAAGA,EAAImtB,EAAQ/tB,OAAQY,KACK,IAAjCmtB,EAAQntB,GAAGV,QAAQ,WAEf2tB,EADAA,EACKA,EAAK,IAAME,EAAQntB,GAEnBmtB,EAAQntB,GAI7B,CAEQitB,EAAJA,EAAS,IAAMA,EAAK,IACd,IAEV,IAAIJ,EAAUD,EAAYE,MAAM,KAChClmB,OAAOlD,SAASC,KAAOihB,EAAMqI,EAAK,QAAUJ,EAAQ,EACxD,EAMAruB,EAAGmH,QAAU,WAHTnH,EAAGkmB,aAKP,CACJ,CAEA,OAtFA2H,EAA6B1lB,QAAU,CAAC,iBAAkB,cAsFnDqc,CACX,CACDpc,OAAO/I,QA/GE4I,OAAO,iBAAiBuc,UAAU,qBAAsBmJ,GAEhEA,EAA4BxlB,QAAU,CAAC,UA6G1C,CAhHD,E,aCAA,SAAW9I,GAcP,SAASuvB,EAAiCpW,GACtC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHgJ,cAAe,IACfC,WAAY,IACZC,WAAY,KACZC,SAAU,IACVC,SAAU,MAEdpY,YAAa2B,EAAgBsD,QAAQ,uCAAwC,4DAC7E/E,kBAAkB,EAClB7O,WAAYgnB,EACZpY,aAAc,MAKlB,SAASoY,EAAkCrvB,GACvC,IAAIG,EAAKC,KAETD,EAAGmvB,UAAY,GAEfnvB,EAAGoL,KAoCH,WAEI,GAAKpL,EAAG6uB,eAAkB7uB,EAAG6uB,cAAcjuB,OAA3C,CAIA,IADA,IAAIwuB,EACK5tB,EAAI,EAAGA,EAAIxB,EAAG6uB,cAAcjuB,SAAWwuB,EAAU5tB,IACtD4tB,EAAWpvB,EAAG6uB,cAAcrtB,GAAG6tB,kBAAkB9e,eAAe,KAAMvQ,EAAG8uB,YAG7E,GAAKM,EAAL,CAGA,IAAS5tB,EAAI,EAAGA,EAAIxB,EAAG6uB,cAAcjuB,OAAQY,IAAK,CAC9C,IAAI8tB,EAASF,EAASG,QAAQhf,eAAe,KAAMvQ,EAAG6uB,cAAcrtB,GAAGI,IACvE5B,EAAG6uB,cAAcrtB,GAAGguB,MAAQF,EAAOE,KACvC,CAMA,IAJAxvB,EAAG6uB,cAAgBhvB,EAAQ,UAARA,CAAmBG,EAAG6uB,cAAe,SAExD7uB,EAAGyvB,SAAWzvB,EAAG6uB,cAAc,GAEtBrtB,EAAI,EAAGA,EAAIxB,EAAG6uB,cAAcjuB,OAAQY,IACzCxB,EAAGmvB,UAAU1f,KAAKzP,EAAG6uB,cAAcrtB,GAZ7B,CARA,CAsBd,EA5DAxB,EAAG0vB,YAQH,SAAqBC,GACjB3vB,EAAGyvB,SAAWE,EACd3vB,EAAG4vB,uBACP,EAVA5vB,EAAG4vB,sBAYH,WAEI,IADA,IAAI3f,EAAQ,EACHzO,EAAI,EAAGA,EAAIxB,EAAGmvB,UAAUvuB,OAAQY,IACrC,GAAIxB,EAAGmvB,UAAU3tB,GAAGI,KAAO5B,EAAGyvB,SAAS7tB,GAAI,CACvCqO,EAAQzO,EACR,KACJ,CAGJ,GAAc,IAAVyO,EAAJ,CAGA,IACI4f,EAAU,CADF7vB,EAAGmvB,UAAUlf,IAEzB,IAASzO,EAAI,EAAGA,EAAIxB,EAAGmvB,UAAUvuB,OAAQY,IACjCA,IAAMyO,GACN4f,EAAQpgB,KAAKzP,EAAGmvB,UAAU3tB,IAGlCxB,EAAGmvB,UAAYU,CATL,CAUd,EA/BA7vB,EAAG8vB,KAEH,WACI9vB,EAAGgvB,UAAHhvB,CAAcA,EAAGyvB,SACrB,EAwDAzvB,EAAGmH,QAAUnH,EAAGoL,IACpB,CAEA,OAzEA8jB,EAAkC/mB,QAAU,CAAC,WAyEtCqc,CACX,CAEH,SAASuL,EAA8BvX,GACtC,IAAIgM,EAAY,CACfC,SAAU,IACVoB,MAAO,CACNmK,MAAO,IACKC,SAAU,IACVC,iBAAkB,MAE/BrZ,YAAa2B,EAAgBsD,QAAQ,oCAAqC,yDAC1E/E,kBAAkB,EAClB7O,WAAYioB,EACZrZ,aAAc,MAKf,SAASqZ,EAA+B/b,GAExC,CAEA,OANA+b,EAA+BhoB,QAAU,CAAC,uBAMnCqc,CACR,CAmEA,SAAS4L,EAAmC5X,GAC3C,IAAIgM,EAAY,CACfC,SAAU,IACVoB,MAAO,CACNwK,gBAAiB,KAElBxZ,YAAa2B,EAAgBsD,QAAQ,yCAA0C,8DAC/E/E,kBAAkB,EAClB7O,WAAYooB,EACZxZ,aAAc,MAKf,SAASwZ,EAAoClc,GAC5C,IAAIpU,EAAKC,KAETD,EAAGoL,KAIH,WACCpL,EAAGqwB,gBAAkB,CACpB7f,KAAMxQ,EAAGwQ,MAEVxQ,EAAGuwB,aACJ,EARAvwB,EAAGwQ,KAoBH,WACCxQ,EAAGwwB,eAAgB,EACnBpc,EAAcqc,aAAazwB,EAAG+C,SAC/B,EAtBA/C,EAAGuwB,YASH,WACCnc,EAAcmc,cAAc9tB,MAE5B,SAA6BC,GAC5B1C,EAAG+C,SAAWL,EAASsG,KACvBhJ,EAAG0wB,iBAAmBrxB,EAAQ8E,KAAKnE,EAAG+C,UACtC/C,EAAGqwB,gBAAgBttB,SAAW/C,EAAG+C,QAClC,GACD,EAOA/C,EAAGytB,WAAa,WACVztB,EAAGwwB,eACPrmB,OAAOwmB,OAAO3wB,EAAG+C,SAAU/C,EAAG0wB,iBAChC,EAEA1wB,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OAvCAklB,EAAoCnoB,QAAU,CAAC,uBAuCxCqc,CACR,CAEA,SAASoM,EAA2BpY,GACnC,IAAIgM,EAAY,CACfC,SAAU,IACVoB,MAAO,CACNtd,MAAO,IACPS,KAAM,KACM1H,SAAU,KACV4uB,iBAAkB,MAE/BrZ,YAAa2B,EAAgBsD,QAAQ,iCAAkC,sDACvE/E,kBAAkB,EAClB7O,WAAY2oB,EACZ/Z,aAAc,MAKT,SAAS+Z,EAA4Bzc,EAAe5U,EAAQiiB,EAASliB,GAC1E,IAAIS,EAAKC,KAEAD,EAAG0U,OAASC,OACZ3U,EAAGuK,gBAEHvK,EAAGoL,KA0BZ,WAGMpL,EAAGsB,WAEPtB,EAAGsB,SAAW,CACbwvB,4BAA4B,EAC5BC,2BAA2B,GAG5B3c,EAAcmc,cAAc9tB,MAwB7B,SAA6BC,GAC5B1C,EAAGsB,SAAWoB,EAASsG,IACxB,KAvBgBhJ,EAAGkwB,mBACHlwB,EAAG6P,aAAe4R,EAAQuP,kBACtBhxB,EAAG6P,eACH7P,EAAGuK,gBAAkBvK,EAAG6P,aAAa0N,OAAS,oCAIjDvd,EAAGuK,kBACJvK,EAAGuK,gBAAkBvK,EAAG0U,OAAOiI,OAG3C3c,EAAGgJ,OAEKhJ,EAAGsB,SAASyvB,2BAA4B,EACxC/wB,EAAGixB,cAIHzxB,EAAOuI,IAAI,mBAAoB/H,EAAGixB,aAClCzxB,EAAOuI,IAAI,wBAAyB/H,EAAGixB,aAOpD,EAhESjxB,EAAGixB,YAkBH,WACI1xB,EAAW2xB,8BAA8BzuB,MAAK,SAACwtB,GAC3CjwB,EAAGgJ,KAAO,CAAC,EACXhJ,EAAGgJ,KAAKmoB,QAAUlB,CACtB,GACJ,EA2CTjwB,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OA9EMylB,EAA4B1oB,QAAU,CAAC,sBAAuB,SAAU,UAAW,cA8ElFqc,CACR,CAEA,SAAS4M,EAA0B5Y,GAClC,IAAIgM,EAAY,CACfC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAa2B,EAAgBsD,QAAQ,gCAAiC,qDACtE/E,kBAAkB,EAClB7O,WAAYmpB,EACZva,aAAc,MAKf,SAASua,EAA2Bjd,GACnC,IAAIpU,EAAKC,KAETD,EAAGoL,KAiBH,WACCgJ,EAAckd,mBAAkB,GAAO7uB,MAEvC,SAA6BC,GAC5B1C,EAAGuxB,eAAiB7uB,EAASsG,IAC9B,GACD,EAtBAhJ,EAAGwxB,eAEH,SAAwBC,GACvB,OAAQA,EAAaja,kBACpB,KAAK,EACJ,MAAO,oCAAsCia,EAAa7vB,GAAK,KAEhE,KAAK,EACJ,OAAO6vB,EAAaC,WAAa,mCAAqCD,EAAaC,WAAa,MAAQ,0BAA4BD,EAAa7vB,GAAK,KAEvJ,KAAK,EACJ,MAAO,iCAAmC6vB,EAAaC,YAAcD,EAAa7vB,IAAM,MAG3F,EAUA5B,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OAjCAimB,EAA2BlpB,QAAU,CAAC,uBAiC/Bqc,CACR,CApYAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,mBAAoB4M,GAC9D/xB,EAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqBoM,GAC/DvxB,EAAQ4I,OAAO,iBAAiBuc,UAAU,uBAAwBuL,GAClE1wB,EAAQ4I,OAAO,iBAAiBuc,UAAU,+BA6H1C,WACC,IAAIA,EAAY,CACfC,SAAU,IACVoB,MAAO,CACNmK,MAAO,IACK2B,kBAAmB,KACnBzB,iBAAkB,MAEtB0B,SAAU,2IACnB7a,kBAAkB,EAClB7O,WAAY2pB,EACZ/a,aAAc,MAKf,SAAS+a,EAAsCtyB,EAAY6U,GAC1D,IAAIpU,EAAKC,KAKA,SAAS6xB,IAELvyB,EAAWwyB,oBAAoBtvB,MAE/B,WACIzC,EAAGgyB,SAAWzyB,EAAWyyB,SAIzB,IAFA,IAAIC,EAAc,EACdC,EAAsB,EACjB1wB,EAAI,EAAGA,EAAIxB,EAAGgyB,SAASpxB,OAAQY,IACpC,IAAK,IAAIG,EAAI,EAAGA,EAAI3B,EAAGgyB,SAASxwB,GAAG2wB,cAAcvxB,OAAQe,IACrDswB,IAC+C,IAA3CjyB,EAAGgyB,SAASxwB,GAAG2wB,cAAcxwB,GAAGywB,QAChCF,IAKZ,IAAIjC,EAAW,EACXgC,EAAc,IACdhC,EAAW3C,KAAK+E,MAA6B,IAAtBH,EAA6BD,IAExDjyB,EAAGiwB,SAAWA,CAClB,GACb,CA5BAjwB,EAAGiwB,SAAW,EAEdjwB,EAAGoL,KA4BH,WACC0mB,IAGG9xB,EAAG2xB,mBACLpyB,EAAWwI,IAAI,oBAAoB,WAClC+pB,GACD,GAEF,EAEA9xB,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OAhDAymB,EAAsC1pB,QAAU,CAAC,aAAc,uBAgDxDqc,CACR,IA3LGnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,4BAA6B4L,GACvE/wB,EAAQ4I,OAAO,iBAAiBuc,UAAU,0BAA2BoK,GAExEwC,EAA0BjpB,QAAU,CAAC,WACrCyoB,EAA2BzoB,QAAU,CAAC,WACtC4nB,EAA8B5nB,QAAU,CAAC,WACtCioB,EAAmCjoB,QAAU,CAAC,WAC9CymB,EAAiCzmB,QAAU,CAAC,UA0X/C,CAtYD,CAsYGC,OAAO/I,Q,aCtYV,SAAWA,GASV,SAASizB,EAAYjH,GACpB,IAAI7G,EAAY,CACfC,SAAU,IACVoB,MAAO,CACN4E,WAAY,IACZ8H,SAAU,IACVvC,MAAO,IACPwC,SAAU,MAEX3b,YAAawU,EAAQvP,QAAQ,2BAA4B,gDACzD/E,kBAAkB,EAClB7O,WAAYuqB,EACZ3b,aAAc,MAKf,SAAS2b,EAAsBC,EAAiBnzB,GAC/C,IAAIS,EAAKC,KAETD,EAAGoL,KAkBH,gBACqBvK,IAAhBb,EAAGwyB,gBAE8B3xB,IAAjCtB,EAAWozB,oBACdpzB,EAAWozB,kBAAoB,qCAEO9xB,IAAnCtB,EAAWqzB,sBACdrzB,EAAWqzB,oBAAsB,iBAElCF,EAAgBG,WAAW7yB,EAAGyqB,WAAYzqB,EAAGuyB,UAAU9vB,MAEvD,SAA4BC,GAC3B1C,EAAGwyB,WAAa9vB,EAASsG,IAC1B,IACD,EA/BAhJ,EAAG8yB,eAEH,WAQC,SAASC,IACRL,EAAgBM,cAAa,GAAOvwB,MAAK,SAASC,GACjDnD,EAAW8K,WAAW,mBAAoB3H,EAASsG,KACpD,GACD,CAXAhJ,EAAGwyB,UAAYxyB,EAAGwyB,SAEdxyB,EAAGwyB,SACNE,EAAgBO,YAAYjzB,EAAGyqB,WAAYzqB,EAAGuyB,UAAU9vB,KAAKswB,GAE7DL,EAAgBQ,eAAelzB,EAAGyqB,WAAYzqB,EAAGuyB,UAAU9vB,KAAKswB,EAOlE,EAkBA/yB,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OA1CAqnB,EAAsBtqB,QAAU,CAAC,yBAA0B,cA0CpDqc,CACR,CAEA,SAAS2O,EAAgB9H,GACxB,IAAI7G,EAAY,CACfC,SAAU,IACVoB,MAAO,CACN4E,WAAY,IACZ2I,UAAW,MAEZvc,YAAawU,EAAQvP,QAAQ,+BAAgC,oDAC7D/E,kBAAkB,EAClB7O,WAAYmrB,EACZvc,aAAc,MAKf,SAASuc,EAA0BX,GAClC,IAAI1yB,EAAKC,KAETD,EAAGoL,KAQH,WACKpL,EAAGozB,iBAE8BvyB,IAAjCtB,WAAWozB,oBACdpzB,WAAWozB,kBAAoB,qCAEO9xB,IAAnCtB,WAAWqzB,sBACdrzB,WAAWqzB,oBAAsB,iBAElCF,EAAgBM,cAAa,EAAOhzB,EAAGyqB,YAAYhoB,MAEnD,SAA8BC,GAC7B1C,EAAGozB,UAAY1wB,EAASsG,IACzB,IACD,EArBAhJ,EAAGkzB,eAEH,SAAwBV,GACvBE,EAAgBQ,eAAeV,EAASra,WAAYqa,EAASpa,UAC7DpY,EAAGozB,UAAUE,OAAOd,EACrB,EAkBAxyB,EAAGmH,QAAUnH,EAAGoL,IACjB,CAEA,OAhCAioB,EAA0BlrB,QAAU,CAAC,0BAgC9Bqc,CACR,CAEA,SAAS+O,EAAoBlI,GAC5B,IAAI7G,EAAY,CACfC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAawU,EAAQvP,QAAQ,+BAAgC,wDAC7D/E,kBAAkB,EAClB7O,WAAYsrB,EACZ1c,aAAc,MAKf,SAAS0c,EAA8Bd,EAAiB9oB,EAAgBrK,GACvE,IAAIS,EAAKC,KACTD,EAAGse,KAAO,GACVte,EAAGoL,KAEH,WACCxB,EAAewU,WAAW7e,EAAWsQ,aAAawO,kBAAkB5b,MAEpE,SAAyBC,GACxB1C,EAAGse,KAAO5b,EAASsG,IACpB,GASD,EAESzJ,EAAWyD,YAAYP,KAAKzC,EAAGoL,KAGzC,CAEA,OA5BAooB,EAA8BrrB,QAAU,CAAC,yBAA0B,iBAAkB,cA4B9Eqc,CACR,CA5JAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,cAAe8N,GACzDjzB,EAAQ4I,OAAO,iBAAiBuc,UAAU,kBAAmB2O,GAC7D9zB,EAAQ4I,OAAO,iBAAiBuc,UAAU,sBAAuB+O,GAEjEjB,EAAYnqB,QAAU,CAAC,WACvBgrB,EAAgBhrB,QAAU,CAAC,WAC3BorB,EAAoBprB,QAAU,CAAC,UAuJ/B,CA9JD,CA8JGC,OAAO/I,Q,aC9JV,SAAWA,GAOP,SAASo0B,IACL,IAAIjP,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACA+L,SAAU,4DACV1pB,WAAYwrB,EACZ5c,aAAc,MAKlB,SAAS4c,EAA6BC,GAClC,IAAI3zB,EAAKC,KAET0zB,EAAYC,qBAAqBnxB,MAAK,SAAUC,GAC5C1C,EAAG6zB,UAAYnxB,EAASsG,IAC5B,GACJ,CAEA,OAVA0qB,EAA6BvrB,QAAU,CAAC,gBAUjCqc,CACX,CAEA,SAASsP,EAAmBtb,GACxB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,8CAC/D5T,WAAY6rB,EACZjd,aAAc,MAKlB,SAASid,EAAoBh0B,EAAa6J,EAAgBtB,EAASzI,EAASN,EAAYy0B,GACpF,IAAIh0B,EAAKC,KA4CT,SAASg0B,EAAcC,IACC,IAAhBA,EACA70B,EAAQwrB,QAAQ,cAAcsJ,SAAS,yBAGvC90B,EAAQwrB,QAAQ,cAAcuJ,YAAY,wBAElD,CASA,SAASC,KACDr0B,EAAGoK,WAAapK,EAAGs0B,eAAiBt0B,EAAGu0B,YAAcv0B,EAAGw0B,gBACxDx0B,EAAGoK,WAAY,EACfpK,EAAGs0B,eAAgB,EACnBt0B,EAAGu0B,YAAa,EAChBv0B,EAAGw0B,cAAe,GAGtBj1B,EAAWk1B,SACf,CA4BA,SAASC,IACL10B,EAAG20B,UAAYrsB,EAAQssB,aAAe/lB,SAASgmB,gBAAgBF,UAC/D30B,EAAG80B,gBAAkB90B,EAAG+0B,cAAgB/0B,EAAG20B,UAAY,OAAS,KAErC,SAAvB30B,EAAG80B,iBAA8B90B,EAAG20B,UAAY,IAAkE,IAA7Dp1B,EAAWwM,aAAqB,OAAuB,oBAC5G1M,EAAQwrB,QAAQ,eAAesJ,SAAS,aAGxC90B,EAAQwrB,QAAQ,eAAeuJ,YAAY,aAG/C,IAAIY,EAAc,EACdC,EAAgB51B,EAAQwrB,QAAQ,qBACpC,GAAIoK,EAAcr0B,OAAS,GAAKq0B,EAAc,GAAGC,UAAY,EAAG,CAC5D,IAAIC,EAAa91B,EAAQwrB,QAAQ,0BAA0B,GAAGuK,aAC9DJ,EAAcC,EAAc,GAAGC,gBAA4Br0B,IAAfs0B,EAA2BA,EAAa,EACxF,CAEIn1B,EAAG20B,UAAYK,GACfK,IACAhB,MAE0D,IAArD90B,EAAWwM,aAAqB,OAAe,aACpDupB,IAEJt1B,EAAG+0B,cAAgB/0B,EAAG20B,SAC1B,CAkBA,SAASU,IAELh2B,EAAQwrB,QAAQ,eAAesJ,SAAS,YAC5C,CAEA,SAASmB,IAELj2B,EAAQwrB,QAAQ,eAAeuJ,YAAY,YAC/C,CApJAp0B,EAAGu1B,KAAOtnB,eAAqB,KAC/BjO,EAAG+0B,cAAgB,EACnB/0B,EAAG20B,UAAY,EACf30B,EAAG80B,gBAAkB,GAErB90B,EAAGoK,WAAY,EACfpK,EAAGs0B,eAAgB,EACnBt0B,EAAGu0B,YAAa,EAChBv0B,EAAGw0B,cAAe,EAElBv0B,KAAKu1B,UA4DL,WACIltB,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,SAChD,EA7DAI,KAAKgP,OA+DL,WACIjN,QAAQC,IAAI,cACZlC,EAAYkP,QAChB,EAjEAhP,KAAKw1B,OAmEL,SAAgBC,GACf,OAAO9rB,EAAe6rB,OAAOC,GAAYjzB,MAAK,SAAUC,GACvD,OAAOA,EAASsG,IACjB,GACD,EAtEA/I,KAAKsnB,cAwEL,SAAuBC,GACfA,EAAQmO,cAERrtB,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,IAAM2nB,EAAQmO,aAElE,EA5EA11B,KAAK21B,qBA8EL,WACI5B,EAAS9qB,SAAS2sB,YAAY,YAClC,EA/EA51B,KAAKmL,KA6GL,WACIpL,EAAG81B,eAAiB7nB,eAAwC,wBAC5DjO,EAAG+1B,iBAAmB9nB,eAA6B,cAEA,IAA/C1O,EAAWwM,aAAaiqB,OAAOC,aAC/BZ,IAEJ/sB,EAAQ4tB,iBAAiB,SAAUxB,GAE/ByB,qBAAqB,oBACrBn2B,EAAGoK,WAAY,EACf6pB,GAAc,GACdtlB,qBAAqB,kBAE7B,EA1HA1O,KAAKm2B,iBAoCL,WACIp2B,EAAGoK,WAAY,EACf6pB,GAAc,GAEd10B,EAAW8K,WAAW,qBAC1B,EAvCA9K,EAAW6S,OAAO,mCACd,SAAUikB,EAAQC,GACVD,GAAUA,GAAUC,KAC+B,IAA/C/2B,EAAWwM,aAAaiqB,OAAOC,YAC/BZ,IAEAC,IAEZ,IAGJ/1B,EAAWwI,IAAI,mBAAmB,SAAU0a,EAAOoK,GAC/CwH,GACJ,IAEA90B,EAAWwI,IAAI,wBAAwB,SAAU0a,EAAOoK,GACpD7sB,EAAGoK,WAAY,EACf7K,EAAWk1B,SACf,IAEAl1B,EAAWwI,IAAI,wBAAwB,SAAU0a,EAAOoK,GACpD7sB,EAAGoK,WAAY,EACf7K,EAAWk1B,SACf,IA6GAx0B,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEA,OA7JA2oB,EAAoB5rB,QAAU,CAAC,qBAAsB,iBAAkB,UAAW,UAAW,aAAc,YA6JpGqc,CACX,CArMAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,YAAasP,GACvDz0B,EAAQ4I,OAAO,iBAAiBuc,UAAU,qBAAsBiP,GAEhEK,EAAmB3rB,QAAU,CAAC,WAC9BsrB,EAA4BtrB,QAAU,EAkMzC,CAvMD,CAuMGC,OAAO/I,Q,aCvMV,SAAWA,GAOV,SAASk3B,EAAmBC,EAA2BC,EAAUC,GAyBhE,MAxBgB,CACfjS,SAAU,IACV8G,KAGD,SAAgC1F,EAAOgF,EAASW,GAG1CA,EAAM+K,oBAGXC,EAA0BG,mBAAmBnL,EAAM+K,oBAAoB9zB,MAEvE,SAAoCC,GAGnC,GAFAmjB,EAAM+Q,gBAAkBh0B,mBAAmBC,iBAAiBH,EAAU,CAAC,GAEnEmjB,EAAM+Q,gBAAgBC,UAAW,CACpChR,EAAM+Q,gBAAgBC,UAAY,IAAIH,EAAU7Q,EAAM+Q,gBAAgBC,WACtE,IAAIC,EAAWL,EAZP,kFAYOA,CAAc5Q,GAC7BgF,EAAQkM,KAAKD,EACd,CACD,GACD,EAGD,CAEA,SAASN,EAA0BzS,GAClC,IAAIiT,EAAc7pB,aAAe,cAEjClN,KAAK02B,mBAAqB,SAAUM,GACnC,OAAOlT,EAAMI,IAAI6S,EAAc,4BAA6B,CAC3D5S,OAAQ,CACP6S,KAAMA,IAGT,CACD,CA5CA53B,EAAQ4I,OAAO,iBAAiBuc,UAAU,qBAAsB+R,GAChEl3B,EAAQ4I,OAAO,iBAAiByd,QAAQ,4BAA6B8Q,GAErED,EAAmBpuB,QAAU,CAAC,4BAA6B,WAAY,aACvEquB,EAA0BruB,QAAU,CAAC,QAyCrC,CA9CD,CA8CGC,OAAO/I,Q,aC9CV,SAAWA,GAKP,SAAS63B,EAAwB1e,GAC7B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHsR,YAAa,IACbC,OAAQ,KAEZvgB,YAAa2B,EAAgBsD,QAAQ,8BAA+B,mDACpE5T,WAAY6rB,EACZjd,aAAc,KACdC,kBAAkB,GAKtB,SAASgd,EAAoBtS,GAChBxhB,KAENo3B,KAEH,SAAcrnB,GACV,OAAOA,EAAKiZ,QAAUxH,EAAQuP,kBAAkBpvB,EACpD,CACJ,CAEA,OAZAmyB,EAAoB5rB,QAAU,CAAC,WAYxBqc,CACX,CACDpc,OAAO/I,QA/BE4I,OAAO,iBAAiBuc,UAAU,iBAAkB0S,GAE5DA,EAAwB/uB,QAAU,CAAC,UA6BtC,CAhCD,E,aCAA,SAAU9I,GAKN,SAASi4B,EAAiC9e,GACtC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,OAAO,EACPhP,YAAa,SAAUgU,EAASW,GAC/B,OAAKA,EAAM3U,YAGJ1J,aAAeqe,EAAM3U,YAFpB2B,EAAgBsD,QAAQ,uCAAwC,2DAGzE,EACA5T,WAAYqvB,EACZzgB,aAAc,MAKlB,SAASygB,EAAkCh4B,EAAYQ,GACnD,IAAIC,EAAKC,KACTD,EAAGw3B,aACHx3B,EAAGy3B,UACHz3B,EAAG03B,kBAAoB,EACvB13B,EAAG23B,oBAAsB,EACzB33B,EAAG43B,mBAAqB,EAExB53B,EAAG63B,oCAGH,WACI93B,EAAY83B,sCAAsCp1B,MAElD,SAAoDC,GAChD1C,EAAGw3B,aAAe90B,EAASsG,KAAK8uB,QAChC93B,EAAG+3B,UAAYr1B,EAASsG,KAAKgvB,QAC7Bh4B,EAAG03B,kBAAoBh1B,EAASsG,KAAKivB,QAErCj4B,EAAGk4B,kBAAoBl4B,EAAG+3B,UAAUI,gBAAgB,KAAMn4B,EAAGw3B,aAAa51B,IAE1E,IAAK,IAAIJ,EAAI,EAAGA,EAAIxB,EAAG+3B,UAAUn3B,OAAQY,IACxC,GAAIxB,EAAG+3B,UAAUv2B,GAAG42B,YAAcp4B,EAAGw3B,aAAaY,YAAa,CAC9Dp4B,EAAGy3B,UAAYz3B,EAAG+3B,UAAUv2B,GAC5B,KACD,CAGDxB,EAAGq4B,qBACP,GACJ,EArBAr4B,EAAGq4B,oBAuBH,WACI,IAAIC,EAAMt4B,EAAG03B,kBAAoB13B,EAAGw3B,aAAaY,YAC7CG,OAA0B13B,IAAjBb,EAAGy3B,UAA0Bz3B,EAAGy3B,UAAUW,YAAcp4B,EAAGw3B,aAAaY,YAAc,EAG/Fp4B,EAAG23B,sBADFY,EAAS,EACgBD,EAAMC,EAAU,IAGjB,IAG7Bv4B,EAAG43B,mBAAqBW,EAAS,EAAIA,EAASD,EAAM,EAEhDt4B,EAAG23B,oBAAsB,MAC5B33B,EAAG23B,oBAAsB,KAEvB33B,EAAG43B,mBAAqB,IACvB53B,EAAG43B,mBAAqB,EAEhC,EAEI5f,oBAAoB,yBACpBhY,EAAG63B,qCACX,CAEA,OA3DAN,EAAkCpvB,QAAU,CAAC,aAAc,sBA2DpDqc,CACX,CACDpc,OAAO/I,QA/EE4I,OAAO,iBAAiBuc,UAAU,0BAA2B8S,GAErEA,EAAiCnvB,QAAU,CAAC,UA6E/C,CAhFD,E,aCAA,SAAU9I,GAaN,SAASm5B,EAAqBhgB,GAC1B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAa2B,EAAgBsD,QAAQ,+BAAgC,yDACrE5T,WAAYuwB,EACZ3hB,aAAc,KACdC,kBAAkB,GAKtB,SAAS0hB,EAA+Bl5B,EAAYm5B,GAChD,IAAI14B,EAAKC,KAETD,EAAGoL,KA6CH,WACIpL,EAAG24B,oBAEHp5B,EAAWwI,IAAI,2BAA2B,SAAC0a,EAAOoK,GAC9C7sB,EAAG24B,mBACP,IAEAp5B,EAAWwI,IAAI,0BAA0B,SAAC0a,EAAOoK,GAC7C7sB,EAAG44B,sBACP,GACJ,EArDA54B,EAAG24B,kBAiBH,WACIp5B,EAAWwyB,oBAAoBtvB,MAAK,WAChC,GAAIlD,EAAWyyB,SACX,IAAK,IAAIxwB,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IACxCjC,EAAWyyB,SAASxwB,GAAGq3B,mBACvB74B,EAAG84B,eAAiBv5B,EAAWyyB,SAASxwB,IAKpDxB,EAAG44B,sBACP,GACJ,EA5BA54B,EAAG+4B,sBAUH,SAA+BtW,GAC3BA,EAAMuW,kBAENN,EAAkBO,eAAej5B,EAAGk5B,kBACxC,EAbAl5B,EAAG44B,qBA6BH,WACI,GAAI54B,EAAG84B,eAAgB,CAEnB,IADA,IAAIK,EACK33B,EAAI,EAAGA,EAAIxB,EAAG84B,eAAe3G,cAAcvxB,OAAQY,IACnD23B,GAA4D,IAA9Cn5B,EAAG84B,eAAe3G,cAAc3wB,GAAG4wB,SAClD+G,EAAan5B,EAAG84B,eAAe3G,cAAc3wB,IAGrDxB,EAAGk5B,kBAAoBC,CAC3B,CACJ,EAtCAn5B,EAAGo5B,kBAIH,WACIp5B,EAAGq5B,kBAAmB,CAC1B,EAJAr5B,EAAGq5B,kBAAmB,EAkDtBp5B,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEA,OAjEAqtB,EAA+BtwB,QAAU,CAAC,aAAc,qBAiEjDqc,CACX,CAEA,SAAS8U,EAAe9gB,GACpB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH0T,QAAS,KACTC,eAAgB,MAEpB3iB,YAAa2B,EAAgBsD,QAAQ,+BAAgC,mDACrE5T,WAAYuxB,EACZ3iB,aAAc,KACdC,kBAAkB,GAKtB,SAAS0iB,EAAyBl6B,GAC9B,IAAIS,EAAKC,KACTD,EAAGoL,KAGH,WAEA,EAJApL,EAAG05B,MAMH,SAAeC,GACX,OAAOrM,KAAK+E,MAAMsH,EACtB,EAEA15B,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEA,OAlBAquB,EAAyBtxB,QAAU,CAAC,cAkB7Bqc,CACX,CAEA,SAASoV,EAAyBphB,GAC9B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHgU,UAAW,KAEfhjB,YAAa2B,EAAgBsD,QAAQ,+BAAgC,6DACrE5T,WAAY4xB,EACZhjB,aAAc,KACdC,kBAAkB,GAKtB,SAAS+iB,EAAmCv6B,EAAYm5B,EAAmB5tB,GACvE,IAAI9K,EAAKC,KACTD,EAAGoL,KAgBH,WAEA,EAjBApL,EAAG+5B,gBAUH,WACI/5B,EAAG65B,YACH/uB,EAAOyL,GAAG,uBACd,EAZAvW,EAAG24B,kBAEH,SAA2BniB,GACnBjX,EAAWyyB,UAAYzyB,EAAWyyB,SAASpxB,SAC3CrB,EAAWo5B,kBAAkBniB,GAAI,GACjCxW,EAAG65B,YAEX,EAWA55B,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEA,OA3BA0uB,EAAmC3xB,QAAU,CAAC,aAAc,oBAAqB,UA2B1Eqc,CACX,CAEA,SAASwV,EAAqBxhB,GAC1B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHoU,UAAW,KAEfpjB,YAAa2B,EAAgBsD,QAAQ,4BAA6B,gDAClE5T,WAAYgyB,EACZpjB,aAAc,KACvBC,kBAAkB,GAKb,SAASmjB,EAAsBpvB,EAAQrL,EAAc06B,EAAe56B,EAAY66B,EAAoBr6B,EAAa6J,EAAgBtB,EAASzI,GACtI,IAAIG,EAAKC,KACZD,EAAGq6B,YAiIA,SAAqBh2B,GAEpB,IAAKA,EAAK8T,WACT,OAAO9T,EAAKi2B,KAEb,IAAIC,EAAUC,EAAmBn2B,EAAK8T,YACtC,OAAIoiB,EACQE,OAAO3Z,OAAO,mBAAoByZ,EAAQG,MAAOH,EAAQI,WAAYt2B,EAAKu2B,uBADtF,CAID,EA1IA56B,EAAG66B,SA4IH,SAAkBzU,GACdtb,EAAOyL,GAAG6P,EACd,EA7IApmB,EAAG86B,aA6FH,SAAsBz2B,GAClB,GAAIA,EAAJ,CAEA,IAAI02B,EAAQjwB,EAAO2e,QAEnB,MAAoB,iBAATplB,KACHA,GAAQ02B,EAAMzd,MAASyd,EAAM/xB,MAAQ+xB,EAAM/xB,KAAKgyB,cAAgB32B,GAM/DA,EAAKi2B,MAAQS,EAAMzd,WACTzc,IAAfk6B,EAAM/xB,MAAsB3E,EAAKi2B,MAAQS,EAAM/xB,KAAKgyB,aACpD32B,EAAK42B,iBAAmBF,EAAMzd,WACfzc,IAAfk6B,EAAM/xB,MAAsB3E,EAAK42B,kBAAoBF,EAAM/xB,KAAKgyB,aAGxC,KAAnB32B,EAAK8T,iBAAsCtX,IAAjBpB,GAA8BA,EAAa+W,IAAMnS,EAAKu2B,gBAjBzE,CAuBpB,EApHA56B,EAAGk7B,aAAeA,EAClBl7B,EAAGm7B,gBA0CH,SAAyB92B,EAAM+2B,GAE3B,GAAI/2B,EAAKg3B,SAASz6B,OAAS,EAA3B,CACI,IAAsB,IAAlByD,EAAKi3B,SAEL,YADAj3B,EAAKi3B,UAAW,GAIpB,IAAK,IAAI95B,EAAI,EAAGA,EAAIjC,EAAWg8B,UAAU36B,OAAQY,IAC7CjC,EAAWg8B,UAAU/5B,GAAG85B,UAAW,EAGvCj3B,EAAKi3B,UAAYj3B,EAAKi3B,QAE1B,MAQA,GANIF,IACAA,EAAWE,UAAW,GAE1B/7B,EAAWi8B,gBAAiB,EAGxBn3B,EAAKi2B,KAAKx5B,QAAQsH,OAAOlD,SAASu2B,WAAa,EAC/CrzB,OAAOlD,SAASC,KAAOd,EAAKi2B,SADhC,CAIK,IAAGj2B,EAAKi2B,KAAKl5B,WAAW,QAgB7B,OAVI85B,EAAa72B,KAEiB,GAA1BA,EAAKi2B,KAAKx5B,QAAQ,KAClBq5B,EAAcuB,SAASC,EAAEt3B,EAAKi2B,MAAO,GAGrCp1B,SAASC,KAAOd,EAAKi2B,OAItB,EAfHlyB,OAAOwzB,KAAKv3B,EAAKi2B,KAAM,SAE3B,CAcJ,EApFAt6B,EAAG67B,gBAsFH,WACI,OAAO32B,SAASC,KAAKiB,QAAQlB,SAAS42B,KAAM,GAChD,EAvFA97B,EAAGiP,OAuBH,WACIlP,EAAYkP,QAChB,EAxBAjP,EAAGgM,MA0BH,WACIhK,QAAQC,IAAI,SACRjC,EAAG+1B,mBACHztB,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,eAAiBG,EAAG+1B,kBAExE,EA9BA/1B,EAAGunB,cAgCH,SAAuBC,GACfA,EAAQmO,cACRrtB,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,IAAM2nB,EAAQmO,aAElE,EAnCA31B,EAAGoL,KAyKH,WACQ4M,oBAAoB,sBACpBhY,EAAG+7B,kBAAoB/jB,oBAAoB,+BAE/ChY,EAAG81B,eAAiB9d,oBAAoB,2BACxChY,EAAG+1B,iBAAmB9nB,eAA6B,cAEzB,IAAtB1O,EAAWy8B,QACX1zB,EAAQ4tB,iBAAiB,SAAUxB,EAC3C,EAhLA10B,EAAGi8B,eAsIH,WACI,SAAIjkB,oBAAoB,kBAAmBzY,EAAWy8B,aAAgCn7B,IAAtBq7B,mBAAoCl8B,EAAGm8B,gBAM3G,EA5IAn8B,EAAGo8B,WA8IH,SAAoBrzB,GAChB/I,EAAGm8B,iBAAkB,EACrBE,WAAWtzB,EACf,EAhJA/I,EAAGm8B,iBAAkB,EACrBn8B,EAAG+7B,mBAAoB,EAEvB/7B,EAAG+0B,cAAgB,EACnB/0B,EAAG20B,UAAY,EACf30B,EAAG80B,gBAAkB,GACrB90B,EAAGs8B,mBAAoB,EAE1B,IAAI9B,EAAqB,CACxB,IAAK,CACJtnB,KAAM,UACNwnB,MAAO,mBACPC,WAAY,OAgGX,SAASO,EAAa72B,GAClB,OAAIA,EAAKi2B,KAAKx5B,QAAQ,MAAQ,CAKlC,CAgCA,SAAS4zB,IAGL10B,EAAG20B,UAAYrsB,EAAQssB,aAAe/lB,SAASgmB,gBAAgBF,UAC/D30B,EAAG80B,gBAAkB90B,EAAG+0B,cAAgB/0B,EAAG20B,UAAY,OAAS,KAErC,SAAvB30B,EAAG80B,iBAA8B90B,EAAG20B,UAAY,IAA8B,IAAzB30B,EAAGs8B,oBACxD/8B,EAAWi8B,gBAAiB,EAC5Bx7B,EAAGs8B,mBAAoB,EACvB/8B,EAAWk1B,WAGY,OAAvBz0B,EAAG80B,kBACH90B,EAAGs8B,mBAAoB,GAG3Bt8B,EAAG+0B,cAAgB/0B,EAAG20B,SAC1B,CAaA10B,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEA,OApMA8uB,EAAsB/xB,QAAU,CAAC,SAAU,eAAgB,gBAAiB,aAAc,qBAAsB,qBAAsB,iBAAkB,UAAW,WAoM5Jqc,CACX,CAEA,SAAS4V,EAAmBrW,GACN5W,YACtB,CA5XA9N,EAAQ4I,OAAO,iBAAiBuc,UAAU,cAAewV,GACzD36B,EAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkB8U,GAC5Dj6B,EAAQ4I,OAAO,iBAAiBuc,UAAU,2BAA4BoV,GACtEv6B,EAAQ4I,OAAO,iBAAiBuc,UAAU,uBAAwBgU,GAClEn5B,EAAQ4I,OAAO,iBAAiByd,QAAQ,qBAAsB0U,GAE9DJ,EAAqB7xB,QAAU,CAAC,WAChCmxB,EAAenxB,QAAU,CAAC,WAC1ByxB,EAAyBzxB,QAAU,CAAC,WACpCqwB,EAAqBrwB,QAAU,CAAC,WAChCiyB,EAAmBjyB,QAAU,CAAC,QAoXjC,CA/XD,CA+XGC,OAAO/I,Q,aC/XV,SAAWA,GAOP,SAASk9B,EAAWlR,EAAStrB,GACzB,IAAIykB,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH2W,MAAO,IACPC,cAAe,KACfC,YAAa,MAEjB7lB,YAAawU,EAAQvP,QAAQ,0BAA2B,+CACxD/E,kBAAkB,EAClB7O,WAAY0jB,EACZ9U,aAAc,MAKlB,SAAS8U,EAAqBniB,EAAWkzB,GACrC,IAAI38B,EAAKC,KACTD,EAAG48B,MAAQ,GAEX58B,EAAG68B,kBAGH,WACIpzB,EAAUL,KAAK,CACXF,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCjmB,YAAa1J,aAAe,wDAC5BjF,WAAY,2BACZ4O,aAAc,KACdC,kBAAkB,EAClBgF,OAAQ,CACJygB,MAAOx8B,EAAGw8B,MACVO,SAAU/8B,EAAGy8B,cACbO,OAAQh9B,EAAG08B,YACXO,MAAO59B,EAAQ8E,KAAKnE,EAAG48B,OACvB5zB,KAAM3J,EAAQ8E,KAAKnE,EAAGk9B,SAE3Bz6B,MAEH,SAAmBuG,GACfhJ,EAAGm9B,aACCn0B,IACAhJ,EAAGk9B,KAAOl0B,EAElB,GACJ,EAxBAhJ,EAAGm9B,WA0BH,WAEI,IAAIC,EAAOx6B,mBAAmBy6B,aAAaC,SAAS,IAAK,QAAQN,SAC7DO,EAAK36B,mBAAmBy6B,aAAaG,IAAI,IAAK,QAAQR,SAEtDh9B,EAAGy8B,gBACHW,EAAOxc,OAAO5gB,EAAGy8B,eAAeO,UAGhCh9B,EAAG08B,cACHa,EAAK3c,OAAO5gB,EAAG08B,aAAaM,UAGhC,IAAIR,EAAQ,EACRx8B,EAAGw8B,QACHA,IAAUx8B,EAAGw8B,OAGjBG,EAAeQ,WAAWX,EAAOY,EAAMG,GAAI96B,MAC3C,SAA2BC,GACvB1C,EAAG48B,MAAQl6B,EAASsG,IACxB,GACJ,EAmBAhJ,EAAGmH,QAjBH,WACInH,EAAGm9B,aACHp9B,EAAYoc,uBAAuB,YAAY1Z,MAE/C,SAA4BC,GACxB,IAAIsG,EAAOpG,mBAAmBC,iBAAiBH,GAE3C1C,EAAGk9B,KADHl0B,EACU2a,KAAKC,MAAM5a,GAEX,CACN4b,SAAU,iGACV6Y,MAAO,OAGnB,GACJ,CAGJ,CAEA,OA7EA7R,EAAqBzjB,QAAU,CAAC,YAAa,wBA6EtCqc,CACX,CAEA,SAASkZ,EAA+Bj0B,EAAW6O,EAAqB1O,EAAgB+yB,EAAgBxtB,EAAIxP,GACxG,IAAIK,EAAKC,KAETD,EAAG29B,QAiBH,WAMI39B,EAAGi9B,MAAMW,QALE,CACPh8B,GAAI,EACJoa,KAAM,IAId,EAvBAhc,EAAGwQ,KAyBH,WACIxQ,EAAGgJ,KAAK4b,SAAW5kB,EAAG69B,MAAQ79B,EAAG69B,MAAMrgB,aAAU3c,EACjDb,EAAGgJ,KAAKy0B,MAAQz9B,EAAG89B,cAAcl8B,GACjCuN,EAAG6B,IAAI,CACHpH,EAAeuhB,kBAAkB,WAAYxH,KAAKoa,UAAU/9B,EAAGgJ,OAC/D2zB,EAAeqB,YAAYh+B,EAAGi9B,SAEjCx6B,MAAK,SAAUC,GACZi6B,EAAesB,oBACfx0B,EAAUmP,KAAK5Y,EAAGgJ,KACtB,GACJ,EAnCAhJ,EAAG0Y,MAqCH,SAAe1P,GACXS,EAAUmP,KAAK5P,EACnB,EAtCAhJ,EAAGk+B,YAwCH,WACI5lB,EAAoB6lB,oBAAoBn+B,EAAG69B,MAAO,KAAM79B,EAAGo+B,gBAAgB37B,MAE3E,SAAqC8Z,GAC5BA,IAELvc,EAAG69B,MAAQthB,EACf,GACJ,EA7CAvc,EAAGq+B,OAAS,CACR,CACInrB,KAAM,QACNtR,GAAI,QAER,CACIsR,KAAM,MACNtR,GAAI,SA0CZ5B,EAAGmH,QAAU,WACTnH,EAAG89B,cAAgB99B,EAAGq+B,OAAO9tB,eAAe,KAAMvQ,EAAGgJ,KAAKy0B,OAC1Dz9B,EAAG69B,MAAQ,CACPrgB,QAASxd,EAAGgJ,KAAK4b,UAGrB5kB,EAAGo+B,eAAiB,CAChB3hB,SAAUnE,EAAoBoE,UAAUC,MACxCC,aAActE,EAAoBuE,gBAAgByhB,OAClDvhB,YAAa,GACbC,WAAW,EACXC,aAAa,EACbC,wBAAwB,EACxBC,0BAA0B,EAC1BC,QAAQ,GAGZzd,EAAW,+BAA+B8C,MAAK,SAAUwH,GACrD,IAAImtB,EAASntB,EAAYhE,WAEzBmxB,GADAA,EAASA,EAAOhxB,QAAQ,WAAYwa,OAAO5gB,EAAG+8B,UAAUjc,OAAO,aAC/C1a,QAAQ,SAAUwa,OAAO5gB,EAAGg9B,QAAQlc,OAAO,YAC3D9gB,EAAGo3B,OAASA,CAChB,GACJ,CACJ,CAtLA/3B,EAAQ4I,OAAO,iBAAiBuc,UAAU,aAAc+X,GACxDl9B,EAAQ4I,OAAO,iBAAiBC,WAAW,2BAA4Bw1B,GAEvEnB,EAAWp0B,QAAU,CAAC,UAAW,sBACjCu1B,EAA+Bv1B,QAAU,CAAC,YAAa,sBAAuB,iBAAkB,uBAAwB,KAAM,aAoLjI,CAzLD,CAyLGC,OAAO/I,Q,kPCzLV,SAAWA,GAKP,SAASk/B,EAAUlT,EAAStrB,GACxB,IAAIykB,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH2Y,WAAY,KAEhB3nB,YAAawU,EAAQvP,QAAQ,yBAA0B,8CACvD/E,kBAAkB,EAClB7O,WAAYu2B,EACZ3nB,aAAc,MAKlB,SAAS2nB,EAAoBh1B,GACzB,IAAIzJ,EAAKC,KAETD,EAAG0+B,YAAc,CACb9Z,SAAU,8BACV5I,KAAM,4JACNyhB,MAAO,QAGXz9B,EAAGoL,KAuEH,WACIrL,EAAYoc,uBAAuBnc,EAAGw+B,YAAY/7B,MAElD,SAA4BC,GACxB,IAAIsG,EAAOpG,mBAAmBC,iBAAiBH,GAE3C1C,EAAGk9B,KADHl0B,EACU2a,KAAKC,MAAM5a,GAEXhJ,EAAG0+B,WAErB,GACJ,EAjFA1+B,EAAG2+B,SAEH,WAsBI,SAASC,EAAqBn1B,EAAW6O,EAAqB1O,GAC1D,IAAI5J,EAAKC,KACTD,EAAGwQ,KA8BH,WACIxQ,EAAGgJ,KAAK4b,SAAW5kB,EAAG69B,MAAQ79B,EAAG69B,MAAMrgB,aAAU3c,EACjDb,EAAGgJ,KAAKy0B,MAAQz9B,EAAG89B,cAAcl8B,GACjCgI,EAAeuhB,kBAAkBnrB,EAAGw+B,WAAY7a,KAAKoa,UAAU/9B,EAAGgJ,OAAOvG,MAAK,SAAUC,GACpF+G,EAAUmP,KAAK5Y,EAAGgJ,KACtB,GACJ,EAnCAhJ,EAAG6+B,OAqCH,WACIp1B,EAAUmP,MACd,EArCA5Y,EAAGq+B,OAAS,CACR,CACInrB,KAAM,QACNtR,GAAI,QAER,CACIsR,KAAM,MACNtR,GAAI,SAIZ5B,EAAG89B,cAAgB99B,EAAGq+B,OAAO9tB,eAAe,KAAMvQ,EAAGgJ,KAAKy0B,OAC1Dz9B,EAAG69B,MAAQ,CACPrgB,QAASxd,EAAGgJ,KAAK4b,UAGrB5kB,EAAGo+B,eAAiB,CAChB3hB,SAAUnE,EAAoBoE,UAAUC,MACxCC,aAActE,EAAoBuE,gBAAgByhB,OAClDvhB,YAAa,GACbC,WAAW,EACXC,aAAa,EACbC,wBAAwB,EACxBC,0BAA0B,EAC1BC,QAAQ,EAchB,C,YAhEA3T,EAAUL,KAAK,CACXF,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCjmB,YAAa1J,aAAe,iDAC5BjF,WAAY02B,EACZ9nB,aAAc,KACdC,kBAAkB,EAClBgF,Q,EAAM,CACFyiB,WAAYx+B,EAAGw+B,WACfx1B,KAAM3J,EAAQ8E,KAAKnE,EAAGk9B,O,EAAK,a,EACfl9B,EAAGw+B,W,qWAEpB/7B,MAEH,SAAmBuG,GACXA,IACAhJ,EAAGk9B,KAAOl0B,EAElB,IAEA41B,EAAqBz2B,QAAU,CAAC,YAAa,sBAAuB,iBA8CxE,EAeAnI,EAAGmH,QAAUnH,EAAGoL,IACpB,CAEA,OAlGAqzB,EAAoBt2B,QAAU,CAAC,aAkGxBqc,CACX,CAnHAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,YAAa+Z,GAEvDA,EAAUp2B,QAAU,CAAC,UAAW,qBAmHnC,CAtHD,CAsHGC,OAAO/I,Q,aCtHV,SAAWA,GAqBP,SAASy/B,EAAwBC,GAC7B,SAASjjB,IACL,OAAQpB,qBAAqBjT,MACzB,KAAKs3B,EAAwBC,IACzB,MAAO,uDACX,KAAKD,EAAwBE,SACzB,MAAO,oDACX,KAAKF,EAAwBG,OACzB,MAAO,0DAGnB,CAEA,MAAO,CACHpjB,QAASA,EACTqjB,KAAM,WACF,MAAO,CACHrjB,QAASA,EAEjB,EAER,CAEH,SAASsjB,EAAiB5mB,EAAiBsmB,EAAyBC,EAAyBM,EAAsBC,GAC5G,IAAI9a,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAa2B,EAAgBsD,QAAQ,gCAAiCgjB,EAAwBhjB,WAC9F5T,WAAYq3B,EACZzoB,aAAc,MAKlB,SAASyoB,EAA2BhgC,EAAYK,EAAUD,EAAY2/B,EAAwBx0B,EAAQ00B,EAAYvZ,EAAcwZ,EAAmB/G,EAAmBjX,GAClK,IAAIzhB,EAAKC,KACTD,EAAG0/B,MAAO,EACV1/B,EAAG2/B,aAAc,EACjB3/B,EAAG4/B,SAAU,EACb5/B,EAAG6/B,SAAU,EACb7/B,EAAG8/B,mBAAoB,EACvB9/B,EAAG+/B,UAAY,IACf//B,EAAGkV,cAAgB,GACnBlV,EAAGggC,qBAAuB,GAC1BhgC,EAAGigC,gBAAkB,GACrBjgC,EAAG+C,SAAW2X,qBACd1a,EAAG+C,SAAS2R,OAASC,OACrB3U,EAAGkgC,kBAAoB,EACvBlgC,EAAGmgC,4BAA8B,KACjCngC,EAAGogC,uBAAyB,EAE5BpgC,EAAGqgC,gBAuEH,SAAyB5d,EAAO6d,GAAK,IAAAC,EACpC,GAAKD,EAAIxT,QAAT,CAGG,IAAI0T,EAAe7c,KAAKC,MAAM0c,EAAIxT,SAGlC,IAAI9sB,EAAGkV,cAAc3E,eAAe,iBAAkBiwB,EAAaC,kBAAmBzgC,EAAG0gC,gBAAgBF,EAAaC,gBAAtH,CAGA,GAAyB,QAAzBF,EAAIvgC,EAAG2gC,0BAAkB,IAAAJ,GAArBA,EAAuBK,KAIvB,OAHK5gC,EAAG6gC,QACJ7gC,EAAG6gC,MAAQ,SACf7gC,EAAG6gC,MAAMpxB,KAAK6wB,GAmCtB,IAAuBQ,EA/BnBN,EAAaI,MAAO,EAChBJ,EAAaz9B,WACby9B,EAAaz9B,SAAW4gB,KAAKC,MAAM4c,EAAaz9B,WAGpD/C,EAAGkV,cAAc0oB,QAAQ4C,GACzBxgC,EAAG+gC,qBAEH/gC,EAAGghC,eAAeR,GAClBxgC,EAAGihC,SAAQ,GACXjhC,EAAGkhC,UAEHlhC,EAAGmhC,cAAcX,GAEjBxgC,EAAG2gC,mBAAqBthC,EAAQ8E,KAAKq8B,GAElCA,EAAaz9B,UAAYy9B,EAAaz9B,SAASq+B,SAe/BN,EAdDN,EAAaz9B,SAASq+B,OAexC5B,EAAWoB,KAAKE,IAZhBlhC,GAAS,WAAW,IAAAyhC,EAEhB,GADArhC,EAAG2gC,mBAAmBC,MAAO,GACjB,QAARS,EAAArhC,EAAG6gC,aAAK,IAAAQ,OAAA,EAARA,EAAUzgC,QAAS,EAAG,CACtB,IAAI0gC,EAAoBthC,EAAG6gC,MAAMU,QACjC3hC,GAAS,WACLI,EAAGqgC,qBAAgBx/B,EAAWygC,EAClC,GAAG,IACP,CACJ,GAAG,IArCO,CANN,CA4CR,EApHAthC,EAAGghC,eAoIH,SAAwBR,GACvBA,EAAaT,UAAYngC,GAAS,WACjC4gC,EAAaT,eAAYl/B,EACzB2/B,EAAagB,OAAS5hC,GAAS,WACrB4gC,EAAagB,YAAS3gC,EACtB2/B,EAAaI,MAAO,CAC9B,GAAG,IACJ,GAAG5gC,EAAG+/B,UACP,EA3IA//B,EAAGyhC,gBA6IH,SAAyBjB,GACpBA,EAAaT,YAChBngC,EAASoI,OAAOw4B,EAAaT,WAC7BS,EAAaT,eAAYl/B,GAEtB2/B,EAAagB,SAChB5hC,EAASoI,OAAOw4B,EAAagB,QAC7BhB,EAAagB,YAAS3gC,EAExB,EArJAb,EAAG0hC,iBAwNH,WACQ1pB,oBAAoB,+BAAiCyJ,EAAQyJ,cAC7DoU,EAAuBtpB,6BAA6B,GAAI,GAAGvT,MAE/D,SAA6CC,GACzC,IAAIi/B,EAA0Bj/B,EAASsG,KACvC,GAAIhJ,EAAGkV,cAActU,OAAS,EAE1B,IAAK,IAAIY,EAAI,EAAGA,EAAImgC,EAAwB/gC,OAAQY,IAC3CxB,EAAGkV,cAAc3E,eAAe,iBAAkBoxB,EAAwBngC,GAAGi/B,iBAC9EzgC,EAAGkV,cAAczF,KAAKkyB,EAAwBngC,SAItDxB,EAAGkV,cAAgBxS,EAASsG,KAGhChJ,EAAG+gC,qBAEH/gC,EAAG4hC,gBACH5hC,EAAGmhC,eACP,GACJ,EA7OAnhC,EAAG6hC,iBA+OH,WACI,OAAO7hC,EAAG+C,SAAS++B,UACf,KAAKzC,EAAqB0C,QACtB,MAAO,WACX,KAAK1C,EAAqB2C,SACtB,MAAO,YACX,KAAK3C,EAAqB4C,WACtB,MAAO,cACX,KAAK5C,EAAqB6C,YACtB,MAAO,eACX,KAAK7C,EAAqB8C,OACtB,MAAO,SAEnB,EA3PAniC,EAAGihC,QA6PH,SAAiBmB,IACF,IAARA,IAA+B,IAAfpiC,EAAG4/B,UAA6C,IAAzB5/B,EAAG8/B,oBAAkD,IAAnB9/B,EAAG2/B,YAC3E3/B,EAAG0/B,MAAO,GAGV1/B,EAAG0/B,MAAO,EACV9/B,GAAS,SAASI,GACdA,EAAGihC,SAAQ,EACf,GAAGjhC,EAAG+/B,WAAW,EAAM//B,GAE/B,EAtQAA,EAAGqiC,aAqHH,WAEI,IADA,IAAI7rB,EAAK,EACAhV,EAAI,EAAGA,EAAIxB,EAAGkV,cAActU,OAAQY,IACrCxB,EAAGkV,cAAc1T,GAAGi/B,eAAiBjqB,IACrCA,EAAKxW,EAAGkV,cAAc1T,GAAGi/B,gBAGjC,OAAOjqB,CACX,EA5HAxW,EAAGkhC,QAuQH,SAAiBoB,GACbtiC,EAAG2/B,aAAc,IAEZ2C,EAAO,GACR1iC,GAAS,SAASI,GACdA,EAAGuiC,eACP,GAAGD,GAAM,EAAMtiC,EAEvB,EA9QAA,EAAGuiC,cAgRH,WACIviC,EAAG2/B,aAAc,CACrB,EAjRA3/B,EAAG4hC,cAmRH,WACI,IAAI,IAAIpgC,EAAI,EAAGA,EAAIxB,EAAGkV,cAActU,OAAQY,KACD,GAAnCxB,EAAGkV,cAAc1T,GAAGghC,aAAwB5hB,OAAO5gB,EAAGkV,cAAc1T,GAAGihC,UAAUC,QAAQ9hB,SAAS0c,SAAS,EAAG,cAC9Gt9B,EAAGkhC,SAGf,EAxRAlhC,EAAGiY,SAwTH,SAAkB5T,GAGd,GAAIo7B,EAAkBkD,eAAet+B,EAAK8T,YAClC9T,EAAKu+B,iBACLnD,EAAkBoD,uBAAuBx+B,EAAK8T,WAAY9T,EAAKu+B,kBAE/DnD,EAAkBoD,uBAAuBx+B,EAAK8T,WAAY9T,EAAK+T,cAJvE,CAUA,GAAK/T,EAAKtB,YAAcsB,EAAKtB,SAASmV,kBAAoB,GAAK7T,EAAKtB,SAASmV,oBAAsB3Y,EAAWsQ,aAAajO,GACvH,OAAQyC,EAAK8T,YACT,IAAK,OACDnY,EAAG8iC,WAAW,6BAA8B,CAAEtsB,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QAC1F,MACJ,IAAK,OACDpY,EAAG8iC,WAAW,6BAA8B,CAAEtsB,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QAC1F,MACJ,IAAK,WACDpY,EAAG8iC,WAAW,8BAA+B,CAAEtsB,KAAMnS,EAAK+T,SAAW,IAAM/T,EAAK+T,SAAW,QAC3F,MACJ,IAAK,kBACDpY,EAAG8iC,WAAW,qCAAsC,CAAEC,SAAU1+B,EAAK+T,WAKjF,GAAiB,sBAAb/T,EAAK2+B,IAA6B,CAClC,GAAI3+B,EAAKtB,UAAYsB,EAAKtB,SAASm6B,OAAS74B,EAAKtB,SAASm6B,KAAK+F,aAAc,OAC7EvK,EAAkBwK,qBAAqBzgC,MACvC,SAAoCC,GAChC,IACIygC,EADkBzgC,EAASsG,KACIo6B,aAC/BD,GACAnjC,EAAG8iC,WAAW,mBAAoB,CAAEtsB,GAAI2sB,EAAc/e,OAAQ,CAAEif,UAAW,UAAW9Q,WAAYluB,EAAK+T,WAE/G,GACJ,CA9BA,CA+BJ,EAhWApY,EAAGsjC,cAgXH,SAAuBrzB,GACnB,GAAIjQ,EAAGogC,wBAA0B,EAC7B,OAAO,EAGX,GAAIpgC,EAAGujC,oBAAqB,CACxB,GAAIvjC,EAAGujC,oBAAoBtzB,GAAOuzB,YAC9B,OAAO,EAGX,GAAa,GAATvzB,EACA,OAAO,EAEX,GAAIA,EAAQ,QAA2CpP,IAAtCb,EAAGujC,oBAAoBtzB,GAAO+yB,KAC5BpiB,OAAO6iB,SAAS7iB,OAAO5gB,EAAGujC,oBAAoB,GAAGd,UAAUrV,KAAKptB,EAAGujC,oBAAoBtzB,GAAOwyB,WACtFiB,YAET,IACV,OAAO,CAGnB,CAEA,OAAO,CACX,EAvYA1jC,EAAG2jC,UA8BH,WACI3jC,EAAG4jC,aAAc,EACjB5jC,EAAG6jC,cAAgB,CACfC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,aAAc,EACdC,eAAgB,GAEpBtkC,GAAS,WACLI,EAAG4jC,aAAc,CACrB,GACJ,EAzCA5jC,EAAG0gC,gBA6IH,SAAyBlqB,GAErB,IAAK,IAAIjP,EAAI,EAAGA,EAAIvH,EAAGggC,qBAAqBp/B,OAAQ2G,IAChD,QAAyC1G,IAArCb,EAAGggC,qBAAqBz4B,GAAG48B,MAC3B,IAAK,IAAIC,EAAK,EAAGA,EAAKpkC,EAAGggC,qBAAqBz4B,GAAG48B,MAAMvjC,OAAQwjC,IAC3D,GAAIpkC,EAAGggC,qBAAqBz4B,GAAG48B,MAAMC,GAAI3D,gBAAkBjqB,EACvD,OAAO,EAMvB,OAAO,CACX,EAzJAxW,EAAG+gC,mBA2JH,WAEI,GAAK/gC,EAAG6/B,QAAR,CAOA,IAFA,IAAIwE,EAAU,GAELp0B,EAAQ,EAAGA,EAAQjQ,EAAGkV,cAActU,OAAQqP,IAAS,CAE1D,IAGIq0B,EAHAhE,EAAMtgC,EAAGkV,cAAcjF,GACvBs0B,EAAW,CAACjE,GAGZkE,GAAY,EAChB,IAAKF,EAAYr0B,EAAQ,EAAGq0B,EAAYtkC,EAAGkV,cAActU,QAAU4jC,EAAWF,IAAa,CACvF,IAAIG,EAAUzkC,EAAGkV,cAAcovB,GAC3BI,EAAUpE,EAAI0C,MAAQyB,EAAQzB,IAG9B2B,EAFW/jB,OAAO6iB,SAAS7iB,OAAO0f,EAAImC,UAAUrV,KAAKqX,EAAQhC,WAC1CiB,YACI1jC,EAAGmgC,4BAE1BuE,GAAWC,GAAcJ,EAAS3jC,OAASZ,EAAGkgC,kBAC9CqE,EAAS90B,KAAKg1B,GACRC,GAAWC,IAIjBH,GAAY,EAEpB,CAEuB,GAAnBD,EAAS3jC,OACTyjC,EAAQ50B,KAAK80B,EAAS,KAEtBF,EAAQ50B,KAAK,CACT,eAAkB6wB,EAAIG,eACtB,MAAS8D,IAGbt0B,GADgCs0B,EAAS3jC,OAAS,EAG1D,CACAZ,EAAGggC,qBAAuBqE,EAC1BriC,QAAQC,IAAIjC,EAAGggC,sBAEfhgC,EAAG2jC,WA1CH,MAFI3jC,EAAGggC,qBAAuBhgC,EAAGkV,cAAc0vB,OA6CnD,EA1MA5kC,EAAG6kC,4BAsWH,WACI,IAAK,IAAIrjC,EAAI,EAAGA,EAAIxB,EAAGujC,oBAAoB3iC,OAAQY,IAC/CxB,EAAGujC,oBAAoB/hC,GAAGgiC,aAAc,CAEhD,EAzWAxjC,EAAG8iC,WA6VH,SAAoB/H,EAAO3W,GACvBtZ,EAAOyL,GAAGwkB,EAAO3W,EAKrB,EAlWApkB,EAAGmhC,cAmRH,SAAuB98B,GAEnB,IADA,IAAIygC,EAAmB,GACdtjC,EAAI,EAAGA,EAAIxB,EAAGkV,cAActU,OAAQY,MACnC6C,GAASA,EAAK8T,aAAenY,EAAGkV,cAAc1T,GAAG2W,YAAc9T,EAAK+T,WAAapY,EAAGkV,cAAc1T,GAAG4W,WAAcqnB,EAAkBkD,eAAe3iC,EAAGkV,cAAc1T,GAAG2W,aAC1K2sB,EAAiBr1B,KAAK,CAClB7N,GAAI5B,EAAGkV,cAAc1T,GAAG4W,SACxBZ,iBAAkBxX,EAAGkV,cAAc1T,GAAG2W,aAKlDsnB,EAAkBsF,kCAAkCD,GAAkBriC,MAEtE,SAAkCC,GAE9B,IADA,IAAIC,EAASC,mBAAmBC,iBAAiBH,GACxClB,EAAI,EAAGA,EAAImB,EAAO/B,OAAQY,IAC/B,GAAImB,EAAOnB,GAAGkwB,WACV,IAAK,IAAI/vB,EAAI,EAAGA,EAAI3B,EAAGkV,cAActU,OAAQe,IACrC3B,EAAGkV,cAAcvT,GAAGyW,WAAazV,EAAOnB,GAAGI,IAAM69B,EAAkBuF,sBAAsBhlC,EAAGkV,cAAcvT,GAAGwW,cAAgBxV,EAAOnB,GAAGgW,mBACvIxX,EAAGkV,cAAcvT,GAAGihC,iBAAmBjgC,EAAOnB,GAAGkwB,WAC7C1xB,EAAG2gC,oBAAsB3gC,EAAGkV,cAAcvT,GAAG8+B,iBAAmBzgC,EAAG2gC,mBAAmBF,iBACtFzgC,EAAG2gC,mBAAmBiC,iBAAmBjgC,EAAOnB,GAAGkwB,YAM3E,GACJ,EA5SA1xB,EAAGilC,sBACH,SAA+B7oB,EAAKpW,EAAKykB,EAAYnpB,GACjD,IAasB4jC,EAblBp0B,EAAU,CACVkyB,IAAK5mB,GAAO,qBACZxX,QAASoB,GAAO,uBAChBy6B,gBAWIyE,EAAM,IAEH5X,KAAKC,MAAsB,QAAhBD,KAAK6X,SAAyBD,IAZhD/sB,WAAYsS,GAAc,gBAC1B1nB,SAAUzB,EACVs/B,MAAM,GAGV5gC,EAAGqgC,qBAAgBx/B,EAAW,CAC1BisB,QAASnJ,KAAKoa,UAAUjtB,IAQhC,EAsYA9Q,EAAGmH,QAzBH,WACI5H,EAAWwI,IAAI,wBAAyB/H,EAAGqgC,iBAE3CrgC,EAAG0hC,mBAEH9hC,GAAS,SAAUI,GACfA,EAAGihC,SAAQ,EACf,GAAG,KAAM,EAAMjhC,EAgBnB,EAKAimB,EAAamf,QAAQ,CAAC,GAAG,WACrBplC,EAAG8/B,mBAAoB,EACpB9/B,EAAG2gC,qBACF3gC,EAAG2gC,mBAAmBC,MAAO,EAErC,GACJ,CAEA,OA5cArB,EAA2Bp3B,QAAU,CAAC,aAAc,WAAY,aAAc,yBAA0B,SAAU,aAAc,eAAgB,sBAAuB,oBAAqB,WA4crLqc,CACd,CAEA,SAAS8a,EAAuBvb,EAAOta,EAAWE,GAE3C1J,KAAK+V,6BAA+B,SAASqvB,EAAKpvB,GAC9C,OAAO8N,EAAMI,IAAIhX,aAAe,yCAA2CwuB,EAAE2J,MAAM,CAAED,IAAKA,EAAKpvB,KAAMA,IACzG,EAENhW,KAAKslC,2BAA6B,CACjC,MAAS,CACRC,SAAS,EACTC,QA0BF,SAAkCjF,GACjC/2B,EAAUL,KAAK,CACdF,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjC4I,qBAAqB,EACrB7uB,YAAa1J,aAAe,wDAC5B2J,aAAc,KACdC,kBAAkB,EAClB4uB,UAAU,EACVC,UAAU,EACV19B,WAMD,WACUjI,KAENyY,MAEH,WACCjP,EAAUmP,MACX,CACD,EAbCmD,OAAQ,CACP8pB,aAAcrF,IAajB,GAhDC,OAAU,CACTgF,SAAS,EACTC,QAIF,SAAmCjF,GAClC,IAAI5O,EAAW,yCAA2C4O,EAAa57B,QAAU,cACjF+E,EAASP,KAAK,CACb2H,SAAU,aACV7H,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCgJ,UAAW,IACXlU,SAAUA,EACVmU,UAAU,EACVjvB,aAAc,KACd5O,WAAY,SAAUyB,GACZ1J,KACN+lC,MAAQ,WACVr8B,EAASiP,MACV,CACD,GAEF,GA2BD,CAhkBGvZ,EAAQ4I,OAAO,iBAAiBuc,UAAU,mBAAoB4a,GAC9D//B,EAAQ4I,OAAO,iBAAiBg+B,SAAS,0BAA2B,CAChEjH,IAAK,EACLC,SAAU,EACVC,OAAQ,IAEZ7/B,EAAQ4I,OAAO,iBAAiBg+B,SAAS,uBAAwB,CAC7DlE,QAAS,EACTC,SAAU,EACVC,WAAY,EACZC,YAAa,EACbC,OAAQ,IAEZ9iC,EAAQ4I,OAAO,iBAAiBi+B,SAAS,0BAA2BpH,GACpEz/B,EAAQ4I,OAAO,iBAAiByd,QAAQ,yBAA0B4Z,GAElEF,EAAiBj3B,QAAU,CAAC,UAAW,0BAA2B,0BAA2B,uBAAwB,0BACrH22B,EAAwB32B,QAAU,CAAC,2BACnCm3B,EAAuBn3B,QAAU,CAAC,QAAS,YAAa,WA+iB3D,CAlkBD,CAkkBGC,OAAO/I,Q,aClkBV,SAAWA,GAKP,SAAS8mC,EAA0B9a,EAASxrB,EAAS0L,GA+BjD,MA9BgB,CACZkZ,SAAU,IACVoB,MAAO,CACHugB,WAAY,MAEhBvvB,YAAawU,EAAQvP,QAAQ,kCAAmC,uDAChE/E,kBAAkB,EAClB7O,WAIJ,WACI,IAAIlI,EAAKC,KAGTD,EAAGqmC,gBAEH,SAAyBH,GACrB99B,OAAOlD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,iBAAmBqmC,EAAStkC,GAC3E,EAEA5B,EAAGmH,QAAU,WACToE,EAAa+6B,2BAA2B7jC,MAExC,SAAyCC,GACrC1C,EAAGumC,UAAY7jC,EAASsG,IAC5B,GACJ,CACJ,EApBI8N,aAAc,KAuBtB,CACD1O,OAAO/I,QArCE4I,OAAO,iBAAiBuc,UAAU,mBAAoB2hB,GAE9DA,EAA0Bh+B,QAAU,CAAC,UAAW,UAAW,eAmC9D,CAtCD,E,aCAA,SAAU9I,GAKN,SAASmnC,EAAwBhuB,GAC7B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,OAAO,EACPhP,YAAa2B,EAAgBsD,QAAQ,8BAA+B,mDACpE5T,WAAYsQ,EAAgBiuB,cAAc,8BAA+BC,GACzE5vB,aAAc,MAKlB,SAAS4vB,EAAyBnnC,GACjC,IAAIS,EAAKC,KACfD,EAAGkiB,SAEH,SAAkBykB,GAAG,IAAAC,EACpB,OAAGD,EAAEjM,QAAUn7B,EAAWsnC,aAAavpB,MAAQqpB,EAAEjM,SAAsC,QAAjCkM,EAAKrnC,EAAWsnC,aAAa79B,YAAI,IAAA49B,OAAA,EAA5BA,EAA8B5L,YAI1F,EAEMz7B,EAAWyD,YAAYP,MAAK,WAC3BzC,EAAG8mC,OAAS,CAAC,CACZC,OAAQ,cACRrM,MAAO,yBACPsM,KAAM,cACJ,CACFD,OAAQ,oBACRrM,MAAO,iCACPsM,KAAM,kBACNxB,QAASjmC,EAAWksB,gBAAgB,eAAgBlsB,EAAW0nC,gBAAgBC,MAC/EC,uBAAwB,wBACtB,CACFJ,OAAQ,oBACRrM,MAAO,+BACPsM,KAAM,cACNxB,QAASjmC,EAAWksB,gBAAgB,QAASlsB,EAAW0nC,gBAAgBC,MACxEC,uBAAwB,iBACtB,CACOJ,OAAQ,mBACjBrM,MAAO,oBACPsM,KAAM,oBACE,CACCD,OAAQ,kBACRrM,MAAO,6BACPsM,KAAM,aAEjB,GACD,CAEA,OA1CAN,EAAyBv+B,QAAU,CAAC,cA0C7Bqc,CACX,CACDpc,OAAO/I,QAzDE4I,OAAO,iBAAiBuc,UAAU,iBAAkBgiB,GAE5DA,EAAwBr+B,QAAU,CAAC,UAuDtC,CA1DD,E,aCAA,SAAW9I,GAOP,SAAS+nC,EAAmB5uB,GACxB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACNwhB,aAAc,gBACvBC,WAAY,cACAC,OAAQ,WACRC,kBAAmB,qBACnBC,OAAQ,WAEZ5wB,YAAa,SAAUgU,EAASC,GAC5B,OAAIA,EAAKC,YACE5d,aAAe2d,EAAKC,YAEpBvS,EAAgBsD,QAAQ,yBAA0B,6CAEjE,EACA5T,WAAYw/B,EACZ5wB,aAAc,KACdC,kBAAkB,GAKtB,SAAS2wB,EAAoB3nC,EAAa6J,EAAgB+9B,EAAkB78B,EAAQvL,GAC/E,IAAIS,EAAKC,KAmBT,SAAS2nC,IACR5nC,EAAGunC,QAAS,EAEPvnC,EAAG6nC,YAGR/8B,EAAOyL,GAAG,sBAAuB,CAAEuxB,MAAO9nC,EAAG6nC,YAC9C,CAzBP7nC,EAAG+nC,QAAU,GACP/nC,EAAGgoC,WAAY,EAEdhoC,EAAGy1B,OAwBJ,WACI,GAAKz1B,EAAG6nC,cAAc7nC,EAAG6nC,WAAWjnC,OAAS+mC,EAAiBM,sBAAwBjoC,EAAGgoC,UAkBzF,OAfAhoC,EAAGkoC,gBAAkB,KAEvBloC,EAAGkoC,gBAAkB,CACX,CAAEC,MAAO,EAAGC,wBAAyB,OAAQC,UAAWroC,EAAGsoC,aAAcC,cAAe,IACxF,CAAEJ,MAAO,EAAGC,wBAAyB,OAAQC,UAAWroC,EAAGsoC,aAAcC,cAAe,IACxF,CAAEJ,MAAO,EAAGC,wBAAyB,aAAcC,UAAWroC,EAAGsoC,aAAcC,cAAe,IAC9F,CAAEJ,MAAO,EAAGC,wBAAyB,QAASC,UAAWroC,EAAGsoC,aAAcC,cAAe,IACzF,CAAEJ,MAAO,EAAGC,wBAAyB,aAAcC,UAAWroC,EAAGsoC,aAAcC,cAAe,KAGlHvoC,EAAGgoC,WAAY,EACfp5B,YAAW,SAAS5O,GACnBA,EAAGgoC,WAAY,CACJ,GAAG,IAAKhoC,GAED4J,EAAe6rB,OAAOz1B,EAAG6nC,WAAY7nC,EAAG+nC,QAAS/nC,EAAGqnC,aAAcrnC,EAAGsnC,WAAY,GAAItnC,EAAGwoC,iBAAiB/lC,MAEnH,SAAwBC,GAGvB,IAFA,IAAI+lC,EAAU7lC,mBAAmBC,iBAAiBH,EAAU,CAAC,GAEpDlB,EAAI,EAAGA,EAAIinC,EAAQC,UAAU9nC,OAAQY,IAC1CinC,EAAQC,UAAUlnC,GAAG2iC,MAAQsE,EAAQE,YAAYr4B,gBAAgB,QAASm4B,EAAQC,UAAUlnC,GAAG2mC,OAG7FnoC,EAAG4oC,sBAAwB5oC,EAAG4oC,qBAAqBhoC,OAAS,IAC5D6nC,EAAQC,UAAYD,EAAQC,UAAUphC,QAAO,SAAAuhC,GAAC,OAAI7oC,EAAG4oC,qBAAqBt3B,SAASu3B,EAAEV,MAAM,KAEtD,mBAA9BW,4BACPL,EAAUK,0BAA0BL,EAASzoC,EAAGynC,OAAQloC,IAG5DS,EAAG+oC,QAAUN,EACfzoC,EAAGunC,QAAS,CACb,GACJ,EA7DIvnC,EAAGgpC,WAyEJ,SAAoB3kC,GAChBrE,EAAGunC,QAAS,EACZ39B,EAAeq/B,UAAU5kC,GACzB,IAAM6kC,EAAUvB,EAAiBwB,WAAW9kC,GAExC6kC,GACA9gC,OAAOlD,SAASyrB,OAAOuY,EAC/B,EA/EAlpC,EAAG4nC,YAAcA,EACjB5nC,EAAGopC,UAMH,WACIppC,EAAG6nC,WAAa,GAChB7nC,EAAGunC,QAAS,EACZvnC,EAAG+oC,QAAU,IACjB,EATA/oC,EAAG4nC,YAAcA,EACjB5nC,EAAGqpC,eA2DH,SAAwBhlC,EAAM+X,GAC1B,IAAIktB,EAAcjlC,EAAKklC,aAAaj5B,gBAAgB,MAAO8L,GAE3D,OAAmB,MAAfktB,GAA6C,GAAtBA,EAAY1oC,OAC5B0oC,EAAY,GAAGznC,MAGnB,EACX,EAjEA7B,EAAGsoC,aAAe,EA4F3BroC,KAAKkH,QAhBI,WACInH,EAAGkoC,gBAAkB,CACjB,CAAEC,MAAO,EAAGC,wBAAyB,OAAQC,UAAWroC,EAAGsoC,cAC3D,CAAEH,MAAO,EAAGC,wBAAyB,OAAQC,UAAWroC,EAAGsoC,cAC3D,CAAEH,MAAO,EAAGC,wBAAyB,aAAcC,UAAWroC,EAAGsoC,cACjE,CAAEH,MAAO,EAAGC,wBAAyB,QAASC,UAAWroC,EAAGsoC,cAC5D,CAAEH,MAAO,EAAGC,wBAAyB,aAAcC,UAAWroC,EAAGsoC,eAGrEtoC,EAAGwoC,gBAAkBxoC,EAAGkoC,gBACpBloC,EAAGwnC,oBACHxnC,EAAG4oC,qBAAuB5oC,EAAGwnC,kBAAkBlZ,MAAM,KAAKkb,KAAI,SAAAC,GAAC,OAAIC,SAASD,EAAE78B,OAAQ,GAAG,IACzF5M,EAAGwoC,gBAAkBxoC,EAAGkoC,gBAAgB5gC,QAAO,SAAAqiC,GAAE,OAAI3pC,EAAGkoC,gBAAgB0B,MAAK,SAAA7gC,GAAC,OAAI/I,EAAG4oC,qBAAqBt3B,SAASq4B,EAAGxB,MAAM,GAAC,IAErI,CAGJ,CAEA,OA7GAT,EAAoBv/B,QAAU,CAAC,qBAAsB,iBAAkB,mBAAoB,SAAU,cA6G9Fqc,CACX,CAEA,SAASmjB,EAAiB78B,GACtB7K,KAAKgoC,oBAAsB,EAC3BhoC,KAAK4pC,gBAAkB,CAAC,EAExB5pC,KAAKkpC,WAAa,SAAU9kC,GACxB,GAAwC,mBAA7BylC,yBACP,OAAOA,yBAAyBzlC,EAAMyG,GAG1C,GAAkB,2BAAdzG,EAAKq2B,MAEL,OAAa5vB,EAAO3F,KAAKd,EAAKq2B,OAGpC,IAAItU,EAAMtb,EAAO3F,KAAKd,EAAKq2B,MAAO/W,KAAKC,MAAMvf,EAAK0lC,kBAElD,IAAK9pC,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAC9B,OAAOhiB,EAER,IAAK,IAAI5kB,EAAI,EAAGA,EAAIvB,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAAyBxnC,OAAQY,IAC9E,GAAIvB,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAAyB5mC,GAAGwoC,QAAQlpC,QAAQuD,EAAK4lC,SAAW,EACzF,OAAOn/B,EAAO3F,KAAKlF,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAAyB5mC,GAAGk5B,MAAOz6B,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAAyB5mC,GAAG0oC,aACtIjqC,KAAK4pC,gBAAgBxlC,EAAK+jC,yBAAyB5mC,GAAG2oC,MAAM/jC,QAAQ,WAAY/B,EAAK4lC,QAIvF,OAAO7jB,CACT,CACJ,CAxKH/mB,EAAQ4I,OAAO,iBAAiBuc,UAAU,YAAa4iB,GACvD/nC,EAAQ4I,OAAO,iBAAiByd,QAAQ,mBAAoBiiB,GAE5DP,EAAmBj/B,QAAU,CAAC,WAC9Bw/B,EAAiBx/B,QAAU,CAAC,SAqK5B,CA1KD,CA0KGC,OAAO/I,Q,aC1KV,SAAWA,GAOP,SAAS+qC,IACL,MAAO,CACH3lB,SAAU,IACV5N,YAAa1J,aAAe,mDAC5B2J,aAAc,KACd5O,WAAYmiC,EACZtzB,kBAAkB,EAClB8O,MAAO,CACHC,WAAY,KACZC,oBAAqB,MAGjC,CAIA,SAASskB,EAA0B9qC,EAAY+I,EAASzI,EAASyqC,GAC7D,IAAItqC,EAAKC,KAETD,EAAGoL,KAiCH,YACQ7L,EAAWksB,gBAAgB,yBAA0B,OAAS8e,yBAC9DD,EAAuBE,8BAA8B/nC,MAErD,SAA6CC,GACzC1C,EAAGyqC,yBAA2B/nC,EAASsG,IAC3C,GAER,EAxCAhJ,EAAG0nB,iBAGH,WACI1nB,EAAG0qC,WAAY,EACfJ,EAAuB5iB,mBAAmBjlB,MAE1C,SAAkCC,GAC9B,IAAIilB,EAAajlB,EAASsG,KAC1B4e,aAAa,oBACb1a,oBAAoBya,EAAWE,qBAAsBF,EAAWG,mBAAmB,GACnFnZ,qBAAqB,gBACrBrG,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,IAChD,GACJ,EAbAG,EAAG2qC,mBAeH,SAA4BvuB,GACxBpc,EAAG0qC,WAAY,EACfJ,EAAuBK,mBAAmBvuB,GAAK3Z,MAE/C,SAA8BC,GAE1B,IAAIsmB,EAActmB,EAASsG,KACtBggB,IAGL9b,oBAAoB8b,EAAYhc,MAAOgc,EAAYC,QACnDlc,mBAAmB,wBACnBzE,EAAQpD,SAASC,KAAOtF,EAAQ,WAARA,CAAoB,KAChD,GACJ,EAYAN,EAAWyD,YAAYP,KAAKzC,EAAGoL,KACnC,CAEA,SAASk/B,EAAuBvmB,GAC5B,MAAO,CACHymB,4BAKJ,WACI,OAAOzmB,EAAMI,IAAIhX,aAAe,iDAAkD,CAAC,EACvF,EANIw9B,mBAQJ,SAA4BvuB,GACxB,OAAO2H,EAAMQ,KAAKpX,aAAe,kCAAmC,CAChEy9B,oBAAqBxuB,GAE7B,EAXIsL,iBAaJ,WACI,OAAO3D,EAAMQ,KAAKpX,aAAe,gCACrC,EACJ,CA3FA9N,EAAQ4I,OAAO,iBAAiBuc,UAAU,kBAAmB4lB,GAC7D/qC,EAAQ4I,OAAO,iBAAiByd,QAAQ,yBAA0B4kB,GAElEF,EAAgBjiC,QAAU,GAC1BmiC,EAAuBniC,QAAU,CAAC,SAgBlCkiC,EAA0BliC,QAAU,CAAC,aAAc,UAAW,UAAW,yBAwE5E,CA7FD,CA6FGC,OAAO/I,Q,aC7FV,SAAWA,GAOV,SAASwrC,EAAwBryB,EAAiBsyB,GACjD,IAAItmB,EAAY,CACfC,SAAU,IACVoB,MAAO,CACN0M,SAAU,IACV9H,WAAY,IACZsgB,WAAY,IACZC,YAAa,IACbC,cAAe,IACfC,OAAQ,KACRC,kBAAmB,KACnBC,YAAa,IACDC,qBAAsB,IACtBC,QAAS,MAEtBz0B,YAAa,SAAUgU,EAASC,GAC/B,OAAIA,EAAKC,YACD5d,aAAe2d,EAAKC,YAGpBvS,EAAgBsD,QAAQ,8BAA+B,kDAEhE,EACA/E,kBAAkB,EAClB7O,WAAYqjC,EACZz0B,aAAc,MAKT,SAASy0B,EAAyBhsC,EAAYC,EAAQsL,EAAQ0gC,EAAuB7hC,GAC1F,IAAI3J,EAAKC,KAETD,EAAGumC,UAAY,CAAC,CACfrzB,KAAM,UACMrR,MAAO,UACPmlC,KAAM,yBAChB,CACF9zB,KAAM,WACMrR,MAAO,WACPmlC,KAAM,0BAChB,CACF9zB,KAAM,WACMrR,MAAO,WACPmlC,KAAM,mBAChB,CACF9zB,KAAM,QACMrR,MAAO,QACPmlC,KAAM,0BAChB,CACF9zB,KAAM,YACMrR,MAAO,qBACPmlC,KAAM,4BAClByE,YAAY,GACV,CACFv4B,KAAM,WACMrR,MAAO,WACPmlC,KAAM,yBAClByE,YAAY,IAIbzrC,EAAG0rC,MAyBH,SAAexF,GACdlmC,EAAG2rC,SAAU,EAEb,IAAIC,EAAQ,CACXC,WAAY7rC,EAAG6rC,WACfC,SAAU5F,EAASrkC,MACnBuW,SAAUpY,EAAGuyB,SACbpa,WAAYnY,EAAGyqB,WACfshB,IAAK/rC,EAAG+rC,KAGTP,EAAsBQ,eAAeJ,GAAOnpC,MAE5C,WACCzC,EAAG2rC,SAAU,CACd,IAEA3rC,EAAG6rC,WAAave,KAAK6X,SAASl/B,SAAS,IAAIgmC,OAAO,EAAG,GACtD,EA1CAjsC,EAAGksC,OAiBH,WACC,IAAInR,EAAQ/6B,EAAGgrC,aAAelgC,EAAO2e,QAAQnM,KACzC8G,EAASpkB,EAAGirC,eAAiBngC,EAAOsZ,OAExCpkB,EAAG+rC,IAAMjhC,EAAO3F,KAAK41B,EAAO3W,EAAQ,CAAE+nB,UAAU,GACjD,EArBAnsC,EAAGosC,YAYH,WACC,OAAOpsC,EAAG+rC,IAAM,MAAQ/rC,EAAG6rC,UAC5B,EAbA7rC,EAAGqsC,WAAY,EACNrsC,EAAGssC,kBAyCZ,SAA2BC,GACvB,IAAKA,EAAOC,0BAA2B,CACnC,IAAIC,EACS,CACIC,YAAa1sC,EAAGkrC,OAAOyB,aACvBC,QAAS5sC,EAAGqrC,qBACZjzB,SAAUpY,EAAGkrC,OAAOtpC,GACpBirC,SAAUN,EAAOO,OAAOlrC,GACxBmrC,QAAS,sDAE1BvB,EAAsBc,kBAAkBG,GACxCF,EAAOC,2BAA4B,EACnCD,EAAOS,OACX,CACJ,EAtDShtC,EAAGitC,cAEH,SAAuBlkC,GACnBY,EAASP,KACLO,EAASkH,SACJq8B,YAAY,iBAEzB,EAiDTltC,EAAGmH,QAAU,WACZnH,EAAG6rC,WAAave,KAAK6X,SAASl/B,SAAS,IAAIgmC,OAAO,EAAG,IACrDjsC,EAAGksC,UACElsC,EAAGkrC,QAAUM,EAAsB2B,eACpCnrC,QAAQC,IAAIupC,EAAsB2B,cAClCntC,EAAGkrC,OAASM,EAAsB2B,aAClCntC,EAAGqrC,qBAAuB,aAG1BrrC,EAAGmrC,oBACNnrC,EAAGumC,UAAYvmC,EAAGumC,UAAU6G,OAAM,SAAUlH,GAC3C,OAAwD,GAAjDlmC,EAAGmrC,kBAAkBrqC,QAAQolC,EAASrkC,MAC9C,IAEF,CACD,CAEA,OAhHM0pC,EAAyBpjC,QAAU,CAAC,aAAc,SAAU,SAAU,wBAAyB,YAgH9Fqc,CACR,CAEA,SAASgnB,EAAsBznB,GAE3B9jB,KAAKktC,aAAe,CAAC,EAErB,IAAIE,EAAiBlgC,aAAe,uBAChCmgC,EAAiBngC,aAAe,kBAEvClN,KAAK+rC,eAAiB,SAAUJ,GAC/B,OAAO7nB,EAAMQ,KAAK8oB,EAAiB,iBAAkBzB,EAAO,CAC3DlhB,QAAS,CACRC,cAAc,IAGjB,EAEA1qB,KAAKstC,oBAAsB,SAAUC,GACpC,OAAOzpB,EAAMQ,KAAK8oB,EAAiB,sBAAuBG,EAAO,CAChE9iB,QAAS,CACRC,cAAc,IAGjB,EAEA1qB,KAAKqsC,kBAAoB,SAAUG,GAC/B,OAAO1oB,EAAMQ,KAAK+oB,EAAiB,oBAAqBb,EAAiB,CACrE/hB,QAAS,CACLC,cAAc,IAG1B,CACD,CAnLAtrB,EAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkBqmB,GAC5DxrC,EAAQ4I,OAAO,iBAAiByd,QAAQ,wBAAyB8lB,GAEjEX,EAAwB1iC,QAAU,CAAC,UAAW,eAC9CqjC,EAAsBrjC,QAAU,CAAC,QAgLjC,CArLD,CAqLGC,OAAO/I,Q,aCrLV,SAAWA,GAKV,SAASouC,EAAcpiB,GACtB,IAAI7G,EAAY,CACfC,SAAU,IACVoB,MAAO,CACN6nB,eAAgB,MAEjB72B,YAAawU,EAAQvP,QAAQ,6BAA8B,mDAC3D/E,kBAAkB,EAClBD,aAAc,KACd5O,WAAYylC,GAKb,SAASA,EAAwBpuC,EAAYwkB,EAAOta,EAAW7J,GAC9D,IAAII,EAAKC,KAETD,EAAG6X,WA0EH,WAEA,EA3EA7X,EAAG4tC,UAGH,WAcC,SAASC,EAAgBpkC,GACxB,IAAIzJ,EAAKC,KACTD,EAAG8tC,WAYH,WACM9tC,EAAGyG,QAIRzG,EAAG+tC,SAAU,EACb/tC,EAAGguC,MAAQ,GACXjqB,EAAMI,IAAIhX,aAAe,sBAAuB,CAC/CiX,OAAQ,CACP6pB,MAAOjuC,EAAGyG,MACVynC,QAASluC,EAAG4E,SAAW,IAExB8lB,QAAS,CACRC,cAAc,KAEbloB,MAAK,SAAUC,GACjB,IAAIC,EAASC,mBAAmBC,iBAAiBH,GAC7CC,EAAO8B,SACVzE,EAAGmuC,MAAO,EACVvuC,GAAS,WACRI,EAAG+tC,SAAU,EACb/tC,EAAGmuC,MAAO,EACVnuC,EAAGyG,MAAQ,GACXzG,EAAG4E,QAAU,EACd,GAAG,OAEH5E,EAAG+tC,SAAU,EACb/tC,EAAGguC,MAAQrrC,EAAOiC,QAEpB,IACD,EAzCA5E,EAAG0Y,MAOH,WACCjP,EAAUmP,MACX,EARA5Y,EAAGoL,KAEH,WAEA,CAuCD,CA5DA3B,EAAUL,KAAK,CACdF,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCjmB,YAAa1J,aAAe,wDAC5Bu4B,qBAAqB,EACrB0I,eAAe,EACflmC,WAAY2lC,EACZ/2B,aAAc,KACdiF,OAAQ,CACR,EACAhF,kBAAkB,IAGnB82B,EAAgB1lC,QAAU,CAAC,aAkDvBnI,EAAG0tC,iBACNnuC,EAAWi8B,gBAAiB,EAE9B,EAQAj8B,EAAWyD,YAAYP,KAAKzC,EAAG6X,WAChC,CAEA,OAtFA81B,EAAwBxlC,QAAU,CAAC,aAAc,QAAS,YAAa,YAsFhEqc,CACR,CAvGAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,gBAAiBipB,GAE3DA,EAActlC,QAAU,CAAC,UAsGzB,CAzGD,CAyGGC,OAAO/I,Q,aCzGV,SAAWA,GAOP,SAASgvC,EAAwBhjB,GAC7B,IAAI7G,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAawU,EAAQvP,QAAQ,8BAA+B,mDAC5D/E,kBAAkB,EAClB7O,WAAYomC,EACZx3B,aAAc,MAKlB,SAASw3B,EAAyBC,GAC9B,IAAIvuC,EAAKC,KAWT,SAASuuC,EAAgBpf,GACrB,OAAiC,IAA1BA,EAASqf,YACpB,CA6CA,SAASC,EAAoBC,GACzBJ,EAAsBG,oBAAoBC,GAAMlsC,MAAK,SAACC,GAElD,IADA,IAAIksC,EAAahsC,mBAAmBC,iBAAiBH,EAAU,IACtDlB,EAAI,EAAGA,EAAIotC,EAAWhuC,OAAQY,IAAK,CACxC,IAAIqtC,EAAMD,EAAWptC,GACPxB,EAAGwuC,gBAAgBK,KAG7BA,EAAIC,SAAWD,EAAIC,QAE3B,CACA9uC,EAAG+uC,WAAaH,EAChB5sC,QAAQC,IAAI,aAAcjC,EAAG+uC,WACjC,GACJ,CAtEA/uC,EAAGgvC,KAAO/gC,eAAqB,KAE/BjO,EAAGoL,KAsEH,WACIpL,EAAGivC,KAAOjvC,EAAGkvC,eACbltC,QAAQC,IAAI,OAAQjC,EAAGivC,MAEnBjvC,EAAGivC,MACHP,EAAoB1uC,EAAGivC,KAE/B,EA5EAjvC,EAAGkvC,aAiDH,WACI,OAAOhhC,0BAA0B,IAAKhJ,SAASC,KACnD,EAlDAnF,EAAG0uC,oBAAsBA,EACzB1uC,EAAGmvC,kBA2BH,WACInvC,EAAGovC,QAAS,EACZ,IAAIC,EAASrvC,EAAGsvC,uBAEZtvC,EAAGivC,KACHV,EAAsBgB,qBAAqBvvC,EAAGivC,KAAMI,GAAQ5sC,MAAK,SAACC,GAC9DV,QAAQC,IAAI,uBAAwBS,GACpC1C,EAAGovC,QAAS,EACCxsC,mBAAmBC,iBAAiBH,GACtC+B,QACPzE,EAAGyE,SAAU,EAEbzE,EAAGyE,SAAU,CAErB,IAEAzC,QAAQC,IAAI,sBAEpB,EA5CAjC,EAAGsvC,qBAOH,WAEI,IADA,IAAID,EAAS,GACJ7tC,EAAI,EAAGA,EAAIxB,EAAG+uC,WAAWnuC,OAAQY,IAAK,CAC3C,IAAIqtC,EAAM7uC,EAAG+uC,WAAWvtC,GACpBguC,EAAYX,EAAIC,QAChBW,EAAUjB,EAAgBK,IAG1BY,IAAYD,IAGJC,GAAWD,IADnBH,EAAO5/B,KAAKo/B,EAAIjtC,GAKxB,CACA,OAAOytC,CACX,EAvBArvC,EAAGwuC,gBAAkBA,EA0ErBxuC,EAAGmH,QAAU,WACTnH,EAAGoL,MACP,CACJ,CAEA,OA3FAkjC,EAAyBnmC,QAAU,CAAC,yBA2F7Bqc,CACX,CAEA,SAAS+pB,EAAsBxqB,GAC3B,IAAIiT,EAAc7pB,aAAe,2BAEjClN,KAAKyuC,oBAAsB,SAAUC,GACjC,OAAO5qB,EAAMI,IAAI6S,EAAc,6BAA8B,CACzD5S,OAAQ,CACJuqB,KAAMA,IAGlB,EAEA1uC,KAAKsvC,qBAAuB,SAAUZ,EAAMU,GACxC,OAAOtrB,EAAMQ,KAAKyS,EAAc,6BAA8B,CAC1DiY,KAAMN,EAAMe,YAAaL,GAEjC,CACJ,CA/HAhwC,EAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkB6pB,GAC5DhvC,EAAQ4I,OAAO,iBAAiByd,QAAQ,wBAAyB6oB,GAEjEF,EAAwBlmC,QAAU,CAAC,WACnComC,EAAsBpmC,QAAU,CAAC,QA6HpC,CAlID,CAkIGC,OAAO/I,Q,aClIV,SAAWA,GAKP,SAASK,EAAwBqkB,GAC7B9jB,KAAKuC,oBAAsB,SAAUL,GACjC,OAAO4hB,EAAMI,IAAIhX,aAAe,+BAAgC,CAAEiX,OAAQ,CAAEjiB,KAAAA,IAChF,EAEAlC,KAAKuH,YAAc,SAAUrF,GACzB,OAAO4hB,EAAMI,IAAIhX,aAAe,uBAAwB,CAAEiX,OAAQ,CAAEjiB,KAAAA,IACxE,EAEAlC,KAAKkD,qBAAuB,SAAUhB,EAAM6N,EAAM5M,EAAUusC,EAAiBhB,GACzE,OAAO5qB,EAAMQ,KAAKpX,aAAe,gCAAiC,CAAEpC,KAAM5I,EAAMW,KAAMkN,EAAM1J,SAAUlD,GAAY,GAAI7B,gBAAiBouC,EAAiBV,KAAMN,GAAQ,IAC1K,EAEA1uC,KAAK0G,qBAAuB,SAAUxE,EAAM8rC,GACxC,OAAOlqB,EAAMQ,KAAKpX,aAAe,gDAAiD,CAAEpC,KAAM5I,EAAMsE,MAAOwnC,GAC3G,CACJ,CACD7lC,OAAO/I,QArBE4I,OAAO,iBAAiByd,QAAQ,+BAAgChmB,GAExEA,EAAwByI,QAAU,CAAC,QAmBtC,CAtBD,E,aCAA,SAAW9I,GAKP,SAAS+U,EAAc2P,EAAO5U,EAAIrE,GACjC,IACI8kC,EACAC,EAFAC,EAAU3iC,aAAe,cAI7B,MAAO,CACN8wB,kBAiFD,WACC2R,EAAkB,KAClBC,EAAuB,IACxB,EAnFCtf,YAyFD,SAAqBwf,GACpB,OAAKA,GAASH,EAAwBA,EAEtCA,EAAkB7rB,EAAMI,IAAI2rB,EAAU,2BAEvC,EA7FFrf,aAoFE,SAAsBnvB,GACrB,OAAOyiB,EAAMQ,KAAKurB,EAAU,4BAA6BxuC,EAC1D,EArFC8U,eAgID,SAAyBivB,EAAKpvB,GAC7B,OAAO8N,EAAMI,IAAI2rB,EAAU,iBAAkB,CACzC1rB,OAAQ,CACPihB,IAAKA,EACLpvB,KAAMA,IAGT,EAtIFqb,kBAAmBA,EACnB0e,gCAAiCA,EAC3BC,yBA2FP,SAAkCF,GAGjC,IAAIG,EAAW/gC,EAAG2J,QAYlB,OAXA+2B,EAAuBK,EAAS72B,QAEhClK,EAAG6B,IAAI,CAACsgB,GAAkB,GAC3B0e,GAAgC,KAChCvtC,MAAK,SAAU0tC,GACZD,EAASj2B,QAAQ,CAChBkX,QAASgf,EAAU,GAAGnnC,KACtBonC,OAAQD,EAAU,GAAGnnC,MAEvB,IAEM6mC,CACR,EA1GOQ,4BAqIJ,SAAqC9d,EAAU9H,GAE3C,IAAIrG,EAAS,CACTmO,SAAUA,EACV9H,WAAYA,GAGhB1G,EAAMQ,KAAKurB,EAAU,8BAA+B,CAAC,EAAG,CACpD1rB,OAAQA,EACRsG,QAAS,CACLC,cAAc,IAG1B,EAjJIkY,uBAuDJ,SAAgCpY,EAAY8H,GAExC,OADS9H,EAAWtpB,eAEhB,IAAK,QACD2J,EAAOyL,GAAG,8BAA+B,CAAEC,GAAI+b,IAC/C,MACJ,IAAK,gBACDznB,EAAOyL,GAAG,yBAA0B,CAAEC,GAAI+b,IAC1C,MACJ,IAAK,OACDznB,EAAOyL,GAAG,yBAA0B,CAAEyQ,MAAOuL,IAC7C,MACJ,IAAK,QACDrtB,SAASC,KAAOgI,aAAe,SAAWolB,EAGtD,EAtEIoQ,eAiDJ,SAAwBlY,GAEpB,MADwB,CAAC,QAAS,gBAAiB,OAAQ,SAClC3pB,QAAQ2pB,EAAWtpB,gBAAkB,CAClE,EAnDI4jC,kCAiJJ,SAA2CuL,GAEvC,OAAOvsB,EAAMQ,KAAKurB,EAAU,oCAAqCQ,EAAS,CACtE5lB,QAAS,CACLC,cAAc,IAG1B,EAvJIqa,sBAIJ,SAA+BuL,GAE3B,OADSA,EAAepvC,eAEpB,IAAK,QACD,OAAO,EACX,IAAK,gBACD,OAAO,EACX,IAAK,OACD,OAAO,EACX,IAAK,QACD,OAAO,EACX,IAAK,YACD,OAAO,EACX,IAAK,gBACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,QACI,OAAO,EAEnB,EAvBIqvC,wBAyBJ,SAAiCC,GAC7B,OAAQA,GACJ,KAAK,EACD,MAAO,QACX,KAAK,EACD,MAAO,gBACX,KAAK,EACD,MAAO,OACX,KAAK,EACD,MAAO,QACX,KAAK,EACD,MAAO,YACX,KAAK,EACD,MAAO,gBACX,KAAK,EACD,MAAO,UACX,QACI,MAAO,OAEnB,GA2DH,SAAST,EAAgCU,GACxC,OAAO3sB,EAAMI,IAAI2rB,EAAU,kCAAmC,CAC7D1rB,OAAQ,CACPssB,SAAUA,IAGb,CAEA,SAASpf,EAAkBof,GAC1B,OAAO3sB,EAAMI,IAAI2rB,EAAU,oBAAqB,CAC/C1rB,OAAQ,CACVssB,SAAUA,IAGV,CAkCD,CACDtoC,OAAO/I,QA9KE4I,OAAO,iBAAiByd,QAAQ,sBAAuBtR,GAE/DA,EAAcjM,QAAU,CAAC,QAAS,KAAM,SA4K3C,CA/KD,E,aCAA,SAAU9I,GAKN,SAAS8U,EAAuB4P,GAC5B9jB,KAAKkW,6BAA+B,SAASF,EAAMumB,GAC/C,OAAOzY,EAAMI,IAAIhX,aAAe,oDAAsDwuB,EAAE2J,MAAM,CAACrvB,KAAMA,EAAMumB,MAAOA,IACtH,CACJ,CAEDp0B,OAAO/I,QAVE4I,OAAO,iBAAiByd,QAAQ,gCAAiCvR,GAEzEA,EAAuBhM,QAAU,CAAC,QAQrC,CAXD,E,aCAA,SAAW9I,GAKV,SAASqzB,EAAgB3O,GACxB,IAAI+rB,EAAU3iC,aAAe,iBAE7B,MAAO,CACN0lB,WAMD,SAAoBpI,EAAY8H,GAC/B,OAAOxO,EAAMI,IAAI2rB,EAAU,aAAc,CACxC1rB,OAAQ,CACPqG,WAAYA,EACZ8H,SAAUA,IAGb,EAZCU,YAcD,SAAqBxI,EAAY8H,GAChC,OAAOxO,EAAMQ,KAAKurB,EAAU,cAAe,CAAC,EAAG,CAC9C1rB,OAAQ,CACPqG,WAAYA,EACZ8H,SAAUA,IAGb,EApBCW,eAsBD,SAAwBzI,EAAY8H,GACnC,OAAOxO,EAAK,OAAQ+rB,EAAU,iBAAkB,CAC/C1rB,OAAQ,CACPqG,WAAYA,EACZ8H,SAAUA,IAGb,EA5BCS,aA8BD,SAAsB0d,EAAUjmB,GAC/B,IAAIrG,EAAS,CACZssB,SAAUA,GAMX,OAHIjmB,IACHrG,EAAOqG,WAAaA,GAEd1G,EAAMI,IAAI2rB,EAAU,eAAgB,CAC1C1rB,OAAQA,GAEV,EACD,CACEhc,OAAO/I,QAtDD4I,OAAO,iBAAiByd,QAAQ,yBAA0BgN,GAElEA,EAAgBvqB,QAAU,CAAC,QAoD3B,CAvDD,E,aCAA,SAAW9I,GAKV,SAASmK,EAAsBua,EAAOxkB,EAAYqK,GACjD3J,KAAKoL,yBAA2B,SAAUlJ,GACzC,OAAO4hB,EAAMI,IAAIhX,aAAe,oCAAqC,CAAEiX,OAAQ,CAAEjiB,KAAMA,IACxF,EAEAlC,KAAK+J,0BAA4B,SAAUikC,GAC1C,OAAOlqB,EAAMI,IAAIhX,aAAe,qCAAsC,CAAEiX,OAAQ,CAAE6pB,MAAOA,IAC1F,EAEAhuC,KAAKiL,eAAiB,SAAU/I,EAAMwuC,GACrC,OAAO5sB,EAAMQ,KAAKpX,aAAe,kCAAmC,CAAEhL,KAAMA,EAAMwuC,YAAaA,GAChG,EAEA1wC,KAAKyK,mBAAqB,WACzB,OAAOd,EAAeoE,iBAAiB,yBAAyBvL,MAAK,SAAUC,GAC9E,IAAIkuC,EAAMluC,EAASsG,KACf6nC,EAAmB,GAIvB,OAFAC,OAASF,EAAIxqC,QAAQ,eAAgB,IAEjC0qC,OAAOlwC,OAAS,KACU,IAAzBkwC,OAAOhwC,QAAQ,KAClB+vC,EAAiBphC,KAAKqhC,QAGtBD,EAAmBC,OAAOxiB,MAAM,KAG7BuiB,EAAiBjwC,OAAS,GACtBiwC,EAAiBtxC,EAAWwxC,cAAc,EAAGF,EAAiBjwC,OAAS,IAGzE,EACR,GACD,CACD,CACEwH,OAAO/I,QAxCD4I,OAAO,iBAAiByd,QAAQ,6BAA8Blc,GAEtEA,EAAsBrB,QAAU,CAAC,QAAS,aAAc,iBAsCxD,CAzCD,E,aCAA,SAAW9I,GAKP,SAASwgB,EAAmBkE,GAC3B,IAAI2J,EAAcvgB,aAAe,oBAEjClN,KAAK+wC,qBAAuB,SAAUxU,EAAOlb,EAAWC,GACvD,IAAI0vB,EAAU3vB,GAAaC,EAAW,mCAAqC,uBAC3E,OAAOwC,EAAMI,IAAIuJ,EAAcujB,EAAQ,CACtC7sB,OAAQ,CACPoY,MAAOA,EACPlb,UAAWA,EACXC,QAASA,IAGZ,EAEAthB,KAAKihB,sBAAwB,SAAUsb,EAAOlb,EAAWC,GACxD,IAAI0vB,EAAU3vB,GAAaC,EAAW,oCAAsC,wBAC5E,OAAOwC,EAAMI,IAAIuJ,EAAcujB,EAAQ,CACtC7sB,OAAQ,CACPoY,MAAOA,EACPlb,UAAWA,EACXC,QAASA,IAGZ,EAEGthB,KAAKygB,uBAAyB,SAAU8b,GACpC,OAAOzY,EAAMI,IAAIhX,aAAe,2CAA6CwuB,EAAE2J,MAAM,CAAE9I,MAAOA,IAClG,EAEAv8B,KAAK0gB,mCAAqC,SAAU6b,EAAOlb,EAAWC,GAClE,OAAOwC,EAAMI,IAAIhX,aAAe,uDAAyDwuB,EAAE2J,MAAM,CAAE9I,MAAOA,EAAOlb,UAAWA,EAAWC,QAASA,IACpJ,EAEAthB,KAAK+gB,mBAAqB,SAAUwb,GAChC,OAAOzY,EAAMI,IAAIhX,aAAe,uCAAyCwuB,EAAE2J,MAAM,CAAE9I,MAAOA,IAC9F,EAEAv8B,KAAKghB,+BAAiC,SAAUub,EAAOlb,EAAWC,GAC9D,OAAOwC,EAAMI,IAAIhX,aAAe,mDAAqDwuB,EAAE2J,MAAM,CAAE9I,MAAOA,EAAOlb,UAAWA,EAAWC,QAASA,IAChJ,CACJ,CACDnZ,OAAO/I,QA7CE4I,OAAO,iBAAiByd,QAAQ,2BAA4B7F,GAEpEA,EAAmB1X,QAAU,CAAC,QA2CjC,CA9CD,E,YCAA,SAAU9I,GAKN,SAAS6U,EAAa6P,GAClB9jB,KAAKiW,sCAAwC,SAASmvB,EAAKpvB,GACvD,OAAO8N,EAAMI,IAAIhX,aAAe,mDAAqDwuB,EAAE2J,MAAM,CAACD,IAAKA,EAAKpvB,KAAKA,IACjH,EAEAhW,KAAKixC,gCAAkC,WACnC,OAAOntB,EAAMI,IAAIhX,aAAe,4CACpC,EAEAlN,KAAKkxC,gBAAkB,WACnB,OAAOptB,EAAMI,IAAIhX,aAAe,4BACpC,CACJ,CACD/E,OAAO/I,QAjBE4I,OAAO,iBAAiByd,QAAQ,qBAAsBxR,GAE9DA,EAAa/L,QAAU,CAAC,QAe3B,CAlBD,E,aCAA,SAAW9I,GAKP,SAASs9B,EAAe5Y,GACvB,IAAI+rB,EAAU3iC,aAAe,eACzByiC,EAAkB,GAEtB,MAAO,CACN3R,kBAMD,WACC2R,EAAkB,EACnB,EAPOzS,WAUP,SAAoBX,EAAOlb,EAAWC,EAASwuB,GACxC,IAAI3zB,EAAM,WAChB,OAAK2zB,GAASH,EAAgBxzB,KAE9BwzB,EAAgBxzB,GAAO2H,EAAMI,IAAI2rB,EAAU,cAAgBnU,EAAE2J,MAAM,CAAC9I,MAAOA,EAAOlb,UAAWV,OAAOU,GAAWR,SAAUS,QAASX,OAAOW,GAAST,aAFvG8uB,EAAgBxzB,EAIzD,EAfI4hB,YAiBJ,SAAqBf,GACjB,OAAOlZ,EAAMQ,KAAKurB,EAAU,cAAe7S,EAC/C,EAlBImU,WAoBJ,SAAoBC,GAChB,OAAOttB,EAAMQ,KAAKurB,EAAU,aAAcuB,EAC9C,EACJ,CACDjpC,OAAO/I,QApCE4I,OAAO,iBAAiByd,QAAQ,uBAAwBiX,GAEhEA,EAAex0B,QAAU,CAAC,QAkC7B,CArCD,E,aCAA,SAAW9I,GAKP,SAASiyC,EAAcvtB,EAAO5U,EAAIrE,GACjC,IAAIglC,EAAU3iC,aAAe,cACzByiC,EAAkB,GAEtB,MAAO,CACN3R,kBAID,WACC2R,EAAkB,IACnB,EALC2B,iBAQD,SAA0Bn1B,EAAK2zB,GAC9B,OAAKA,GAASH,EAAgBxzB,KAE9BwzB,EAAgBxzB,GAAO2H,EAAMI,IAAI2rB,EAAU,yBAA2BnU,EAAE2J,MAAM,CAAClpB,IAAKA,MAFzCwzB,EAAgBxzB,EAI5D,EACD,CACDhU,OAAO/I,QAzBE4I,OAAO,iBAAiByd,QAAQ,sBAAuB4rB,GAE/DA,EAAcnpC,QAAU,CAAC,QAAS,KAAM,SAuB3C,CA1BD,E,aCAA,SAAW9I,GAKP,SAASyiB,EAAgBiC,GACrB9jB,KAAKsiB,WAAa,SAAUvS,GACxB,OAAO+T,EAAMQ,KAAKpX,aAAe,sBAAuB,CAAE6C,KAAMA,GACpE,CACJ,CACD5H,OAAO/I,QATE4I,OAAO,iBAAiByd,QAAQ,uBAAwB5D,GAEhEA,EAAgB3Z,QAAU,CAAC,QAO9B,CAVD,E,aCAA,SAAW9I,GAKP,SAASmyC,EAAe/nC,EAAWoiB,EAAW9rB,EAAaoP,EAAIxP,GAuC3D,SAAS8xC,EAAKC,GACNA,EAAaC,sBACsB,GAA/BD,EAAaE,iBACbnoC,EAAUL,KAAKK,EAAUooC,MAAM,CAC3B7qB,MAAOrnB,EAAWmyC,QAAQ,8BAC1B5E,YAAavtC,EAAWmyC,QAAQ,gCAChCC,GAAI,QACJtvC,MAAK,WACLivC,EAAaM,SAAQ,GACrBN,EAAaE,gBAAiB,CAClC,IAEAF,EAAaE,gBAAiB,GAG9BF,EAAaO,YACbP,EAAaQ,OACbnyC,EAAYkP,UAGxB,CA1DAhP,KAAKkyC,YACLlyC,KAAKmyC,eACLnyC,KAAK2xC,eACL3xC,KAAKoyC,MAELpyC,KAAK4X,WAAa,SAASyqB,GACvBriC,KAAKkyC,YAAc7P,EACnBriC,KAAK2xC,gBAAiB,EACtB3xC,KAAK+xC,UACLM,aAAaC,QAAQ,6BAA8BjQ,EACvD,EAEAriC,KAAKuyC,MAAQ,WACTH,MAAQxmB,EAAU4lB,EAAM,IAAM,GAAG,EAAOxxC,KAC5C,EAEAA,KAAKiyC,KAAO,WACRrmB,EAAU7jB,OAAOqqC,MACrB,EAEApyC,KAAK+xC,QAAU,SAASS,GACpBxyC,KAAKmyC,eAAiBxxB,SAAS4c,IAAIv9B,KAAKkyC,YAAa,KAElDM,GACC1yC,EAAY2yC,oBAAoBjwC,MAAK,WACjCT,QAAQC,IAAI,2BAChB,GAER,EAEAhC,KAAK0xC,kBAAoB,WACrB,OAAO/wB,SAAS4c,IAAI,EAAG,KAAOv9B,KAAKmyC,cACvC,EAEAnyC,KAAKgyC,QAAU,WACX,OAAOrxB,SAAW3gB,KAAKmyC,cAC3B,CAuBJ,CACDhqC,OAAO/I,QAjEE4I,OAAO,iBAAiByd,QAAQ,uBAAwB8rB,GAEhEA,EAAerpC,QAAU,CAAC,YAAa,YAAa,qBAAsB,KAAM,aA+DnF,CAlED,E,aCAA,SAAU9I,GAKN,SAASszC,EAAW5uB,GAChB9jB,KAAK2yC,qBAAuB,SAASC,EAAQC,GACzC,OAAO/uB,EAAMQ,KAAKpX,aAAe,oCAAqC,CAAC4lC,OAAQF,EAAQG,SAAUF,GACrG,EAEA7yC,KAAK+L,MAAQ,SAAS6mC,EAAQC,GAC1B,OAAO/uB,EAAMQ,KAAKpX,aAAe,mBAAoB,CAAC4lC,OAAQF,EAAQG,SAAUF,GACpF,EAEA7yC,KAAKgzC,gBAAkB,SAASJ,EAAQC,EAAUI,EAAUC,EAAWC,EAAUnF,EAAOoF,GACpF,OAAOtvB,EAAMQ,KAAKpX,aAAe,+BACjC,CACI4lC,OAAQF,EACRG,SAAUF,EACVnmC,SAAUumC,EACV7tB,UAAW8tB,EACX7tB,SAAU8tB,EACV3sC,MAAOwnC,EACPqF,eAAgBD,GAExB,CACJ,CACDjrC,OAAO/I,QA1BE4I,OAAO,iBAAiByd,QAAQ,mBAAoBitB,GAE5DA,EAAWxqC,QAAU,CAAC,QAwBzB,CA3BD,E,aCAA,SAAW9I,GAKV,SAASyjB,EAAaiB,GACrB9jB,KAAKgjB,eAAiB,SAAU5D,GAC/B,OAAO0E,EAAMI,IAAIhX,aAAe,2BAA4B,CAC3DiX,OAAQ,CACPmvB,iBAAiB,IAGpB,CACD,CACEnrC,OAAO/I,QAbD4I,OAAO,iBAAiByd,QAAQ,qBAAsB5C,GAE9DA,EAAa3a,QAAU,CAAC,QAWxB,CAdD,E,aCAA,SAAU9I,GAKN,SAAS8f,EAAY4E,GACjB9jB,KAAKmf,eAAiB,SAASC,GAC3B,OAAO0E,EAAMI,IAAIhX,aAAe,2BAA6BwuB,EAAE2J,MAAM,CAACjmB,OAAQA,IAClF,EAEApf,KAAK0f,iBAAmB,SAASF,GAC7B,OAAOsE,EAAMI,IAAIhX,aAAe,6BAA+BwuB,EAAE2J,MAAM,CAAE7lB,SAAUA,IACvF,CACJ,CACDrX,OAAO/I,QAbE4I,OAAO,iBAAiByd,QAAQ,oBAAqBvG,GAE7DA,EAAYhX,QAAU,CAAC,QAW1B,CAdD,E,aCAA,SAAU9I,GAKN,SAASU,EAAYgkB,EAAOzb,EAAS/I,GACjCU,KAAKgP,OAAS,WACV8U,EAAMQ,KAAKpX,aAAe,kBAAmB,CAAC,GAAG1K,MAAK,SAASC,GAC3DuK,cAAc,oBACV1N,EAAWwM,aAAqB,OAAkB,gBAClDxM,EAAWwM,aAAqB,OAAkB,iBAElDrJ,EAASsG,KACTZ,OAAOlD,SAASC,KAAOzC,EAASsG,KAEhCZ,OAAOlD,SAASC,KAAOgI,YAI/B,IAAG,WAEF/E,OAAOlD,SAASC,KAAOgI,YAExB,GACJ,EAEAlN,KAAKuzC,gBAAkB,SAAUptB,EAAKqtB,EAAYC,GAC9C,OAAO3vB,EAAMQ,KAAKpX,aAAe,2BAA4B,CAACiZ,IAAKA,EAAIqtB,WAAYA,EAAWC,cAAeA,GACjH,EAEAzzC,KAAK43B,oCAAsC,WACvC,OAAO9T,EAAMI,IAAIhX,aAAe,+CACpC,EAEAlN,KAAK+V,6BAA+B,SAASqvB,EAAKpvB,GAC9C,OAAO8N,EAAMI,IAAIhX,aAAe,yCAA2CwuB,EAAE2J,MAAM,CAAED,IAAKA,EAAKpvB,KAAMA,IACzG,EAEAhW,KAAK0zC,cAAgB,SAAS3jC,GAC1B,OAAO+T,EAAMQ,KAAKpX,aAAe,yBAA0B6C,EAC/D,EAEA/P,KAAK2zC,2BAA6B,SAAU5jC,GACxC,OAAO+T,EAAMI,IAAIhX,aAAe,sCACpC,EAEAlN,KAAKiZ,oBAAsB,SAAU26B,EAAethB,GAChD,OAAOxO,EAAMI,IAAIhX,aAAe,gCAAkCwuB,EAAE2J,MAAM,CAAEuO,cAAeA,EAAethB,SAAUA,IACxH,EAEAtyB,KAAKma,uBAAyB,SAAUy5B,EAAethB,EAAUuhB,GAChE,OAAO/vB,EAAMI,IAAIhX,aAAe,mCAAqCwuB,EAAE2J,MAAM,CAAEuO,cAAeA,EAAethB,SAAUA,EAAUuhB,MAAOA,IACzI,EAEA7zC,KAAK4T,iBAAmB,SAASzQ,EAAU2wC,GAC1C,OAAOhwB,EAAMQ,KAAKpX,aAAe,4BAA6B,CAAC/J,SAAUA,EAAU2wC,YAAaA,GACjG,EAEA9zC,KAAK2b,SAAW,WACZ,OAAOmI,EAAK,OAAQ5W,aAAe,oBACvC,EAEAlN,KAAKyb,8BAAgC,SAASs4B,GAC1C,OAAOjwB,EAAMQ,KAAKpX,aAAe,yCAA0C6mC,EAC/E,EAEA/zC,KAAKkc,uBAAyB,SAASC,GACnC,OAAO2H,EAAMI,IAAIhX,aAAe,mCAAqCwuB,EAAE2J,MAAM,CAAClpB,IAAKA,IACvF,EAEAnc,KAAKqc,gCAAkC,SAASF,GAC5C,OAAO2H,EAAMI,IAAIhX,aAAe,4CAA8CwuB,EAAE2J,MAAM,CAAElpB,IAAKA,IACjG,EAEAnc,KAAKg0C,gBAAkB,WACnB,OAAOlwB,EAAMI,IAAIhX,aAAe,2BACpC,EAEAlN,KAAKi0C,sBAAwB,WACzB,OAAOnwB,EAAMI,IAAIhX,aAAe,mBACpC,EAEAlN,KAAKuR,WAAa,WACd,OAAOuS,EAAMI,IAAIhX,aAAe,yBACpC,EAEAlN,KAAKwS,2BAA6B,WAC9B,OAAOsR,EAAMI,IAAIhX,aAAe,kCACpC,EAEAlN,KAAKuR,WAAa,WACd,OAAOuS,EAAMI,IAAIhX,aAAe,yBACpC,EAEAlN,KAAKgR,iBAAmB,WACpB,OAAO8S,EAAMI,IAAIhX,aAAe,+BACpC,EAEAlN,KAAKiR,gBAAkB,WACnB,OAAO6S,EAAMI,IAAIhX,aAAe,8BACpC,EAEAlN,KAAKwe,6BAA+B,WAChC,OAAOsF,EAAMI,IAAIhX,aAAe,oCACpC,EAEAlN,KAAKwQ,mBAAqB,SAAU0jC,GAChC,OAAOpwB,EAAMQ,KAAKpX,aAAe,iCAAkCgnC,EACvE,EAEAl0C,KAAKub,iBAAmB,SAASxL,GAChC,OAAO+T,EAAMQ,KAAKpX,aAAe,+BAAgC6C,EAClE,EAEA/P,KAAK4S,sBAAwB,SAAS7C,GACrC,OAAO+T,EAAMQ,KAAKpX,aAAe,oCAAqC6C,EACvE,EAEA/P,KAAKyyC,kBAAoB,WACrB,OAAO3uB,EAAMI,IAAIhX,aAAe,6BACpC,EAEAlN,KAAK+W,gBAAkB,WACnB,OAAO+M,EAAMI,IAAIhX,aAAe,6CACpC,EACAlN,KAAKse,aAAe,WAChB,OAAOwF,EAAMI,IAAIhX,aAAe,4BACpC,EACAlN,KAAKm0C,sBAAwB,SAAUh4B,EAAK6xB,GACxC,OAAOlqB,EAAMI,IAAIhX,aAAe,kCAAoCwuB,EAAE2J,MAAM,CAAElpB,IAAKA,EAAK6xB,MAAOA,IACnG,EACAhuC,KAAKmH,WAAa,WACd,OAAO2c,EAAMI,IAAIhX,aAAe,sBACpC,CACJ,CACD/E,OAAO/I,QAtIE4I,OAAO,iBAAiByd,QAAQ,qBAAsB3lB,GAE9DA,EAAYoI,QAAU,CAAC,QAAS,UAAW,aAoI9C,CAvID,E,aCAC,SAAS9I,GAGN,SAASg1C,EAAmBC,EAAgBC,EAAiB/7B,EAAiBg8B,GAE1EF,EACKvZ,MAAM,YAAa,CAChBnJ,SAAU,wBAEbmJ,MAAM,oBAAqB,CACxB3U,IAAK,WACLvP,YAAa2B,EAAgBsD,QAAQ,oBAAqB,sCAE7Dif,MAAM,yBAA0B,CAC7B3U,IAAK,YACLwL,SAAU,wBAEbmJ,MAAM,yBAA0B,CAC7B3U,IAAK,QACLvP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,mCAC/D5T,WAAYsQ,EAAgBiuB,cAAc,yBAA0B,eACpE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,uBAGpBD,MAAM,6BAA8B,CACjC3U,IAAK,YACLvP,YAAa2B,EAAgBsD,QAAQ,6BAA8B,uCACnE5T,WAAYsQ,EAAgBiuB,cAAc,6BAA8B,mBACxE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,uBAGpBD,MAAM,6BAA8B,CACjC3U,IAAK,YACLvP,YAAa2B,EAAgBsD,QAAQ,6BAA8B,uCACnE5T,WAAYsQ,EAAgBiuB,cAAc,6BAA8B,mBACxE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,gCAGpBD,MAAM,mCAAoC,CACvC3U,IAAK,oBACLvP,YAAa2B,EAAgBsD,QAAQ,mCAAoC,2CACzE5T,WAAYsQ,EAAgBiuB,cAAc,mCAAoC,uBAC9E3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,gCAGpBD,MAAM,wCAAyC,CAC5C3U,IAAK,oBACLvP,YAAa2B,EAAgBsD,QAAQ,mCAAoC,2CACzE5T,WAAYsQ,EAAgBiuB,cAAc,mCAAoC,uBAC9E3vB,aAAc,KACdsN,OAAQ,CACJ/U,OAAO,GAEXrG,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,KAGhE6P,MAAM,mCAAoC,CACvC3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QAAQ,mCAAoC,6CACzE5T,WAAYsQ,EAAgBiuB,cAAc,mCAAoC,yBAC9E3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,gCAGpBD,MAAM,iCAAkC,CACrC3U,IAAK,gBACLvP,YAAa2B,EAAgBsD,QAAQ,iCAAkC,2CACvE5T,WAAYsQ,EAAgBiuB,cAAc,iCAAkC,uBAC5E3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,EACzD8P,YAAa,uBAGpBD,MAAM,+BAAgC,CACnC3U,IAAK,cACLvP,YAAa2B,EAAgBsD,QAAQ,+BAAgC,yCACrE5T,WAAYsQ,EAAgBiuB,cAAc,+BAAgC,qBAC1E3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,EAC3GlM,YAAa,uBAGpBD,MAAM,qBAAsB,CACzB3U,IAAK,YACLvP,YAAa2B,EAAgBsD,QAAQ,gBAAiB,qCACtD5T,WAAYsQ,EAAgBiuB,cAAc,gBAAiB,iBAC3D3vB,aAAc,KACd9N,KAAM,CACF0rC,SAAU18B,oBAAoB,yBAGrC+iB,MAAM,sBAAuB,CAC1B3U,IAAK,SACLvP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,sCAC5D5T,WAAY,kBACZ4O,aAAc,OAEjBikB,MAAM,0BAA2B,CAC9B3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,0CAChE9S,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,KAGhE6P,MAAM,0BAA2B,CAC9B3U,IAAK,yBACLvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,0CAChE9S,KAAM,CACF0rC,UAAU,KAGjB3Z,MAAM,oBAAqB,CACxB3U,IAAK,WACLvP,YAAa2B,EAAgBsD,QAAQ,oBAAqB,oCAC1D5T,WAAYsQ,EAAgBiuB,cAAc,oBAAqB,gBAC/D3vB,aAAc,OAEjBikB,MAAM,uBAAwB,CAC3B3U,IAAK,cACLvP,YAAa2B,EAAgBsD,QAAQ,uBAAwB,uCAC7D5T,WAAYsQ,EAAgBiuB,cAAc,uBAAwB,mBAClE3vB,aAAc,OAEjBikB,MAAM,0BAA2B,CAC9B3U,IAAK,iBACLvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,0CAChE5T,WAAYsQ,EAAgBiuB,cAAc,0BAA2B,sBACrE3vB,aAAc,OAEjBikB,MAAM,oBAAqB,CACxB3U,IAAK,WACLhC,OAAQ,CACJuwB,SAAS,GAEb99B,YAAa2B,EAAgBsD,QAAQ,oBAAqB,oCAC1D5T,WAAY,oBACZ4O,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,YAAc,KAGhE6P,MAAM,wBAAyB,CAC5B3U,IAAK,eACLvP,YAAa2B,EAAgBsD,QAAQ,wBAAyB,wCAC9D5T,WAAY,wBACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,KAGjB3Z,MAAM,6BAA8B,CACjC3U,IAAK,+BACLvP,YAAa2B,EAAgBsD,QAAQ,6BAA8B,6CACnE5T,WAAY,6BACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,EACVE,eAAe,IAG/B,CAEFxsC,OAAO/I,QAlLG4I,OAAO,iBAAiB4sC,OAAOR,GACvCA,EAAmBlsC,QAAU,CAAC,iBAAkB,kBAAmB,kBAAmB,kCAiLzF,CAnLA,E,aCAD,SAAW9I,GAKP,SAASy1C,EAAgBC,GAErB,SAASnU,EAAKoU,GACe,aAArBA,EACAC,WAC4B,cAArBD,GACPD,EAAUG,eAElB,CAEA,MAAO,CACHtU,KAAMA,EACNzB,KAAM,WACF,MAAO,CACHyB,KAAMA,EAEd,EAER,CACDx4B,OAAO/I,QAvBE4I,OAAO,iBAAiBi+B,SAAS,aAAc4O,GAEvDA,EAAgB3sC,QAAU,CAAC,oBAqB9B,CAxBD,E,aCAA,SAAW9I,GACV,IAcI81C,EACAC,EAfAC,EAAejtC,OAAOktC,WACtBC,EAAgBntC,OAAOotC,YAEvBC,EAAY,GACZC,EAAU,GAEVC,EACA,IADAA,EAEA,IAGAC,EAAS/mC,SAASgnC,cAAc,UAChCC,EAAUF,EAAOG,WAAW,MA+ChC,SAASC,KAIT,SAAoBC,GACnB,GAAIP,EAAQ90C,OAAS,GAAI,CACxB,IAAIs1C,EAAS,IAAIC,EAAOF,GACxBC,EAAOE,eAAwD,GAAvC9oB,KAAKC,MAAsB,IAAhBD,KAAK6X,SAAiB,IACzD+Q,EAAOG,IAAIz+B,GAAqB,EAAjB0V,KAAK6X,SAAgB,EACpC+Q,EAAOG,IAAIJ,EAAoB,EAAhB3oB,KAAK6X,SAAe,EACnC+Q,EAAOI,KAAO,EACdJ,EAAOK,OAAS,KAChBL,EAAOM,QAAU,IACjBd,EAAQjmC,KAAKymC,EACd,CACD,CAdCO,CAAWnpB,KAAK6X,SAAWkQ,EAC5B,CAeA,SAASqB,IAEJrB,GAAgBjtC,OAAOktC,aAC1BM,EAAOrtC,MAAQ8sC,EAAejtC,OAAOktC,YAElCC,GAAiBntC,OAAOotC,cAC3BI,EAAOltC,OAAS6sC,EAAgBntC,OAAOotC,aAIxCM,EAAQa,UAAY,sBACpBb,EAAQc,SAAS,EAAG,EAAGvB,EAAcE,GAIrC,IAFA,IAAIsB,EAAkB,GAEbr1C,EAAI,EAAGA,EAAIk0C,EAAQ90C,OAAQY,IAAK,CAExCk0C,EAAQl0C,GAAGs1C,SACXpB,EAAQl0C,GAAGu1C,OAAOjB,GAGlB,IAAIkB,EAAW1pB,KAAK2pB,KAAK3pB,KAAK4pB,IAAIvB,EAAaD,EAAQl0C,GAAG21C,IAAIlB,EAAG,GAAK3oB,KAAK4pB,IAAIvB,EAAaD,EAAQl0C,GAAG21C,IAAIv/B,EAAG,IAG1Gw/B,EAAe1B,EAAQl0C,GAAG21C,IAAIv/B,EAAqB,EAAhB29B,EAAoB,GAAsB,IAAhBjoB,KAAK6X,UAAkB,EAQpFuQ,EAAQl0C,GAAG21C,IAAIv/B,EAAI29B,EAAgB,GAAKG,EAAQl0C,GAAG60C,IAAIz+B,GAAK,GAAKo/B,EAAW,IAAMI,EACrF1B,EAAQl0C,GAAG61C,UAEXR,EAAgBpnC,KAAKimC,EAAQl0C,GAE/B,CAEAk0C,EAAUmB,EAEV,IAAIS,EAAoB,GAExB,IAAS91C,EAAI,EAAGA,EAAIi0C,EAAU70C,OAAQY,IACrCi0C,EAAUj0C,GAAGs1C,SAGTrB,EAAUj0C,GAAG+1C,WAChB9B,EAAUj0C,GAAGu1C,OAAOjB,GACpBwB,EAAkB7nC,KAAKgmC,EAAUj0C,KAOnC,IAFAi0C,EAAY6B,EAEL7B,EAAU70C,OA/HE,KAgIlB60C,EAAUlU,OAEZ,CAGA,SAASiW,EAASL,GACjBl3C,KAAKk3C,IAAM,CACVlB,EAAGkB,EAAMA,EAAIlB,EAAI,EACjBr+B,EAAGu/B,EAAMA,EAAIv/B,EAAI,GAElB3X,KAAKo2C,IAAM,CACVJ,EAAG,EACHr+B,EAAG,GAEJ3X,KAAKs2C,OAAS,IACdt2C,KAAKq2C,KAAO,EAEZr2C,KAAKw3C,WAAa,EAClBx3C,KAAKu2C,QAAU,EAEfv2C,KAAKy3C,OAAQ,EAEbz3C,KAAK03C,MAAQ,EACb13C,KAAK23C,KAAO,EACZ33C,KAAK43C,MAAQ,CACd,CAqDA,SAAS1B,EAAOF,GACfuB,EAASM,MAAM73C,KAAM,CAAC,CACrBg2C,EAAGA,EACHr+B,EAAG29B,KAGJt1C,KAAKm2C,eAAiB,CACvB,CAzMA/2C,EAAQ4I,OAAO,iBAAiBi+B,SAAS,aAEzC,WACC,IAAI6R,GAAmB,EACvB,SAAS7C,EAAc8C,GAClBD,IACH14C,EAAQwrB,QAAQhc,SAASiuB,MAAMmb,OAAO,iCACtC54C,EAAQwrB,QAAQ,cAAcotB,OAAOrC,GAErCA,EAAOrtC,MAAQ8sC,EACfO,EAAOltC,OAAS6sC,EAEhBJ,EAAiB+C,YAAYlC,EAAQ,KACrCZ,EAAe8C,YAAYxB,EAAM,IACjCqB,GAAmB,EACnBnpC,WAAWupC,EAAeH,GA9BG,KAgC/B,CAEA,SAASG,IACR94C,EAAQwrB,QAAQ,cAAcsJ,SAAS,QACvCvlB,YAAW,WACVwpC,cAAcjD,GACdiD,cAAchD,GACd/1C,EAAQwrB,QAAQ,cAAcc,SAC9BosB,GAAmB,CACpB,GAAG,KACJ,CAEA,MAAO,CACN7C,cAAeA,EACfiD,cAAeA,EACfhZ,KAAM,WACL,MAAO,CACN/1B,KAAM8rC,EACNt8B,KAAMu/B,EAER,EAEF,IAwGAX,EAASa,UAAUvB,OAAS,WAE3B72C,KAAKo2C,IAAIJ,GAAKh2C,KAAKw3C,WACnBx3C,KAAKo2C,IAAIz+B,GAAK3X,KAAKw3C,WAGnBx3C,KAAKo2C,IAAIz+B,GAAK3X,KAAKu2C,QAGnBv2C,KAAKk3C,IAAIlB,GAAKh2C,KAAKo2C,IAAIJ,EACvBh2C,KAAKk3C,IAAIv/B,GAAK3X,KAAKo2C,IAAIz+B,EAGvB3X,KAAKq2C,MAAQr2C,KAAKs2C,OAGlBt2C,KAAK03C,OAAS13C,KAAK23C,IACpB,EAEAJ,EAASa,UAAUtB,OAAS,SAAUt9B,GACrC,GAAKxZ,KAAKs3C,SAAV,CAIA99B,EAAE6+B,OAEF7+B,EAAE8+B,yBAA2B,UAE7B,IAAItC,EAAIh2C,KAAKk3C,IAAIlB,EACPr+B,EAAI3X,KAAKk3C,IAAIv/B,EACbixB,EAAI5oC,KAAKq2C,KAAO,EAEtBkC,EAAW/+B,EAAEg/B,qBAAqBxC,EAAGr+B,EAAG,GAAKq+B,EAAGr+B,EAAGixB,GACvD2P,EAASE,aAAa,GAAK,oBAAsBz4C,KAAK03C,MAAQ,KAC9Da,EAASE,aAAa,GAAK,QAAUz4C,KAAK43C,MAAQ,gBAAkB53C,KAAK03C,MAAQ,KACjFa,EAASE,aAAa,EAAG,QAAUz4C,KAAK43C,MAAQ,qBAEhDp+B,EAAEk9B,UAAY6B,EAEd/+B,EAAEk/B,YACFl/B,EAAEm/B,IAAI34C,KAAKk3C,IAAIlB,EAAGh2C,KAAKk3C,IAAIv/B,EAAG3X,KAAKy3C,MAAQpqB,KAAK6X,SAAWllC,KAAKq2C,KAAOr2C,KAAKq2C,KAAM,EAAa,EAAVhpB,KAAKurB,IAAQ,GAClGp/B,EAAEq/B,YACFr/B,EAAEs/B,OAEFt/B,EAAEu/B,SAtBF,CAuBD,EAEAxB,EAASa,UAAUd,OAAS,WAC3B,OAAOt3C,KAAK03C,OAAS,IAAO13C,KAAKq2C,MAAQ,CAC1C,EAWAH,EAAOkC,UAAY,IAAIb,EACvBrB,EAAOkC,UAAUY,YAAc9C,EAE/BA,EAAOkC,UAAUhB,QAAU,WAG1B,IAFA,IAAI1/B,EAAwB,GAAhB2V,KAAK6X,SAAgB,GAExB3jC,EAAI,EAAGA,EAAImW,EAAOnW,IAAK,CAC/B,IAAI03C,EAAW,IAAI1B,EAASv3C,KAAKk3C,KAC7BgC,EAAQ7rB,KAAK6X,SAAW7X,KAAKurB,GAAK,EAGlCO,EAAgD,GAAxC9rB,KAAK+rB,IAAI/rB,KAAK6X,SAAW7X,KAAKurB,GAAK,GAE/CK,EAAS7C,IAAIJ,EAAI3oB,KAAK+rB,IAAIF,GAASC,EACnCF,EAAS7C,IAAIz+B,EAAI0V,KAAKgsB,IAAIH,GAASC,EAEnCF,EAAS5C,KAAO,GAEhB4C,EAAS1C,QAAU,GACnB0C,EAASzB,WAAa,IACtByB,EAAS3C,OAAyB,IAAhBjpB,KAAK6X,SAAkB,IAEzC+T,EAASxB,OAAQ,EACjBwB,EAASrB,MAAQ53C,KAAKm2C,eAEtBX,EAAUhmC,KAAKypC,EAChB,CACD,EAEA/C,EAAOkC,UAAUtB,OAAS,SAAUt9B,GACnC,GAAKxZ,KAAKs3C,SAAV,CAIA99B,EAAE6+B,OAEF7+B,EAAE8+B,yBAA2B,UAE7B,IAAItC,EAAIh2C,KAAKk3C,IAAIlB,EACPr+B,EAAI3X,KAAKk3C,IAAIv/B,EACbixB,EAAI5oC,KAAKq2C,KAAO,EAEtBkC,EAAW/+B,EAAEg/B,qBAAqBxC,EAAGr+B,EAAG,GAAKq+B,EAAGr+B,EAAGixB,GACvD2P,EAASE,aAAa,GAAK,uBAAyBz4C,KAAK03C,MAAQ,KACjEa,EAASE,aAAa,EAAG,iBAAmBz4C,KAAK03C,MAAQ,KAEzDl+B,EAAEk9B,UAAY6B,EAEd/+B,EAAEk/B,YACFl/B,EAAEm/B,IAAI34C,KAAKk3C,IAAIlB,EAAGh2C,KAAKk3C,IAAIv/B,EAAG3X,KAAKy3C,MAAQpqB,KAAK6X,SAAWllC,KAAKq2C,KAAO,EAAIr2C,KAAKq2C,KAAO,EAAIr2C,KAAKq2C,KAAM,EAAa,EAAVhpB,KAAKurB,IAAQ,GACtHp/B,EAAEq/B,YACFr/B,EAAEs/B,OAEFt/B,EAAEu/B,SArBF,CAsBD,CACA,CApRD,CAoRG5wC,OAAO/I,Q,YCnPP+I,OAAO/I,QAhCE4I,OAAO,iBAAiBi+B,SAAS,yBAEzC,WACI,IAAIqT,EAAO,CACPC,cAAe3qC,SAASmY,MACxByyB,SAAU,MAGd,SAASC,EAAGlZ,EAAcmZ,GACtBJ,EAAKE,SAAWvB,aAAY,WACxBrpC,SAASmY,MAASuyB,EAAKC,eAAiB3qC,SAASmY,MAC3CwZ,EACA+Y,EAAKC,aACf,GAAIG,GAAiC,IACzC,CAEA,SAASC,IACLxB,cAAcmB,EAAKE,UACnB5qC,SAASmY,MAAQuyB,EAAKC,aAC1B,CAEA,MAAO,CACHE,GAAIA,EACJE,IAAKA,EACLza,KAAM,WACF,MAAO,CACHua,GAAIA,EACJE,IAAKA,EAEb,EAER,G,aChCJ,SAAWv6C,GAUP,SAASw6C,EAAoBC,EAAan6C,EAAYo6C,EAAiBl6C,EAAS+J,EAAgB8sB,EAAWsjB,GACvG,IAAIh6C,EAAKC,KAETD,EAAGi6C,UAAY,GACfj6C,EAAGk6C,YAAc,CAAC,EAElBl6C,EAAGm6C,eAgBH,SAAwBC,GAAc,IAAAC,EAC9BC,EAAWR,EAAYS,qBACR,QAAnBF,EAAIG,uBAAe,IAAAH,GAAwB,QAAxBA,EAAfA,EAAiBI,8BAAsB,IAAAJ,GAA0B,QAA1BA,EAAvCA,EAAyC9pC,eAAe,MAAO,UAAE,IAAA8pC,GAAjEA,EAAmEx4C,QACnEy4C,EAAWR,EAAYY,8BAE3BJ,EAAS,GAAG,EAAMF,OAAcv5C,GAAY,GAAG4B,MAC/C,SAA+BC,GAC3B1C,EAAG26C,cAAe,EAClB36C,EAAGi6C,UAAYv3C,EAASsG,KACxBhJ,EAAG46C,gBACH56C,EAAG66C,oBAOX,WACI,IAAK,IAAIr5C,EAAI,EAAGA,EAAIxB,EAAGi6C,UAAUr5C,OAAQY,IAAK,CAGtC,IAeQs5C,EAjBR96C,EAAGi6C,UAAUz4C,GAAGu5C,YAAc,IAC9B/6C,EAAGi6C,UAAUz4C,GAAGq1B,UAAY,IAAIH,EAAU12B,EAAGi6C,UAAUz4C,GAAGq1B,YACtDikB,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,EAC5BZ,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQlI,UAG1Ck2B,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,IACxBZ,EAAGi6C,UAAUz4C,GAAGojB,SAChB5kB,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQmuB,SAAS70C,QAAQ,KAAM,IAAM,OAE3EpG,EAAGi6C,UAAUz4C,GAAGojB,SAAW,8BAAgCk2B,EAAQ,GAAGhuB,QAAQouB,UAAY,UAInE,MAA/Bl7C,EAAGi6C,UAAUz4C,GAAG25C,aAAsD,IAA/Bn7C,EAAGi6C,UAAUz4C,GAAG25C,aAExC,OADXL,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,UAC5BF,EAAQl6C,OAAS,IACpCZ,EAAGi6C,UAAUz4C,GAAG25C,YAAct7C,EAAQ,kBAARA,CAA2Bi7C,EAAQ,GAAGhuB,QAAQ9Q,QAKxFhc,EAAGi6C,UAAUz4C,GAAG45C,aAAeC,gCAAgCr7C,EAAGi6C,UAAUz4C,GAAG85C,QAASt7C,EAAGi6C,UAAUz4C,GAAG+5C,QAC5G,CACJ,CAhCQC,EACJ,GACJ,EA9BAx7C,EAAGuwB,YA8DH,WACI3mB,EAAewf,MAAMqyB,kBAAkB,OAAQ,eAAgB,GAAGh5C,MAElE,SAA4BC,GACpBA,EAASsG,MAAQtG,EAASsG,KAAKnH,QAC/B7B,EAAGk6C,YAAcv2B,KAAKC,MAAMlhB,EAASsG,KAAKnH,OAEtC7B,EAAGk6C,YAAYwB,iBAAmB17C,EAAG27C,eACrC37C,EAAGk6C,YAAYwB,gBAAgBE,UAAY57C,EAAG27C,aAAa/5C,IAGvE,GACJ,EAxEA5B,EAAG66C,kBAGH,WACI,IAAIgB,EAAQx8C,EAAQ8E,KAAKnE,EAAGi6C,WAC5Bj6C,EAAG87C,mBAAqBD,EAAME,MAAK,SAAUC,EAAGC,GAAK,OAAOA,EAAEC,SAASt7C,OAASo7C,EAAEE,SAASt7C,MAAO,IAAGgkC,MAAM,EAAG,EAClH,EALA5kC,EAAG46C,cAOH,WACI,IAAIiB,EAAQx8C,EAAQ8E,KAAKnE,EAAGi6C,WAC5Bj6C,EAAGm8C,eAAiBN,EAAME,MAAK,SAAUC,EAAGC,GAAK,OAAOA,EAAEG,UAAYJ,EAAEI,SAAU,IAAGxX,MAAM,EAAG,EAClG,EA+EA5kC,EAAGmH,QAhBH,WACInH,EAAGm6C,iBACHn6C,EAAGuwB,cAEH5wB,EAAW,CAAC,kBAAmB,0BAA0B8C,MAAK,SAAUoD,GACpEk0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,mBACpBy2C,YAAaz2C,EAAa,0BAElC,IAEAm0C,EAAiBuC,sBAAsB,QAAQ95C,MAAK,SAAUC,GAC1D1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,CAGJ,CAEA,SAAS+5C,EAAoBl9C,EAAYu6C,EAAar6C,EAAcs6C,EAAiBrjB,EACjFgmB,EAAsB1C,EAAkBpwC,EAAgB/J,GACxD,IAAIG,EAAKC,KACTD,EAAG27C,aAAe,CAAC,EACnB37C,EAAG28C,YAAc,OACjBD,EAAqBE,qBAAuB,OAC5CF,EAAqBG,yBAA2B78C,EAAG88C,QACnD98C,EAAG+8C,QAAyE,SAA/D7uC,0BAA0B,UAAW9F,OAAOlD,SAASC,MAElEnF,EAAGg9C,WAAav9C,EAAaunB,MAE7BhnB,EAAGi9C,gBAWH,WAUI,SAASC,EAAqBhhC,GACR,KAAdA,EAAIjZ,QAA+B,KAAdiZ,EAAIjZ,QAA+B,KAAdiZ,EAAIjZ,SAC9CjD,EAAGm9C,UAAW,EACtB,CAEA,SAASC,EAAuB16C,GAC5B,IAAI26C,EAAW36C,EAASsG,KACxBhJ,EAAG88C,QAAUO,EAASz7C,GACtB86C,EAAqBG,yBAA2B78C,EAAG88C,QACnDJ,EAAqBY,gCAAkCD,EAASp0B,OAChEjpB,EAAG26C,cAAe,EAClB36C,EAAGu9C,kBAAmB,EAEtBF,EAASjC,aAAeC,gCAAgCgC,EAAS/B,QAAS+B,EAAS9B,SACnF8B,EAASxmB,UAAY,IAAIH,EAAU2mB,EAASxmB,WAC5CmjB,EAAiBwD,gBAAgBH,EAASxmB,UAAWwmB,EAASz7C,GAAIo4C,EAAiByD,MAAMC,KAAM,EAAG19C,EAAG28C,aAErG38C,EAAG27C,aAAe0B,EAO1B,WACI,IAAIM,EAAe39C,EAAG27C,aAAa9kB,UAAUmkB,WAAW,SACpD4C,EAAW,GACXD,EAAa/8C,OAAS,GAAK+8C,EAAa,GAAG7wB,QAAQlI,SAAShkB,OAAS,IACrEg9C,EAAWD,EAAa,GAAG7wB,QAAQlI,UAGvC,IAAIi5B,EAAe79C,EAAG27C,aAAa9kB,UAAUmkB,WAAW,SACpD8C,EAAW,GACXD,EAAaj9C,OAAS,IACtBk9C,EAAWD,EAAa,GAAG/wB,QAAQmuB,UAGvClB,EAAgBsC,YAAY,CACxBr1B,MAAOhnB,EAAG27C,aAAaoC,MACvBzB,YAAat8C,EAAG27C,aAAaR,YAC7B6C,IAAKJ,EACLK,MAAOH,GAEf,CAxBQI,GA2BJt0C,EAAewf,MAAMqyB,kBAAkB,OAAQ,eAAgB,GAAGh5C,MAElE,SAA4BC,GACpBA,EAASsG,MAAQtG,EAASsG,KAAKnH,QAC/B7B,EAAGk6C,YAAcv2B,KAAKC,MAAMlhB,EAASsG,KAAKnH,OAEtC7B,EAAGk6C,YAAYwB,kBACf17C,EAAGk6C,YAAYwB,gBAAgBE,UAAY57C,EAAG27C,aAAa/5C,IAGvE,GAnCA,CA9BA5B,EAAGm+C,iBAAkB,IAGfn+C,EAAGg9C,WAAa,EAClBlD,EAAYmD,kBAAkBj9C,EAAGg9C,WAAYh9C,EAAG+8C,SAASt6C,KAAK26C,EAAwBF,GAEtFpD,EAAYsE,uBAAuBp+C,EAAGg9C,YAAYv6C,KAAK26C,EAAwBF,EAyBvF,EA1CAl9C,EAAGq+C,QAEH,SAAiB7zB,GACb,IAAI8zB,EAAa19B,OAAO4J,GACxB,OAAI8zB,EAAWC,YAAcD,EAAWE,QAAU,GAAKF,EAAWG,UAAY,GACnE79B,OAAO4J,GAAM1J,OAAO,yBAEpBF,OAAO4J,GAAM1J,OAAO,kBACnC,EA+EA9gB,EAAGmH,QARH,WACInH,EAAGi9C,kBAEHjD,EAAiBuC,sBAAsB,QAAQ95C,MAAK,SAAUC,GAC1D1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,CAGJ,CAEA,SAASg8C,EAAyBn/C,EAAYu6C,EAAar6C,EAAcs6C,EAAiBrjB,EAAWsjB,EAAkBn6C,GACnH,IAAIG,EAAKC,KAoCT,SAASk6C,EAAeC,GACpB,IAAIuE,EAAS3+C,EAAG4+C,MAAQ,CAAC5+C,EAAG4+C,YAAS/9C,EACjCg+C,EAAc,GAEiB,mBAAxBC,sBACPH,EAASG,oBAAoBv/C,EAAWsnC,aAAc8X,IAGhB,mBAA/BI,6BACPF,EAAcE,2BAA2Bx/C,EAAWsnC,eAGxDiT,EAAYS,qBAAqB,GAAG,EAAMH,EAAcuE,GAAS,EAAGE,GAAap8C,MACjF,SAA+BC,GAC3B1C,EAAG26C,cAAe,EAClB36C,EAAGi6C,UAAYv3C,EAASsG,KACxBhJ,EAAGu9C,kBAAmB,EACtBv9C,EAAGg/C,gBAAkBh/C,EAAGi6C,UAAUrV,MAAM,EAAG5kC,EAAGi/C,gBAC9Cj/C,EAAGm+C,gBAAkBn+C,EAAGk/C,aAAel/C,EAAGi6C,UAAUr5C,OA8B5D,WAEI,IAAK,IAAIY,EAAI,EAAGA,EAAIxB,EAAGi6C,UAAUr5C,OAAQY,IAAK,CAGtC,IAeQs5C,EAjBZ,GAAI96C,EAAGi6C,UAAUz4C,GAAGu5C,YAAc,EAC9B/6C,EAAGi6C,UAAUz4C,GAAGq1B,UAAY,IAAIH,EAAU12B,EAAGi6C,UAAUz4C,GAAGq1B,YACtDikB,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,EAC5BZ,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQlI,UAG1Ck2B,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,IACxBZ,EAAGi6C,UAAUz4C,GAAGojB,SAChB5kB,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQmuB,SAAS70C,QAAQ,KAAM,IAAM,OAE3EpG,EAAGi6C,UAAUz4C,GAAGojB,SAAW,8BAAgCk2B,EAAQ,GAAGhuB,QAAQouB,UAAY,UAInE,MAA/Bl7C,EAAGi6C,UAAUz4C,GAAG25C,aAAsD,IAA/Bn7C,EAAGi6C,UAAUz4C,GAAG25C,aAExC,OADXL,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,UAC5BF,EAAQl6C,OAAS,IACpCZ,EAAGi6C,UAAUz4C,GAAG25C,YAAct7C,EAAQ,kBAARA,CAA2Bi7C,EAAQ,GAAGhuB,QAAQ9Q,OAKxFhc,EAAGi6C,UAAUz4C,GAAG45C,aAAeC,gCAAgCr7C,EAAGi6C,UAAUz4C,GAAG85C,QAASt7C,EAAGi6C,UAAUz4C,GAAG+5C,QAC5G,CAEuC,mBAA5B4D,0BACPn/C,EAAGi6C,UAAYkF,wBAAwB5/C,EAAWsnC,aAAcpnC,EAAcO,EAAGi6C,UAAWmF,GAEpG,CA7DQC,EACJ,GACJ,CASA,SAASD,EAAkBE,GAEA,MAAnBA,EAAMzoB,YAA6C,IAAxByoB,EAAMzoB,UAAUj1B,GAC3Ck4C,EAAYmD,gBAAgBqC,EAAM19C,IAAIa,MAAK,SAACC,GACxC,IAAI26C,EAAW36C,EAASsG,KACxBs2C,EAAMzoB,UAAY,IAAIH,EAAU2mB,EAASxmB,WAEzCyoB,EAAMhkB,UAAYgkB,EAAMhkB,QAC5B,IAGAgkB,EAAMhkB,UAAYgkB,EAAMhkB,SAG5Bt7B,EAAGu/C,gBAAgBD,EACvB,CAjFAt/C,EAAGw/C,cAAgB//C,EAAaggD,cAChCz/C,EAAG0/C,mBAAqBjgD,EAAakgD,mBAErC3/C,EAAG27C,aAAe,KAClB37C,EAAGi/C,eAAiB,GAEpBj/C,EAAG4/C,OAIH,SAAgBvjC,GAOZ,SAASwjC,EAAcn9C,GACnB1C,EAAG8/C,YAAc9/C,EAAGw/C,cAAgB98C,EAASsG,KAAOtG,EAASsG,KAAK,GAClEhJ,EAAG4+C,MAAQ5+C,EAAG8/C,YAAc9/C,EAAG8/C,YAAYl+C,QAAKf,EAChDb,EAAG+/C,IAAMr9C,EAASsG,MAAQtG,EAASsG,KAAK,GAEpChJ,EAAG+/C,IAAIn/C,OAAS,GAChBm5C,EAAgBsC,YAAY,CACxBr1B,MAAOhnB,EAAG+/C,IAAI7sC,KACdopC,YAAat8C,EAAG+/C,IAAI5E,cAIxB9+B,GACAA,GAER,CArBIrc,EAAGw/C,cACH1F,EAAYkG,mBAAmBhgD,EAAGw/C,eAAe/8C,KAAKo9C,GAEtD/F,EAAY8F,OAAO5/C,EAAG4+C,OAAOn8C,KAAKo9C,EAmB1C,EA1BA7/C,EAAGo/C,kBAAoBA,EACvBp/C,EAAGu/C,gBAmDH,SAAyBD,GACrBt/C,EAAGi6C,UAAUzQ,KAAI,SAACzgC,GAAQA,EAAE0mB,UAAW,CAAO,IAC9C6vB,EAAM7vB,UAAW,EAEjBzvB,EAAG27C,aAAe2D,CACtB,EA8DA//C,EAAWwI,IAAI,wBAAwB,SAAU0a,EAAOoK,GAChDA,EAAKhP,KAAOgP,EAAKhP,IAAIjc,IAAM,GAAK5B,EAAGw/C,eAAiB3yB,EAAKhP,IAAIrY,YAC7DxF,EAAGw/C,cAAgB3yB,EAAKhP,IAAIrY,WAC5BxF,EAAG4+C,MAAQ/xB,EAAKhP,IAAIjc,GAEpBu4C,KAEKttB,GAAqB,OAAbA,EAAKhP,MAClB7d,EAAGw/C,cAAgB,GACnBx/C,EAAG4+C,WAAQ/9C,EAEXs5C,IAER,IAEAn6C,EAAGmH,QAvBH,WACInH,EAAG4/C,OAAOzF,GAEVH,EAAiBuC,sBAAsB,QAAQ95C,MAAK,SAAUC,GAC1D1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,CAkBJ,CAOA,SAASu9C,EAAenG,EAAar6C,EAAcK,EAAM42B,EAAW92B,EAAU6J,EAC1EswC,EAAiBl6C,EAASF,EAAYJ,EAAYm9C,EAAsBlR,EACxE1gC,EAAQkvC,EAAkBpwC,GAE1B,IAAI5J,EAAKC,KA8DT,SAAS2/C,EAAOvjC,GAOZ,SAASwjC,EAAcn9C,GACnB1C,EAAG8/C,YAAc9/C,EAAGw/C,cAAgB98C,EAASsG,KAAOtG,EAASsG,KAAK,GAClEhJ,EAAG4+C,MAAQ5+C,EAAG8/C,YAAYl+C,GAEtBya,GACAA,GAER,CAbIrc,EAAGw/C,cACH1F,EAAYkG,mBAAmBhgD,EAAGw/C,eAAe/8C,KAAKo9C,GAEtD/F,EAAY8F,OAAO5/C,EAAG4+C,OAAOn8C,KAAKo9C,EAW1C,CA0KA,SAAS5C,EAAgBiD,EAASC,GAc9B,SAAS/C,EAAuB16C,GAC5B,IAAI26C,EAAW36C,EAASsG,KACxBhJ,EAAG88C,QAAUO,EAASz7C,GACtB86C,EAAqBG,yBAA2B78C,EAAG88C,QACnDJ,EAAqBY,gCAAkCD,EAASp0B,OAChEjpB,EAAGi6C,UAAUxqC,KAAK4tC,GAClBr9C,EAAG26C,cAAe,EAClB36C,EAAGu9C,kBAAmB,EAEtBF,EAASxmB,UAAY,IAAIH,EAAU2mB,EAASxmB,WAC5CmjB,EAAiBwD,gBAAgBH,EAASxmB,UAAWwmB,EAASz7C,GAAIo4C,EAAiByD,MAAMC,MAEzF19C,EAAG27C,aAAe0B,EAClBr9C,EAAGogD,WAAW/C,GAEd,IAAIM,EAAe39C,EAAGi6C,UAAU,GAAGpjB,UAAUmkB,WAAW,SACpD4C,EAAW,GACXD,EAAa/8C,OAAS,GAAK+8C,EAAa,GAAG7wB,QAAQlI,SAAShkB,OAAS,IACrEg9C,EAAWD,EAAa,GAAG7wB,QAAQlI,UAGvC,IAAIi5B,EAAe79C,EAAGi6C,UAAU,GAAGpjB,UAAUmkB,WAAW,SACpD8C,EAAW,GACXD,EAAaj9C,OAAS,IACtBk9C,EAAWD,EAAa,GAAG/wB,QAAQmuB,UAGvClB,EAAgBsC,YAAY,CACxBr1B,MAAOq2B,EAASU,MAChBzB,YAAae,EAASlC,YACtB6C,IAAKJ,EACLK,MAAOH,IAGX99C,EAAGm6C,gBAAe,GAElBn6C,EAAGuwB,aACP,CAlDAvwB,EAAGm+C,iBAAkB,EAEjB+B,EAAU,EACVpG,EAAYmD,gBAAgBiD,GAAS,GAAOz9C,KAAK26C,GAC1C+C,GACPrG,EAAYsE,uBAAuB+B,GAAY,GAAO19C,KAAK26C,GAG/D,SAA8BlhC,GACR,KAAdA,EAAIjZ,QAA+B,KAAdiZ,EAAIjZ,QAA+B,KAAdiZ,EAAIjZ,SAC9CjD,EAAGm9C,UAAW,EACtB,GAwCJ,CA1SAn9C,EAAGi6C,UAAY,GACfj6C,EAAG88C,UAAYr9C,EAAa+W,GAC5BxW,EAAGg9C,WAAav9C,EAAaunB,MAC7BhnB,EAAG4+C,QAAUn/C,EAAa4gD,MAC1BrgD,EAAGw/C,cAAgB//C,EAAaggD,cAChCz/C,EAAGk6C,YAAc,CAAC,EAElBl6C,EAAGm6C,eAqSH,SAAwBC,GAoBpB,SAASkG,EAAoBlG,GACzB,IAAIuE,EAAS3+C,EAAG4+C,MAAQ,CAAC5+C,EAAG4+C,YAAS/9C,EACrCi5C,EAAYS,qBAAqB,GAAG,EAAMH,EAAcuE,GAAS,GAAGl8C,MACpE,SAA+BC,GAC3B1C,EAAG26C,cAAe,EAClB36C,EAAGi6C,UAAYv3C,EAASsG,KACxBhJ,EAAG46C,gBACH56C,EAAG66C,oBACH76C,EAAGu9C,kBAAmB,EACtBv9C,EAAGg/C,gBAAkBh/C,EAAGi6C,UAAUrV,MAAM,EAAG5kC,EAAGi/C,gBAC9Cj9C,QAAQC,IAAIjC,EAAGg/C,iBACfh/C,EAAGm+C,gBAAkBn+C,EAAGk/C,aAAel/C,EAAGi6C,UAAUr5C,OAGpD,IAAK,IAAIY,EAAI,EAAGA,EAAIxB,EAAGi6C,UAAUr5C,OAAQY,IAAK,CAGtC,IAeQs5C,EAjBZ,GAAI96C,EAAGi6C,UAAUz4C,GAAGu5C,YAAc,EAC9B/6C,EAAGi6C,UAAUz4C,GAAGq1B,UAAY,IAAIH,EAAU12B,EAAGi6C,UAAUz4C,GAAGq1B,YACtDikB,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,EAC5BZ,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQlI,UAG1Ck2B,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,WACpCF,EAAQl6C,OAAS,IACxBZ,EAAGi6C,UAAUz4C,GAAGojB,SAChB5kB,EAAGi6C,UAAUz4C,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQmuB,SAAS70C,QAAQ,KAAM,IAAM,OAE3EpG,EAAGi6C,UAAUz4C,GAAGojB,SAAW,8BAAgCk2B,EAAQ,GAAGhuB,QAAQouB,UAAY,UAInE,MAA/Bl7C,EAAGi6C,UAAUz4C,GAAG25C,aAAsD,IAA/Bn7C,EAAGi6C,UAAUz4C,GAAG25C,aAExC,OADXL,EAAU96C,EAAGi6C,UAAUz4C,GAAGq1B,UAAUmkB,WAAW,UAC5BF,EAAQl6C,OAAS,IACpCZ,EAAGi6C,UAAUz4C,GAAG25C,YAAct7C,EAAQ,kBAARA,CAA2Bi7C,EAAQ,GAAGhuB,QAAQ9Q,OAIxFhc,EAAG2jC,UAAU3jC,EAAGi6C,UAAUz4C,GAAI,EAClC,CAEI,IAAI89C,GADHt/C,EAAGugD,eAAiBvgD,EAAG88C,QAAU,GAAK98C,EAAGg9C,aAEtCh9C,EAAG88C,QAAU,EACbwC,EAAQt/C,EAAGi6C,UAAU1pC,eAAe,KAAMvQ,EAAG88C,SACtC98C,EAAGg9C,aACVsC,EAAQt/C,EAAGi6C,UAAU1pC,eAAe,aAAcvQ,EAAGg9C,aAEpDsC,GAGDt/C,EAAG88C,QAAUwC,EAAM19C,GACnB5B,EAAG27C,aAAe2D,EAClBt/C,EAAGogD,WAAWd,IAJdt/C,EAAGi9C,gBAAgBj9C,EAAG88C,QAAS98C,EAAGg9C,aAOjCh9C,EAAG4+C,MAAQ,GAAK5+C,EAAGw/C,cACxBI,IAEM5/C,EAAG27C,eACT37C,EAAG27C,aAAe37C,EAAGi6C,UAAU,GAEvC,GACJ,CAjFIj6C,EAAGw/C,cACHI,EAAOU,GAEPA,EAAoBlG,GAGxBp6C,EAAG66C,kBAGH,WACI,IAAIgB,EAAQx8C,EAAQ8E,KAAKnE,EAAGi6C,WAC5Bj6C,EAAG87C,mBAAqBD,EAAME,MAAK,SAAUC,EAAGC,GAAK,OAAOA,EAAEC,SAASt7C,OAASo7C,EAAEE,SAASt7C,MAAO,IAAGgkC,MAAM,EAAG,EAClH,EALA5kC,EAAG46C,cAOH,WACI,IAAIiB,EAAQx8C,EAAQ8E,KAAKnE,EAAGi6C,WAC5Bj6C,EAAGm8C,eAAiBN,EAAME,MAAK,SAAUC,EAAGC,GAAK,OAAOA,EAAEG,UAAYJ,EAAEI,SAAU,IAAGxX,MAAM,EAAG,EAClG,CAiEJ,EAvXA5kC,EAAGwgD,iBAqLH,SAA0BlB,GAEtB,IADA,IAAI3nC,EAAQ,EACHnW,EAAI,EAAGA,EAAI89C,EAAMmB,YAAY7/C,OAAQY,IAC1CmW,GAAS2nC,EAAMmB,YAAYj/C,GAAGwrC,MAElC,OAAOr1B,CACX,EA1LA3X,EAAG0gD,sBA0KH,SAA+BpB,EAAOqB,GAElC,IADA,IAAIh+C,EAAS,EACJnB,EAAI,EAAGA,EAAI89C,EAAMmB,YAAY7/C,OAAQY,KACrCm/C,GAAYrB,EAAMmB,YAAYj/C,GAAGsrC,OAAOjrC,MAAQ,IAAQ8+C,GAAYrB,EAAMmB,YAAYj/C,GAAGsrC,OAAOjrC,MAAQ,KACzGc,GAAU28C,EAAMmB,YAAYj/C,GAAGwrC,OAGvC,OAAOrqC,CACX,EAjLA3C,EAAGssC,kBAuGH,SAA2BjoC,EAAMkoC,GACxBA,EAAOC,2BACRsN,EAAY8G,yBAAyBv8C,EAAKzC,GAAI2qC,EAAOO,OAAOlrC,IAAIa,MAGpE,SAAyCC,GACrC6pC,EAAOC,2BAA4B,EACnCD,EAAOS,QAKP,IAHA,IAAI6T,EAAa,EACbC,EAAa,EAERt/C,EAAI,EAAGA,EAAI6C,EAAKo8C,YAAY7/C,OAAQY,IACzCq/C,GAAcx8C,EAAKo8C,YAAYj/C,GAAGwrC,MAClC8T,GAAcz8C,EAAKo8C,YAAYj/C,GAAGsrC,OAAOjrC,MAAQwC,EAAKo8C,YAAYj/C,GAAGwrC,MAGzE3oC,EAAK08C,iBAAmBD,EAAaD,CACzC,GACJ,EAzHA7gD,EAAGogD,WA0LH,SAAoB/7C,GAChBrE,EAAGghD,sBAAsB38C,GAErBA,EAAKi3B,WAGLt7B,EAAGugD,eACHvgD,EAAGugD,aAAajlB,UAAW,GAE/Bt7B,EAAGugD,aAAel8C,EAClBrE,EAAGugD,aAAajlB,UAAW,EAC3BlzB,OAAO64C,SAAS,EAAG,GAEnBzV,EAAsB2B,aAAe9oC,EACzC,EAvMArE,EAAGkhD,YAkIH,SAAqB96B,GACjB,GAAIA,EAIA,OAHIA,EAAIhlB,WAAW,OACfglB,EAAMA,EAAI6lB,OAAO,EAAG7lB,EAAIxlB,OAAS,IAE9BuM,aAAeiZ,EAAIhgB,QAAQ,IAAK,GAE/C,EAxIApG,EAAGq+C,QAgGH,SAAiB7zB,GACb,OAAO5J,OAAO4J,GAAM1J,OAAO,wBAC/B,EAjGA9gB,EAAG2jC,UA6IH,SAAmB2b,EAAO6B,GACtB7B,EAAM1b,aAAc,EACpB0b,EAAMzb,cAAgB,CAClBC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,aAAckd,GAAkB,EAChCjd,eAAgBid,GAAkB,EAClCC,aAAc,WACV,MAAO,sDACX,EACAC,WAAY,CAAC,CACTC,WAAY,IACZhgD,SAAU,CACN2iC,aAAcjkC,EAAGuhD,+BAAiC,EAClDrd,eAAgBlkC,EAAGuhD,+BAAiC,MAIhE3hD,GAAS,WACL0/C,EAAM1b,aAAc,CACxB,GACJ,EAlKA5jC,EAAGwhD,aAsFH,WACIxhD,EAAGu9C,kBAAmB,EACtBv9C,EAAGk/C,cAAgBl/C,EAAGi/C,eACtBj/C,EAAGg/C,gBAAkBh/C,EAAGi6C,UAAUrV,MAAM,EAAG5kC,EAAGk/C,cAC9Cl/C,EAAGm+C,gBAAkBn+C,EAAGk/C,aAAel/C,EAAGi6C,UAAUr5C,OACpDZ,EAAGu9C,kBAAmB,CAC1B,EA3FAv9C,EAAGi9C,gBAAkBA,EACrBj9C,EAAGyhD,UA6EH,SAAmBj3B,GACf,IAAIk3B,EAAM9gC,SACNne,EAAOme,OAAO4J,GACdg0B,EAAQ59B,OAAO6iB,SAAShhC,EAAK2qB,KAAKs0B,IAAMC,UAC5C,OAAOr0B,KAAK+E,MAAMmsB,EACtB,EAjFAx+C,EAAG4hD,eAwEH,SAAwBC,GACpBz5C,OAAOwzB,KAAKimB,EAAU9V,IAAK,SAC/B,EAzEA/rC,EAAG8hD,cAmHH,SAAuBxC,GACnB,SAAIA,IAASA,EAAMyC,cACRnhC,OAAO0+B,EAAMyC,aAAarf,QAAQ9hB,SAIjD,EAxHA5gB,EAAGgiD,oBAmIH,SAA6B1C,GACzB,OAAOx0C,EAAOyL,GAAG,yBAA0B,CAAEyQ,MAAOs4B,EAAM5tB,YAC9D,EApIA1xB,EAAGiiD,qBA4WH,SAA8BzrC,GAC1BsjC,EAAYoI,uBAAuB1rC,GAAI/T,MAEvC,SAAwCC,GACpC,IAAI4jB,EAAa1jB,mBAAmBC,iBAAiBH,GACrDoI,EAAOyL,GAAG,yBAA0B,CAAEyQ,MAAOV,GACjD,GACJ,EAjXAtmB,EAAGghD,sBA8LH,SAA+B38C,GACtBA,EAAK89C,gBACNrI,EAAYsI,oBAAoB/9C,EAAKzC,IAAIa,MAG7C,SAAoCC,GAChC2B,EAAK89C,eAAiBz/C,EAASsG,KAG/B,IAAK,IAAIxH,EAAI,EAAGA,EAAI6C,EAAK89C,eAAevhD,OAAQY,IAAK,CAG7C,IAKQs5C,EAPRz2C,EAAK89C,eAAe3gD,GAAGu5C,YAAc,IACrC12C,EAAK89C,eAAe3gD,GAAGq1B,UAAY,IAAIH,EAAUryB,EAAK89C,eAAe3gD,GAAGq1B,YACpEikB,EAAUz2C,EAAK89C,eAAe3gD,GAAGq1B,UAAUmkB,WAAW,WAC3CF,EAAQl6C,OAAS,EAC5ByD,EAAK89C,eAAe3gD,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQlI,UAGjDk2B,EAAUz2C,EAAK89C,eAAe3gD,GAAGq1B,UAAUmkB,WAAW,WAC3CF,EAAQl6C,OAAS,IACxByD,EAAK89C,eAAe3gD,GAAGojB,SACvBvgB,EAAK89C,eAAe3gD,GAAGojB,SAAWk2B,EAAQ,GAAGhuB,QAAQmuB,SAAS70C,QAAQ,KAAM,IAAM,OAElF/B,EAAK89C,eAAe3gD,GAAGojB,SAAW,8BAAgCk2B,EAAQ,GAAGhuB,QAAQouB,UAAY,UAIrH,CAEAl7C,EAAG2jC,UAAUt/B,EACjB,GACJ,EA3NArE,EAAG4/C,OAASA,EAEZlD,EAAqBE,qBAAuB,OAC5CF,EAAqBG,yBAA2B78C,EAAG88C,QAEnD98C,EAAGi/C,eAAiB,GACpBj/C,EAAGk/C,aAAel/C,EAAGi/C,eAErBj/C,EAAGqiD,eA8CH,SAAwBh+C,GAChBA,GAAQi+C,MAAMzyC,aAAajO,GAAK,GAChCk4C,EAAYuI,eAAeriD,EAAGuiD,WAAYl+C,EAAKzC,IAAIa,MAIvD,SAA+BC,GAC3B2B,EAAK63C,SAASzsC,KAAK/M,EAASsG,MAC5BhJ,EAAGuiD,gBAAa1hD,CACpB,IANKwD,EAAK63C,WACN73C,EAAK63C,SAAW,GAMxB,EAtDAl8C,EAAGwiD,WAkBH,SAAoBn+C,GAChB,IAAIq9C,EAAM9gC,SACN6hC,EAAS7hC,OAAOvc,EAAKq+C,YAGzB,GAFc9hC,OAAOvc,EAAK09C,aAEZL,GAAQ9gC,OAAO6hC,GAAQlE,WAAakE,EAASf,EACvD,OAAO,CACf,EAvBA1hD,EAAGuwB,YAEH,WACI3mB,EAAewf,MAAMqyB,kBAAkB,OAAQ,eAAgB,GAAGh5C,MAElE,SAA4BC,GACpBA,EAASsG,MAAQtG,EAASsG,KAAKnH,QAC/B7B,EAAGk6C,YAAcv2B,KAAKC,MAAMlhB,EAASsG,KAAKnH,OAEtC7B,EAAGk6C,YAAYwB,kBACf17C,EAAGk6C,YAAYwB,gBAAgBE,UAAY57C,EAAG27C,aAAa/5C,IAGvE,GACJ,EAwVAvC,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5B,IAAInsC,IAAO/W,EAAa+W,GACpBA,EAAK,EAELxW,EAAGiiD,qBAAqBzrC,IAIxBxW,EAAGg9C,WACHC,EAAgBj9C,EAAG88C,QAAS98C,EAAGg9C,YAG/Bh9C,EAAGm6C,iBAGPx6C,EAAW,CAAC,kBAAmB,0BAA0B8C,MAAK,SAAUoD,GACpEk0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,mBACpBy2C,YAAaz2C,EAAa,0BAElC,IACJ,GACJ,CAjxBAxG,EAAQ4I,OAAO,iBAAiBC,WAAW,qBAAsB2xC,GACjEx6C,EAAQ4I,OAAO,iBAAiBC,WAAW,qBAAsBu0C,GACjEp9C,EAAQ4I,OAAO,iBAAiBC,WAAW,0BAA2Bw2C,GAEtE7E,EAAoB1xC,QAAU,CAAC,uBAAwB,aAAc,kBAAmB,UAAW,iBAAkB,YAAa,oBAClIs0C,EAAoBt0C,QAAU,CAAC,aAAc,uBAAwB,eAAgB,kBAAmB,YACpG,uBAAwB,mBAAoB,iBAAkB,WAClEu2C,EAAyBv2C,QAAU,CAAC,aAAc,uBAAwB,eAAgB,kBAAmB,YAAa,mBAAoB,WAiW9I9I,EAAQ4I,OAAO,iBAAiBC,WAAW,eAAgB+3C,GAC3DA,EAAe93C,QAAU,CAAC,uBAAwB,eAAgB,OAAQ,YAAa,WAAY,YAC/F,kBAAmB,UAAW,aAAc,aAAc,uBAAwB,wBAClF,SAAU,mBAAoB,iBAuarC,CAnxBD,CAmxBGC,OAAO/I,Q,YCnxBV,SAAUA,GAKN,SAASujD,IACL,IAAIp+B,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHvkB,SAAU,KAEduV,YAAa,SAASgU,EAASC,GAC3B,OAAIA,EAAKC,YACE5d,aAAe2d,EAAKC,YAEpB5d,aAAe,4CAE9B,EACAjF,WAAY26C,EACZ/rC,aAAc,KACdC,kBAAkB,GAKtB,SAAS8rC,EAA4BtjD,EAAYu6C,EAAal6C,EAAUE,EAAMgjD,GAC1E,IAAI9iD,EAAKC,KACTD,EAAGi6C,UAAY,GAEfj6C,EAAGoL,KAuBH,WACI,IAAI23C,EAAM,GAEV,GAAI/iD,EAAGsB,UAQP,IAHItB,EAAGsB,SAAS0hD,QAAUhjD,EAAGsB,SAAS2hD,iBAAgBjjD,EAAGsB,SAAS0hD,OAAShjD,EAAGsB,SAAS2hD,eAAephD,QAClG7B,EAAGsB,SAASmf,OAASzgB,EAAGsB,SAAS4hD,gBAAeljD,EAAGsB,SAASmf,MAAQzgB,EAAGsB,SAAS4hD,cAAcrhD,OAExE,UAAtB7B,EAAGsB,SAAS0hD,OAAoB,KAAAG,EAAAC,EAC1BvE,OAA0Ch+C,IAA5Bb,EAAGsB,SAASouC,aAA+D,QAAtCyT,EAAGx/B,KAAKC,MAAM5jB,EAAGsB,SAASouC,oBAAY,IAAAyT,EAAAA,EAAW,KACpGxE,OAAgC99C,IAAvBb,EAAGsB,SAAS+hD,QAAqD,QAAjCD,EAAGz/B,KAAKC,MAAM5jB,EAAGsB,SAAS+hD,eAAO,IAAAD,EAAAA,EAAW,KAC3FtJ,EAAYS,qBAAqB,GAAG,GAAM,EAAMoE,EAAQ3+C,EAAGsB,SAASmf,MAAQ,EAAGo+B,GAAap8C,KAAK6gD,EACrG,MACK,GAAyB,WAAtBtjD,EAAGsB,SAAS0hD,OAChBlJ,EAAYY,6BAA6B,GAAG,GAAM,EAAMn7C,EAAWgkD,eAAgBvjD,EAAGsB,SAASmf,MAAQ,GAAGhe,KAAK6gD,QAE9G,GAAyB,WAAtBtjD,EAAGsB,SAAS0hD,OAChBlJ,EAAYsI,oBAAoBpiD,EAAGsB,SAASs6C,WAAWn5C,KAAK6gD,QAE3D,GAAyB,iBAAtBtjD,EAAGsB,SAAS0hD,OAChBlJ,EAAY0J,sBAAsBxjD,EAAGsB,SAASmf,OAAOhe,KAAK6gD,QAEzD,GAAyB,aAAtBtjD,EAAGsB,SAAS0hD,OAChBlJ,EAAY2J,kBAAkBzjD,EAAGsB,SAASmf,OAAOhe,KAAK6gD,QAErD,GAAyB,YAAtBtjD,EAAGsB,SAAS0hD,OAAsB,CAEtC,IAAI,IAAIxhD,EAAI,EAAGA,EAAIxB,EAAGsB,SAASmf,MAAOjf,IAClCuhD,EAAItzC,KAAKzP,EAAGsB,SAASoiD,cAAcliD,GAAGI,IAG1Ck4C,EAAY6J,aAAaZ,GAAKtgD,KAAK6gD,EACvC,OA/BIthD,QAAQ4hD,KAAK,2BAiCjB,SAASN,EAAoB5gD,GACzB,GAAyB,YAAtB1C,EAAGsB,SAAS0hD,OAAsB,CACjChjD,EAAGi6C,UAAY,GAEf,IAAI,IAAIz4C,EAAI,EAAGA,EAAIuhD,EAAIniD,OAAQY,IAC3BxB,EAAGi6C,UAAUxqC,KAAK/M,EAASsG,KAAKuH,eAAe,KAAMwyC,EAAIvhD,IAEjE,MAEIxB,EAAGi6C,UAAYv3C,EAASsG,MAMhC,WACI,IAAK,IAAIxH,EAAI,EAAGA,EAAIxB,EAAGi6C,UAAUr5C,OAAQY,IACrCxB,EAAGi6C,UAAUz4C,GAAG45C,aAAeC,gCAAgCr7C,EAAGi6C,UAAUz4C,GAAG85C,QAASt7C,EAAGi6C,UAAUz4C,GAAG+5C,UA3EpH,WAEIv5C,QAAQC,IAAI,oBAAqBjC,EAAGsB,UACpCtB,EAAG6jD,2BAA6B,GAEhC,IAAK,IAAIriD,EAAI,EAAGA,EAAIxB,EAAGi6C,UAAUr5C,OAAQY,IAAK,CAC1C,IAAI67C,EAAWr9C,EAAGi6C,UAAUz4C,GAExBsiD,EAAa,CACbliD,GAAIy7C,EAASz7C,GACbsR,KAAMmqC,EAASU,MACf5C,YAAakC,EAASlC,YACtBv2B,SAAUy4B,EAASz4B,SACnBuN,cAAe,GACf4Z,IAAK,CAAEhR,MAAO,yBAA0B3W,OAAQ,CAAE4C,MAAOq2B,EAAS3rB,cAGtE1xB,EAAG6jD,2BAA2Bp0C,KAAKq0C,EACvC,CACJ,CA2DQC,EACJ,CATIC,EACJ,CASJ,EAEAhkD,EAAGmH,QAAUnH,EAAGoL,KAEc,IAA1B/L,EAAQ4kD,QAAQC,OAAe7kD,EAAQ4kD,QAAQE,MAAQ,GACvDnkD,EAAGmH,SAEX,CAEA,OAjGA07C,EAA4B16C,QAAU,CAAC,aAAc,uBAAwB,WAAY,OAAQ,0BAiG1Fqc,CACX,CAxHAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqBo+B,GAE/DA,EAA2Bz6C,QAAU,EAuHxC,CA1HD,CA0HGC,OAAO/I,Q,YC1HV,SAAWA,GAKP,SAASy6C,EAAY/1B,GACpB9jB,KAAKk6C,eAAiB,WACrB,OAAOp2B,EAAMI,IAAIhX,aAAe,mCACjC,EAEHlN,KAAKmiD,oBAAsB,SAAUgC,GACpC,OAAOrgC,EAAMI,IAAIhX,aAAe,mCAAoC,CACnEiX,OAAQ,CACPggC,YAAaA,GAEdC,kBAAkB,GAChB,CACC35B,QAAS,CACRC,cAAc,IAGd,EAEA1qB,KAAKiiD,uBAAyB,SAAU1rC,GACpC,OAAOuN,EAAMI,IAAIhX,aAAe,sCAAuC,CACnEiX,OAAQ,CACJ5N,GAAIA,IAGhB,EAEHvW,KAAKg9C,gBAAkB,SAAUzmC,EAAI8tC,GACpC,OAAOvgC,EAAMI,IAAIhX,aAAe,2BAA4B,CAC3DiX,OAAQ,CACK5N,GAAIA,EACJ8tC,QAASA,IAAW,IAGnC,EAEArkD,KAAKm+C,uBAAyB,SAAUp3B,GACvC,OAAOjD,EAAMI,IAAIhX,aAAe,kCAAmC,CAClEiX,OAAQ,CACP4C,MAAOA,IAGV,EAEA/mB,KAAK2gD,yBAA2B,SAAUV,EAASqE,GACrD,OAAOxgC,EAAMQ,KAAKpX,aAAe,wCAAyC,CAAEolB,SAAU2tB,EAASqE,SAAUA,GAAY,CAAEF,kBAAkB,GACvI,EAEApkD,KAAKoiD,eAAiB,SAAUmC,EAAStE,EAASzgC,GAC9C,OAAOsE,EAAMQ,KAAKpX,aAAe,8BAA+B,CAAC4/B,QAASyX,EAASpsC,SAAU8nC,GACjG,EAUAjgD,KAAKwkD,kBAAoB,SAAUvE,EAASwE,EAAUl8B,EAAWm8B,GAChE,OAAO5gC,EAAMQ,KAAKmJ,YAAc,yCAA0C,CACzEwyB,QAASA,EACTwE,SAAUA,EACVl8B,UAAWA,EACXm8B,cAAeA,GACb,CACFj6B,QAAS,CACRC,cAAc,IAGjB,EACA1qB,KAAK2kD,iBAAmB,SAAUjG,EAAQn2B,EAAWk8B,EAAUC,EAAevK,GAC7E,OAAOr2B,EAAMQ,KAAKmJ,YAAc,oCAAqC,CACpEixB,OAAQA,EACRn2B,UAAWA,EACXk8B,SAAUA,EACVC,cAAeA,GACb,CACFj6B,QAAS,CACRC,aAAcyvB,IAAgB,IAG9B,EAEA,IAAMyK,EAAwB,SAACr8B,EAAWm8B,EAAevK,EAAcuE,EAAQ+F,EAAUI,EAAOjG,GAC5F,IAAIkG,EAAa,CACbpG,OAAQA,EACRmG,MAAOA,EACPt8B,UAAWA,EACXm8B,cAAeA,EACfK,cAAc,EACdN,SAAUA,EACV7F,YAAaA,GAEjB,OAAO96B,EAAMQ,KAAK,kDAAmDwgC,EAAY,CAC7Er6B,QAAS,CACLC,aAAcyvB,IAAgB,IAG1C,EAEHn6C,KAAKs6C,qBAAuB,SAAU/xB,EAAWm8B,EAAevK,EAAcuE,EAAQ+F,EAAU7F,GACzF,OAAOgG,EAAsBr8B,EAAWm8B,EAAevK,EAAcuE,EAAQ+F,EAAU,EAAG7F,EAC9F,EAEA5+C,KAAKy6C,6BAA+B,SAAUlyB,EAAWm8B,EAAevK,EAAcuE,EAAQ+F,GAC1F,OAAOG,EAAsBr8B,EAAWm8B,EAAevK,EAAcuE,EAAQ+F,EAAU,EAC3F,EAEHzkD,KAAK2/C,OAAS,SAAUppC,GACvB,OAAOuN,EAAMI,IAAIhX,aAAe,0BAA4BwuB,EAAE2J,MAAM,CAAEqZ,OAAQnoC,IAC/E,EAEAvW,KAAK+/C,mBAAqB,SAAUiF,GACnC,OAAOlhC,EAAMI,IAAIhX,aAAe,qCAAuCwuB,EAAE2J,MAAM,CAAEma,cAAewF,IACpG,EAEAhlD,KAAK0jD,aAAe,SAASZ,GAC5B,OAAOh/B,EAAMQ,KAAKpX,aAAe,4BAA6B,CAC1D+3C,YAAanC,GAElB,EAEA9iD,KAAKujD,sBAAwB,SAAShnB,GACrC,OAAOzY,EAAMQ,KAAKpX,aAAe,4BAA6B,CAC7DqiB,MAAO,EACP21B,SAAU3oB,EACVrU,UAAW,EACXi9B,aAAa,GAEf,EAEAnlD,KAAKwjD,kBAAoB,SAASjnB,GACjC,OAAOzY,EAAMQ,KAAKpX,aAAe,4BAA6B,CAC7DqiB,MAAO,EACP21B,SAAU3oB,EACVrU,UAAW,GAEb,CACE,CACD/f,OAAO/I,QAhJE4I,OAAO,iBAAiByd,QAAQ,uBAAwBo0B,GAEhEA,EAAY3xC,QAAU,CAAC,QA8I1B,CAjJD,E,aCAA,SAAU9I,GAIN,SAASgmD,EAAe9lD,EAAY+lD,EAAY7lD,EAAci3B,EAAW6uB,EAAqBC,EAAkB9I,EAAsB3C,EAAiBl6C,GACnJ,IAAIG,EAAKC,KACTD,EAAGylD,eAAiBhmD,EAAa+W,GAEjCxW,EAAG0lD,WAQH,WACC1lD,EAAG2lD,gBAAiB,EAEjBL,EAAWI,WAAW1lD,EAAGylD,gBAAgBhjD,MAMzC,SAA2BC,GAC7B1C,EAAG4lD,KAAOljD,EAASsG,KACnBhJ,EAAG4lD,KAAK/uB,UAAY,IAAIH,EAAU12B,EAAG4lD,KAAK/uB,WAE1Ct3B,EAAWsmD,uBAAyBtmD,EAAWumD,aAAaC,SAC5D/lD,EAAG2lD,gBAAiB,EAEhB3lD,EAAG4lD,KAAK/uB,UAAUmvB,wBACrBzmD,EAAWsmD,uBAAwB,GAE9B,IAAIlI,EAAe39C,EAAG4lD,KAAK/uB,UAAUmkB,WAAW,SAC5C4C,EAAW,GACXD,EAAa/8C,OAAS,GAAK+8C,EAAa,GAAG7wB,QAAQlI,SAAShkB,OAAS,IACrEg9C,EAAWD,EAAa,GAAG7wB,QAAQlI,UAGvCm1B,EAAgBsC,YAAY,CACxBr1B,MAAOhnB,EAAG4lD,KAAK7H,MACfzB,YAAat8C,EAAG4lD,KAAKzK,YACrB8K,SAAUjmD,EAAG4lD,KAAKM,SAClBlI,IAAKJ,GAEb,IA1BA,SAA0Bl7C,GACtB1C,EAAGm9C,UAAW,CAClB,GAyBJ,EAtCAT,EAAqBE,qBAAuB,MAE5C58C,EAAGmmD,kBAAoB,SAAUC,EAAeC,GAC/C9mD,EAAW8K,WAAW,yBAA0B+7C,EACjD,EAoCApmD,EAAGmH,QAAU,WACZnH,EAAG0lD,YACJ,CACJ,CAEDt9C,OAAO/I,QAtDD4I,OAAO,iBAAiBC,WAAW,mBAAoBm9C,GAC5DA,EAAel9C,QAAU,CAAC,aAAc,sBAAuB,eAAgB,YAAa,sBAAuB,mBAAoB,uBAAwB,kBAAmB,UAqDrL,CAvDD,E,aCAA,SAAW9I,GAKV,SAASimD,EAAWvhC,GACb,IAAIuiC,EAAWn5C,aAAe,eAE9BlN,KAAKylD,WAAa,SAAUp/B,GACxB,OAAOvC,EAAMI,IAAImiC,EAAW,aAAc,CACrCliC,OAAQ,CACPkC,WAAYA,GAEV+9B,kBAAkB,GAE9B,EAEApkD,KAAKsmD,WAAa,SAAUjgC,GACxB,OAAOvC,EAAMI,IAAImiC,EAAW,aAAc,CACtCliC,OAAQ,CACJkC,WAAYA,GAEhB+9B,kBAAkB,GAE1B,EAEApkD,KAAKumD,eAAiB,SAAUhwC,GAC5B,OAAOuN,EAAMI,IAAImiC,EAAW,iBAAkB,CAC1CliC,OAAQ,CACJ5N,GAAIA,GAER6tC,kBAAkB,GAE1B,CACJ,CACDj8C,OAAO/I,QAlCD4I,OAAO,iBAAiByd,QAAQ,sBAAuB4/B,GAE/DA,EAAWn9C,QAAU,CAAC,QAgCtB,CAnCD,E,aCAA,SAAW9I,GASV,SAASonD,EAAmBC,EAAiBjnD,EAAcF,EAAYuL,EAAQ4xC,EAAsB9yC,GAC9F,IAAI5J,EAAKC,KAETD,EAAG2mD,YAGH,WACCD,EAAgBE,gBAAkBF,EAAgBC,YAAYlnD,EAAa6mB,YAC3EogC,EAAgBE,gBAAgBnkD,MAEhC,SAA6BC,GAC5B1C,EAAG6mD,SAAWnkD,EAASsG,KACvB09C,EAAgBG,SAAW7mD,EAAG6mD,SAE9BnK,EAAqBE,qBAAuB,WAC5CF,EAAqBG,yBAA2B78C,EAAG6mD,SAASjlD,GAExDnC,EAAaqnD,SAChBl9C,EAAem9C,sBAAsB,WAAY/mD,EAAG6mD,SAASjlD,GAAInC,EAAaqnD,SAE1ErnD,EAAaunD,gBACjBhnD,EAAGinD,mBACL,GACD,EAnBAjnD,EAAGinD,kBAqBH,WACC,IAAIC,EAAYlnD,EAAG6mD,SAASM,cAAc52C,eAAe,qBAAsB,GAC/E,KAAK22C,GAAa3nD,EAAWsQ,aAAajO,GAAK,MAC9CslD,EAAYlnD,EAAG6mD,SAASM,cAAc52C,eAAe,qBAAsB,IAE1E,IAAK,IAAI/O,EAAI,EAAGA,EAAIxB,EAAG6mD,SAASM,cAAcvmD,OAAQY,IACrD,GAAIxB,EAAG6mD,SAASM,cAAc3lD,GAAG4lD,mBAAqB,EAAG,CACxDF,EAAYlnD,EAAG6mD,SAASM,cAAc3lD,GACtC,KACD,CAKC0lD,EACHp8C,EAAOyL,GAAGhX,EAAWsnC,aAAavpB,KAAO,QAAS,CAAE0pC,eAAgBE,EAAUx1B,aAE9E1vB,QAAQ4hD,KAAK,8BACf,EAEArkD,EAAWyD,YAAYP,KAAKzC,EAAG2mD,YACnC,CAEH,SAASU,EAAuBX,EAAiBjnD,EAAcF,EAAYuL,EAAQxC,EAASi9C,EAAqB7uB,EAAWl3B,GACxH,IAAIQ,EAAKC,KAETD,EAAGsnD,UAcH,WACC,IAAIJ,EAAYR,EAAgBG,SAASM,cAAc52C,eAAe,qBAAsB,GAC5F,KAAK22C,GAAa3nD,EAAWsQ,aAAajO,GAAK,MAC9CslD,EAAYR,EAAgBG,SAASM,cAAc52C,eAAe,qBAAsB,IAEvF,IAAK,IAAI/O,EAAI,EAAGA,EAAIklD,EAAgBG,SAASM,cAAcvmD,OAAQY,IAClE,GAAIklD,EAAgBG,SAASM,cAAc3lD,GAAG4lD,mBAAqB,EAAG,CACrEF,EAAYR,EAAgBG,SAASM,cAAc3lD,GACnD,KACD,CAKC0lD,GACHp8C,EAAOyL,GAAGhX,EAAWsnC,aAAavpB,KAAM,CAAE0pC,eAAgBE,EAAUx1B,YACtE,EA7BA1xB,EAAGunD,gBA+BH,WACCvnD,EAAGwnD,qBAAsB,EAEzBd,EAAgBE,gBAAgBnkD,MAEhC,WACC,GAAKikD,EAAgBG,SAArB,CAGA,IAAI5wC,EAAOywC,EAAgBG,SAASM,cAAc52C,eAAe,aAAc9Q,EAAaunD,gBACvF/wC,EAKLywC,EAAgBa,gBAAgBtxC,EAAKrU,IAAIa,MAEzC,SAAiCC,GAChC,IAAIuT,EAAOvT,EAASsG,KAChBiN,GAAQA,EAAK4gB,YAChB5gB,EAAK4gB,UAAY,IAAIH,EAAUzgB,EAAK4gB,WACpC72B,EAAGynD,aAAexxC,GAGnBjW,EAAGwnD,qBAAsB,CAC1B,IAdCxnD,EAAGsnD,WAJG,CAmBR,GACD,EAzDAZ,EAAgBgB,WAEhB,SAAoBC,GACnB,GAAIpoD,EAAWsQ,aAAajO,GAAK,EAAG,CACnC,IAAIqU,EAAOywC,EAAgBG,SAASM,cAAc52C,eAAe,KAAMo3C,GACnE1xC,GACHnL,EAAOyL,GAAGhX,EAAWsnC,aAAavpB,KAAM,CAAE0pC,eAAgB/wC,EAAKyb,YACjE,MAECppB,EAAQpD,SAAS0iD,QACnB,EAiDA,IAAIC,EAAwBtoD,EAAWwI,IAAI,iBAAiB,SAAUgB,EAAGd,GACpEA,EAAO6/C,aACVvC,EAAoBwC,mCAAmC9/C,EAAOrG,IAAIa,KAAKulD,8BAEzE,IAEAxoD,EAAOuI,IAAI,WAAY8/C,GAEvBtoD,EAAWyD,YAAYP,KAAKzC,EAAGunD,gBAChC,CAjIHloD,EAAQ4I,OAAO,iBAAiBC,WAAW,mBAAoBu+C,GAC/DpnD,EAAQ4I,OAAO,iBAAiBC,WAAW,wBAAyBm/C,GAEpEZ,EAAmBt+C,QAAU,CAAC,qBAAsB,eAAgB,aAAc,SACjF,uBAAwB,kBACzBk/C,EAAuBl/C,QAAU,CAAC,qBAAsB,eAAgB,aAAc,SAAU,UAC/F,sBAAuB,YAAa,SA4HrC,CAnID,CAmIGC,OAAO/I,Q,aCnIV,SAAWA,GAKP,SAASqnD,EAAgB3iC,GACxB,IAAIspB,EAAiBlgC,aAAe,oBAEpC,MAAO,CACNw5C,YAID,SAAqBrgC,GACpB,OAAOvC,EAAMI,IAAIkpB,EAAiB,cAAe,CAChDjpB,OAAQ,CACPkC,WAAYA,IAGf,EATCihC,gBAWD,SAAyBI,GACxB,OAAO5jC,EAAMI,IAAIkpB,EAAiB,kBAAmB,CACpDjpB,OAAQ,CACP5N,GAAImxC,IAGP,EACD,CACDv/C,OAAO/I,QA5BD4I,OAAO,iBAAiByd,QAAQ,qBAAsBghC,GAE9DA,EAAgBv+C,QAAU,CAAC,QA0B3B,CA7BD,E,aCAA,SAAW9I,GAKP,SAAS4oD,EAAgBxoD,EAAcqL,EAAQo9C,EAAa3oD,GACxD,IAAIS,EAAKC,KAETD,EAAGwU,UAAYjV,EAAWiV,UAC1BxU,EAAGmoD,SAAW,GACdnoD,EAAGooD,WAAa,2BAEhBpoD,EAAGoL,KAmBH,WACIpL,EAAGqoD,mBACP,EApBAroD,EAAGqoD,kBAEH,WACIH,EAAYpwC,2BAA2BrV,MAEvC,SAAyCC,GACrC1C,EAAGmoD,SAAWvlD,mBAAmBC,iBAAiBH,EAAU,IAC5D,IAAK,IAAIlB,EAAI,EAAGA,EAAIxB,EAAGmoD,SAASvnD,OAAQY,IAAK,CAGzC,IADA,IAAI8mD,EAAU,EACL3mD,EAAI,EAAGA,EAAI3B,EAAGmoD,SAAS3mD,GAAG2iC,MAAMvjC,OAAQe,IAC7C2mD,GAAoBtoD,EAAGmoD,SAAS3mD,GAAG2iC,MAAMxiC,GAAG4mD,KAAKC,eAErDxoD,EAAGmoD,SAAS3mD,GAAGgnD,eAAiBF,CACpC,CACJ,GACJ,EAMAroD,KAAKkH,QAAUnH,EAAGoL,IACtB,CAEDhD,OAAO/I,QArCE4I,OAAO,iBAAiBC,WAAW,yBAA0B+/C,GAErEA,EAAgB9/C,QAAU,CAAC,eAAgB,SAAU,iCAAkC,aAmC1F,CAtCD,E,aCAA,SAAW9I,GAKP,SAASgV,EAAsB0P,GAE3B,IAAI2J,EAAcvgB,aAAe,0BAEjClN,KAAK6X,yBAA2B,WAC5B,OAAOiM,EAAMI,IAAIuJ,EAAc,yBACnC,CACJ,CACDtlB,OAAO/I,QAZE4I,OAAO,iBAAiByd,QAAQ,iCAAkCrR,GAE1EA,EAAsBlM,QAAU,CAAC,QAUpC,CAbD,E,aCAA,SAAW9I,GAKP,SAAS4oD,EAAgBQ,EAAmBhpD,GAC9C,IAAIO,EAAKC,KACHD,EAAG0oD,iBAAmBjpD,EAAa+W,GAEzCxW,EAAG2oD,WAAa,GAChB3oD,EAAG4oD,iBAAmB,GAChB5oD,EAAG6oD,cAET,WACCJ,EAAkBK,eAAe,GAAGrmD,MAEpC,SAA8BC,GAG7B,IAFA,IAAIqmD,EAAcrmD,EAASsG,KAAKggD,GAAKtmD,EAASsG,KAErCxH,EAAI,EAAGA,EAAIunD,EAAWnoD,OAAQY,IAAK,CAC3C,IAAIynD,EAAKF,EAAWvnD,GAAG0nD,KAAKzhC,UAAU,EAAG,GACzCshC,EAAWvnD,GAAG2nD,YAAcF,EACxBjpD,EAAG4oD,iBAAiB9nD,QAAQmoD,GAAM,GACrCjpD,EAAG4oD,iBAAiBn5C,KAAKw5C,EAE3B,CAEAjpD,EAAG2oD,WAAaI,CACjB,GACD,EAEA/oD,EAAGmH,QAAU,WACZnH,EAAG6oD,eACJ,CACD,CAEEzgD,OAAO/I,QAnCD4I,OAAO,iBAAiBC,WAAW,qBAAsB+/C,GAE9DA,EAAgB9/C,QAAU,CAAC,6BAA8B,eAiC5D,CApCD,E,aCAA,SAAW9I,GAKV,SAASopD,EAAkB1kC,GAC1B9jB,KAAK6oD,cAAgB,SAAUtyC,GAC9B,OAAOuN,EAAMI,IAAIhX,aAAe,gCAAkCwuB,EAAE2J,MAAM,CAAE8jB,UAAW5yC,IACxF,EACAvW,KAAKopD,yBAA2B,WAA2B,IAAjBza,EAAU0a,UAAA1oD,OAAA,QAAAC,IAAAyoD,UAAA,GAAAA,UAAA,GAAG,GACtD,OAAOvlC,EAAMI,IAAIhX,aAAe,2CAA6CwuB,EAAE2J,MAAM,CAAEikB,mBAAoB3a,IAC5G,CAED,CAEExmC,OAAO/I,QAdD4I,OAAO,iBAAiByd,QAAQ,6BAA8B+iC,GAEtEA,EAAkBtgD,QAAU,CAAC,QAY7B,CAfD,E,aCAA,SAAU9I,GAQN,SAAS4oD,EAAgBh0C,EAAkBnJ,EAAQrL,EAAci3B,EAAW72B,EAASF,EAAYo6C,EAAiBC,GAC9G,IAAIh6C,EAAKC,KACTD,EAAG4+C,QAAUn/C,EAAa4gD,MAC1BrgD,EAAGw/C,cAAgB//C,EAAaggD,cAehCpgD,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5BhjD,EAAW,CAAC,uBAAwB,+BAA+B8C,MAAK,SAAUoD,GAC9Ek0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,wBACpBy2C,YAAaz2C,EAAa,+BAElC,GACJ,IAEA7F,EAAGmH,QAAU,YAtBb,WAOI,SAAS04C,EAAcn9C,GACnB1C,EAAG8/C,YAAc9/C,EAAGw/C,cAAgB98C,EAASsG,KAAOtG,EAASsG,KAAK,GAClEhJ,EAAG4+C,MAAQ5+C,EAAG8/C,YAAYl+C,EAC9B,CATI5B,EAAGw/C,cACHvrC,EAAiB+rC,mBAAmBhgD,EAAGw/C,eAAe/8C,KAAKo9C,GACpD7/C,EAAG4+C,OACV3qC,EAAiB2rC,OAAO5/C,EAAG4+C,OAAOn8C,KAAKo9C,EAO/C,CAYID,GACA5F,EAAiBuC,sBAAsB,SAAS95C,MAAK,SAAUC,GAC3D1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,CACJ,CAEA,SAAS8mD,EAAgBjqD,EAAYC,EAAQ2P,EAAI8E,EAAkBw1C,EAAchqD,EAAci3B,EAC3FgmB,EAAsB/8C,EAAYo6C,EAAiBC,EAAkB5lC,GACrE,IAAIpU,EAAKC,KAqFT,SAASypD,EAAoBzhD,GACzBgM,EAAiB01C,4BAA4BF,EAAaG,qBAAqBhoD,GAAIqG,EAAOrG,IAAIa,MAE9F,SAAuCC,GACtCnD,EAAW8K,WAAW,yBAA0B,CAAEpC,OAAQA,EAAQtF,OAAQD,EAASsG,OAGvD,GAFdhJ,EAAG6pD,gBAAgBhzB,UAAUizB,yBAClBx5C,gBAAgB,cAAc,GACrC1P,QAAgBZ,EAAG+pD,cAC9B91C,EAAiB+1C,qBAAqBP,EAAaG,qBAAqBhoD,IAAIa,MAIhF,SAAgCC,GAC5BnD,EAAW8K,WAAW,qBAAsB3H,EAASsG,MACjDtG,EAASsG,KAAKvE,SACdlF,EAAW8K,WAAW,6BAA8B3H,EAASsG,MAC7DhJ,EAAGiqD,yBAA0B,GAI7B1qD,EAAW8K,WAAW,4BAA6B3H,EAASsG,KAEpE,IAbIhJ,EAAG+pD,aAAc,EAczB,GACJ,CA5GA/pD,EAAG6pD,qBAAkBhpD,EACrBb,EAAGkqD,qBAAsB,EACzBlqD,EAAGmqD,uBAAyB,GAC5BnqD,EAAGoqD,oBAAsB3qD,EAAa+W,GACtCxW,EAAGiqD,yBAA0B,EAE7BvN,EAAqBE,qBAAuB,QAC5CF,EAAqBG,yBAA2B78C,EAAGoqD,kBAEnDpqD,EAAGqqD,mBAEH,WACQrqD,EAAGoqD,kBAAoB,EACvBj7C,EAAG6B,IAAI,CACHiD,EAAiBq2C,kBAAkBtqD,EAAGoqD,mBACtCn2C,EAAiBs2C,uBAAuBvqD,EAAGoqD,qBAC5C3nD,MAyCP,SAAmCC,GAC/B1C,EAAG6pD,gBAAkBnnD,EAAS,GAAGsG,KACjC0zC,EAAqBY,gCAAkCt9C,EAAG6pD,gBAAgBW,gBAE1Ef,EAAaG,qBAAuBlnD,EAAS,GAAGsG,KAChDygD,EAAagB,WAAazqD,EAAG6pD,gBAAgBY,WAE7CzqD,EAAG6pD,gBAAgBhzB,UAAY,IAAIH,EAAU12B,EAAG6pD,gBAAgBhzB,WAChE72B,EAAG6pD,gBAAgBhzB,UAAU6zB,uBAAuBhB,GAGpD,IADA,IAAIiB,EAAsB3qD,EAAG6pD,gBAAgBhzB,UAAUizB,yBAC9CtoD,EAAI,EAAGA,EAAIioD,EAAagB,WAAW7pD,OAAQY,IAChD,IAA8C,IAA1CioD,EAAagB,WAAWjpD,GAAGopD,WAAqB,CAChD,IAAIC,EAAMF,EAAoBp6C,eAAe,KAAMk5C,EAAagB,WAAWjpD,GAAGspD,2BAC1ED,IACAA,EAAID,YAAa,EAGzB,CAGJ5qD,EAAGkqD,qBAAsB,EAEzBlQ,EAAiBwD,gBAAgBx9C,EAAG6pD,gBAAgBhzB,UAAW72B,EAAG6pD,gBAAgBjoD,GAAIo4C,EAAiByD,MAAMsN,MACjH,IA7BA,SAAiC7uC,GACZ,KAAdA,EAAIjZ,SACHjD,EAAGm9C,UAAW,EACtB,KApCIn9C,EAAGoqD,kBAAoB3qD,EAAa+W,GAEpCvC,EAAiB+2C,8BAA8BhrD,EAAGoqD,mBAAmB3nD,MAAK,SAASC,GAC/E1C,EAAG6pD,gBAAkBnnD,EAASsG,KAC9B0zC,EAAqBY,gCAAkCt9C,EAAG6pD,gBAAgBW,gBAE1ExqD,EAAG6pD,gBAAgBhzB,UAAY,IAAIH,EAAU12B,EAAG6pD,gBAAgBhzB,WAChE72B,EAAG6pD,gBAAgBhzB,UAAU6zB,uBAAuBhB,GAEpD,IAAIiB,EAAsB3qD,EAAG6pD,gBAAgBhzB,UAAUizB,yBAEvD9P,EAAiBwD,gBAAgBx9C,EAAG6pD,gBAAgBhzB,UAAW72B,EAAG6pD,gBAAgBjoD,GAAIo4C,EAAiByD,MAAMsN,OAE7G92C,EAAiBs2C,uBAAuBvqD,EAAG6pD,gBAAgBjoD,IAAIa,MAAK,SAASwoD,GAIzE,GAHAxB,EAAaG,qBAAuBqB,EAAMjiD,KAC1CygD,EAAagB,WAAazqD,EAAG6pD,gBAAgBY,WAE1ChB,EAAagB,WACZ,IAAK,IAAIjpD,EAAI,EAAGA,EAAIioD,EAAagB,WAAW7pD,OAAQY,IAChD,IAA8C,IAA1CioD,EAAagB,WAAWjpD,GAAGopD,WAAqB,CAChD,IAAIC,EAAMF,EAAoBp6C,eAAe,KAAMk5C,EAAagB,WAAWjpD,GAAGspD,2BAC1ED,IACAA,EAAID,YAAa,EAEzB,CAIR5qD,EAAGkqD,qBAAsB,CAC7B,GACJ,IAiCR,EA4BAlqD,EAAGmH,QAAU,WACTnH,EAAGqqD,qBAEHrQ,EAAiBuC,sBAAsB,SAAS95C,MAAK,SAAUC,GAC3D1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,EAEArD,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5BhjD,EAAW,CAAC,uBAAwB,+BAA+B8C,MAAK,SAAUoD,GAC9Ek0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,wBACpBy2C,YAAaz2C,EAAa,+BAElC,GACJ,GACJ,CA3KAxG,EAAQ4I,OAAO,iBAAiBC,WAAW,qBAAsB+/C,GACjE5oD,EAAQ4I,OAAO,iBAAiBC,WAAW,2BAA4BshD,GAEvEvB,EAAgB9/C,QAAU,CAAC,4BAA6B,SAAU,eAAgB,YAAa,UAAW,aAAc,kBAAmB,oBAC3IqhD,EAAgBrhD,QAAU,CAAC,aAAc,SAAU,KAAM,4BAA6B,iCAAkC,eAAgB,YACpI,uBAAwB,aAAc,kBAAmB,mBAAoB,sBAwKpF,CA9KD,CA8KGC,OAAO/I,Q,aC9KV,SAAUA,GAYN,SAAS6rD,EAA2B1yC,GAYhC,MAXgB,CACZiM,SAAU,IACVoB,MAAO,CACHvkB,SAAU,MAEduV,YAAa2B,EAAgBsD,QAAQ,gCAAiC,iEACtE5T,WAAYsQ,EAAgBiuB,cAAc,8BAA+B,0BACzE3vB,aAAc,KACdC,kBAAkB,EAI1B,CAEA,SAASo0C,EAAgC3yC,GAkBrC,MAjBgB,CACZiM,SAAU,IACVoB,MAAO,CACHvkB,SAAU,MAEduV,YAAa,SAAUgU,EAASC,GAC5B,OAAIA,EAAKC,YACE5d,aAAe2d,EAAKC,YAEpBvS,EAAgBsD,QAAQ,gCAAiC,uDAExE,EACA5T,WAAYsQ,EAAgBiuB,cAAc,oCAAqC,gCAC/E3vB,aAAc,KACdC,kBAAkB,EAI1B,CAEA,SAASq0C,EAA4Bn3C,EAAkBnJ,EAAQrL,EAAci3B,EAAW72B,EAASF,EAAYo6C,GAAiB,IAAAM,EACtHr6C,EAAKC,KAETD,EAAGqrD,YAAa,EAEhBrrD,EAAG4+C,QAAUn/C,EAAa4gD,MAC1BrgD,EAAGw/C,cAAgB//C,EAAaggD,cAEhCz/C,EAAGsrD,iBAAiC,QAAfjR,EAAAG,uBAAe,IAAAH,GAAwB,QAAxBA,EAAfA,EAAiBI,8BAAsB,IAAAJ,GAA0B,QAA1BA,EAAvCA,EAAyC9pC,eAAe,MAAO,UAAE,IAAA8pC,OAAA,EAAjEA,EAAmEx4C,SAAS,EAEpG7B,EAAGurD,gBAAkB,CACpBC,WAAY,EACZC,QAAS,EACTl0C,OAAQ,EACRm0C,OAAQ,GAwIN,SAASC,IACL3rD,EAAG4rD,oCACH5rD,EAAG6rD,oBACP,CArIA7rD,EAAG8rD,gBAAkB,GACrB9rD,EAAG+rD,gBAAkB,GAErB/rD,EAAG2rD,qBAAuBA,EAC1B3rD,EAAG4rD,kCAQH,WACI,IAAIjN,EAAS3+C,EAAG4+C,MAAQ,CAAC5+C,EAAG4+C,YAAS/9C,EAUrC,SAASmrD,EAAyCtpD,GAC9C,IAAIupD,EAAOvpD,EAASsG,KACpBhJ,EAAGse,KAAO,GACVte,EAAG+uC,WAAa,GAChB/uC,EAAG8rD,gBAAkB,GAErB,IAAK,IAAItqD,EAAI,EAAGA,EAAIyqD,EAAKrrD,OAAQY,IAAK,CAClC,IAAI0qD,EAAMD,EAAKzqD,GAoBf,GAnBwB,MAAnB0qD,EAAI/Q,aAAuB+Q,EAAI/Q,YAahCn7C,EAAGmsD,0BAA0BD,IAG7BlsD,EAAG8rD,gBAAgBr8C,KAAKy8C,GAGvBA,EAAI5tC,MAAS4tC,EAAI5tC,KAAK1d,OAG3B,IAAK,IAAIe,EAAI,EAAGA,EAAIuqD,EAAI5tC,KAAK1d,OAAQe,IAC5B3B,EAAGse,KAAK/N,eAAe,KAAM27C,EAAI5tC,KAAK3c,GAAGC,KAC1C5B,EAAGse,KAAK7O,KAAKy8C,EAAI5tC,KAAK3c,GAElC,CAEA3B,EAAGqrD,YAAa,CACpB,MA7CexqD,IAAX89C,EACA1qC,EAAiBm4C,yCAAyCzN,EAAQ3+C,EAAGsrD,iBAAiB7oD,KAAKupD,GAG3F/3C,EAAiB23C,kCAtBD,KAsBsD5rD,EAAGsrD,iBAAiB7oD,KAAKupD,EA0CvG,EAxDAhsD,EAAG6rD,mBA4GH,WACC53C,EAAiB43C,qBAAqBppD,MAEtC,SAAmCC,GAClC1C,EAAG+rD,gBAAkBnpD,mBAAmBC,iBAAiBH,EAAU,IACnE,IAAK,IAAIlB,EAAI,EAAGA,EAAIxB,EAAG+rD,gBAAgBnrD,OAAQY,IAAK,CACnD,IAAI0qD,EAAMlsD,EAAG+rD,gBAAgBvqD,GACpB0qD,EAAIG,cAAgBH,EAAI95B,QAAUpyB,EAAGurD,gBAAgBh0C,OAC9D20C,EAAIngB,IAAM5+B,aAAe,SAAW++C,EAAItqD,EACzC,CACD,GACD,EAtHA5B,EAAGssD,mBAwHH,SAA4BzK,GACxB/2C,EAAOyL,GAAG,8BAA+B,CAACC,GAAIqrC,EAAUjgD,IAC5D,EAzHA5B,EAAGmsD,0BAwDH,SAAmCD,GAC/B,IAAKA,EAAI78B,oBAAsB68B,EAAI78B,kBAAkBzuB,OACjD,OAAO,EAEX,IAAK,IAAIY,EAAI,EAAGA,EAAI0qD,EAAI78B,kBAAkBzuB,OAAQY,IAAK,CACnD,IAAI4tB,EAAWpvB,EAAG+uC,WAAWx+B,eAAe,KAAM27C,EAAI78B,kBAAkB7tB,GAAGI,IACtEwtB,KACDA,EAAW88B,EAAI78B,kBAAkB7tB,IACxB+qD,QAAU,GACnBn9B,EAASK,SAAWy8B,EACpB98B,EAASo9B,YAAa,EACtBxsD,EAAG+uC,WAAWt/B,KAAK2f,GACnBpvB,EAAG8rD,gBAAgBr8C,KAAK2f,IAE5BA,EAASm9B,QAAQ98C,KAAKy8C,EAC1B,CAEA,OAAO,CACX,EAxEAlsD,EAAGysD,UAkGH,SAAmBpM,GAClB,OAAO,SAAUh8C,GAChB,OAAOA,EAAKia,MAAQja,EAAKia,KAAK/N,eAAe,KAAM8vC,EACpD,CACD,EArGArgD,EAAG4/C,OAyEH,SAAgBvjC,GACZ,GAAIrc,EAAGw/C,eAAiBx/C,EAAG4+C,MAAO,KAOrBiB,EAAT,SAAuBn9C,GACnB1C,EAAG8/C,YAAc9/C,EAAGw/C,cAAgB98C,EAASsG,KAAOtG,EAASsG,KAAK,GAClEhJ,EAAG4+C,MAAQ5+C,EAAG8/C,YAAYl+C,GAEtBya,GACAA,GAER,EAbIrc,EAAGw/C,cACHvrC,EAAiB+rC,mBAAmBhgD,EAAGw/C,eAAe/8C,KAAKo9C,GAE3D5rC,EAAiB2rC,OAAO5/C,EAAG4+C,OAAOn8C,KAAKo9C,EAW/C,MAEQxjC,GACAA,GAGZ,EA8BArc,EAAGmH,QAAU,WACTnH,EAAG4/C,OAAO+L,EACd,CACJ,CAEA,SAASe,EAAkCntD,EAAY0U,EAAkBtU,GACrE,IAAIK,EAAKC,KACTD,EAAG8rD,gBAAkB,GAGrB9rD,EAAGoL,KAEH,WAgBI,SAASuhD,EAAqBjqD,GAC1B1C,EAAG8rD,gBAAkBppD,EAASsG,IAClC,EAjBIhJ,EAAGsB,SAAS0hD,QAAUhjD,EAAGsB,SAAS2hD,iBAAgBjjD,EAAGsB,SAAS0hD,OAAShjD,EAAGsB,SAAS2hD,eAAephD,QAClG7B,EAAGsB,SAASmf,OAASzgB,EAAGsB,SAAS4hD,gBAAeljD,EAAGsB,SAASmf,MAAQzgB,EAAGsB,SAAS4hD,cAAcrhD,OAEzE,UAAtB7B,EAAGsB,SAAS0hD,OACX/uC,EAAiB23C,oCAAoCnpD,KAAKkqD,GAEhC,WAAtB3sD,EAAGsB,SAAS0hD,SACbzjD,EAAWgkD,eAAe3iD,OAAS,EAClCqT,EAAiBm4C,yCAAyC7sD,EAAWgkD,gBAAgB,GAAM9gD,KAAKkqD,GAGhG14C,EAAiB23C,mCAAkC,GAAO,GAAMnpD,KAAKkqD,GAOjF,EAEA3sD,EAAGmH,QAAUnH,EAAGoL,KAEc,IAA1B/L,EAAQ4kD,QAAQC,OAAe7kD,EAAQ4kD,QAAQE,MAAQ,GACvDnkD,EAAGmH,SAEX,CAhPA9H,EAAQ4I,OAAO,iBAAiBC,WAAW,yBAA0BkjD,GACrE/rD,EAAQ4I,OAAO,iBAAiBC,WAAW,+BAAgCwkD,GAC3ErtD,EAAQ4I,OAAO,iBAAiBuc,UAAU,yBAA0B2mC,GACpE9rD,EAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqB0mC,GAE/DA,EAA2B/iD,QAAU,CAAC,WACtCgjD,EAAgChjD,QAAU,CAAC,WAC3CijD,EAA4BjjD,QAAU,CAAC,4BAA6B,SAAU,eAAgB,YAAa,UAAW,aAAc,mBAEpIukD,EAAkCvkD,QAAU,CAAC,aAAc,4BAA6B,aAyO3F,CAnPD,CAmPGC,OAAO/I,Q,aCnPV,SAAUA,GAUN,SAAS4U,EAAiB8P,GACtB9jB,KAAK2V,kBAAoB,WACrB,OAAOmO,EAAMI,IAAIhX,aAAe,kCACpC,EAEAlN,KAAK2rD,kCAAoC,SAAUgB,EAAmBC,GAClE,OAAO9oC,EAAMI,IAAIhX,aAAe,mDAAqDwuB,EAAE2J,MAAM,CAAEsnB,uBAAyC/rD,IAAtB+rD,EAAgDC,aAAcA,IAAgB,IACpM,EAEA5sD,KAAKmsD,yCAA2C,SAAU51C,EAAIq2C,GAC1D,OAAO9oC,EAAMI,IAAIhX,aAAe,0DAA4DwuB,EAAE2J,MAAM,CAAEqZ,OAAQnoC,EAAIq2C,aAAcA,IAAgB,IACpJ,EAEA5sD,KAAK4rD,mBAAqB,WACzB,OAAO9nC,EAAMI,IAAIhX,aAAe,8BACjC,EAEAlN,KAAKqqD,kBAAoB,SAAS9zC,GAC9B,OAAOuN,EAAMI,IAAIhX,aAAe,mCAAqCwuB,EAAE2J,MAAM,CAAE9uB,GAAIA,IACvF,EAEAvW,KAAK+qD,8BAAgC,SAAS1kC,GAC1C,OAAOvC,EAAMI,IAAIhX,aAAe,+CAAiDwuB,EAAE2J,MAAM,CAAEhf,WAAYA,IAC3G,EAEArmB,KAAKsqD,uBAAyB,SAASuC,GACnC,OAAO/oC,EAAMI,IAAIhX,aAAe,wCAA0CwuB,EAAE2J,MAAM,CAAEwnB,YAAaA,IACrG,EAEA7sD,KAAK0pD,4BAA8B,SAAUoD,EAASC,GAClD,OAAOjpC,EAAMQ,KAAKpX,aAAe,6CAA+CwuB,EAAE2J,MAAM,CAAE0nB,0BAA2BA,IAA6BD,EACtJ,EAEA9sD,KAAK+pD,qBAAuB,SAAU+C,GAClC,OAAOhpC,EAAMQ,KAAKpX,aAAe,qCAAsC4/C,EAC3E,EAEA9sD,KAAK2/C,OAAS,SAAUppC,GACpB,OAAOuN,EAAMI,IAAIhX,aAAe,0BAA4BwuB,EAAE2J,MAAM,CAAEqZ,OAAQnoC,IAClF,EAEAvW,KAAK+/C,mBAAqB,SAAUiF,GAChC,OAAOlhC,EAAMI,IAAIhX,aAAe,qCAAuCwuB,EAAE2J,MAAM,CAAEma,cAAewF,IACpG,CACJ,CArDA5lD,EAAQ4I,OAAO,iBAAiByd,QAAQ,4BAA6BzR,GAErE5U,EAAQ4I,OAAO,iBAAiByd,QAAQ,iCAAkCzR,GAG1E5U,EAAQ4I,OAAO,iBAAiByd,QAAQ,iCAAkC,CAkD1E,WACIzlB,KAAK2pD,qBAAuB,CAAC,CACjC,IAlDA31C,EAAiB9L,QAAU,CAAC,QAmD/B,CA3DD,CA2DGC,OAAO/I,Q,aC3DT,WAKG,SAAS4tD,EAA2Bz0C,GAChC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHqnC,KAAM,IACNllD,OAAQ,KACRmlD,qBAAsB,KACtBC,WAAY,MAEhBv2C,YAAa2B,EAAgBsD,QAAQ,sBAAuB,yEAC5D/E,kBAAkB,EAClB7O,WAAYmlD,EACZv2C,aAAc,MAKlB,OAFAu2C,EAA4BllD,QAAU,CAAC,yBAEhCqc,EAEP,SAAS6oC,EAA4BC,GACjC,IAAIttD,EAAKC,KAETD,EAAGoL,KAiDH,WACIkiD,EAAuBC,WAAW9qD,MAElC,SAA0BC,GACtB1C,EAAGwtD,eAAiB5qD,mBAAmBC,iBAAiBH,EAAU,IAC9D1C,EAAGktD,KAAKO,cAAgB,IACxBztD,EAAG0tD,WAAa1tD,EAAGwtD,eAAel9C,gBAAgB,eAAgBtQ,EAAGktD,KAAKtrD,IAElF,GACJ,EAzDA5B,EAAG6+B,OAKH,WACQ7+B,EAAGgI,QACHhI,EAAGgI,QAEX,EARAhI,EAAG2tD,WAuBH,WAGI,IADA,IAAIC,GAAkB,EACbpsD,EAAI,EAAGA,EAAIxB,EAAGwtD,eAAe5sD,OAAQY,IACtCxB,EAAGwtD,eAAehsD,GAAG0Q,WACrB07C,EAAiB5tD,EAAGwtD,eAAehsD,GAAGI,IAI9C0rD,EAAuBO,eAAe7tD,EAAGktD,KAAKtrD,GAAIgsD,EAAgB5tD,EAAGotD,YAAY3qD,MAEjF,SAAgCC,GACxB1C,EAAGmtD,sBACHntD,EAAGmtD,sBAEX,GACJ,EAtCAntD,EAAG8tD,WASH,SAAoBZ,GAChB,GAAIA,EAAKh7C,SACLg7C,EAAKh7C,UAAW,MACb,CACH,IAAK,IAAI1Q,EAAI,EAAGA,EAAIxB,EAAGwtD,eAAe5sD,OAAQY,IACtCxB,EAAGwtD,eAAehsD,GAAG0Q,WACrBlS,EAAGwtD,eAAehsD,GAAG0Q,UAAW,GAGxCg7C,EAAKh7C,UAAW,CACpB,CACJ,EAnBAlS,EAAG+tD,YAuCH,WACI,OAAO,SAAUb,GACb,OAAOA,EAAKtrD,KAAO5B,EAAGktD,KAAKtrD,IAAMsrD,EAAKO,aAAe,CACzD,CACJ,EAaAztD,EAAGmH,QAAUnH,EAAGoL,IACpB,CACJ,CAxFA/L,QAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqByoC,GAE/DA,EAA2B9kD,QAAU,CAAC,UAwFzC,CA3FA,E,aCAA,WAKG,SAAS6lD,EAAyBx1C,GAC9B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACP,EACAhP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,uEAC5D/E,kBAAkB,EAClB7O,WAAY+lD,EACZn3C,aAAc,MAKlB,OAFAm3C,EAA0B9lD,QAAU,CAAC,wBAAyB,SAAU,aAAc,WAAY,YAAa,iBAAkB,oBAAqB,MAE/Iqc,EAEP,SAASypC,EAA0BX,EAAwBxiD,EAAQvL,EAAYoK,EAAUF,EAAWG,EAAgBuV,EAAahQ,GAC7H,IAAInP,EAAKC,KACTD,EAAGkuD,SAAW,CAAC,CAAEtsD,GAAI,EAAGoa,KAAM,WAAa,CAAEpa,GAAI,EAAGoa,KAAM,WAAa,CAAEpa,GAAI,EAAGoa,KAAM,YACtFhc,EAAGmuD,aAAe,GAElBnuD,EAAGutD,SAqIH,WACID,EAAuBc,kBAAkB3rD,MAEzC,SAA0BC,GACtB1C,EAAGquD,aAAezrD,mBAAmBC,iBAAiBH,EAAU,IAE3D1C,EAAGquD,aAAaC,2BAAiF,GAApDtuD,EAAGquD,aAAaC,0BAA0B1tD,SACxFZ,EAAGquD,aAAaC,0BAA4B,eAE3CtuD,EAAGquD,aAAaE,oBAAmE,GAA7CvuD,EAAGquD,aAAaE,mBAAmB3tD,SAC1EZ,EAAGquD,aAAaE,mBAAqB,mBAC7C,GACJ,EAhJAvuD,EAAGoL,KAkJH,gBAC4BvK,IAApBb,EAAGquD,cACHruD,EAAGutD,UAEX,EArJAvtD,EAAGwuD,WA+HH,SAAoBtB,GAChBpiD,EAAOyL,GAAG,6BAA8B,CAAEC,GAAI02C,EAAKtrD,IACvD,EAhIA5B,EAAG2+B,SAEH,WAyCI,SAAS8vB,EAAUzlD,GACXA,IACAhJ,EAAGquD,aAAerlD,EAE1B,CAIA,SAAS41B,EAAqBn1B,EAAWG,GACrC,IAAI5J,EAAKC,KAETD,EAAGwQ,KAyBH,WACI88C,EAAuBoB,iBAAiB1uD,EAAGquD,cAAc5rD,MAEzD,SAAsBC,GACCE,mBAAmBC,iBAAiBH,EAAU,IACjE+G,EAAUmP,KAAK5Y,EAAGquD,aACtB,GACJ,EA/BAruD,EAAG6+B,OAiCH,WACIp1B,EAAUmP,MACd,EAlCA5Y,EAAG2uD,QAoCH,SAAiBC,GACb,IAAI5lD,EAAO,CACPpH,GAAIgtD,EAAgB5uD,EAAG6uD,aAAajtD,GAAK5B,EAAG8uD,iBAAiBltD,GAC7DmtD,KAAMH,EAAgB5uD,EAAG6uD,aAAe7uD,EAAG8uD,iBAC3C18B,OAAQpyB,EAAGgvD,eAAeptD,GAC1BqtD,gBAAeL,EACfM,WAAUN,EACV7hB,QAAS,IAGb/sC,EAAGquD,aAAac,MAAM1/C,KAAKzG,EAC/B,EA9CAhJ,EAAGszB,OAgDH,SAAgB9c,EAAIo4C,GAChB,GAAIp4C,EAAK,EACL,IAAK,IAAIhV,EAAI,EAAGA,EAAIxB,EAAGquD,aAAac,MAAMvuD,OAAQY,IAC9C,GAAIgV,GAAMxW,EAAGquD,aAAac,MAAM3tD,GAAGI,KAAOgtD,GAAiB5uD,EAAGquD,aAAac,MAAM3tD,GAAGytD,eAAkC,GAAjBL,GAAoE,GAA1C5uD,EAAGquD,aAAac,MAAM3tD,GAAGytD,eAEpJ,YADAjvD,EAAGquD,aAAac,MAAMj/C,OAAO1O,EAAG,EAKhD,EAxDAxB,EAAGovD,cA0DH,SAAuB54C,GACnB,OAAIA,EAAK,EACExW,EAAGkuD,SAAS13C,EAAK,GAAGwF,KAGxB,EACX,EA/DAhc,EAAGqvD,aAEH,WACIrvD,EAAGsvD,UAAY,GAEXtvD,EAAGuvD,cAAgBvvD,EAAGuvD,aAAa3tD,GAAK,GACxC0rD,EAAuBC,UAAS,EAAO,KAAM,KAAMvtD,EAAGuvD,aAAa3tD,IAAIa,MAEvE,SAAsBC,GAGlB,IAFA,IAAI8sD,EAAY5sD,mBAAmBC,iBAAiBH,EAAU,IAErDlB,EAAI,EAAGA,EAAIguD,EAAU5uD,OAAQY,IAC9BguD,EAAUhuD,GAAGisD,aAAe,GAC5BztD,EAAGsvD,UAAU7/C,KAAK+/C,EAAUhuD,GAGxC,GAER,CA8CJ,CAvHA2N,EAAG6B,IACC,CACIs8C,EAAuBC,UAAS,GAChCpuC,EAAYC,eAAe7f,EAAWsQ,aAAa8J,MAAM,GAAG/X,MAC7Da,MAEP,SAAsBC,GAClB,IAAI+sD,EAAe/sD,EAAS,GAAGsG,KAC3B0mD,EAAchtD,EAAS,GAAGsG,KAE9BhJ,EAAGmuD,aAAe,GAClB,IAAK,IAAI3sD,EAAI,EAAGA,EAAIiuD,EAAa7uD,OAAQY,IACjCiuD,EAAajuD,GAAGisD,aAAe,GAC/BztD,EAAGmuD,aAAa1+C,KAAKggD,EAAajuD,IAK1C,IADAxB,EAAGioB,MAAQ,GACFzmB,EAAI,EAAGA,EAAIkuD,EAAY9uD,OAAQY,IAChCkuD,EAAYluD,GAAGI,IAAMrC,EAAWsQ,aAAajO,IAC7C5B,EAAGioB,MAAMxY,KAAKigD,EAAYluD,IAIlCiI,EAAUL,KAAK,CACXF,OAAQ7J,QAAQwrB,QAAQhc,SAASiuB,MACjCjmB,YAAa1J,aAAe,2EAC5BjF,WAAY02B,EACZ9nB,aAAc,KACdC,kBAAkB,EAClBgF,OAAQ,CACJmyC,SAAUluD,EAAGkuD,SACbG,aAAcruD,EAAGquD,aACjBF,aAAcnuD,EAAGmuD,aACjBlmC,MAAOjoB,EAAGioB,SAEfxlB,KAAKgsD,EACZ,IAQA7vB,EAAqBz2B,QAAU,CAAC,YAAa,iBA2EjD,EA0BAnI,EAAGmH,QAAUnH,EAAGoL,IACpB,CACJ,CAnLA/L,QAAQ4I,OAAO,iBAAiBuc,UAAU,kBAAmBwpC,GAE7DA,EAAyB7lD,QAAU,CAAC,UAmLvC,CAtLA,E,aCAA,WAKG,SAASwnD,EAAoBn3C,GACzB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH+pC,iBAAkB,KAClBC,WAAY,KACZC,eAAgB,KAChBC,SAAU,KACVC,UAAW,KACXC,aAAc,KACdd,MAAO,UACPe,aAAc,KACdzwC,SAAU,KACV0wC,UAAW,MAEft5C,YAAa2B,EAAgBsD,QAAQ,sBAAuB,kEAC5D/E,kBAAkB,EAClB7O,WAAYkoD,EACZt5C,aAAc,MAKlB,OAFAs5C,EAAqBjoD,QAAU,CAAC,wBAAyB,SAAU,aAAc,YAE1Eqc,EAEP,SAAS4rC,EAAqB9C,EAAwBxiD,EAAQvL,EAAYoK,GACtE,IAAI3J,EAAKC,KAETD,EAAGqwD,aAAe,CACd,CACIn9C,KAAM,SACNo9C,QAAQ,EACRtpB,KAAM,uBAEV,CACI9zB,KAAM,WACNo9C,QAAQ,EACRtpB,KAAM,wBAIdhnC,EAAGuwD,oBAAsB,CACrBxB,KAAM,IACNyB,SAAU,IACVC,KAAM,KAGVzwD,EAAGutD,SAqCH,WAQI,SAASmD,EAAiBhuD,GAEtB,IADA,IAAIiuD,EAAQ/tD,mBAAmBC,iBAAiBH,EAAU,IACjDlB,EAAI,EAAGA,EAAImvD,EAAM/vD,OAAQY,IAAK,CACnCmvD,EAAMnvD,GAAGovD,eAAiBD,EAAMnvD,GAAGqvD,YACnC,IAAK,IAAIlvD,EAAI,EAAGA,EAAIgvD,EAAMnvD,GAAGsvD,WAAWlwD,OAAQe,IAAK,CACjD,IAAIovD,EAAMJ,EAAMnvD,GAAGsvD,WAAWnvD,GAC9BovD,EAAIH,eAAiBG,EAAIF,YAEzB,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAIE,SAASrwD,OAAQowD,IAAK,CAC1C,IAAIE,EAAMH,EAAIE,SAASD,GACvBE,EAAIN,eAAiBM,EAAIL,WAC7B,CACJ,CACJ,CACA7wD,EAAGmvD,MAAQwB,CACf,CAtBI3wD,EAAGyf,SACH6tC,EAAuB6D,cAAcnxD,EAAGyf,UAAUhd,KAAKiuD,GAEvDpD,EAAuBC,UAAS,GAAM9qD,KAAKiuD,EAoBnD,EA5DA1wD,EAAG+tD,YAoBH,WACI,OAAO,SAAUb,GACb,OAAIltD,EAAGmwD,UACIjD,EAAKO,cAAgB,IACrBP,EAAKO,cAAgB,KAErBztD,EAAGyf,SAAW,EACdzf,EAAGyf,WAAaytC,EAAKO,aACrBztD,EAAG6vD,cAAgB7vD,EAAG6vD,WAAa,IACjC7vD,EAAG6vD,aAAe3C,EAAKtrD,GAEzB5B,EAAGoxD,qBAAqBd,SAAWpD,EAAKhrC,SAEvD,CACJ,EAjCAliB,EAAGqxD,aA6DH,SAAsBC,EAAMP,GACxBzD,EAAuBiE,aAAaD,GAAM7uD,MAE1C,SAA8BC,GAC1B,IAAIuN,EAAQ8gD,EAAIE,SAASnwD,QAAQwwD,GACjCP,EAAIE,SAAS/gD,OAAOD,EAAO,EAC/B,GACJ,EAnEAjQ,EAAGoL,KAsGH,WACIpL,EAAGoxD,qBAAuBpxD,EAAGqwD,aAAa,QAC1BxvD,IAAbb,EAAGmvD,OACFnvD,EAAGutD,UAEX,EA1GAvtD,EAAGwuD,WASH,SAAoBtB,GAChBpiD,EAAOyL,GAAG,6BAA8B,CAAEC,GAAI02C,EAAKtrD,IACvD,EAVA5B,EAAGwxD,aAYH,SAAsBC,GAClB3mD,EAAOyL,GAAG,8BAA+B,CAAEC,GAAIi7C,EAAS7vD,IAC5D,EAbA5B,EAAG0xD,UAGH,SAAmBC,GACf,OAAQA,EAAKC,aAAehxC,OAAO+wC,EAAKE,WAAajvD,mBAAmBy6B,YAC5E,EAJAr9B,EAAG8xD,aAiEH,SAAsB5mB,EAAQzgB,GAE1B,IAAIsnC,IAAO7mB,EAAO0lB,eAAexqD,QAAQ,MAAO,IAC5C4rD,EAAQ,GACZ,GAAI9mB,EAAO2lB,cAAgBkB,EAAI,CAC3B,IAAI3kC,EAAO2kC,EAAK7mB,EAAO2lB,YACvBmB,EAAMviD,KAAK,CACPwiD,iBAAkBxnC,EAClBynC,eAAgBhnB,EAAOtpC,GACvBC,MAAOurB,EACPykC,UAAWjxC,WAGf0sC,EAAuB6E,eAAeH,GAAOvvD,MAGjD,SAAgCC,GAC5BwoC,EAAO2lB,cAAgB3lB,EAAO0lB,eAAexqD,QAAQ,MAAO,IAE5D8kC,EAAOknB,OAAQ,EAEf7yD,EAAW8K,WAAW,uBAEnB9K,EAAWy8B,QACVryB,EAASP,KAAK,CACVF,OAAQyyB,EAAE,mBACV/J,SAAU,2IACVmU,UAAU,GAGtB,GAhBA,CAiBJ,EASA/lC,EAAGmH,QAAUnH,EAAGoL,KAEhB7L,EAAWwI,IAAI,0BAA0B,WACrC/H,EAAGutD,UACP,IAEAhuD,EAAWwI,IAAI,uBAAuB,SAAU0a,EAAOgvC,GACnD,IAAIvE,EAAOltD,EAAGmvD,MAAM5+C,eAAe,KAAMkhD,EAASY,QAC9CnF,IACAuE,EAASb,eAAiB,EAC1B1D,EAAK4D,WAAWrhD,KAAKgiD,GAE7B,IAEAlyD,EAAWwI,IAAI,eAAe,SAAU0a,EAAOyqC,GAC3CltD,EAAGmvD,MAAM1/C,KAAKy9C,GACdA,EAAK0D,eAAiB,CAC1B,GACJ,CACJ,CAtLAvxD,QAAQ4I,OAAO,iBAAiBuc,UAAU,aAAcmrC,GAExDA,EAAoBxnD,QAAU,CAAC,UAsLlC,CAzLA,E,aCAA,WAKG,SAASmqD,EAAwB95C,GAC7B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHspC,MAAO,WAEXt4C,YAAa2B,EAAgBsD,QAAQ,0BAA2B,sEAChE/E,kBAAkB,EAClB7O,WAAYqqD,EACZz7C,aAAc,MAKlB,OAFAy7C,EAAkCpqD,QAAU,CAAC,wBAAyB,SAAU,aAAc,WAEvFqc,EAEP,SAAS+tC,EAAkCjF,EAAwBxiD,EAAQvL,EAAYM,GACnF,IAAIG,EAAKC,KAETD,EAAGutD,SAQH,WACID,EAAuBC,UAAS,GAAM9qD,MAEtC,SAA0BC,GACtB,IAAIiuD,EAAQ/tD,mBAAmBC,iBAAiBH,EAAU,IAC1D1C,EAAGmvD,MAAQtvD,EAAQ,SAARA,CAAkB8wD,EAAO,CAAElD,cAAe,GACzD,GACJ,EAdAztD,EAAGoL,KAgBH,gBACqBvK,IAAbb,EAAGmvD,OACHnvD,EAAGutD,UAEX,EAnBAvtD,EAAGwuD,WAEH,SAAoBtB,GAChBpiD,EAAOyL,GAAG,6BAA8B,CAAEC,GAAI02C,EAAKtrD,IACvD,EAiBA5B,EAAGmH,QAAUnH,EAAGoL,KAEhB7L,EAAWwI,IAAI,0BAA0B,WACrC/H,EAAGutD,UACP,IAGAhuD,EAAWwI,IAAI,eAAe,SAAU0a,EAAOyqC,GACvCA,EAAKO,cAAgB,GACrBztD,EAAGmvD,MAAM1/C,KAAKy9C,EAEtB,GACJ,CACJ,CA3DA7tD,QAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkB8tC,GAE5DA,EAAwBnqD,QAAU,CAAC,UA2DtC,CA9DA,E,aCAA,WAKG,SAASqqD,EAAoBh6C,GACzB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH4rC,SAAU,KACVgB,iBAAkB,KAClBC,WAAY,KACZC,aAAc,MAElB97C,YAAa2B,EAAgBsD,QAAQ,sBAAuB,kEAC5D5T,WAAY0qD,EACZ97C,aAAc,KACdC,kBAAkB,GAKtB,OAFA67C,EAAqBzqD,QAAU,CAAC,SAAU,wBAAyB,UAE5Dqc,EAEP,SAASouC,EAAqBpzD,EAAQ8tD,EAAwBxiD,GAC1D,IAAI9K,EAAKC,KAuKT,SAASyxD,EAAUC,GACf,OAAQA,EAAKC,aAAehxC,OAAO+wC,EAAKE,WAAajvD,mBAAmBy6B,YAC5E,CAxKAr9B,EAAG6yD,QAAU,CAAC,SAAU,YACxB7yD,EAAG8yD,WAAY,EAEf9yD,EAAG+yD,cAGH,SAAuBjO,EAAOkO,GAC1B,OAAOlO,GACH,IAAK,OACgB,QAAd9kD,EAAG6yD,cAA8BhyD,IAATmyD,EACvBhzD,EAAG8yD,WAAa9yD,EAAG8yD,WAGnB9yD,EAAG6yD,QAAU,OACb7yD,EAAG8yD,UAAYE,IAAQ,GAE/B,MACA,IAAK,WACgB,qBAAdhzD,EAAG6yD,cAA2ChyD,IAATmyD,EACpChzD,EAAG8yD,WAAa9yD,EAAG8yD,WAGnB9yD,EAAG6yD,QAAU,oBACb7yD,EAAG8yD,UAAYE,IAAQ,GAE/B,MACA,IAAK,OACgB,yBAAdhzD,EAAG6yD,cAA+ChyD,IAATmyD,EACxChzD,EAAG8yD,WAAa9yD,EAAG8yD,WAGnB9yD,EAAG6yD,QAAU,wBACb7yD,EAAG8yD,UAAYE,IAAQ,GAE/B,MACA,IAAK,WACgB,aAAdhzD,EAAG6yD,cAAmChyD,IAATmyD,EAC5BhzD,EAAG8yD,WAAa9yD,EAAG8yD,WAGnB9yD,EAAG6yD,QAAU,YACb7yD,EAAG8yD,UAAYE,IAAQ,GAE/B,MACA,IAAK,SACmB,UAAjBhzD,EAAG6yD,QAAQ,IAAmC,YAAjB7yD,EAAG6yD,QAAQ,SAA6BhyD,IAATmyD,EAC3DhzD,EAAG8yD,WAAa9yD,EAAG8yD,WAGnB9yD,EAAG6yD,QAAU,CAAC,SAAU,YACxB7yD,EAAG8yD,UAAYE,IAAQ,GAIvC,EAlDAhzD,EAAGizD,qBA2EH,SAA8BnpD,GAC1B9J,EAAGkzD,kBAAoBlzD,EAAGmzD,WAAWrpD,GACrC0D,gBAAgB,mBAAoB1D,EACxC,EA1BA9J,EAAGmzD,WAAa,CACZC,IAAK,CACDC,MAAO,SAAU1B,GACb,QAAS3xD,EAAG2yD,eAAiBhB,EAAK/vD,EACtC,GAEJ0xD,SAAU,CACND,MAAO,SAAU1B,GACb,QAAS3xD,EAAG2yD,eAAiBhB,EAAK/vD,KAAO8vD,EAAUC,KAAUA,EAAKC,WACtE,GAEJ2B,QAAS,CACLF,MAAO,SAAU1B,GACb,QAAS3xD,EAAG2yD,eAAiBhB,EAAK/vD,IAAM8vD,EAAUC,EACtD,GAEJ6B,UAAW,CACPH,MAAO,SAAU1B,GACb,QAAS3xD,EAAG2yD,eAAiBhB,EAAK/vD,IAAM+vD,EAAKC,WACjD,IASR5xD,EAAGkzD,kBAAoBlzD,EAAGmzD,WAAWC,IAErCpzD,EAAGyzD,SAgCH,WACI,IAAIC,EAAwC,SAAxB1zD,EAAGyyD,iBACvBnF,EAAuBmG,SAASC,GAAejxD,MAE/C,SAA0BC,GACtB,IAAK1C,EAAG2zD,MAAO,CACX,IAAIA,EAAQ/wD,mBAAmBC,iBAAiBH,EAAU,IAC1D1C,EAAG2zD,MAAQA,EAEX3zD,EAAG4zD,cAAc5zD,EAAG2zD,OAEpB3xD,QAAQC,IAAIjC,EAAG2zD,MACnB,CACJ,GACJ,EA7CA3zD,EAAGqxD,aA+DH,SAAsBC,GACbA,EAAKM,aACNtE,EAAuBiE,aAAaD,GAAM7uD,MAG9C,SAA8BC,GAC1B,IAAIuN,EAAQjQ,EAAG2zD,MAAM7yD,QAAQwwD,GACD,SAAxBtxD,EAAGyyD,kBACHnB,EAAKM,aAAc,EACnBN,EAAKl/B,OAAS,IAEdpyB,EAAG2zD,MAAMzjD,OAAOD,EAAO,EAE/B,GACJ,EA5EAjQ,EAAGoL,KAkFH,WACI,IAAIyoD,EAAoBjpD,gBAAgB,oBACrCipD,IACC7zD,EAAGkzD,kBAAoBlzD,EAAGmzD,WAAWU,IAGrC7zD,EAAGyxD,UAAYzxD,EAAGyxD,SAASR,UAC3BjxD,EAAG2zD,MAAQ3zD,EAAGyxD,SAASR,SACvBjxD,EAAG4zD,cAAc5zD,EAAG2zD,QAEpB3zD,EAAGyzD,UAEX,EA7FAzzD,EAAG8zD,SAyBH,SAAkBnC,GACd7mD,EAAOyL,GAAG,2BAA4B,CAAEC,GAAIm7C,EAAK/vD,IACrD,EA1BA5B,EAAG0xD,UAAYA,EACf1xD,EAAG+zD,YAIH,WACI,OAAO,SAAU7C,GACb,OAAOlxD,EAAGkzD,kBAAkBG,MAAMnC,EACtC,CACJ,EAPAlxD,EAAGg0D,aASH,SAAsBC,GAClB,IAAIt8C,EAAQ,EACZ,IAAK3X,EAAG2zD,MACJ,OAAOh8C,EAEX,IAAK,IAAInW,EAAI,EAAGA,EAAIxB,EAAG2zD,MAAM/yD,OAAQY,IAC7ByyD,EAAWZ,MAAMrzD,EAAG2zD,MAAMnyD,KAC1BmW,IAGR,OAAOA,CACX,EAnBA3X,EAAG4zD,cAyCH,SAAuBD,GAGnB,IAAI,IAAInyD,EAAI,EAAGA,EAAImyD,EAAM/yD,OAAQY,IAC1BmyD,EAAMnyD,GAAGowD,YACR+B,EAAMnyD,GAAG4wB,OAAS,GAEdpyB,EAAG0xD,UAAUiC,EAAMnyD,IACvBmyD,EAAMnyD,GAAG4wB,OAAS,GAEbpyB,EAAG0xD,UAAUiC,EAAMnyD,KAAQmyD,EAAMnyD,GAAGowD,cACzC+B,EAAMnyD,GAAG4wB,OAAS,GAG9B,EAoCApyB,EAAGmH,QAAUnH,EAAGoL,KAEhB5L,EAAO4S,OAAO,eAAe,WACrBpS,EAAGyxD,UAAYzxD,EAAGyxD,SAASR,WAC3BjxD,EAAG2zD,MAAQ3zD,EAAGyxD,SAASR,SAE/B,GACJ,CACJ,CAzNA5xD,QAAQ4I,OAAO,iBAAiBuc,UAAU,aAAcguC,GAExDA,EAAoBrqD,QAAU,CAAC,UAyNlC,CA5NA,E,aCAA,WAKG,SAAS+rD,EAA4B17C,GACjC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH4rC,SAAU,KAEd56C,YAAa2B,EAAgBsD,QAAQ,8BAA+B,sEACpE/E,kBAAkB,EAClB7O,WAAYisD,EACZr9C,aAAc,MAKlB,OAFAq9C,EAA6BhsD,QAAU,CAAC,wBAAyB,SAAU,KAAM,WAAY,WAAY,uBAAwB,aAAc,YAAa,UAErJqc,EAEP,SAAS2vC,EAA6B7G,EAAwB9tD,EAAQ2P,EAAIxF,EAAU/J,EAAU8J,EAAsBnK,EAAYkK,EAAWqB,GACvI,IAAI9K,EAAKC,KAETD,EAAGoL,KAoIH,WAGI,GAFApL,EAAGo0D,eAECp0D,EAAGyxD,SAAU,CACb,IAAI4C,EAAS/G,EAAuBgH,oBACb,IAAnBt0D,EAAGyxD,SAAS7vD,KACZ5B,EAAGyxD,SAASz1C,KAAO,GACnBhc,EAAGu0D,UAAW,EACdv0D,EAAGyxD,SAASI,UAAYwC,EAAOG,gBAAkB5xD,mBAAmBy6B,aAAeg3B,EAAOI,SAE9Fz0D,EAAG00D,mBACP,CAEA10D,EAAGutD,UACP,EAjJAvtD,EAAGo0D,aAqGH,WACI9G,EAAuB8G,eAAe3xD,MAEtC,SAA8BC,GAC1B1C,EAAG20D,UAAY/xD,mBAAmBC,iBAAiBH,EAAU,IAE7DyM,EAAGylD,KAAK50D,EAAG60D,kBAAkBpyD,MAAK,WAC1BzC,EAAGyxD,SAASqD,aACZ90D,EAAG+0D,aAAe/0D,EAAG20D,UAAUpkD,eAAe,KAAMvQ,EAAGyxD,SAASqD,YAExE,GACJ,GACJ,EAhHA90D,EAAGutD,SAaH,WACI,IAAIyH,EAAY1H,EAAuBC,WACvCp+C,EAAG6B,IAAI,CAACgkD,EAAWh1D,EAAG60D,mBAAmBpyD,MAEzC,SAA0BE,GACtB,IAEIsyD,EAFAtE,EAAQ/tD,mBAAmBC,iBAAiBF,EAAO,GAAI,IAC3DguD,EAAQA,EAAMrpD,QAAO,SAAAC,GAAC,OAAIA,EAAEkmD,aAAe,CAAC,IAG5C,IAAK,IAAIjsD,EAAI,EAAGA,EAAImvD,EAAM/vD,OAAQY,IAC1BmvD,EAAMnvD,GAAGI,IAAM5B,EAAGyxD,SAASY,SAC3B4C,EAAetE,EAAMnvD,IAIzByzD,EACAj1D,EAAG6uD,aAAeoG,EAEbtE,EAAM/vD,OAIfZ,EAAGmvD,MAAQwB,CACf,GACJ,EApCA3wD,EAAGwQ,KAsCH,WACI,IAAIxQ,EAAGM,QAAWoJ,EAAqBiE,UAAU3N,EAAGM,QAApD,CAGAN,EAAGyxD,SAASI,UAAYjxC,OAAO5gB,EAAGyxD,SAASyD,eAC3Cl1D,EAAGyxD,SAASY,OAASryD,EAAG6uD,aAAajtD,GACrC5B,EAAGyxD,SAASqD,WAAa90D,EAAG+0D,aAAe/0D,EAAG+0D,aAAanzD,GAAK,EAChE,IAAIuzD,EAAW,CACX3E,SAAUxwD,EAAGyxD,SACb1kB,QAAS/sC,EAAGuiD,YAEZ4S,EAAS3E,SAAS4E,WAAoD,iBAAhCD,EAAS3E,SAAS4E,YACxDD,EAAS3E,SAAS4E,YAAcD,EAAS3E,SAAS4E,UAAUhvD,QAAQ,MAAO,KAE3E+uD,EAAS3E,SAAS4E,WAAaD,EAAS3E,SAAS4E,WAAa,EAC9DzrD,EAASP,KACLO,EAASkH,SACJq8B,YAAY,6CACZn8B,SAAS,iBAKtBu8C,EAAuB+H,qBAAqBF,GAAU1yD,MAEtD,SAA8BC,GAC1B,IAAI4yD,EAAat1D,EAAGyxD,SAAS7vD,IAAM,EAC/B6vD,EAAW7uD,mBAAmBC,iBAAiBH,GACnD1C,EAAGuiD,gBAAa1hD,EACZy0D,GACAt1D,EAAGyxD,SAAW,CACV7vD,GAAI,EACJywD,OAAQZ,EAASY,OACjB+C,UAAW3D,EAAS2D,UACpBN,WAAY90D,EAAG+0D,aAAe/0D,EAAG+0D,aAAanzD,GAAK,EACnDszD,cAAet0C,OAAO6wC,EAASI,WAAW/wC,OAAO,eAErDnX,EAASP,KACLO,EAASkH,SACJq8B,YAAY,wDACZn8B,SAAS,iBAGlBxR,EAAW8K,WAAW,sBAAuBonD,KAE7CzxD,EAAGyxD,SAAWA,EACdzxD,EAAGyxD,SAASyD,cAAgBt0C,OAAO5gB,EAAGyxD,SAASI,WAAW/wC,OAAO,cACjE9gB,EAAGu0D,UAAW,EACd5qD,EAASP,KACLO,EAASkH,SACJq8B,YAAY,uBACZn8B,SAAS,iBAO1B,GAxDI,CAyDR,EAhGA/Q,EAAG00D,kBAgJH,WACI10D,EAAGyxD,SAASyD,cAAgBt0C,OAAO5gB,EAAGyxD,SAASI,WAAW/wC,OAAO,cACjE9gB,EAAGu1D,sBAAsBt7C,QAAQ,IACjCja,EAAGw1D,qBACP,EAlJAx1D,EAAGu1D,sBAAwBpmD,EAAG2J,QAC9B9Y,EAAG60D,iBAAmB70D,EAAGu1D,sBAAsBl8C,QAC/CrZ,EAAG0hB,KAGH,WACItZ,OAAOuZ,QAAQC,MACnB,EAJA5hB,EAAGy1D,eA2GH,WACI,IAAIC,EAAUjsD,EAAUisD,UACnB1uC,MAAM,UACNkmB,YAAY,2DACZ6E,GAAG,MACH/pC,OAAO,UAEZyB,EAAUL,KAAKssD,GAASjzD,MAAK,WACzB6qD,EAAuBmI,eAAez1D,EAAGyxD,SAAS7vD,IAAIa,MAAK,SAAUC,GACjEoI,EAAOyL,GAAG,qCACd,GACJ,IAAG,WAEH,GACJ,EAwBA/W,EAAO4S,OAAO,mBAAmB,WACzBpS,EAAG6uD,gBAAkB7uD,EAAGyxD,SAAS7vD,IAAM,IACvC5B,EAAGyxD,SAASyD,cAAgBt0C,OAAO5gB,EAAG6uD,aAAa8G,aAAa70C,OAAO,cAE/E,IAEA9gB,EAAGw1D,oBAAsBh2D,EAAO4S,OAAO,eAAe,gBAC9BvR,IAAhBb,EAAGyxD,UACHzxD,EAAG00D,mBAEX,IAEA10D,EAAGmH,QAAUnH,EAAGoL,IACpB,CACJ,CA/LA/L,QAAQ4I,OAAO,iBAAiBuc,UAAU,qBAAsB0vC,GAEhEA,EAA4B/rD,QAAU,CAAC,UA+L1C,CAlMA,E,aCAA,WAKG,SAASytD,EAAoBp9C,GACzB,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHkd,OAAQ,IACR8yB,OAAQ,MAEZh/C,YAAa2B,EAAgBsD,QAAQ,sBAAuB,kEAC5D/E,kBAAkB,EAClB7O,WAAY4tD,EACZh/C,aAAc,MAKlB,SAASg/C,EAAqBxI,EAAwB7jD,EAAWjK,EAAQmK,EAAU/J,EAAU8J,EAAsBoB,EAAQqE,EAAI5P,EAAYM,EAASyY,GAChJ,IAAItY,EAAKC,KAETD,EAAG+1D,wBAA0B,EAC7B/1D,EAAGg2D,iBAAmB,EAEtBh2D,EAAGi2D,SAAWr1C,SAEd5gB,EAAGotD,YAAa,EAChBptD,EAAGk2D,eAAiB,CAChBz5C,SAAUnE,EAAoBoE,UAAUC,MACxCC,aAActE,EAAoBuE,gBAAgBkyC,KAClDhyC,YAAa,GACbC,WAAW,EACXC,aAAa,EACbC,wBAAwB,EACxBC,0BAA0B,EAC1BC,QAAQ,GAGZpd,EAAGm2D,OAAS,CAAC,SAAU,eACvBn2D,EAAGo2D,OAAS,CAAC,UAAW,WACxBp2D,EAAG0B,QAAU,CAAE20D,iBAAkB,GAAIrvC,MAAO,CACxCsvC,SAAS,EACTC,KAAM,wBAEVv2D,EAAGgJ,KAAO,CAAC,EAAG,KAEdhJ,EAAGw2D,eAAiBlJ,EAAuBgH,oBAC3Ct0D,EAAG+oB,KAAOnmB,mBAAmBy6B,aAC7Br9B,EAAGy2D,MAAQ,CACP,CACIvjD,KAAM0N,OAAO5gB,EAAG+oB,MAAM2tC,OAAS,GAC/B90D,GAAIgf,OAAO5gB,EAAG+oB,MAAM2tC,OACpBC,UAAW/1C,OAAO5gB,EAAG+oB,MAAMlI,QAAQ,QACnC4zC,QAAS7zC,OAAO5gB,EAAG+oB,MAAMhI,MAAM,SAEnC,CACI7N,KAAM0N,OAAO5gB,EAAG+oB,MAAMyU,IAAI,EAAG,SAASk5B,OAAS,GAC/C90D,GAAIgf,OAAO5gB,EAAG+oB,MAAMyU,IAAI,EAAG,SAASk5B,OACpCC,UAAW/1C,OAAO5gB,EAAG+oB,MAAMyU,IAAI,EAAG,SAAS3c,QAAQ,QACnD4zC,QAAS7zC,OAAO5gB,EAAG+oB,MAAMyU,IAAI,EAAG,SAASzc,MAAM,UAIvD/gB,EAAG42D,aAAe52D,EAAGy2D,MAAM,GAE3Bz2D,EAAG62D,qBAAuB1nD,EAAG2J,QAC7B9Y,EAAG82D,gBAAkB92D,EAAG62D,qBAAqBx9C,QAC7CrZ,EAAG+2D,qBAAuB5nD,EAAG2J,QAC7B9Y,EAAGg3D,gBAAkBh3D,EAAG+2D,qBAAqB19C,QAE7CrZ,EAAGu0D,UAAW,EACdv0D,EAAGi3D,iBAAkB,EACrBj3D,EAAGwQ,KA2OH,WAEI,IAAIxQ,EAAGM,QAAWoJ,EAAqBiE,UAAU3N,EAAGM,QAApD,CAGAN,EAAGktD,KAAKgK,iBAAmBl3D,EAAG2c,MAAQ3c,EAAG2c,MAAM/a,IAAM,EACrD5B,EAAGktD,KAAK4H,WAAa90D,EAAG+0D,aAAanzD,GACrC5B,EAAGktD,KAAKO,aAAeztD,EAAGm3D,iBAAmBn3D,EAAGm3D,iBAAiBv1D,IAAM,EAEvE,IAAIuzD,EAAW,CAAC,EAKhB,IAJIn1D,EAAGktD,KAAKtrD,IAAM,IAAM5B,EAAGktD,KAAKkK,YAC5BjC,EAASpG,KAAO/uD,EAAGktD,MAGnBltD,EAAGq3D,qBAAsB,CACzB,IAAK,IAAI71D,EAAI,EAAGA,EAAIxB,EAAGq3D,qBAAqBz2D,OAAQY,IAChDxB,EAAGq3D,qBAAqB71D,GAAGszD,WAAa90D,EAAGktD,KAAK4H,WAChD90D,EAAGq3D,qBAAqB71D,GAAG81D,WAAat3D,EAAGktD,KAAKoK,WAChDt3D,EAAGq3D,qBAAqB71D,GAAGm0D,YAAc31D,EAAGq3D,qBAAqB71D,GAAG+1D,eAAexuC,KAGvFosC,EAASzH,WAAa1tD,EAAGq3D,oBAC7B,CAEA,GAAIr3D,EAAGw3D,YAAa,CAChB,IAAIC,EAASz3D,EAAGw3D,YAAcx3D,EAAGktD,KAAK2D,YAClC6G,EAAe13D,EAAG23D,gBAClB/2C,OAAO82C,GAAcE,OAAO,IAAI7uC,KAAQ,SACxC2uC,EAAe92C,UAEL,GAAV62C,IACAtC,EAAS0C,SAAW,CAChBh2D,MAAO41D,EACP5F,UAAW6F,EACXxF,eAAgBlyD,EAAGktD,KAAKtrD,IAGpC,CASA,GAPI5B,EAAGuiD,aACH4S,EAASpoB,QAAU,CACfA,QAAS/sC,EAAGuiD,WACZnqC,SAAUpY,EAAGktD,KAAKtrD,KAIrBuzD,EAASpG,MAASoG,EAAS0C,UAAa1C,EAASpoB,QAM/C,KAkCM+qB,EAAT,SAA0B3C,GACtB7H,EAAuBwK,iBAAiB3C,GAAU1yD,MAElD,SAAkCC,GAE9B1C,EAAGktD,KAAOtqD,mBAAmBC,iBAAiBH,GAC1C1C,EAAGktD,KAAKtoC,WACR5kB,EAAG2c,MAAQ,CACPa,QAASxd,EAAGktD,KAAKtoC,WAGzB5kB,EAAGuiD,gBAAa1hD,EAChBb,EAAG+3D,aAAe/3D,EAAGktD,KAAK4H,WAC1B90D,EAAGg4D,mBAAqBh4D,EAAGktD,KAAKoK,WAC5Bt3D,EAAGi3D,iBACH13D,EAAW8K,WAAW,cAAerK,EAAGktD,MACxCltD,EAAGktD,KAAO,CACN+K,cAAej4D,EAAGw2D,eAAeG,UAAU71C,OAAO,cAClD60C,YAAa31D,EAAGw2D,eAAe/B,QAAQ3zC,OAAO,cAC9CoB,UAAU,EACVlG,KAAM,GACNo7C,UAAU,EACVx1D,GAAI,GAER+H,EAASP,KACLO,EAASkH,SACJq8B,YAAY,cACZn8B,SAAS,mBAGlB/Q,EAAGu0D,UAAW,EACd5qD,EAASP,KACLO,EAASkH,SACJq8B,YAAY,kBACZn8B,SAAS,iBAG1B,GACJ,EAzDA,GAbIokD,EAASjI,MAA2C,iBAA5BiI,EAASpG,KAAKqG,YACtCD,EAASpG,KAAKqG,YAAcD,EAASpG,KAAKqG,UAAUhvD,QAAQ,MAAO,KAYnEpG,EAAG61D,QAAU71D,EAAGktD,KAAKtrD,GAAK,IAAO5B,EAAG+3D,cAAgB/3D,EAAG+3D,eAAiB/3D,EAAGktD,KAAK4H,iBAClDj0D,IAA1Bb,EAAGg4D,oBAAoCh4D,EAAGg4D,qBAAuBh4D,EAAGktD,KAAKoK,YAAc,CAE3F,IAAI5B,EAAUjsD,EAAUisD,UACnB1uC,MAAM,WACNkmB,YAAY,4IACZ6E,GAAG,MACH/pC,OAAO,UAEZyB,EAAUL,KAAKssD,GAASjzD,MAAK,WACzBq1D,EAAiB3C,EACrB,IAAG,WAEH,GAEJ,MACI2C,EAAiB3C,EA0CzB,MA9EIxrD,EAASP,KACLO,EAASkH,SACJq8B,YAAY,gBACZn8B,SAAS,gBA/CZ,CA2Hd,EAxWA/Q,EAAGk4D,SA0WH,SAAkBC,GACd,IAAIzC,EAAUjsD,EAAUisD,UACnB1uC,MAAM,uBACNkmB,YAAY,uDACZkrB,UAAU,uBACVC,YAAYF,GACZpmB,GAAG,OACH/pC,OAAO,UAQZ,SAASswD,EAAiB51D,GACtB1C,EAAGktD,KAAKkK,UAAW,EACnBztD,EAASP,KACLO,EAASkH,SACJq8B,YAAY,0BACZn8B,SAAS,gBAEtB,CAbAtH,EAAUL,KAAKssD,GAASjzD,MAAK,WACzB6qD,EAAuB4K,SAASl4D,EAAGktD,KAAKtrD,IAAIa,KAAK61D,EACrD,IAAG,WAEH,GAUJ,EAhYAt4D,EAAGoL,KA4bH,WACIpL,EAAGo0D,eACHp0D,EAAGu4D,eAECv4D,EAAG+iC,OACH/iC,EAAGw4D,WAEHx4D,EAAGktD,KAAO,CACN+K,cAAej4D,EAAGw2D,eAAeG,UAAU71C,OAAO,cAClD60C,YAAa31D,EAAGw2D,eAAe/B,QAAQ3zC,OAAO,cAC9CoB,UAAU,EACVlG,KAAM,GACNo7C,UAAU,EACVx1D,GAAI,GAER5B,EAAGu0D,UAAW,EACdv0D,EAAGi3D,iBAAkB,GAGzBj3D,EAAG23D,gBAAkB/0D,mBAAmBy6B,aAAavc,OAAO,aAChE,EA/cA9gB,EAAGy4D,eAiKH,WACI,IAAIC,EAAWr5D,QAAQwrB,QAAQhc,SAAS8pD,cAAc,mBA2BtD,SAASC,EAAyBnvD,GACrBxJ,KAENyY,MAEH,WACIjP,EAAUmP,MACd,CACJ,CAlCAnP,EAAUL,KAAK,CACXF,OAAQwvD,EACRL,YAAaK,EACb7hD,YAAa1J,aAAe,kEAC5BjF,WAAY0wD,EACZ9hD,aAAc,KACdC,kBAAkB,EAClB2uB,qBAAqB,EACrB3pB,OAAQ,CACJmxC,KAAMltD,EAAGktD,KACTE,WAAYptD,EAAGotD,cAEpB3qD,MAEH,WACQzC,EAAGotD,WACHtiD,EAAOyL,GAAG,sCAEV+2C,EAAuBkL,QAAQx4D,EAAGktD,KAAKtrD,IAAIa,MAAK,SAAUC,GACtD1C,EAAGktD,KAAOtqD,mBAAmBC,iBAAiBH,EAClD,GAER,IAVgC,SAAUA,GAAY,IAYtDk2D,EAAyBzwD,QAAU,CAAC,YAWxC,EArMAnI,EAAG0hB,KA4JH,WACItZ,OAAOuZ,QAAQC,MACnB,EA7JA5hB,EAAG0xD,UAuIH,SAAmBC,GACf,OAAQA,EAAKC,aAAehxC,OAAO+wC,EAAKE,WAAajvD,mBAAmBy6B,YAC5E,EAxIAr9B,EAAGuxD,aA6HH,SAAsBI,EAAMZ,GACxBzD,EAAuBiE,aAAaI,GAAMlvD,MAE1C,SAA8BC,GAC1B,IAAIuN,EAAQ8gD,EAAIE,SAASnwD,QAAQ6wD,GACjCZ,EAAIE,SAAS/gD,OAAOD,EAAO,EAC/B,GACJ,EAnIAjQ,EAAG64D,oBAgGH,WACI,GAAI74D,EAAG+oB,KAAO/oB,EAAGw2D,eAAeG,UAAW,CACvC32D,EAAGu0D,UAAW,EACdv0D,EAAG84D,kBAEH,IADA,IAAIzmD,EAAWrS,EAAGw3D,YAAc,EACzBnlD,EAAWrS,EAAGg2D,kBAAoB,GACrC3jD,IAEJrS,EAAGw3D,YAAcnlD,EAEjBrS,EAAG+4D,OAAQ,CACf,CACJ,EA3GA/4D,EAAGg5D,oBA6GH,WACI,GAAIh5D,EAAG+oB,KAAO/oB,EAAGw2D,eAAeG,UAAW,CACvC32D,EAAGu0D,UAAW,EACdv0D,EAAG84D,kBAEH,IADA,IAAIzmD,EAAWrS,EAAGw3D,YAAc,EACzBnlD,EAAWrS,EAAGg2D,kBAAoB,GACrC3jD,IAEJrS,EAAGw3D,YAAcnlD,EAEjBrS,EAAG+4D,OAAQ,CACf,CACJ,EAxHA/4D,EAAGi5D,mBAuIH,SAA4BC,GACxB,IAAI,IAAI13D,EAAI,EAAGA,EAAI03D,EAASt4D,OAAQY,IAAK,CACrC,IAAI6C,EAAO60D,EAAS13D,GAEjBxB,EAAG0xD,UAAUrtD,GACZA,EAAK+tB,OAAS,GAET/tB,EAAKutD,YAGNvtD,EAAKutD,cACTvtD,EAAK+tB,OAAS,IAHd/tB,EAAK+tB,OAAS,EAKtB,CACJ,EApJApyB,EAAGm5D,aAsEH,SAAsB3iD,GACdA,EAAK,GACL1L,EAAOyL,GAAG,8BAA+B,CAAEC,GAAIA,GAEvD,EAzEAxW,EAAGo5D,SA2EH,SAAkB5iD,GACVA,EAAK,GACL1L,EAAOyL,GAAG,6BAA8B,CAAEC,GAAIA,GAEtD,EA9EAxW,EAAGo0D,aA+LH,WACI9G,EAAuB8G,eAAe3xD,MAEtC,SAA8BC,GAC1B1C,EAAG20D,UAAY/xD,mBAAmBC,iBAAiBH,EAAU,IAC7D1C,EAAG62D,qBAAqB58C,QAAQ,GACpC,GACJ,EArMAja,EAAGu4D,aAuMH,WACIjL,EAAuBC,WAAW9qD,MAElC,SAA0BC,GACtB,IAAIiuD,EAAQ/tD,mBAAmBC,iBAAiBH,EAAU,IAC1D1C,EAAGq5D,UAAYx5D,EAAQ,SAARA,CAAkB8wD,EAAO,CAAElD,cAAe,IACzDztD,EAAG+2D,qBAAqB98C,QAAQ,GACpC,GACJ,EA9MAja,EAAGw4D,QA+YH,WACIlL,EAAuBkL,QAAQx4D,EAAG+iC,QAAQtgC,MAE1C,SAAyBC,GACrB1C,EAAGktD,KAAOtqD,mBAAmBC,iBAAiBH,GA7BtD,WACI,IAAI42D,EAAS14C,OAAO5gB,EAAGktD,KAAKyI,aAAavoC,KAAKptB,EAAGktD,KAAK+K,cAAe,UAAY,EAEjFj4D,EAAGu5D,WAAa,GAEhB,IAAI,IAAI/3D,EAAI,EAAGA,EAAI83D,EAAQ93D,IAAK,CAC5B,IAAIgpB,EAAO5J,OAAO5gB,EAAGktD,KAAK+K,eAAel3C,MAAM,SAC5Cvf,EAAI,IACHgpB,EAAO5J,OAAO5gB,EAAGktD,KAAK+K,eAAez6B,IAAIh8B,EAAG,UAAUuf,MAAM,UAEhE/gB,EAAGu5D,WAAW9pD,KAAK,CACfyD,KAAM0N,OAAO4J,GAAM1J,OAAO,WAC1Bjf,MAAO+e,OAAO4J,GAAM1J,OAAO,wBAEnC,CAEA9gB,EAAGw5D,iBAAmBx5D,EAAGu5D,WAAWv5D,EAAGu5D,WAAW34D,OAAS,GAE3DrB,EAAW6S,QAAO,WAAa,OAAOpS,EAAGw5D,gBAAkB,IAAG,SAASnjC,EAAQC,IACvEt2B,EAAG61D,QAAUx/B,IACbr2B,EAAGktD,KAAKyI,YAAct/B,EAAOx0B,MAErC,GACJ,CAQQ43D,GAEIz5D,EAAGktD,KAAKtoC,WACR5kB,EAAG2c,MAAQ,CACPa,QAASxd,EAAGktD,KAAKtoC,WAIzB5kB,EAAG61D,OAAS71D,EAAGktD,KAAKO,cAAgB,EAEpCztD,EAAG+3D,aAAe/3D,EAAGktD,KAAK4H,WAC1B90D,EAAGg4D,mBAAqBh4D,EAAGktD,KAAKoK,WAEhCnoD,EAAGylD,KAAK50D,EAAG82D,iBAAiBr0D,MAAK,WACzBzC,EAAGktD,KAAK4H,aACR90D,EAAG+0D,aAAe/0D,EAAG20D,UAAUpkD,eAAe,KAAMvQ,EAAGktD,KAAK4H,YAEpE,IAEA3lD,EAAGylD,KAAK50D,EAAGg3D,iBAAiBv0D,MAAK,WACzBzC,EAAGktD,KAAKO,aAAe,IACvBztD,EAAGm3D,iBAAmBn3D,EAAGq5D,UAAU9oD,eAAe,KAAMvQ,EAAGktD,KAAKO,cAExE,GACJ,GACJ,EA7aAztD,EAAG84D,gBA6EH,WACI94D,EAAGg2D,iBAAmBh2D,EAAG+1D,wBACU,YAA/B/1D,EAAG+0D,aAAavvD,aACZxF,EAAGktD,KAAKkI,UAAY,IACpBp1D,EAAGg2D,iBAAmB,EACfh2D,EAAGktD,KAAKkI,UAAY,MAC3Bp1D,EAAGg2D,iBAAgD,IAA7Bh2D,EAAG+1D,yBAGrC,EArFA/1D,EAAG05D,0BA0BH,SAAmCprC,GAM/B,IALA,IAAIqrC,EAAc,GAEdC,EAAiB,GAAKtrC,EACtBurC,EAAoB75D,EAAGktD,KAAKkI,UAAY9mC,EAEnC9sB,EAAI,EAAGA,EAAI8sB,EAAO9sB,IAAK,CAM5B,IALA,IAAIs4D,EAAcl5C,OAAO5gB,EAAG42D,aAAaD,WAAW91C,QAAQ,SAAS2c,IAAKh8B,EAAIo4D,EAAiB,KAC3FG,EAAYn5C,OAAOk5C,GAAat8B,IAAIo8B,EAAiB,EAAG,KAAK74C,MAAM,SACnEi5C,GAAuB,GAAT1rC,EAAa,IAAgB,IAAVA,EAAc,IAAM,KAAO9sB,EAAI,GAChEy4D,EAAY3sC,KAAKC,MAAMvtB,EAAGktD,KAAKkI,UAAY9mC,GAC3C4rC,EAAU,GACLv4D,EAAI,EAAGA,EAAIi4D,EAAgBj4D,IAAK,CACrC,IAAIw4D,EAAQv5C,OAAOm5C,GAAWv8B,KAAK77B,EAAG,KACtCu4D,EAAQzqD,KAAK,CACTyD,KAAM0N,OAAOu5C,GAAOr5C,OAAO,WAC3BiI,KAAMoxC,GAEd,CACAR,EAAYlqD,KAAK,CACbuM,KAAMhc,EAAGktD,KAAKlxC,KAAO,IAAMg+C,EAC3B/B,cAAer3C,OAAOk5C,GAAah5C,OAAO,cAC1Cy2C,eAAgB2C,EAAQ,GACxB9E,UAAW6E,EACXG,QAASF,GAEjB,CAIA,IAFAl4D,QAAQC,IAAI03D,GAEHn4D,EAAI,EAAGA,EAAIm4D,EAAY/4D,QAAUi5D,EAAoB,EAAGr4D,IAC7Dm4D,EAAYn4D,GAAG4zD,YACfyE,IAGJ75D,EAAGq3D,qBAAuBsC,CAC9B,EA7DA35D,EAAGq6D,0BAqBH,SAAmCpqD,GAC/BjQ,EAAGq3D,qBAAqBnnD,OAAOD,EAAO,EAC1C,EAtBAjQ,EAAGk+B,YAMH,WACI5lB,EAAoB6lB,oBAAoBn+B,EAAG2c,MAAO,KAAM3c,EAAGk2D,gBAAgBzzD,MAE3E,SAAqC8Z,GAC5BA,IAELvc,EAAG2c,MAAQJ,EACf,GACJ,EAbAvc,EAAGs6D,YA2MH,WACIt6D,EAAGu6D,YAAcl7D,QAAQ8E,KAAKnE,EAAGktD,MACjCltD,EAAGw6D,aAAen7D,QAAQ8E,KAAKnE,EAAG2c,OAClC3c,EAAGu0D,UAAW,CAClB,EA9MAv0D,EAAGy6D,WAgNH,WACIz6D,EAAGu0D,UAAW,EACdv0D,EAAGktD,KAAOltD,EAAGu6D,YACbv6D,EAAG2c,MAAQ3c,EAAGw6D,aACdx6D,EAAGw3D,YAAcx3D,EAAGktD,KAAK2D,WAC7B,EAnNA7wD,EAAG06D,YAYH,SAAqBt4B,EAAKiD,GACtB,OAAO/X,KAAK+E,MAAM+P,GAAOpiC,EAAGktD,KAAKyN,SAASC,MAC9C,EAgbAp7D,EAAO4S,OAAO,uBAAuB,WACjC,GAAIpS,EAAGktD,KAAM,CACTltD,EAAGw3D,YAAcx3D,EAAGktD,KAAK2D,YAEzB,IAAIgK,EAAU76D,EAAGktD,KAAK4N,qBAClBD,EAAU,MACVA,EAAU,KAEd76D,EAAGgJ,KAAO,CAACskB,KAAK+E,MAAMwoC,GAAUvtC,KAAK+E,MAAM,IAAMwoC,GACrD,CACJ,IAEAr7D,EAAO4S,OAAO,kBAAkB,WACxBpS,EAAGktD,OAASltD,EAAGu0D,UAAYv0D,EAAGw3D,cAAgBx3D,EAAGktD,KAAK2D,cACtD7wD,EAAGu0D,UAAW,EAEtB,IAEA/0D,EAAO4S,OAAO,mBAAmB,WACzBpS,EAAGktD,MAAQltD,EAAGktD,KAAKtrD,IAAM,IAAM5B,EAAGm3D,kBAAoBn3D,EAAG42D,eACzD52D,EAAGktD,KAAK+K,cAAgBj4D,EAAG42D,aAAaD,UAAU71C,OAAO,cACzD9gB,EAAGktD,KAAKyI,YAAc31D,EAAG42D,aAAanC,QAAQ3zC,OAAO,cAE7D,IAEAthB,EAAO4S,OAAO,uBAAuB,WAC7BpS,EAAGktD,MAAQltD,EAAGktD,KAAKtrD,IAAM,IACrB5B,EAAGm3D,kBACHn3D,EAAGktD,KAAK+K,cAAgBj4D,EAAGw2D,eAAeG,UAAU71C,OAAO,cAC3D9gB,EAAGktD,KAAKyI,YAAc31D,EAAGw2D,eAAe/B,QAAQ3zC,OAAO,cACvD9gB,EAAGktD,KAAKoK,WAAat3D,EAAGm3D,iBAAiBG,WACzCt3D,EAAG+0D,aAAe/0D,EAAGm3D,iBAAiBwD,WAEtC36D,EAAGktD,KAAK+K,cAAgBj4D,EAAG42D,aAAaD,UAAU71C,OAAO,cACzD9gB,EAAGktD,KAAKyI,YAAc31D,EAAG42D,aAAanC,QAAQ3zC,OAAO,eAGjE,IAEA9gB,EAAGm3D,iBAEHn3D,EAAGmH,QAAUnH,EAAGoL,IACpB,CAEA,OAxjBA0qD,EAAqB3tD,QAAU,CAAC,wBAAyB,YAAa,SAAU,WAAY,WAAY,uBAAwB,SAAU,KAAM,aAAc,UAAW,uBAwjBlKqc,CACX,CA1kBAnlB,QAAQ4I,OAAO,iBAAiBuc,UAAU,aAAcoxC,GAExDA,EAAoBztD,QAAU,CAAC,UA0kBlC,CA7kBA,E,aCAD,WAOI,SAAS4yD,EAAwBviD,GAC7B,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH8rC,KAAM,KAEV96C,YAAa2B,EAAgBsD,QACzB,0BACA,kEAEJ/E,kBAAkB,EAClB7O,WAAY8yD,EACZlkD,aAAc,MAalB,OAVAkkD,EAAyB7yD,QAAU,CAC/B,wBACA,KACA,SACA,SACA,WACA,uBACA,aAGGqc,EAEP,SAASw2C,EACL1N,EACAn+C,EACA3P,EACAsL,EACAnB,EACAD,EACAD,GAEA,IAAIzJ,EAAKC,KAETD,EAAGw2D,eAAiBlJ,EAAuBgH,oBAC3Ct0D,EAAGi7D,aAAe,CACd/1B,IAAKtkB,OAAO5gB,EAAGw2D,eAAeG,WAC9BtxB,IAAKzkB,OAAO5gB,EAAGw2D,eAAe/B,UAGlCz0D,EAAGu0D,UAAW,EACdv0D,EAAGk7D,kBAAoB/rD,EAAG2J,QAC1B9Y,EAAGm7D,aAAen7D,EAAGk7D,kBAAkB7hD,QAEvCrZ,EAAG+C,SAAW,CACVuzD,QAAS,SACT8E,SAAS,EACTC,QAAS,CAAC,KAAM,UAChBC,WAAY,OACZj2B,IAAKzkB,SAAS4c,IAAI,EAAG,QAGzBx9B,EAAGoL,KA4LH,WACIpL,EAAGo0D,eACCp0D,EAAG2xD,MAAuB,QAAf3xD,EAAG2xD,KAAK/vD,KACnB5B,EAAG2xD,KAAO,CACN31C,KAAM,GACNq2C,OAAQryD,EAAG2xD,KAAKU,OAChBH,eAAgBlyD,EAAG2xD,KAAK4J,YAG5Bv7D,EAAGu0D,UAAW,GAElBv0D,EAAGw7D,eACP,EAvMAx7D,EAAGw7D,cA6CH,WACIlO,EACKmO,0BACAh5D,MAEL,SAA+BC,GAC3B,IAAIg5D,EAAa94D,mBAAmBC,iBAChCH,EACA,IAKJ1C,EAAG27D,cAAgBD,EAMnBvsD,EAAGylD,KAAK50D,EAAGm7D,cAAc14D,MAAK,WAE1B,IADA,IAAIm5D,EAAyB,GACpBp6D,EAAI,EAAGA,EAAIxB,EAAG27D,cAAc/6D,OAAQY,IAErCxB,EAAG27D,cAAcn6D,GAAGI,KACpB5B,EAAG2xD,KAAKO,gBAERlyD,EAAG67D,iBAAmB77D,EAAG27D,cAAcn6D,GACvCo6D,EAAuBnsD,KACnBzP,EAAG27D,cAAcn6D,KAGrBxB,EAAG27D,cAAcn6D,GAAG6wD,SAAWryD,EAAG2xD,KAAKU,QAEvCuJ,EAAuBnsD,KACnBzP,EAAG27D,cAAcn6D,IAKzBxB,EAAG2xD,KAAKU,SACRryD,EAAG27D,cAAgBC,EAE3B,GACJ,GACJ,EAxFA57D,EAAGwQ,KAgHH,WACI,IAAIxQ,EAAGM,QAAWoJ,EAAqBiE,UAAU3N,EAAGM,QAApD,CAGAN,EAAG2xD,KAAKE,UAAY7xD,EAAGi2D,SACvBj2D,EAAG2xD,KAAKO,eAAiBlyD,EAAG67D,iBAAiBj6D,GAC7C5B,EAAG2xD,KAAKmD,WAAa90D,EAAG+0D,aAAe/0D,EAAG+0D,aAAanzD,GAAK,EAE5D,IAAIuzD,EAAW,CACX2G,KAAM97D,EAAG2xD,KACT5kB,QAAS/sC,EAAGuiD,YAIZ4S,EAAS2G,KAAK1G,WACqB,iBAA5BD,EAAS2G,KAAK1G,YAErBD,EAAS2G,KAAK1G,YAAcD,EAAS2G,KAAK1G,UAAUhvD,QAChD,MACA,KAGRknD,EACKyO,iBAAiB5G,GACjB1yD,MAEL,SAAkCC,GAK9B0F,OAAOuZ,QAAQC,MAYnB,GAzCU,CA0Cd,EA3JA5hB,EAAGy6D,WAmCH,aACUz6D,EAAG2xD,KAAK/vD,GAAK,EACf5B,EAAGu0D,UAAW,EAEdzpD,EAAOyL,GAAG,2BAElB,EAxCAvW,EAAGg8D,cAsMH,WACIh8D,EAAGi8D,eACHj8D,EAAGk7D,kBAAkBjhD,QAAQ,IAC7Bja,EAAGk8D,iBACP,EAzMAl8D,EAAGi8D,aA2JH,WACQj8D,EAAG2xD,KAAKE,YACR7xD,EAAGi2D,SAAWr1C,OAAO5gB,EAAG2xD,KAAKE,WAErC,EA9JA7xD,EAAGuxD,aAKH,WACIjE,EACKiE,aAAavxD,EAAG2xD,MAChBlvD,MAEL,SAA8BC,GAC1B1C,EAAG2xD,KAAKC,aAAc,EACtB9mD,EAAO88C,QAMX,GACJ,EAlBA5nD,EAAGo0D,aA+JH,WACI9G,EACK8G,eACA3xD,MAEL,SAA8BC,GAC1B1C,EAAG20D,UAAY/xD,mBAAmBC,iBAC9BH,EACA,IAGJyM,EAAGylD,KAAK50D,EAAGm7D,cAAc14D,MAAK,WACtBzC,EAAG2xD,KAAKmD,aACR90D,EAAG+0D,aAAe/0D,EAAG20D,UAAUpkD,eAC3B,KACAvQ,EAAG2xD,KAAKmD,YAGpB,GACJ,GACJ,EAlLA90D,EAAGm8D,WAoFH,WACI,IAAIzG,EAAUjsD,EACTisD,UACA1uC,MAAM,UACNkmB,YACG,uDAEH6E,GAAG,MACH/pC,OAAO,UAEZyB,EAAUL,KAAKssD,GAASjzD,MACpB,WACI6qD,EACK6O,WAAWn8D,EAAG2xD,KAAK/vD,IACnBa,MAAK,SAAUC,GACZoI,EAAOyL,GAAG,qCACd,GACR,IACA,WAAa,GAErB,EAvGAvW,EAAGo8D,eAkBH,WACI9O,EACK8O,eAAep8D,EAAG2xD,KAAK/vD,IACvBa,MAEL,SAAgCC,GAC5B1C,EAAG2xD,KAAKC,aAAc,EACtB9mD,EAAO88C,QACX,GACJ,EA4KA5nD,EAAGk8D,gBAAkB18D,EAAO4S,OAAO,WAAW,gBAC1BvR,IAAZb,EAAG2xD,MACH3xD,EAAGg8D,eAEX,IAUAh8D,EAAGmH,QAAUnH,EAAGoL,IACpB,CACJ,CA9RA/L,QACK4I,OAAO,iBACPuc,UAAU,iBAAkBu2C,GAEjCA,EAAwB5yD,QAAU,CAAC,UA2RtC,CAhSD,E,aCAC,WAKG,SAASk0D,EAA2B7jD,GAChC,IAAIgM,EAAY,CACZC,SAAU,IACVoB,MAAO,CACH8rC,KAAM,SAEV96C,YAAa2B,EAAgBsD,QAAQ,oBAAqB,qEAC1D/E,kBAAkB,EAClB7O,WAAYo0D,EACZxlD,aAAc,MAKlB,OAFAwlD,EAA4Bn0D,QAAU,GAE/Bqc,EAEP,SAAS83C,IACL,IAAIt8D,EAAKC,KAETD,EAAGoL,KAQH,WACQpL,EAAG2xD,KAAKC,YACR5xD,EAAG2xD,KAAKv/B,OAAS,GAEZpyB,EAAG0xD,UAAU1xD,EAAG2xD,MACrB3xD,EAAG2xD,KAAKv/B,OAAS,GAEXpyB,EAAG0xD,UAAU1xD,EAAG2xD,OAAU3xD,EAAG2xD,KAAKC,cACxC5xD,EAAG2xD,KAAKv/B,OAAS,GAEzB,EAjBApyB,EAAG0xD,UAEH,SAAmBC,GACf,OAAQA,EAAKC,aAAehxC,OAAO+wC,EAAKE,WAAajvD,mBAAmBy6B,YAC5E,EAeAr9B,EAAGmH,QAAUnH,EAAGoL,IACpB,CACJ,CA7CA/L,QAAQ4I,OAAO,iBAAiBuc,UAAU,oBAAqB63C,GAE/DA,EAA2Bl0D,QAAU,CAAC,UA6CzC,CAhDA,E,aCAD,SAAW9I,GAOP,SAAS4oD,EAAgBqF,EAAwB7tD,GACpCQ,KAGNkH,QAAU,WAEb,CACJ,CAEA,SAASo1D,EAAmBjP,EAAwB7tD,GAChD,IAAIO,EAAKC,KAETD,EAAGw8D,aAAe/8D,EAAa+W,GAC/BxW,EAAG+iC,SAAWtjC,EAAasjC,OAE3B/iC,EAAGw2D,eAAiBlJ,EAAuBgH,oBAC3Ct0D,EAAG+oB,KAAOnmB,mBAAmBy6B,aAE7Br9B,EAAGy8D,eAOH,SAAwBjmD,GACpB82C,EAAuBmP,eAAejmD,GAAI/T,MAE1C,SAAgCC,GAC5B1C,EAAGyxD,SAAW7uD,mBAAmBC,iBAAiBH,EACtD,GACJ,EAZA1C,EAAG0hB,KAEH,WACItZ,OAAOuZ,QAAQC,MACnB,EAWA5hB,EAAGmH,QAAU,WACLnH,EAAGw8D,WAAa,EAChBx8D,EAAGy8D,eAAez8D,EAAGw8D,YAErBx8D,EAAGyxD,SAAW,CACV7vD,GAAI,EACJywD,OAAQryD,EAAG+iC,OAGvB,CACJ,CAlDA1jC,EAAQ4I,OAAO,iBAAiBC,WAAW,6BAA8B+/C,GACzE5oD,EAAQ4I,OAAO,iBAAiBC,WAAW,yBAA0Bq0D,GAErEtU,EAAgB9/C,QAAU,CAAC,wBAAyB,gBACpDo0D,EAAmBp0D,QAAU,CAAC,wBAAyB,eAgD1D,CArDD,CAqDGC,OAAO/I,Q,aCrDV,SAAWA,GAKP,SAAS4oD,EAAgByU,EAAiBpP,EAAwB7tD,EAAcgjB,GAC5E,IAAIziB,EAAKC,KAETD,EAAG28D,MAAQ,GACX38D,EAAG48D,OAAS,GAEZ58D,EAAGyzD,SAEH,WACInG,EAAuBmG,UAAS,EAAM7wD,mBAAmBy6B,aAAaC,SAAS,EAAG,UAAW16B,mBAAmBy6B,aAAaG,IAAI,EAAG,WAAW/6B,MAE/I,SAA0BC,GACtB1C,EAAG28D,MAAQ/5D,mBAAmBC,iBAAiBH,EAAU,IAEzD1C,EAAG48D,OAAS,GACZ,IAAK,IAAIp7D,EAAI,EAAGA,EAAIxB,EAAG28D,MAAM/7D,OAAQY,IAAK,CACtC,IAAImwD,EAAO3xD,EAAG28D,MAAMn7D,GAChBq2C,EAAQ,UAET8Z,EAAKC,cACJ/Z,EAAQ,WAGZ73C,EAAG48D,OAAOntD,KAAK,IAAIgT,EAAMkvC,EAAK/vD,GAAI,OAAQ+vD,EAAK31C,KAAM21C,EAAKE,UAAW,KAAMha,GAC/E,CACJ,GACJ,EAEA73C,EAAGmH,QAAU,WACTnH,EAAGyzD,UACP,CACJ,CAEDrrD,OAAO/I,QArCE4I,OAAO,iBAAiBC,WAAW,yBAA0B+/C,GAErEA,EAAgB9/C,QAAU,CAAC,iCAAkC,wBAAyB,eAAgB,YAmCzG,CAtCD,E,aCAA,SAAW9I,GAKP,SAASq9D,EAAgB34C,GAGzB,CAED3b,OAAO/I,QATE4I,OAAO,iBAAiByd,QAAQ,iCAAkCg3C,GAE1EA,EAAgBv0D,QAAU,CAAC,QAO9B,CAVD,E,aCAA,SAAW9I,GAKP,SAAS4oD,EAAgBqF,EAAwB7rC,EAASgB,EAAOljB,EAAYM,GACzE,IAAIG,EAAKC,KACTD,EAAG28D,MAAQ,GAEX38D,EAAGm2D,OAAS,CAAC,WAAY,QACzBn2D,EAAGo2D,OAAS,CAAC,UAAW,WACxBp2D,EAAG0B,QAAU,CAAE20D,iBAAkB,IACjCr2D,EAAGgJ,KAAO,CAAC,EAAG,KACdhJ,EAAG68D,gBAAkB,CAAC,EACtB78D,EAAG68D,gBAAgBC,cAAgB,EAEnC98D,EAAG48D,OAAS,GAEZ58D,EAAG+8D,eAAiBt7C,EAAQuP,kBAAkBpvB,GAE9C5B,EAAGoL,KA2EH,WACIpL,EAAGw2D,eAAiBlJ,EAAuBgH,oBAC3Ct0D,EAAGg9D,iBACHh9D,EAAGyzD,WACHzzD,EAAGutD,UACP,EA9EAvtD,EAAGg9D,eAyBH,WAEI1P,EAAuB0P,gBAAe,GAAMv6D,MAE5C,SAAgCC,GAI5B,GAHA1C,EAAG6wD,YAAcjuD,mBAAmBC,iBAAiBH,GACrDV,QAAQC,IAAIjC,EAAG6wD,aAEX7wD,EAAG6wD,YAAYjwD,OAAS,EAAG,CAC3BZ,EAAG68D,gBAAkB78D,EAAG6wD,YAAYtgD,eAAe,SAAUvQ,EAAG+8D,gBAChE,IAAIE,EAAgBj9D,EAAG68D,gBAAgBC,cACnCG,EAAgB,MAChBA,EAAgB,KAEpBj9D,EAAGgJ,KAAO,CAACskB,KAAK+E,MAAM4qC,GAAgB3vC,KAAK+E,MAAM,IAAM4qC,GAC3D,CACJ,GACJ,EAzCAj9D,EAAGyzD,SA2CH,WACInG,EAAuBmG,UAAS,EAAM7yC,SAAS0c,SAAS,EAAG,UAAW1c,SAAS4c,IAAI,EAAG,WAAW/6B,MAEjG,SAA0BC,GACtB1C,EAAG28D,MAAQ/5D,mBAAmBC,iBAAiBH,EAAU,IAEzD1C,EAAG48D,OAAS,GACZ,IAAI,IAAIp7D,EAAI,EAAGA,EAAIxB,EAAG28D,MAAM/7D,OAAQY,IAAK,CACrC,IAAImwD,EAAO3xD,EAAG28D,MAAMn7D,GAChBq2C,EAAQ,UAET8Z,EAAKC,cACJ/Z,EAAQ,WAGZ73C,EAAG48D,OAAOntD,KAAK,IAAIgT,EAAMkvC,EAAK/vD,GAAI,OAAQ+vD,EAAK31C,KAAM21C,EAAKE,UAAW,KAAMha,GAC/E,CACJ,GACJ,EA5DA73C,EAAGk9D,eAKH,WACI5P,EAAuB6P,yBACvB59D,EAAW8K,WAAW,0BACtBrK,EAAGoL,MACP,EARApL,EAAGo9D,mBAUH,WACI9P,EAAuB+P,yBACvB99D,EAAW8K,WAAW,0BACtBrK,EAAGoL,MACP,EAbApL,EAAGs9D,8BAeH,WACI,IAAIprD,EAAWo7C,EAAuBgH,oBAAoBqC,UAC1D,OAAO/zD,mBAAmBy6B,aAAaq5B,QAAU91C,OAAO1O,GAAUwkD,MACtE,EAjBA12D,EAAGutD,SA2DH,WACID,EAAuBC,WAAW9qD,MAElC,SAA0BC,GACtB,IAAIiuD,EAAQ/tD,mBAAmBC,iBAAiBH,EAAU,IAC1D1C,EAAGu9D,cAAgB19D,EAAQ,SAARA,CAAkB8wD,EAAO,CAAE2G,YAAY,GAC9D,GACJ,EASAt3D,EAAGmH,QAAU,WACTnH,EAAGoL,MACP,EAEA7L,EAAWwI,IAAI,uBAAuB,SAAU0a,GAC5CziB,EAAGg9D,gBACP,GACJ,CAED50D,OAAO/I,QA9GE4I,OAAO,iBAAiBC,WAAW,0BAA2B+/C,GAEtEA,EAAgB9/C,QAAU,CAAC,wBAAyB,UAAW,YAAa,aAAc,UA4G7F,CA/GD,E,aCAA,SAAW9I,GAOP,SAAS4oD,EAAgBqF,EAAwBztD,GAC7C,IAAIG,EAAKC,KACTD,EAAGq5D,UAAY,GAEfr5D,EAAGw2D,eAAiBlJ,EAAuBgH,oBAE3Ct0D,EAAGu4D,aAQH,WACIjL,EAAuBC,UAAS,GAAM9qD,MAEtC,SAA8BC,GAC1B,IAAIiuD,EAAQ/tD,mBAAmBC,iBAAiBH,EAAU,IAC1D1C,EAAGq5D,UAAYx5D,EAAQ,SAARA,CAAkB8wD,EAAO,CAAElD,cAAe,GAC7D,GACJ,EAbAztD,EAAG06D,YAEH,SAAqBt4B,EAAKiD,EAAK6nB,GAC3B,OAAO5/B,KAAK+E,MAAM+P,GAAO8qB,EAAKyN,SAASC,MAC3C,EAWA56D,EAAGmH,QAAU,WACTnH,EAAGu4D,cACP,CACJ,CAEA,SAASiF,EAAkBlQ,EAAwB7tD,GAC/C,IAAIO,EAAKC,KAGTD,EAAG+iC,SAAWtjC,EAAa+W,GAC3BxW,EAAGy9D,QAA8B,aAApBh+D,EAAa+W,GAU1BxW,EAAGmH,QAAU,WAOT,CAER,CA1DA9H,EAAQ4I,OAAO,iBAAiBC,WAAW,gCAAiC+/C,GAC5E5oD,EAAQ4I,OAAO,iBAAiBC,WAAW,wBAAyBs1D,GAEpEvV,EAAgB9/C,QAAU,CAAC,wBAAyB,WACpDq1D,EAAkBr1D,QAAU,CAAC,wBAAyB,eAwDzD,CA7DD,CA6DGC,OAAO/I,Q,aC7DV,SAAWA,GAKP,SAAS4oD,EAAgBqF,EAAwB35B,EAAahqB,EAAUpK,EAAYkK,GAChF,IAAIzJ,EAAKC,KAETD,EAAG09D,kBAAoB,CACnB,CACIxqD,KAAM,QACNtR,GAAI,GAER,CACIsR,KAAM,QACNtR,GAAI,IAIZ5B,EAAG29D,mBAAqB,CACpBz4B,IAAKtiC,mBAAmBy6B,aAAaxc,QAAQ,SAGjD7gB,EAAG49D,QAAU,GAEb59D,EAAGoL,KAgGH,WACIpL,EAAG8C,KAAOvD,EAAWsQ,aACjB7P,EAAG8C,KAAK6W,MAAM/Y,OAAS,IACvBZ,EAAGga,aAAeha,EAAG8C,KAAK6W,MAAM,IAGpC,IAAK,IAAInY,EAAI,EAAGA,EAAI,EAAGA,IACnBxB,EAAG49D,QAAQnuD,KAAK,CACZyD,KAAM0N,OAAOi9C,SAASr8D,GACtBI,GAAIJ,IAIZxB,EAAG89D,iBACH99D,EAAG+9D,eAAiBzQ,EAAuB0Q,iBAC3Ch+D,EAAGi+D,WAAaj+D,EAAGk+D,mBAAqBvqC,EAAYwqC,8BAA8B,QAAS,cAC3Fn+D,EAAGo+D,aACP,EAhHAp+D,EAAG89D,eAqDH,WACIxQ,EAAuBwQ,iBAAiBr7D,MAExC,SAAgCC,GAC5B1C,EAAGq+D,YAAcz7D,mBAAmBC,iBAAiBH,GACrD1C,EAAGs+D,oBAAsBj/D,EAAQ8E,KAAKnE,EAAGq+D,YAC7C,GACJ,EA3DAr+D,EAAGu+D,eAOH,WACIjR,EAAuBkR,cAAcx+D,EAAGi+D,WAAYj+D,EAAGga,aAAapY,IAAIa,MAExE,SAA+BC,GAC3B1C,EAAGk+D,mBAAqBl+D,EAAGi+D,WAE3Bt0D,EAASP,KACLO,EAASkH,SACJq8B,YAAY,iBACZn8B,SAAS,gBAEtB,GACJ,EAlBA/Q,EAAGy+D,gBAoBH,WAEInR,EAAuBoR,eAAe1+D,EAAGq+D,YAAYM,WAAY3+D,EAAGq+D,YAAYO,WAAY5+D,EAAGga,aAAapY,IAAIa,MAEhH,SAAgCC,GAC5B1C,EAAGs+D,oBAAsBj/D,EAAQ8E,KAAKnE,EAAGq+D,aAEzC10D,EAASP,KACLO,EAASkH,SACJq8B,YAAY,+BACZn8B,SAAS,gBAEtB,GACJ,EAhCA/Q,EAAGo+D,YA2DH,WACI9Q,EAAuB8Q,YAAYp+D,EAAGga,aAAapY,IAAIa,MAEvD,SAA6BC,GACzB1C,EAAG6+D,YAAcj8D,mBAAmBC,iBAAiBH,EACzD,GACJ,EAhEA1C,EAAG8+D,YAiCH,WAEIxR,EAAuByR,oBAAoB,CACvCh2C,KAAM/oB,EAAGg/D,eACTC,OAAQj/D,EAAGga,aAAapY,KACzBa,MAEH,SAAqCC,GACjC,IAAIw8D,EAAUt8D,mBAAmBC,iBAAiBH,GAClD1C,EAAG6+D,YAAYpvD,KAAKyvD,GAEpBl/D,EAAGm/D,gBAAiB,EACpBn/D,EAAGg/D,oBAAiBn+D,CACxB,GACJ,EA9CAb,EAAGo/D,cAiEH,SAAuBF,GAEnB,IAAIxJ,EAAUjsD,EAAUisD,UACnB1uC,MAAM,UACNkmB,YAAY,oDACZ6E,GAAG,MACH/pC,OAAO,UASZ,SAASq3D,EAAsB38D,GAC3B,IAAIuN,EAAQjQ,EAAG6+D,YAAY/9D,QAAQo+D,GACnCl/D,EAAG6+D,YAAY3uD,OAAOD,EAAO,EACjC,CAVAxG,EAAUL,KAAKssD,GAASjzD,MAAK,WACzB6qD,EAAuB8R,cAAcF,EAAQt9D,IAAIa,KAAK48D,EAC1D,IAAG,WAEH,GAOJ,EAnFAr/D,EAAGs/D,iBAqFH,SAA0BJ,GACtB,OAAOt8D,mBAAmBy6B,aAAaxc,QAAQ,OAASD,OAAOs+C,EAAQn2C,MAAMlI,QAAQ,MACzF,EAqBAthB,EAAWyD,YAAYP,KAAKzC,EAAGoL,KACnC,CA5IA/L,EAAQ4I,OAAO,iBAAiBC,WAAW,gCAAiC+/C,GAE5EA,EAAgB9/C,QAAU,CAAC,wBAAyB,eAAgB,WAAY,aAAc,YA4IjG,CA/ID,CA+IGC,OAAO/I,Q,aC/IV,SAAWA,GAKP,SAAS4oD,EAAgBsX,EAAapwD,EAAIsS,EAAShiB,EAAcI,EAAS4iB,EAAO9Y,GAC7E,IAAI3J,EAAKC,KAETD,EAAGw/D,YAAc,CAAC,OAAQ,SAC1Bx/D,EAAG2+D,WAAa3+D,EAAGw/D,YAAY,GAC/Bx/D,EAAGy/D,eAAiB,EAEpBz/D,EAAGm2D,OAAS,CAAC,WAAY,QACzBn2D,EAAGo2D,OAAS,CAAC,UAAW,WACxBp2D,EAAG0B,QAAU,CAAE20D,iBAAkB,IACjCr2D,EAAGgJ,KAAO,CAAC,EAAG,KACdhJ,EAAG0/D,SAAW,CAAC,EAAG,KAClB1/D,EAAG68D,gBAAkB,CAAC,EACtB78D,EAAG68D,gBAAgBC,cAAgB,EACnC98D,EAAG2/D,kBAAoB,SACvB3/D,EAAGq5D,UAAY,GACfr5D,EAAGmvD,MAAQ,GAEXnvD,EAAG4/D,aAAe,EAElB5/D,EAAGipB,SAAWxpB,EAAaogE,OACvB7/D,EAAGipB,QAAU,IACbjpB,EAAGipB,OAASxH,EAAQuP,kBAAkBpvB,IAG1C5B,EAAG8/D,sBAAwB,CACvBC,eAAgB,CACZC,gBAAgB,IAIxBhgE,EAAGigE,0BAA4B,CAC3BD,gBAAgB,EAChBE,UAAU,GAGdlgE,EAAGmgE,YAAcv9D,mBAAmBy6B,aACpCr9B,EAAGw2D,eAAiB+I,EAAYjL,oBAKhCt0D,EAAGogE,mBAAqB,EAExBpgE,EAAGqgE,cAAgB,GACnBrgE,EAAGsgE,sBAAwB,GAE3BtgE,EAAGugE,UAiGH,WACIhB,EAAY9L,UAAS,EAAMzzD,EAAGwgE,YAAaxgE,EAAGygE,UAAWzgE,EAAGipB,QAAQxmB,MAGpE,SAA0BC,GACtB1C,EAAGqgE,cAAgBz9D,mBAAmBC,iBAAiBH,GACvD,IAAIg+D,EAAiB,EACjBC,EAAoB,EACxB3gE,EAAG48D,OAAS,GAEZ,IAAK,IAAIp7D,EAAI,EAAGA,EAAIxB,EAAGqgE,cAAcz/D,OAAQY,IAAK,CAC9C,IAAImwD,EAAO3xD,EAAGqgE,cAAc7+D,GACxBq2C,EAAQ,UAER73C,EAAGqgE,cAAc7+D,GAAGowD,aACpB8O,IACA7oB,EAAQ,WAER8oB,IAGJ3gE,EAAG48D,OAAOntD,KAAK,IAAIgT,EAAMkvC,EAAK/vD,GAAI,OAAQ+vD,EAAK31C,KAAM21C,EAAKE,UAAW,KAAMha,GAC/E,CACA73C,EAAG4gE,sBAAwBF,EAC3B1gE,EAAG6gE,yBAA2BF,CAClC,IAvBApB,EAAY9L,UAAS,EAAOzzD,EAAG8gE,gBAAiB9gE,EAAG+gE,cAAe/gE,EAAGipB,QAAQxmB,MAyB7E,SAAoCC,GAChC1C,EAAGghE,kBAAoBp+D,mBAAmBC,iBAAiBH,EAC/D,GACJ,EA5HA1C,EAAGihE,aA4JH,WACI9xD,EAAG6B,IAAI,CACHuuD,EAAY2B,+BAA+BlhE,EAAGwgE,YAAaxgE,EAAGygE,WAC9DlB,EAAY2B,+BAA+BlhE,EAAGmhE,oBAAqBnhE,EAAGohE,qBACvE3+D,MAEH,SAA+BE,GAC3B,IAAI0+D,EAAWz+D,mBAAmBC,iBAAiBF,EAAO,IACtD2+D,EAAa1+D,mBAAmBC,iBAAiBF,EAAO,IAE5D3C,EAAGuhE,uBAAyBF,EAAS7N,UACrCxzD,EAAGwhE,0BAA4BH,EAASI,aAExC,IAAIC,EAA4BJ,EAAW9N,UACvCmO,EAA+BL,EAAWG,aAE9CzhE,EAAG4hE,+BAAiCF,EACpC1hE,EAAG6hE,kCAAoCF,EAEvC3hE,EAAG8hE,qBAAuB9hE,EAAGuhE,uBAAyBG,EACtD1hE,EAAG+hE,uBAAyB/hE,EAAGwhE,0BAA4BG,EAE3D3hE,EAAGgiE,4BAA8BN,EAA4B,EAAK1hE,EAAG8hE,qBAAuBJ,EAA6B,IAAM,EAC/H1hE,EAAGiiE,+BAAiCN,EAA+B,EAAK3hE,EAAG+hE,uBAAyBJ,EAAgC,IAAM,CAC9I,GACJ,EAjLA3hE,EAAGkiE,2BAqMH,WACI3C,EAAY2C,2BAA2BliE,EAAGwgE,YAAaxgE,EAAGygE,WAAWh+D,MAErE,SAA4CC,GACxC1C,EAAGmiE,wBAA0Bv/D,mBAAmBC,iBAAiBH,EACrE,GACJ,EA1MA1C,EAAGutD,SAgBH,WACIgS,EAAYhS,UAAS,GAAM9qD,MAE3B,SAA0BC,GACtB,IAAI0/D,EAAW1/D,EAASsG,KACxBhJ,EAAGmvD,MAAQ,GACXnvD,EAAGq5D,UAAY,GAEf,IAAI,IAAI73D,EAAI,EAAGA,EAAI4gE,EAASxhE,OAAQY,IAC7B4gE,EAAS5gE,GAAGisD,aAAe,EAC1BztD,EAAGmvD,MAAM1/C,KAAK2yD,EAAS5gE,IAGvBxB,EAAGq5D,UAAU5pD,KAAK2yD,EAAS5gE,GAGvC,GACJ,EAhCAxB,EAAG06D,YAEH,SAAqBt4B,EAAKiD,EAAK6nB,GAC3B,OAAO5/B,KAAK+E,MAAM+P,GAAO8qB,EAAKyN,SAASC,MAC3C,EACA56D,EAAGqiE,2BAEH,WACI9C,EAAY8C,6BAA6B5/D,MAEzC,SAAyBC,GACrB1C,EAAGsiE,gBAAkB5/D,EAASsG,IAClC,GACJ,EA8LAhJ,EAAGmH,QAAU,WAETo4D,EAAYzB,iBAAiBr7D,MAAK,SAAUC,GAExC,IAAI6/D,EAAc3/D,mBAAmBC,iBAAiBH,GAEtD,GAA+B,IAA3B6/D,EAAY5D,WAAkB,CAE9B,IADA,IAAI5E,EAAYn3D,mBAAmBy6B,aAC5B08B,EAAUyI,eAAiBD,EAAY3D,YAC1C7E,EAAUv8B,IAAI,EAAG,QAGrBx9B,EAAGygE,UAAY7/C,OAAOm5C,GAAWh5C,MAAM,OACvC/gB,EAAGwgE,YAAc5/C,OAAO5gB,EAAGygE,WAAWjjC,KAAK,EAAG,QAAQ3c,QAAQ,OAE9D7gB,EAAGohE,kBAAoBxgD,OAAO5gB,EAAGwgE,aAAahjC,KAAK,EAAG,QAAQzc,MAAM,OACpE/gB,EAAGmhE,oBAAsBvgD,OAAO5gB,EAAGohE,mBAAmB5jC,KAAK,EAAG,QAAQ3c,QAAQ,OAE9E7gB,EAAG8gE,gBAAkBlgD,OAAO5gB,EAAGygE,WAAWjjC,IAAI,EAAG,QAAQ3c,QAAQ,OACjE7gB,EAAG+gE,cAAgBngD,OAAO5gB,EAAG8gE,iBAAiBtjC,IAAI,EAAG,QAAQzc,MAAM,MACvE,MAESwhD,EAAYE,gBAQbziE,EAAGwgE,YAAc5/C,OAAO2hD,EAAYE,eAAejC,aACnDxgE,EAAGygE,UAAY7/C,OAAO2hD,EAAYE,eAAehC,WAE7C8B,EAAYG,iBAAmBH,EAAYG,gBAAgBjC,UAC3DzgE,EAAGohE,kBAAoBxgD,OAAO2hD,EAAYG,gBAAgBjC,WAE1DzgE,EAAGohE,kBAAoBxgD,OAAO5gB,EAAGwgE,aAAahjC,KAAK,EAAG,QAAQzc,MAAM,OAGpEwhD,EAAYG,iBAAmBH,EAAYG,gBAAgBlC,YAC3DxgE,EAAGmhE,oBAAsBvgD,OAAO2hD,EAAYG,gBAAgBlC,aAE5DxgE,EAAGmhE,oBAAsBvgD,OAAO5gB,EAAGohE,mBAAmB5jC,KAAK,GAAI,QAAQ3c,QAAQ,OAG/E0hD,EAAYI,aAAeJ,EAAYI,YAAYnC,YACnDxgE,EAAG8gE,gBAAkBlgD,OAAO2hD,EAAYI,YAAYnC,aAEpDxgE,EAAG8gE,gBAAkBlgD,OAAO5gB,EAAGygE,WAAWjjC,IAAI,EAAG,QAAQ3c,QAAQ,OAGjE0hD,EAAYI,aAAeJ,EAAYI,YAAYlC,UACnDzgE,EAAG+gE,cAAgBngD,OAAO2hD,EAAYI,YAAYlC,WAElDzgE,EAAG+gE,cAAgBngD,OAAO5gB,EAAG8gE,iBAAiBtjC,IAAI,GAAI,QAAQzc,MAAM,QA/BxEpX,EAASP,KACLO,EAASkH,SACJq8B,YAAY,qDACZn8B,SAAS,iBAmC1B/Q,EAAGugE,YACHvgE,EAAGihE,eACHjhE,EAAGkiE,4BACP,IAIAliE,EAAGutD,WACHvtD,EAAGqiE,4BAIP,CACJ,CAEDj6D,OAAO/I,QAnVE4I,OAAO,iBAAiBC,WAAW,6BAA8B+/C,GAEzEA,EAAgB9/C,QAAU,CAAC,wBAAyB,KAAM,UAAW,eAAgB,UAAW,YAAa,WAiVhH,CApVD,E,aCAA,SAAW9I,GAOP,SAAS4oD,EAAgBqF,GACZrtD,KAENu2D,eAAiBlJ,EAAuBgH,oBAFlCr0D,KAINkH,QAAU,WAEb,CACJ,CAEA,SAASy7D,EAAkBtV,EAAwB7tD,GAC/C,IAAIO,EAAKC,KAETD,EAAG6iE,WAYH,SAAoBrsD,GAChB82C,EAAuBuV,WAAWrsD,GAAI/T,MAEtC,SAA4BC,GACxB1C,EAAG2xD,KAAO/uD,mBAAmBC,iBAAiBH,EAClD,GACJ,EAhBA1C,EAAG8iE,SAAWrjE,EAAa+W,GAC3BxW,EAAG+iC,SAAWtjC,EAAasjC,OAC3B/iC,EAAGw8D,aAAe/8D,EAAa+8D,WAE/Bx8D,EAAG0hB,KAEH,WACItZ,OAAOuZ,QAAQC,MACnB,EAUA5hB,EAAGmH,QAAU,WACLnH,EAAG8iE,OAAS,EACZ9iE,EAAG6iE,WAAW7iE,EAAG8iE,QAEjB9iE,EAAG2xD,KAAO,CACN/vD,GAAI,MACJq0D,SAAU3I,EAAuBgH,oBAAoBvrC,KACrDwrC,UAAU,EACVlC,OAAQryD,EAAG+iC,OACXw4B,WAAYv7D,EAAGw8D,WAG3B,CACJ,CApDAn9D,EAAQ4I,OAAO,iBAAiBC,WAAW,sBAAuB+/C,GAClE5oD,EAAQ4I,OAAO,iBAAiBC,WAAW,wBAAyB06D,GAEpE3a,EAAgB9/C,QAAU,CAAC,wBAAyB,gBACpDy6D,EAAkBz6D,QAAU,CAAC,wBAAyB,eAkDzD,CAvDD,CAuDGC,OAAO/I,Q,aCvDV,SAAWA,GAKP,SAAS4oD,EAAgBsX,EAAa99C,GAClC,IAAIzhB,EAAKC,KACTD,EAAGipB,OAASxH,EAAQuP,kBAAkBpvB,GACtC5B,EAAG+iE,uBAAyB,mCAAqC/iE,EAAGipB,OACpEjpB,EAAGgjE,qBAAuB,GAE1BhjE,EAAGijE,mBAMH,WACI1D,EAAYvC,gBAAe,GAAMv6D,MAEjC,SAAuCC,GAEnC,IADA,IAAIwgE,EAAMtgE,mBAAmBC,iBAAiBH,GACrClB,EAAI,EAAGA,EAAI0hE,EAAItiE,OAAQY,IAC5B0hE,EAAI1hE,GAAG85B,SAAWt7B,EAAGgjE,qBAAqBliE,QAAQoiE,EAAI1hE,GAAGynB,SAAW,EAGxEjpB,EAAGmjE,cAAgBD,CACvB,GACJ,EAhBAljE,EAAGojE,iBAkBH,WACI7D,EAAY8C,6BAA6B5/D,MAEzC,SAA4CC,GACxC1C,EAAGsvD,UAAY1sD,mBAAmBC,iBAAiBH,EACvD,GACJ,EAvBA1C,EAAGqjE,2BAyBH,SAAoCC,GAEhC,GADAA,EAAahoC,UAAYgoC,EAAahoC,SAClCgoC,EAAahoC,SACTt7B,EAAGgjE,qBAAqBliE,QAAQwiE,EAAar6C,QAAU,GACvDjpB,EAAGgjE,qBAAqBvzD,KAAK6zD,EAAar6C,YAE3C,CACH,IAAIhZ,EAAQjQ,EAAGgjE,qBAAqBliE,QAAQwiE,EAAar6C,QACrDhZ,GAAS,GACTjQ,EAAGgjE,qBAAqB9yD,OAAOD,EAAO,EAE9C,CAEAjQ,EAAGujE,+BACP,EAtCAvjE,EAAGujE,8BAwCH,WACI/1D,gBAAgBxN,EAAG+iE,uBAAwBp/C,KAAKoa,UAAU/9B,EAAGgjE,sBACjE,EAzCAhjE,EAAGwjE,iCA2CH,WACI,IAAIx6D,EAAO4B,gBAAgB5K,EAAG+iE,wBAC1B/5D,IACAhJ,EAAGgjE,qBAAuBr/C,KAAKC,MAAM5a,GAE7C,EAEAhJ,EAAGmH,QAAU,WACTnH,EAAGwjE,mCACHxjE,EAAGijE,qBACHjjE,EAAGojE,kBACP,CACJ,CAEDh7D,OAAO/I,QAvEE4I,OAAO,iBAAiBC,WAAW,qBAAsB+/C,GAEjEA,EAAgB9/C,QAAU,CAAC,wBAAyB,UAqEvD,CAxED,E,aCAA,SAAW9I,GAQV,SAAS4oD,EAAgBxoD,GACfQ,KACNwjE,UAAYhkE,EAAa+W,EAC7B,CAEA,SAASktD,EAAejkE,GACdQ,KACN0jE,YAAclkE,EAAa6H,MAC/B,CAfAjI,EAAQ4I,OAAO,iBAAiBC,WAAW,gBAAiB+/C,GAC5D5oD,EAAQ4I,OAAO,iBAAiBC,WAAW,iBAAkBw7D,GAG7Dzb,EAAgB9/C,QAAU,CAAC,gBAC3Bu7D,EAAev7D,QAAU,CAAC,eAiH1B,CAvHD,CAuHGC,OAAO/I,Q,aCvHV,SAAWA,GAKV,SAASukE,EAAa7/C,GACrB9jB,KAAK4jE,YAAc,SAAUrtD,GAC5B,OAAOuN,EAAMI,IAAIhX,aAAe,gCAAkCwuB,EAAE2J,MAAM,CAAEw+B,QAASttD,IACtF,EAEAvW,KAAK8jE,0BAA4B,SAAUD,EAASE,EAAW/1B,EAAOuW,GACrE,OAAOzgC,EAAMQ,KAAK0/C,iBAAmB,4BAA6B,CACjER,QAASK,EACT1xC,OAAQ4xC,EACRv9D,MAAOwnC,EACPlB,QAASyX,GACP,CACF95B,QAAS,CACRC,cAAc,IAGjB,CACD,CAEEviB,OAAO/I,QAvBD4I,OAAO,iBAAiByd,QAAQ,wBAAyBk+C,GAEjEA,EAAaz7D,QAAU,CAAC,QAqBxB,CAxBD,E,YCUA,SAAS+7D,EAA2B3kE,EAAYC,EAAQoK,GAExD,CAEA,SAASu6D,EAAmB5kE,EAAYC,EAAQoK,GAE5CpK,EAAO4kE,kBAAoB,WAC1B5kE,EAAO6kE,MAAM7kE,EAAOkC,QAAQ0a,KAAO5c,EAAOkC,QAAQsH,KAAKtH,QAAQ4O,gBAAgB,YAAY,GAAMg0D,UAAU,MAAMz8D,MAClH,EAEArI,EAAO+kE,qBAAuB,SAAUC,GACpC,IAAIpb,EAAY7pD,EAAWsQ,aAAasS,UACpClY,EAAcu6D,EAAOC,iBAAiBl0D,eAAe,YAAa64C,GAStE,OARKn/C,IACDA,EAAc,CACVmO,SAAUosD,EAAOhuD,GACjB2L,UAAWinC,EACX3hD,KAAM,GACN5F,MAAO,KAGRoI,CACX,CAEJ,CAEA,SAASy6D,EAAwBnlE,EAAYC,EAAQoK,GACjD,IAAI1I,EAAQ1B,EAAOmlE,OAAOp0D,eAAe,MAAO/Q,EAAOkC,QAAQ0a,KAE1Dlb,EAAM8H,KAAKtH,UACfR,EAAM8H,KAAKtH,QAAU,IAGtBlC,EAAO+kE,qBAAuB,SAAUC,GACpC,IAAIpb,EAAY7pD,EAAWsQ,aAAasS,UAEpClY,EAAcu6D,EAAOC,iBAAiBl0D,eAAe,YAAa64C,GAStE,OARKn/C,IACDA,EAAc,CACVmO,SAAUosD,EAAOhuD,GACjB2L,UAAWinC,EACX3hD,KAAM,GACN5F,MAAO,KAGRoI,CACX,CACJ,CAEA,SAAS26D,EAAwBrlE,EAAYC,EAAQoK,EAAgBhK,GACjE,IAAIsB,EAAQ1B,EAAOmlE,OAAOp0D,eAAe,MAAO/Q,EAAOkC,QAAQ0a,KAE1Dlb,EAAM8H,KAAKtH,UACfR,EAAM8H,KAAKtH,QAAU,GAErBR,EAAM8H,KAAKtH,QAAQ+N,KAAK,CACjBo1D,YAAa3jE,EAAMU,GAAIsR,KAAM,GAAIrR,MAAO,QAAS4iE,iBAAkB,CAAC,CAChEK,SAAU5jE,EAAMkb,IAChB+F,UAAW,EACX1a,KAAM,SACN5F,MAAO,OACR,CACCijE,SAAU5jE,EAAMkb,IAChB+F,UAAW,EACX1a,KAAM,SACN5F,MAAO,UAGlBX,EAAM8H,KAAKtH,QAAQ+N,KAAK,CACjBo1D,YAAa3jE,EAAMU,GAAIsR,KAAM,GAAIrR,MAAO,QAAS4iE,iBAAkB,CAAC,CAChEK,SAAU5jE,EAAMkb,IAChB+F,UAAW,EACX1a,KAAM,SACN5F,MAAO,MACR,CACCijE,SAAU5jE,EAAMkb,IAChB+F,UAAW,EACX1a,KAAM,SACN5F,MAAO,UAInBrC,EAAO+kE,qBAAuB,SAAUC,GACpC,IAAIpb,EAAY7pD,EAAWsQ,aAAasS,UAEpClY,EAAcu6D,EAAOC,iBAAiBl0D,eAAe,YAAa64C,GAStE,OARKn/C,IACDA,EAAc,CACVmO,SAAUosD,EAAOhuD,GACjB2L,UAAWinC,EACX3hD,KAAM,GACN5F,MAAO,KAGRoI,CACX,CACJ,CA1GA5K,QAAQ4I,OAAO,aAAaC,WAAW,6BAA8Bg8D,GACrE7kE,QAAQ4I,OAAO,aAAaC,WAAW,qBAAsBi8D,GAC7D9kE,QAAQ4I,OAAO,aAAaC,WAAW,0BAA2Bw8D,GAClErlE,QAAQ4I,OAAO,aAAaC,WAAW,0BAA2B08D,GAElEV,EAA2B/7D,QAAU,CAAC,aAAc,SAAU,kBAC9Dg8D,EAAmBh8D,QAAU,CAAC,aAAc,SAAU,kBACtDu8D,EAAwBv8D,QAAU,CAAC,aAAc,SAAU,kBAC3Dy8D,EAAwBz8D,QAAU,CAAC,aAAc,SAAU,iBAAkB,YAqG7E,IAAI48D,EAAMl2D,SAASm2D,YAAY,eAC/BD,EAAIE,gBAAgB,+BAA+B,GAAM,EAAM,CAAEjiC,IAAK,cACtE56B,OAAO88D,cAAcH,E,aC/GrB,SAAU1lE,GASN,SAAS8lE,EAAiB5lE,EAAY6lE,EAAct6D,GAChD,IAAI9K,EAAKC,KACTD,EAAGqlE,OAAS,GAEZrlE,EAAGslE,UAGH,WACIF,EAAaE,YAAY7iE,MAEzB,SAA0BC,GACtB1C,EAAGqlE,OAAS3iE,EAASsG,IACzB,GACJ,EARAhJ,EAAGulE,UAUH,SAAmBC,GACf16D,EAAOyL,GAAG,qBAAsB,CAACC,GAAIgvD,EAAM5jE,IAC/C,EAMA3B,KAAKkH,QAJL,WACInH,EAAGslE,WACP,CAGJ,CAEA,SAASG,EAAgBlmE,EAAY6lE,EAAc3lE,EAAcqL,GAC7D,IAAI9K,EAAKC,KACTD,EAAG0lE,UAAYjmE,EAAa+W,GAC5BxW,EAAG2lE,MAAQ,CACPC,QAAS,IAGb5lE,EAAG6lE,SAGH,WACIT,EAAaS,SAAS7lE,EAAG0lE,SAASjjE,MAElC,SAAyBC,GACrB1C,EAAG2lE,MAAQjjE,EAASsG,IACxB,GACJ,EARAhJ,EAAG8lE,WAUH,SAAoBC,GAChBj7D,EAAOyL,GAAG,2BAA4B,CAACC,GAAIuvD,EAAOnkE,IACtD,EAQA3B,KAAKkH,QANL,WACOnH,EAAG0lE,QAAU,GACZ1lE,EAAG6lE,UAEX,CAGJ,CAEA,SAASG,EAAsBzmE,EAAY6lE,EAAc3lE,EAAcgK,EAAW9J,EAAY40C,EAAiB/7B,GAC3G,IAAIxY,EAAKC,KAgFT,SAASgmE,EAAqBx8D,GACjBxJ,KAENyY,MAGH,WACIjP,EAAUzB,QACd,EAPS/H,KAGN0Y,GAMH,WACIlP,EAAUmP,MAAK,EACnB,CACJ,CA5FA5Y,EAAGkmE,WAAazmE,EAAa+W,GAC7BxW,EAAGmmE,OAAS,CAAC,EACbnmE,EAAGomE,KAAO,CACNC,cAAermE,EAAGkmE,SAClBj9C,OAAQsrB,EAAgBvjB,kBAAkBpvB,GAC1Coa,KAAM,IAGVhc,EAAGsmE,UAMH,WACOtmE,EAAGkmE,SAAW,GACbd,EAAakB,UAAUtmE,EAAGkmE,UAAUzjE,MAGxC,SAA0BC,GACtB1C,EAAGmmE,OAASzjE,EAASsG,IACzB,GACJ,EAbAhJ,EAAGumE,WAeH,SAAoBhiD,GAChB6gD,EAAamB,WAAWhiD,GAAM9hB,MAE9B,SAA2BC,GAEvB1C,EAAGwmE,aACyB,GAAzB9jE,EAASsG,KAAKvE,WAAqB8f,EAAK3iB,IAAM,GAC7C5B,EAAGmmE,OAAOM,aAAah3D,KAAK/M,EAASsG,KAAKlE,WAE1C9E,EAAGomE,KAAO,CACNC,cAAermE,EAAGkmE,SAClBj9C,OAAQ1pB,EAAWsQ,aAAajO,GAChCoa,KAAM,OAGJuI,EAAK3iB,GAAK,GAChB2iB,EAAKmiD,WAAY,EACjB1kE,QAAQC,IAAI,6BAGZD,QAAQoZ,MAAM1Y,EAASsG,KAAKpE,QAEpC,GACJ,EArCA5E,EAAG2mE,SAuCH,SAAkBpiD,GACdA,EAAKmiD,WAAY,CACrB,EAxCA1mE,EAAG4mE,WA0CH,SAAoBriD,GAiBhB,SAASsiD,EAAkBnkE,GACpBA,EAASsG,KAAKvE,SACbzE,EAAGmmE,OAAOM,aAAav2D,OAAOlQ,EAAGmmE,OAAOM,aAAa3lE,QAAQyjB,GAAO,EAE5E,CApBA5kB,EAAW,uBAAuB8C,MAAK,SAAUwH,GAC7CR,EAAUL,KAAK,CACXyN,YAAa2B,EAAgBsD,QAAQ,cAAe,8CACpD5T,WAAY+9D,EACZnvD,aAAc,KACdiF,OAAQ,CACJC,KAAM/R,GAEV8M,kBAAkB,IACnBtU,MAAK,SAAUC,GACXA,GACC0iE,EAAawB,WAAWriD,EAAK3iB,IAAIa,KAAKokE,EAE9C,GACJ,GAOJ,EA/DA7mE,EAAGwmE,WAkFH,aACUjyB,EAAgBvjB,kBAAkBpvB,GAAK,KAAO5B,EAAGkmE,SAAW,GAC9Dd,EAAaoB,WAAWxmE,EAAGkmE,SAEnC,EArBAD,EAAqB99D,QAAU,CAAC,aA4BhClI,KAAKkH,QALL,WACInH,EAAGsmE,YACHtmE,EAAGwmE,YACP,CAGJ,CA7KAnnE,EAAQ4I,OAAO,iBAAiBC,WAAW,iBAAkBi9D,GAC7D9lE,EAAQ4I,OAAO,iBAAiBC,WAAW,gBAAiBu9D,GAC5DpmE,EAAQ4I,OAAO,iBAAiBC,WAAW,uBAAwB89D,GAEnEb,EAAiBh9D,QAAU,CAAC,aAAc,wBAAyB,UACnEs9D,EAAgBt9D,QAAU,CAAC,aAAc,wBAAyB,eAAgB,UAClF69D,EAAsB79D,QAAU,CAAC,aAAc,wBAAyB,eAAgB,YAAa,aAAc,UAAW,UAwKjI,CA/KD,CA+KGC,OAAO/I,Q,aC/KV,SAAWA,GAKP,SAAS+lE,EAAarhD,GAClB9jB,KAAKqlE,UAAY,WACb,OAAOvhD,EAAMI,IAAIhX,aAAe,sBACpC,EAEAlN,KAAK4lE,SAAW,SAASrvD,GACrB,OAAOuN,EAAMI,IAAIhX,aAAe,sBAAwBwuB,EAAE2J,MAAM,CAAC9uB,GAAIA,IACzE,EAEAvW,KAAKqmE,UAAY,SAAS9vD,GACtB,OAAOuN,EAAMI,IAAIhX,aAAe,uBAAyBwuB,EAAE2J,MAAM,CAAE9uB,GAAIA,IAC3E,EAEAvW,KAAKsmE,WAAa,SAAShiD,GACvB,OAAOR,EAAMQ,KAAKpX,aAAe,uBAAwBoX,EAC7D,EAEAtkB,KAAK2mE,WAAa,SAASpwD,GACvB,OAAOuN,EAAK,OAAQ5W,aAAe,wBAA0BwuB,EAAE2J,MAAM,CAAE9uB,GAAIA,IAC/E,EAEAvW,KAAKumE,WAAa,SAASM,GACvB,OAAO/iD,EAAMI,IAAIhX,aAAe,wBAA0BwuB,EAAE2J,MAAM,CAAEwhC,SAAUA,IAClF,CACJ,CACD1+D,OAAO/I,QA7BE4I,OAAO,iBAAiByd,QAAQ,wBAAyB0/C,GAEjEA,EAAaj9D,QAAU,CAAC,QA2B3B,CA9BD,E,WCAA,SAAW9I,GAKP,SAAS0nE,IACI9mE,KACN+mE,gBAAkBhvD,oBAAoB,kBAC7C,CACD5P,OAAO/I,QARE4I,OAAO,iBAAiBC,WAAW,kBAAmB6+D,GAE9DA,EAAkB5+D,QAAU,EAM/B,CATD,E,aCAA,SAAW9I,GAKP,SAAS4nE,EAAoBpnE,EAAS4hB,GAClC,IAAIzhB,EAAKC,KACTD,EAAGknE,kBAAermE,EAWlBZ,KAAKkH,QATL,WACOggE,SAASC,MACRpnE,EAAGknE,aAAernE,EAAQ,WAARA,CAAoB,sCAAwC4U,uBAG9EzU,EAAGknE,aAAernE,EAAQ,WAARA,CAAoB,gCAAkC4U,sBAEhF,CAGJ,CACDrM,OAAO/I,QAnBE4I,OAAO,iBAAiBC,WAAW,oBAAqB++D,GAEhEA,EAAoB9+D,QAAU,CAAC,UAAW,UAiB7C,CApBD,E,aCAA,SAAW9I,GAQP,SAASgoE,EAAgB9nE,EAAY+nE,EAAc7nE,EAAcqL,EAAQ4rB,EAAW92B,EAAU6J,EAAWswC,EAAiBl6C,EAAS+J,EAC/HuF,EAAIxP,EAAYq6C,EAAkB5lC,EAAe5U,EAAQM,GAAM,IAAAu6C,EAC3Dr6C,EAAKC,KA6IT,SAASsnE,EAAoB9kD,IAER,IAAhBA,EAAMzZ,KACThJ,EAAGwnE,SAEoB,IAAf/kD,EAAMzZ,MACdhJ,EAAGynE,YAAa,EAChBznE,EAAG0nE,WAEKjlD,EAAMzZ,IAGhB,CAwCA,SAAS2+D,EAAOC,GACfh+D,EAAei+D,UAAU7nE,EAAG8nE,UAAUlmE,GAAI,GAAI5B,EAAG28C,aAExB,GAArB38C,EAAG8nE,UAAUrgE,MAAazH,EAAG+nE,WAAa/nE,EAAGgoE,WAAWC,SAC3Dr5D,YAAW,WACV5O,EAAGkoE,cAAcC,EAAanoE,EAAG8nE,UAAUtqD,SAC5C,GAAG,EAEL,CA4HA,SAAS2qD,EAAa/hD,GAClB,IACIgiD,EAAQhiD,EAAIgiD,MADH,mEAGb,OAAIA,GAA4B,IAAnBA,EAAM,GAAGxnE,OACXwnE,EAAM,GAEN,OAEf,CA7UApoE,EAAGqoE,WAAa,GAChBroE,EAAGsoE,eAAiB,GACpBtoE,EAAGuoE,cAAgB,GAEnBvoE,EAAGwoE,aAAc,EACjBxoE,EAAGyoE,cAAe,EAClBzoE,EAAG0oE,UAAW,EACd1oE,EAAG2oE,eAAgB,EACnB3oE,EAAG4oE,cAAe,EAClB5oE,EAAG6oE,YAAa,EAChB7oE,EAAG8oE,eAAgB,EACnB9oE,EAAG+oE,gBAAiB,EACpB/oE,EAAGgpE,mBAAoB,EACvBhpE,EAAGipE,aAAc,EACjBjpE,EAAGsrD,iBAAiC,QAAfjR,EAAAG,uBAAe,IAAAH,GAAwB,QAAxBA,EAAfA,EAAiBI,8BAAsB,IAAAJ,GAA0B,QAA1BA,EAAvCA,EAAyC9pC,eAAe,MAAO,UAAE,IAAA8pC,OAAA,EAAjEA,EAAmEx4C,SAAS,EAEjG7B,EAAG28C,YAAc,QAEjB38C,EAAGkpE,SAAWzpE,EAAa+W,GAE5BxW,EAAGkpE,SACPlpE,EAAGmpE,eAAiB1pE,EAAa+W,IAE5BxW,EAAG2nE,OAASA,EACZ3nE,EAAGwnE,OAkLH,WACCxnE,EAAGwoE,aAAc,EACjB5+D,EAAew/D,WAAWppE,EAAG8nE,UAAUlmE,GAAI,GAAI5B,EAAG28C,YACnD,EApLA38C,EAAG0nE,QAsLH,WACC99D,EAAey/D,SAASrpE,EAAG8nE,UAAUlmE,GAAI,GAAI5B,EAAG28C,YACjD,EAvLA38C,EAAGspE,cAqVH,WAEQtpE,EAAGuoE,cAAc3nE,OACjB0mE,EAAagC,cAActpE,EAAGuoE,cAAe,IAAI,GAAO,EAAMvoE,EAAGsrD,iBAAiB7oD,MAQtF,SAA8BC,GAC1B1C,EAAG26C,cAAe,EAClB36C,EAAGqoE,WAAa3lE,EAASsG,KACzBhJ,EAAGqrD,YAAa,EAChBrrD,EAAG2jC,UAAU,EACjB,KAVI3jC,EAAGqoE,WAAa,GAChBroE,EAAGqrD,YAAa,EAChBrpD,QAAQoZ,MAAM,oDAStB,EArWApb,EAAGupE,kBAuWH,WACIjC,EAAaiC,oBAAoB9mE,MACjC,SAAkCC,GAC9B1C,EAAGsoE,eAAiB5lE,EAASsG,KAC7B,IAAK,IAAIxH,EAAI,EAAGA,EAAIxB,EAAGsoE,eAAe1nE,OAAQY,IAC1CxB,EAAGuoE,cAAc94D,KAAKzP,EAAGsoE,eAAe9mE,GAAGI,IAE/C5B,EAAGspE,cAAc,GAAI,IAAI,GAAO,EACvC,GACD,EA/WAtpE,EAAGwpE,aAuLH,SAAsBjtD,GAElB,OAAOA,EAAK9U,MACR,KAAK,EAIL,QACI,OAAO8U,EAAKktD,UAHhB,KAAK,EACD,OAAOltD,EAAKiB,QAIxB,EAhMAxd,EAAG0pE,iBAkMH,SAA0BC,GAMtB,GALI3pE,EAAGuoE,cAAcznE,QAAQ6oE,IAAW,EACpC3pE,EAAGuoE,cAAcr4D,OAAOlQ,EAAGuoE,cAAcqB,YAAYD,GAAS,GAE9D3pE,EAAGuoE,cAAc94D,KAAKk6D,GAEK,GAA3B3pE,EAAGuoE,cAAc3nE,OACjB,IAAK,IAAIY,EAAI,EAAGA,EAAIxB,EAAGsoE,eAAe1nE,OAAQY,IAC1CxB,EAAGuoE,cAAc94D,KAAKzP,EAAGsoE,eAAe9mE,GAAGI,IAInD5B,EAAGspE,cAActpE,EAAGuoE,cAAe,IAAI,GAAO,EAClD,EA9MAvoE,EAAGssC,kBAgNH,SAA2BjoC,EAAMkoC,GAC3BA,EAAOC,2BACL86B,EAAauC,yBAAyBxlE,EAAKzC,GAAI2qC,EAAOO,OAAOlrC,IAAIa,MAGxE,SAAyCC,GACrC6pC,EAAOC,2BAA4B,EACnCD,EAAOS,QAKP,IAHA,IAAI6T,EAAa,EACbC,EAAa,EAERt/C,EAAI,EAAGA,EAAI6C,EAAKo8C,YAAY7/C,OAAQY,IACzCq/C,GAAcx8C,EAAKo8C,YAAYj/C,GAAGwrC,MAClC8T,GAAcz8C,EAAKo8C,YAAYj/C,GAAGsrC,OAAOjrC,MAAQwC,EAAKo8C,YAAYj/C,GAAGwrC,MAGzE3oC,EAAK08C,iBAAmBD,EAAaD,CACzC,GACD,EAlOA7gD,EAAG8pE,mBA6BH,WACI,IAAIxoE,EAAW,GACfA,EAASmO,KAAK,cACdnO,EAASmO,KAAK,iBACdnO,EAASmO,KAAK,kBACdnO,EAASmO,KAAK,qBACdnO,EAASmO,KAAK,eAEd63D,EAAayC,mBAAmBzoE,GAAUmB,MAE1C,SAA0BC,GACtBV,QAAQC,IAAI,mBAAoBS,GAChC1C,EAAG6oE,WAAyE,QAA3DnmE,EAASsG,KAAKuH,eAAe,MAAO,cAAc1O,MACnE7B,EAAG8oE,cAA+E,QAA9DpmE,EAASsG,KAAKuH,eAAe,MAAO,iBAAiB1O,MACzE7B,EAAG+oE,eAAiF,QAA/DrmE,EAASsG,KAAKuH,eAAe,MAAO,kBAAkB1O,MAC3E7B,EAAGgpE,kBAAuF,QAAlEtmE,EAASsG,KAAKuH,eAAe,MAAO,qBAAqB1O,MACjF7B,EAAGipE,YAA2E,QAA5DvmE,EAASsG,KAAKuH,eAAe,MAAO,eAAe1O,KACzE,GACJ,EA9CA7B,EAAG2jC,UA+SH,SAAmBqmC,GACfhqE,EAAG4jC,aAAc,EACjB5jC,EAAG6jC,cAAgB,CACfC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,aAAc+lC,GAAkB,EAChC9lC,eAAgB8lC,GAAkB,EAClC5oB,aAAc,WACV,MAAO,sDACX,EACAC,WAAY,CAAC,CACTC,WAAY,IACZhgD,SAAU,CACN2iC,aAAcjkC,EAAGuhD,+BAAiC,EAClDrd,eAAgBlkC,EAAGuhD,+BAAiC,MAIhE3hD,GAAS,WACLI,EAAG4jC,aAAc,CACrB,GACJ,EApUA5jC,EAAGiqE,gBAoPH,SAAyBf,EAAQ5iD,GAChC0zB,EAAiBkwB,UAAUhB,EAAS,EAAIA,EAAS5iD,EAAY0zB,EAAiByD,MAAM0sB,eAAe,GACvG1nE,MAEO,SAAgCC,GAG5B,GAFA1C,EAAG8nE,UAAYplE,EAASsG,KAEpBhJ,EAAG8nE,UAAUxpD,MAAQte,EAAGipE,YAAa,CAErC,IADA,IAAItqB,EAAS,GACJn9C,EAAI,EAAGA,EAAIxB,EAAG8nE,UAAUxpD,KAAK1d,OAAQY,IAE1Cm9C,EAAOlvC,KAAKzP,EAAG8nE,UAAUxpD,KAAK9c,GAAGI,IAErC5B,EAAGoqE,qBAAqBzrB,EAC5B,CAQA,GANA5E,EAAgBsC,YAAY,CACxBr1B,MAAOhnB,EAAG8nE,UAAU50D,KACpBopC,YAAat8C,EAAG8nE,UAAU3sB,YAC1B6C,IAAKh+C,EAAG8nE,UAAU2B,YAGG,GAArBzpE,EAAG8nE,UAAUrgE,KAAW,CACxBzH,EAAGgoE,WAAa,CACZqC,OAAQ,EACRpC,QAAS,EACTqC,MAAO,GAGX,IACIlC,EAAQpoE,EAAG8nE,UAAUtqD,QAAQ4qD,MADpB,mEAGTpoE,EAAG+nE,UADHK,EACepoE,EAAGgoE,WAAWC,QAGdjoE,EAAGgoE,WAAWqC,MAErC,CAEA1C,GACJ,GACJ,EA5RA3nE,EAAGoqE,qBAqUH,SAA8BzrB,GAC1B2oB,EAAagC,cAAc,GAAI3qB,GAAQ,GAAMl8C,MAC7C,SAAqCC,GACjC1C,EAAGuqE,kBAAoB7nE,EAASsG,KAChChJ,EAAG2jC,WACP,GACJ,EA1UA3jC,EAAGwqE,YAkJH,SAAqBxuB,GAEjB,OAA4B,GAAxBA,EAAEyE,YAAY7/C,OACPo7C,EAAEyE,YAAY,GAAGzT,MAExBgP,EAAEyE,YAAY7/C,OAAS,EAmF/B,SAA0B0+C,GAEtB,IADA,IAAI3nC,EAAQ,EACHnW,EAAI,EAAGA,EAAI89C,EAAMmB,YAAY7/C,OAAQY,IAC1CmW,GAAS2nC,EAAMmB,YAAYj/C,GAAGwrC,MAElC,OAAOr1B,CACX,CAxFe6oC,CAAiBxE,GAErB,CACX,EA1JAh8C,EAAGyqE,mBA4RH,SAA4BrkD,GAC3B,MAAO,iCAAmC+hD,EAAa/hD,EACxD,EA7RApmB,EAAG0qE,0BAqHH,SAAmCnuD,GAC/B,GAAY1b,MAAR0b,GAAqC1b,MAAhBb,EAAG8nE,UACxB,OAAO,EAId,GAAIvrD,EAAK9U,MAAQzH,EAAG8nE,UAAUrgE,KAC7B,OAAO,EAIR,GAAI8U,EAAK3a,IAAM5B,EAAG8nE,UAAUlmE,GAC3B,OAAO,EAIR,GAAI5B,EAAGuqE,kBACN,IAAK,IAAI/oE,EAAI,EAAGA,EAAIxB,EAAGuqE,kBAAkB3pE,OAAQY,IAChD,GAAI+a,EAAK3a,IAAM5B,EAAGuqE,kBAAkB/oE,GAAGI,GACtC,OAAO,EAKV,OAAO,CACR,EA7IA5B,EAAG2qE,WA0CH,WACC3qE,EAAGyoE,cAAe,EACNppE,EAAQwrB,QAAQ,iBAAmB7qB,EAAG8nE,UAAUlmE,IACtD,GAAGgpE,OACV,EA7CA5qE,EAAG6qE,UAwDH,WACC7qE,EAAGyoE,cAAe,EAClBzoE,EAAGynE,YAAa,EAChB,IAAIxpB,EAAQ5+C,EAAQwrB,QAAQ,iBAAmB7qB,EAAG8nE,UAAUlmE,IACxD5B,EAAGynE,WACFxpB,EAAMr9C,SACTq9C,EAAM,GAAG2sB,QACT3sB,EAAM,GAAG6sB,YAAc,IACvB7sB,EAAM,GAAG8sB,OACT/qE,EAAGgrE,aAAc,GAId/sB,EAAMr9C,SACTq9C,EAAM,GAAG8sB,OACT/qE,EAAGgrE,aAAc,EAGpB,EAzEAhrE,EAAGirE,YA8CH,WACCjrE,EAAGyoE,cAAe,EAClBzoE,EAAGynE,YAAa,EACZznE,EAAGkrE,QAENt8D,YADS,WAAc5O,EAAGkrE,OAAOC,WAAa,GAC/B,IAEjB,EApDAnrE,EAAGkoE,cA0EH,SAAuBkD,GACtB,IAAI50D,EAAK,WAAaxW,EAAG8nE,UAAUlmE,GAC/BwG,OAAOijE,WAAW,sBAAsBC,QAC3CtrE,EAAGkrE,OAAS,IAAIK,GAAGC,OAAOh1D,EAAI,CAC7BjO,MAAO,OACP6iE,QAASA,EACAK,WAAY,CAAEC,IAAK,GAC5B9O,OAAQ,CACP,cAAiB2K,KAInBvnE,EAAGkrE,OAAS,IAAIK,GAAGC,OAAOh1D,EAAI,CAC7B9N,OAAQ,OACRH,MAAO,OACP6iE,QAASA,EACAK,WAAY,CAAEC,IAAK,GAC5B9O,OAAQ,CACP,cAAiB2K,IAIrB,EA/FAvnE,EAAGkrE,OACHlrE,EAAG2rE,wBAGH,SAAiC10C,GAC7B,GAAKA,EAAL,CAGA,IAAI6c,EAAQ7c,EAAKxa,SACbxS,EAAcgtB,EAAK20C,yBAAyBr7D,eAAe,YAAahR,EAAWsQ,aAAawO,kBAMpG,OAJIpU,IACA6pC,EAAQ7pC,EAAYpI,OAGjBiyC,CATG,CAUd,EAdA9zC,EAAG6rE,oBAiWH,SAA6BtvD,GACzB,OAAOzR,EAAOyL,GAAG,yBAA0B,CAAEC,GAAI+F,EAAKmV,YAAcnV,EAAK3a,IAC7E,EAEAvC,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5BhjD,EAAW,CAAC,mBAAoB,2BAA2B8C,MAAK,SAAUoD,GACtEk0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,oBACpBy2C,YAAaz2C,EAAa,2BAElC,IAEA7F,EAAG8pE,qBACH9pE,EAAGupE,qBACDvpE,EAAGkpE,QAAWlpE,EAAGmpE,iBAKfnpE,EAAGiqE,gBAAgBjqE,EAAGkpE,OAAQlpE,EAAGmpE,gBAErCnvB,EAAiBuC,sBAAsB,iBAAiB95C,MAAK,SAAUC,GACnE1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,GAQJ,CAEA,SAASopE,EAAoBxE,EAAc7nE,EAAcqL,EAAQ4rB,EAAW92B,EAAU6J,EAAWswC,EAAiBl6C,EAAS+J,EAAgBjK,EAAYJ,EAAY4P,EAAI6qC,GACnK,IAAIh6C,EAAKC,KAmHT,SAASsnE,EAAoB9kD,IACR,IAAhBA,EAAMzZ,KACThJ,EAAGwnE,SAEoB,IAAf/kD,EAAMzZ,MACdhJ,EAAGynE,YAAa,EAChBznE,EAAG0nE,WAEKjlD,EAAMzZ,IAGhB,CAEA,SAAS+iE,EAAYxvD,GACjB,GAAIvc,EAAGqgD,MAAQ,GAAK9jC,EAAK+B,KAAK1d,OAAS,EACzC,IAAK,IAAIY,EAAI,EAAGA,EAAI+a,EAAK+B,KAAK1d,OAAQY,IAAK,CAC1C,GAAwB,GAApB+a,EAAK+B,KAAK1d,OACb,OAAO,EAGR,GAAI2b,EAAK+B,KAAK9c,GAAGI,IAAM5B,EAAGqgD,MAIzB,OAAO,CAET,CAGD,OAAO,CACR,CAyBA,SAASsnB,IACJ3nE,EAAGgsE,eACNpiE,EAAei+D,UAAU7nE,EAAGgsE,aAAapqE,GAAI,GAAI5B,EAAG28C,aAExB,GAAxB38C,EAAGgsE,aAAavkE,MAAazH,EAAG+nE,WAAa/nE,EAAGgoE,WAAWC,SAC9Dr5D,YAAW,WACV5O,EAAGkoE,cAAcC,EAAanoE,EAAGgsE,aAAaxuD,SAC/C,GAAG,GAGN,CAeA,SAAS2qD,EAAa/hD,GAClB,IACIgiD,EAAQhiD,EAAIgiD,MADH,mEAGb,OAAIA,GAA4B,IAAnBA,EAAM,GAAGxnE,OACXwnE,EAAM,GAEN,OAEf,CAgKA,SAASxoB,IACL,IAAI9mC,EAAQ3J,EAAG2J,QAOf,SAAS+mC,EAAcn9C,GACnB1C,EAAG8/C,YAAc9/C,EAAGy/C,cAAgB/8C,EAASsG,KAAOtG,EAASsG,KAAK,GAC5C,MAAlBhJ,EAAG8/C,cACH9/C,EAAGqgD,MAAQrgD,EAAG8/C,YAAYl+C,GAE1Bm4C,EAAgBsC,YAAY,CACxBr1B,MAAOhnB,EAAG8/C,YAAY5sC,KACtBopC,YAAat8C,EAAG8/C,YAAY3E,eAIf,MAAjBz4C,EAASsG,KACT8P,EAAMmB,SAAQ,GAGdnB,EAAMmB,QAAQvX,GAGlB1C,EAAGisE,iBACP,CAEA,OA3BCjsE,EAAGy/C,cACN6nB,EAAatnB,mBAAmBhgD,EAAGy/C,eAAeh9C,KAAKo9C,GAEvDynB,EAAa1nB,OAAO5/C,EAAGqgD,OAAO59C,KAAKo9C,GAwB1B/mC,EAAMO,OACjB,CAxYArZ,EAAGqgD,QAAU5gD,EAAa4gD,MAC1BrgD,EAAGy/C,cAAgBhgD,EAAaggD,cAChCz/C,EAAGkpE,OAASzpE,EAAaypE,OACzBlpE,EAAGksE,iBAAmBzsE,EAAa0sE,UACnCnsE,EAAGosE,iBAAmB3sE,EAAa2sE,iBAEnCpsE,EAAG28C,YAAc,QAEjB38C,EAAGwoE,aAAc,EACjBxoE,EAAGqoE,WAAa,GAChBroE,EAAGsoE,eAAiB,GACftoE,EAAGksE,mBACPlsE,EAAGksE,iBAAmB,IAGvBlsE,EAAG2nE,OAASA,EACZ3nE,EAAGwnE,OAoKH,WACCxnE,EAAGwoE,aAAc,EACjB5+D,EAAew/D,WAAWppE,EAAGgsE,aAAapqE,GAAI,GAAI5B,EAAG28C,YACtD,EAtKA38C,EAAG0nE,QAwKH,WACC99D,EAAey/D,SAASrpE,EAAGgsE,aAAapqE,GAAI,GAAI5B,EAAG28C,YACpD,EAzKA38C,EAAGyoE,cAAe,EAElBzoE,EAAGgsE,kBAAenrE,EAClBb,EAAGspE,cAqXH,WACI,IAAI3qB,EAAS3+C,EAAGqgD,MAAQ,CAACrgD,EAAGqgD,YAASx/C,EACrCymE,EAAagC,cAActpE,EAAGsoE,eAAehE,UAAU,MAAO3lB,GAAQ,GAAOl8C,MAC7E,SAA8BC,GAC1B1C,EAAGqoE,WAAa3lE,EAASsG,KAEzBhJ,EAAGisE,kBACHjsE,EAAG2jC,WACP,GACJ,EA7XA3jC,EAAGwpE,aAsLH,SAAsBjtD,GAClB,OAAQA,EAAK9U,MACT,KAAK,EACD,OAAO8U,EAAKktD,UAEhB,KAAK,EACD,OAAOltD,EAAKiB,QAKxB,EAhMAxd,EAAGssC,kBA8TH,SAA2BjoC,EAAMkoC,GAC3BA,EAAOC,2BACL86B,EAAauC,yBAAyBxlE,EAAKzC,GAAI2qC,EAAOO,OAAOlrC,IAAIa,MAGxE,SAAyCC,GACrC6pC,EAAOC,2BAA4B,EACnCD,EAAOS,QAKP,IAHA,IAAI6T,EAAa,EACbC,EAAa,EAERt/C,EAAI,EAAGA,EAAI6C,EAAKo8C,YAAY7/C,OAAQY,IACzCq/C,GAAcx8C,EAAKo8C,YAAYj/C,GAAGwrC,MAClC8T,GAAcz8C,EAAKo8C,YAAYj/C,GAAGsrC,OAAOjrC,MAAQwC,EAAKo8C,YAAYj/C,GAAGwrC,MAGzE3oC,EAAK08C,iBAAmBD,EAAaD,CACtC,GACJ,EAhVA7gD,EAAG4/C,OAASA,EACZ5/C,EAAG2jC,UAoSH,WACI3jC,EAAG4jC,aAAc,EACjB5jC,EAAG6jC,cAAgB,CACfC,QAAQ,EACRC,MAAM,EACNC,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBkd,aAAc,WACV,MAAO,sDACX,EACAC,WAAY,CAAC,CACTC,WAAY,IACZhgD,SAAU,CACN2iC,aAAc,EACdC,eAAgB,MAI5BtkC,GAAS,WACLI,EAAG4jC,aAAc,CACrB,GACJ,EAzTA5jC,EAAGisE,gBA+LH,SAAyB1vD,GAGxB,GAFAvc,EAAGwoE,aAAc,GAEZjsD,GAAQvc,EAAGkpE,OAAQ,CAMvB,IAJA,IAAImD,GAAgB,EAChBC,GAAwB,EACxBC,IAAcvsE,EAAGkpE,OAEZ1nE,EAAI,EAAGA,EAAIxB,EAAGqoE,WAAWznE,OAAQY,IAAK,CAC9C,IAAI8kB,EAAatmB,EAAGqoE,WAAW7mE,GAAGkwB,WAC9BpL,GACCA,EAAWnlB,eAAiBnB,EAAGkpE,OAAO/nE,gBACzCmrE,EAAuB9qE,GAIrB+qE,KACGvsE,EAAGkpE,QAAUlpE,EAAGqoE,WAAW7mE,GAAGI,KACnCyqE,EAAe7qE,EAGlB,CAEI8qE,GAAwB,EAC3B/vD,EAAOvc,EAAGqoE,WAAWiE,GACXD,GAAgB,IAC1B9vD,EAAOvc,EAAGqoE,WAAWgE,GAEvB,CAEA,IAAK9vD,GAAQvc,EAAG8/C,aAAe9/C,EAAGosE,kBAE3B,IAAS5qE,EAAI,EAAGA,EAAIxB,EAAGqoE,WAAWznE,OAAQY,IACtC,GAAqC,GAAjCuqE,EAAY/rE,EAAGqoE,WAAW7mE,IAAa,CACvCxB,EAAGgsE,aAAehsE,EAAGqoE,WAAW7mE,GAChC,KACJ,OAGC+a,IAERvc,EAAGgsE,aAAezvD,GAGnB,GAAIvc,EAAGgsE,cAAwC,GAAxBhsE,EAAGgsE,aAAavkE,KAAW,CAC9CzH,EAAGgoE,WAAa,CACZqC,OAAQ,EACRpC,QAAS,EACTqC,MAAO,GAGX,IACIlC,EAAQpoE,EAAGgsE,aAAaxuD,QAAQ4qD,MADvB,mEAGTpoE,EAAG+nE,UADHK,EACepoE,EAAGgoE,WAAWC,QAGdjoE,EAAGgoE,WAAWqC,MAErC,CAEA1C,GAEJ,EA9PA3nE,EAAGupE,kBA0RH,WACIjC,EAAaiC,oBAAoB9mE,MACjC,SAAkCC,GAC9B1C,EAAGsoE,eAAiB5lE,EAASsG,KAC7BhJ,EAAGspE,eACP,GACJ,EA/RAtpE,EAAGyqE,mBAiKH,SAA4BrkD,GAC3B,MAAO,iCAAmC+hD,EAAa/hD,GAAO,QAC/D,EAlKApmB,EAAG0qE,0BAoHH,SAAmCnuD,GAElC,GAAIA,EAAK9U,MAAQzH,EAAGgsE,aAAavkE,KAChC,OAAO,EAIR,GAAI8U,EAAK3a,IAAM5B,EAAGgsE,aAAapqE,GAC9B,OAAO,EAIR,GAAI5B,EAAGqgD,MAAQ,GAAK9jC,EAAK+B,KAAK1d,OAAS,EACtC,IAAK,IAAIY,EAAI,EAAGA,EAAI+a,EAAK+B,KAAK1d,OAAQY,IACrC,GAAI+a,EAAK+B,KAAK9c,GAAGI,IAAM5B,EAAGqgD,MACzB,OAAO,EAKV,OAAO,CACR,EAxIArgD,EAAG+rE,YAAcA,EACjB/rE,EAAGwsE,0BA4PH,SAAmCjwD,EAAMwe,GACxC,IAAImuC,EAAS3sD,EAAKmV,WAQlB,OAPKw3C,IACJA,EAAS3sD,EAAK3a,IAGVm5B,IACJA,EAAQ,gCAEFjwB,EAAOyL,GAAGwkB,EAAO,CAAE0kB,cAAez/C,EAAGy/C,cAAeypB,OAAQA,GACpE,EArQAlpE,EAAG2qE,WAqBH,WACC3qE,EAAGyoE,cAAe,EACNppE,EAAQwrB,QAAQ,iBAAmB7qB,EAAGgsE,aAAapqE,IACzD,GAAGgpE,OACV,EAxBA5qE,EAAG6qE,UAmCH,WACC7qE,EAAGyoE,cAAe,EAClBzoE,EAAGynE,YAAa,EAChB,IAAIxpB,EAAQ5+C,EAAQwrB,QAAQ,iBAAmB7qB,EAAGgsE,aAAapqE,IAC3D5B,EAAGynE,WACFxpB,EAAMr9C,SACTq9C,EAAM,GAAG2sB,QACT3sB,EAAM,GAAG6sB,YAAc,IACvB7sB,EAAM,GAAG8sB,OACT/qE,EAAGgrE,aAAc,GAId/sB,EAAMr9C,SACTq9C,EAAM,GAAG8sB,OACT/qE,EAAGgrE,aAAc,EAGpB,EApDAhrE,EAAGirE,YAyBH,WACCjrE,EAAGyoE,cAAe,EAClBzoE,EAAGynE,YAAa,EACZznE,EAAGkrE,QAENt8D,YADS,WAAc5O,EAAGkrE,OAAOC,WAAa,GAC/B,IAEjB,EA/BAnrE,EAAGkoE,cAqDH,SAAuBkD,GACtB,IAAI50D,EAAK,WAAaxW,EAAGgsE,aAAapqE,GAClCwG,OAAOijE,WAAW,sBAAsBC,QAC3CtrE,EAAGkrE,OAAS,IAAIK,GAAGC,OAAOh1D,EAAI,CAC7BjO,MAAO,OACP6iE,QAASA,EACAK,WAAY,CAAEC,IAAK,GAC5B9O,OAAQ,CACP,cAAiB2K,KAInBvnE,EAAGkrE,OAAS,IAAIK,GAAGC,OAAOh1D,EAAI,CAC7B9N,OAAQ,OACRH,MAAO,OACP6iE,QAASA,EACAK,WAAY,CAAEC,IAAK,GAC5B9O,OAAQ,CACP,cAAiB2K,IAIrB,EA1EAvnE,EAAGkrE,OACHlrE,EAAG2rE,wBAEH,SAAiC10C,GAC7B,GAAKA,EAAKxa,SAAV,CAGA,IAAIq3B,EAAQ7c,EAAKxa,SACbxS,EAAcgtB,EAAK20C,yBAAyBr7D,eAAe,YAAahR,EAAWsQ,aAAawO,kBAMpG,OAJIpU,IACA6pC,EAAQ7pC,EAAYpI,OAGjBiyC,CATG,CAUd,EAoPA9zC,EAAGysE,gBAEH,SAAyBlwD,EAAMwe,GAC3B,IAAImuC,EAAS3sD,EAAKmV,WAQlB,OAPKw3C,IACDA,EAAS3sD,EAAK3a,IAGbm5B,IACDA,EAAQ,gCAELjwB,EAAO3F,KAAK41B,EAAO,CAAE0kB,cAAez/C,EAAGy/C,cAAeypB,OAAQA,GACzE,EAkGA7pE,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5BhjD,EAAW,CAAC,mBAAoB,2BAA2B8C,MAAK,SAAUoD,GACtEk0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,oBACpBy2C,YAAaz2C,EAAa,2BAElC,IAEA+5C,IAASn9C,MAAK,SAAUC,GACpB1C,EAAGupE,mBACP,IAEAvvB,EAAiBuC,sBAAsB,iBAAiB95C,MAAK,SAAUC,GACnE1C,EAAGw8C,oBAAsB95C,CAC7B,GACJ,GACJ,CAj2BArD,EAAQ4I,OAAO,iBAAiBC,WAAW,gBAAiBm/D,GAC5DhoE,EAAQ4I,OAAO,iBAAiBC,WAAW,oBAAqB4jE,GAEhEzE,EAAgBl/D,QAAU,CAAC,aAAc,wBAAyB,eAAgB,SAAU,YAAa,WAAY,YAAa,kBAC9H,UAAW,iBAAkB,KAAM,aAAc,mBAAoB,sBAAuB,SAAU,QAC1G2jE,EAAoB3jE,QAAU,CAAC,wBAAyB,eAAgB,SAAU,YAAa,WAAY,YAAa,kBAAmB,UAAW,iBAAkB,aAAc,aAAc,KAAM,mBA61B7M,CAn2BD,CAm2BGC,OAAO/I,Q,aCn2BV,SAAUA,GAKN,SAASqtE,IACL,IAAIloD,EAAY,CACZC,SAAU,IACVoB,MAAO,CACHvkB,SAAU,MAEduV,YAAa,SAASgU,EAASC,GAC3B,OAAIA,EAAKC,YACE5d,aAAe2d,EAAKC,YAEpB5d,aAAe,8CAE9B,EACAjF,WAAYykE,EACZ71D,aAAc,KACdC,kBAAkB,GAKtB,SAAS41D,EAA6BptE,EAAY+nE,EAAc1nE,EAAUE,GACtE,IAAIE,EAAKC,KACTD,EAAG4sE,OAAS,GAEZ5sE,EAAGoL,KAEH,WAWI,SAASyhE,EAAiBnqE,GACtB1C,EAAG4sE,OAASlqE,EAASsG,IACzB,EAZIhJ,EAAGsB,SAAS0hD,QAAUhjD,EAAGsB,SAAS2hD,iBAAgBjjD,EAAGsB,SAAS0hD,OAAShjD,EAAGsB,SAAS2hD,eAAephD,QAClG7B,EAAGsB,SAASmf,OAASzgB,EAAGsB,SAAS4hD,gBAAeljD,EAAGsB,SAASmf,MAAQzgB,EAAGsB,SAAS4hD,cAAcrhD,OAEzE,UAAtB7B,EAAGsB,SAAS0hD,OACXskB,EAAagC,cAAc,CAAC,GAAI,KAAM,KAAM,MAAM7mE,KAAKoqE,GAE7B,WAAtB7sE,EAAGsB,SAAS0hD,QAChBskB,EAAagC,cAAc,CAAC,GAAI/pE,EAAWgkD,eAAgB,KAAM,MAAM,GAAM9gD,KAAKoqE,EAM1F,EAEA7sE,EAAGmH,QAAUnH,EAAGoL,KAEc,IAA1B/L,EAAQ4kD,QAAQC,OAAe7kD,EAAQ4kD,QAAQE,MAAQ,GACvDnkD,EAAGmH,SAEX,CAEA,OA/BAwlE,EAA6BxkE,QAAU,CAAC,aAAc,wBAAyB,WAAY,QA+BpFqc,CACX,CAtDAnlB,EAAQ4I,OAAO,iBAAiBuc,UAAU,qBAAsBkoD,GAEhEA,EAA4BvkE,QAAU,EAqDzC,CAxDD,CAwDGC,OAAO/I,Q,aCxDV,SAAWA,GAKP,SAASioE,EAAavjD,EAAOxkB,GAEzBU,KAAKqpE,cAAgB,SAAU6C,EAAWxtB,EAAQmuB,EAAiBC,EAAclgB,GAC7E,OAAO9oC,EAAMQ,KAAKpX,aAAe,6CAC7B,CAAEuP,UAAWyvD,EAAW9oB,OAAQ1E,EAAQquB,gBAAiBF,EAAiBG,aAAcF,EAAcG,aAAcrgB,IAAgB,GAC5I,EAEA5sD,KAAKw7C,kBAAoB,SAAUr/B,GAC/B,OAAO2H,EAAMI,IAAIhX,aAAe,uCAAyCwuB,EAAE2J,MAAM,CAAElpB,IAAKA,IAC5F,EAEAnc,KAAK8pE,mBAAqB,SAAUoD,GAChC,OAAOppD,EAAMI,IAAIhX,aAAe,yCAA2CwuB,EAAE2J,MAAM,CAAErO,KAAM,YAAak2C,KAAMA,IAClH,EAEAltE,KAAKspE,kBAAoB,WACrB,OAAOxlD,EAAMI,IAAIhX,aAAe,sCACpC,EAEAlN,KAAK2/C,OAAS,SAAUppC,GACpB,OAAOuN,EAAMI,IAAIhX,aAAe,0BAA4BwuB,EAAE2J,MAAM,CAAEqZ,OAAQnoC,IAClF,EACAvW,KAAK+/C,mBAAqB,SAAUiF,GACnC,OAAOlhC,EAAMI,IAAIhX,aAAe,qCAAuCwuB,EAAE2J,MAAM,CAAEma,cAAewF,IACjG,EAEAhlD,KAAK4pE,yBAA2B,SAAU3pB,EAASqE,GAC/C,OAAOxgC,EAAMQ,KAAKpX,aAAe,6CAA8C,CAAEolB,SAAU2tB,EAASqE,SAAUA,GAAY,CAAEF,kBAAkB,GAClJ,CACJ,CACDj8C,OAAO/I,QAlCE4I,OAAO,iBAAiByd,QAAQ,wBAAyB4hD,GAEjEA,EAAan/D,QAAU,CAAC,QAAS,aAgCpC,CAnCD,E,aCAA,SAAU9I,GAST,SAAS+tE,EAAmBC,EAAiB5tE,EAAcosB,EAAWlsB,EAAYo6C,GAE/E,CAEH,SAASuzB,EAAuBD,EAAiB5tE,EAAcE,EAAYo6C,GACvE,IAAI/5C,EAAKC,KACTD,EAAGutE,QAAU,CAAC,EACdvtE,EAAGwtE,YAAc/tE,EAAa+W,GAC9BxW,EAAGytE,WAcH,SAAoBC,GACtBL,EAAgBI,WAAWC,GAAWjrE,MAEnC,SAA4BC,GAE1B,IADA,IAAIirE,EAAUjrE,EAASsG,KACdxH,EAAI,EAAGA,EAAImsE,EAAQC,MAAMhtE,OAAQY,IACzCmsE,EAAQC,MAAMpsE,GAAGK,MAAQ8hB,KAAKC,MAAM+pD,EAAQC,MAAMpsE,GAAGK,OAEvD7B,EAAGutE,QAAUI,CACd,GACD,EAvBA3tE,EAAG6tE,WAEH,SAAoBp5B,GACtB,IAAIruB,EAAMquB,EAAK5yC,MAAMkqC,IAAIlqC,MAOtB,OANI4yC,EAAK5yC,MAAMisE,YAAqB,MAAP1nD,GAAeA,EAAItlB,QAAQ,eAAiB,IAC3EslB,EAAMA,EAAIhgB,QAAQ,aAAcquC,EAAK5yC,MAAMisE,WAAWjsE,MAAMD,KAEzD6yC,EAAK5yC,MAAMisE,YAAqB,MAAP1nD,GAAeA,EAAItlB,QAAQ,iBAAmB,IACvEslB,EAAMA,EAAIhgB,QAAQ,eAAgBquC,EAAK5yC,MAAMisE,WAAWjsE,MAAM6vB,aAExDtL,CACR,EAcA/mB,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5B3iD,EAAGytE,WAAWztE,EAAGwtE,WAEjB7tE,EAAW,CAAC,sBAAuB,8BAA8B8C,MAAK,SAAUoD,GAC5Ek0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,uBACpBy2C,YAAaz2C,EAAa,8BAElC,GACJ,GACD,CAEH,SAASkoE,EAAwBV,EAAiB5tE,EAAcE,EAAYo6C,GACxE,IAAI/5C,EAAKC,KACTD,EAAGioB,MAAQ,GACXjoB,EAAGwtE,YAAc/tE,EAAa+W,GAC9BxW,EAAGguE,SAGH,WACFX,EAAgBW,SAAShuE,EAAGwtE,WAAW/qE,MAAK,SAAUC,GAClD1C,EAAGioB,MAAQvlB,EAASsG,IACrB,GACD,EANAhJ,EAAG0hB,KAQH,WACCtZ,OAAOuZ,QAAQC,MAChB,EAEAviB,EAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC5B3iD,EAAGguE,WAEHruE,EAAW,CAAC,sBAAuB,8BAA8B8C,MAAK,SAAUoD,GAC5Ek0C,EAAgBsC,YAAY,CACxBr1B,MAAOnhB,EAAa,uBACpBy2C,YAAaz2C,EAAa,8BAElC,GACJ,GACD,CAjFHxG,EAAQ4I,OAAO,iBAAiBC,WAAW,mBAAoBklE,GAC/D/tE,EAAQ4I,OAAO,iBAAiBC,WAAW,wBAAyBolE,GACpEjuE,EAAQ4I,OAAO,iBAAiBC,WAAW,yBAA0B6lE,GAErEX,EAAmBjlE,QAAU,CAAC,2BAA4B,eAAgB,YAAa,aAAc,mBACrGmlE,EAAuBnlE,QAAU,CAAC,2BAA4B,eAAgB,aAAc,mBAC5F4lE,EAAwB5lE,QAAU,CAAC,2BAA4B,eAAgB,aAAc,kBA4E7F,CAnFD,CAmFGC,OAAO/I,Q,YCnFT,WAWA,SAAS4uE,EAAoBpiD,EAAWrT,GACvC,IAAIgM,EAAY,CACfC,SAAU,IACVypD,YAAY,EACZroD,MAAO,CACN8nD,QAAS,KAEV92D,YAAa2B,EAAgBsD,QAAQ,sBAAuB,8DAC5DyP,KAUD,SAAgC1F,EAAOgF,GACvC,EAVC3iB,WAAYimE,EACZr3D,aAAc,KACdC,kBAAkB,GAKnB,OAFAo3D,EAAqBhmE,QAAU,CAAC,UAEzBqc,EAKP,SAAS2pD,EAAqB3uE,GAC7B,IAAIQ,EAAKC,KACTD,EAAGouE,YAIH,WACC,GAAIpuE,EAAGquE,SACN,OAAOruE,EAAGquE,SAEX,GAAkBxtE,MAAdb,EAAG2tE,SAA4C9sE,MAApBb,EAAG2tE,QAAQC,MACzC,IAAK,IAAIpsE,EAAI,EAAGA,EAAIxB,EAAG2tE,QAAQC,MAAMhtE,OAAQY,IAC5C,KAAMxB,EAAG2tE,QAAQC,MAAMpsE,GAAG8sE,mBAAqB,IAAK,CACnD75B,KAAOz0C,EAAG2tE,QAAQC,MAAMpsE,GACxBxB,EAAGquE,SAAW55B,KACd,KACD,CAGF,OAAOz0C,EAAGquE,QACX,EAjBAruE,EAAGuuE,mBAmBH,WACCvuE,EAAGwuE,IAAM5tD,SACT5gB,EAAGy0D,QAAU7zC,OAAO5gB,EAAG2tE,QAAQlZ,SAC/Bz0D,EAAGyuE,SAAWzuE,EAAGy0D,QAAQrnC,KAAKptB,EAAGwuE,IAAK,QAElCxuE,EAAGyuE,UAAY,IAClBzuE,EAAGyuE,SAAW,GAEfzuE,EAAG0uE,UAAY1uE,EAAGy0D,QAAQrnC,KAAKptB,EAAGwuE,IAAIhxC,IAAIx9B,EAAGyuE,SAAU,QAAS,SAE5DzuE,EAAG0uE,WAAa,IACnB1uE,EAAG0uE,UAAY,GAEhB1uE,EAAG2uE,YAAc3uE,EAAGy0D,QAAQrnC,KAAKptB,EAAGwuE,IAAIhxC,IAAIx9B,EAAG0uE,UAAW,SAAU,WAEhE1uE,EAAG2uE,aAAe,IACrB3uE,EAAG2uE,YAAc,EACnB,EAnCA3uE,EAAG4uE,0BAqCH,WACC5uE,EAAG6uE,oBAAsB,EACzB,IAAIC,EAAkB,EAClBC,EAAgB,EACpB,GAAwBluE,MAApBb,EAAG2tE,QAAQC,MAAoB,CAClC,IAAK,IAAIpsE,EAAI,EAAGA,EAAIxB,EAAG2tE,QAAQC,MAAMhtE,OAAQY,IAC5CstE,GAAmB9uE,EAAG2tE,QAAQC,MAAMpsE,GAAG8sE,mBACvCS,IAGGD,EAAkB,GAAKC,EAAgB,IAC1C/uE,EAAG6uE,oBAAsBC,EAAkBC,GAE5C/uE,EAAG6uE,sBAAwB7uE,EAAG6uE,mBAC/B,CACD,EAEAhjD,EAAU7rB,EAAGuuE,mBAAoB,KAEjC/uE,EAAO4S,QAAO,WAAc,OAAOpS,EAAG2tE,OAAS,IAAG,WACjD3tE,EAAG4uE,4BACH5uE,EAAGuuE,oBACJ,GACD,CACD,CAEA,SAASS,EAAwBv4C,GAUhC,MATgB,CACfhS,SAAU,IACVoB,MAAO,CACN4uB,KAAM,IACNk5B,QAAS,KAEVpiD,KAKD,SAAsB1F,EAAOgF,GAC5BhF,EAAMopD,YAAc,GAEpBppD,EAAMqpD,SACG,CACCp7B,MAAOjuB,EAAM4uB,KAAK65B,mBAClB5sE,QAAS,CACjBytE,QAAStpD,EAAM8nD,QAAQ5qE,SAASqsE,eAChCC,QAAS,OACAC,WAAY,UACZC,aAAc,IACdC,SAAU,IACVC,UAAU,EACVlnE,MAAO,IACPmnE,cAAc,IAIjB7pD,EAAM4uB,KAAKk7B,MAEjB9pD,EAAMopD,YAAc9hE,aAAe,kFAIrC9N,QAAQwrB,QAAQA,GAASotB,OAAOxhB,EAAS,sBAAwB5Q,EAAMopD,YAAc,aAArDx4C,CAAmE5Q,GACpG,EACD,CAmBA,SAAS+pD,EAAqBp3D,GAY7B,MAXgB,CACfiM,SAAU,IACVoB,MAAO,CAEP,EACAhP,YAAa2B,EAAgBsD,QAAQ,wBAAyB,kEAC9D5T,WAAYsQ,EAAgBiuB,cAAc,wBAAyB,wBACnE3vB,aAAc,KACdC,kBAAkB,EAIpB,CAIA,SAAS84D,EAAsBxC,EAAiB5tE,EAAcosB,EAAWlsB,EAAYo6C,GACpF,IAAI/5C,EAAKC,KACVD,EAAG8vE,SAAW,GAEd9vE,EAAGq+C,QAMH,SAAkB7zB,GACjB,OAAO5J,OAAO4J,GAAM1J,OAAO,aAC5B,EAPA9gB,EAAG+vE,YASH,WACC1C,EAAgB2C,qBAAqBvtE,MAAK,SAAUC,GACnD1C,EAAG8vE,SAAWptE,EAASsG,MAAQ,GAC/B,IAAK,IAAIxH,EAAI,EAAGA,EAAIxB,EAAG8vE,SAASlvE,OAAQY,IACvCxB,EAAG4uE,0BAA0B5uE,EAAG8vE,SAAStuE,IACzCxB,EAAGuuE,mBAAmBvuE,EAAG8vE,SAAStuE,IAEnCQ,QAAQC,IAAIjC,EAAG8vE,SAChB,GACD,EAjBA9vE,EAAGuuE,mBA0CF,SAA4BZ,GAC3B,IAAIjsB,EAAM9gC,SACNqvD,EAAUrvD,OAAO+sD,EAAQlZ,SAC7BkZ,EAAQc,SAAWwB,EAAQ7iD,KAAKs0B,EAAK,QAEjCisB,EAAQc,UAAY,IACvBd,EAAQc,SAAW,GAEpBd,EAAQe,UAAYuB,EAAQ7iD,KAAKs0B,EAAIlkB,IAAImwC,EAAQc,SAAU,QAAS,SAEhEd,EAAQe,WAAa,IACxBf,EAAQe,UAAY,GAErBf,EAAQgB,YAAcsB,EAAQ7iD,KAAKs0B,EAAIlkB,IAAImwC,EAAQe,UAAW,SAAU,WAEpEf,EAAQgB,aAAe,IAC1BhB,EAAQgB,YAAc,EACxB,EA1DD3uE,EAAG4uE,0BAwBH,SAAmCjB,GAClCA,EAAQkB,oBAAsB,EAC9B,IAAIC,EAAkB,EAClBC,EAAgB,EACpB,GAAqBluE,MAAjB8sE,EAAQC,MAAoB,CAC/B,IAAK,IAAIpsE,EAAI,EAAGA,EAAImsE,EAAQC,MAAMhtE,OAAQY,IACzCstE,GAAmBnB,EAAQC,MAAMpsE,GAAG8sE,mBACpCS,IAGGD,EAAkB,GAAKC,EAAgB,IAC1CpB,EAAQkB,oBAAsBC,EAAkBC,GAEhDpB,EAAQkB,sBAAwBlB,EAAQkB,mBACzC,CACD,EAtCD7uE,EAAGkwE,iCAiBH,WACC,IAAK,IAAI1uE,EAAI,EAAGA,EAAIxB,EAAG8vE,SAASlvE,OAAQY,IACvCxB,EAAGuuE,mBAAmBvuE,EAAG8vE,SAAStuE,GAEpC,EAsCCqqB,EAAU7rB,EAAGkwE,iCAAkC,KAE/C7wE,QAAQwrB,QAAQhc,UAAU8zC,OAAM,WAC/B3iD,EAAG+vE,cAEHpwE,EAAW,CAAC,sBAAuB,8BAA8B8C,MAAK,SAAUoD,GAC/Ek0C,EAAgBsC,YAAY,CAC3Br1B,MAAOnhB,EAAa,uBACpBy2C,YAAaz2C,EAAa,8BAE5B,GACD,GACD,CA3PAxG,QAAQ4I,OAAO,iBAAiBC,WAAW,uBAAwB2nE,GACnExwE,QAAQ4I,OAAO,iBAAiBuc,UAAU,aAAcypD,GACxD5uE,QAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkBwqD,GAC5D3vE,QAAQ4I,OAAO,iBAAiBuc,UAAU,eAuI1C,WAUC,MATgB,CACfC,SAAU,IACVoB,MAAO,CACN7V,KAAM,KAEP6G,YAAa1J,aAAe,iEAC5Boe,KAKD,SAAsB1F,GAEtB,EACD,IArJAxmB,QAAQ4I,OAAO,iBAAiBuc,UAAU,iBAAkBorD,GAE5D3B,EAAoB9lE,QAAU,CAAC,YAAa,WAC5C6mE,EAAwB7mE,QAAU,CAAC,YACnCynE,EAAqBznE,QAAU,CAAC,WAkKhC0nE,EAAsB1nE,QAAU,CAAC,2BAA4B,eAAgB,YAAa,aAAc,kBAkFxG,CA7PA,E,aCAD,SAAW9I,GAKP,SAASguE,EAAgBtpD,GACxB9jB,KAAK+vE,mBAAqB,WACzB,OAAOjsD,EAAMI,IAAIhX,aAAe,sCACjC,EAEAlN,KAAKwtE,WAAa,SAAUj3D,GAC3B,OAAOuN,EAAMI,IAAIhX,aAAe,+BAAiCwuB,EAAE2J,MAAM,CAAC9uB,GAAIA,IAC/E,EAEAvW,KAAK+tE,SAAW,SAAUx3D,GACzB,OAAOuN,EAAMI,IAAIhX,aAAe,mDAAoD,CACtFiX,OAAQ,CACPspD,UAAWl3D,IAGX,CACD,CACDpO,OAAO/I,QArBD4I,OAAO,iBAAiByd,QAAQ,2BAA4B2nD,GAEjEA,EAAgBllE,QAAU,CAAC,QAmB9B,CAtBD,E,aCAA,SAAW9I,GAKP,SAAS4oD,EAAgBxoD,EAAcmK,EAAgBkB,GACzD,IAAI9K,EAAKC,KACTD,EAAGqnC,aAAe,aAClBrnC,EAAGsnC,WAAa,EAChBtnC,EAAGmlD,SAAW,GACdnlD,EAAGmoB,UAAY,EACfnoB,EAAGmwE,YAAc,EACjBnwE,EAAGsoC,aAAe,EAElBtoC,EAAGowE,cAAgB,EAEnBpwE,EAAGqwE,UAAY,CAAkC,CAAEzuE,GAAI,EAAGsR,KAAM,YAAc,CAAEtR,GAAI,EAAGsR,KAAM,YAC7FlT,EAAGswE,aAAe,CAAEnoC,MAAO,EAAGC,wBAAyB,iBAEjDpoC,EAAGuwE,iBAAsC1vE,IAAvBpB,EAAaqoC,MAAsB0oC,mBAAmB/wE,EAAaqoC,OAAS,GAEpG9nC,EAAGy1B,OAqCH,WACC,GAAKz1B,EAAGuwE,YAAR,CAIKvwE,EAAGkoC,kBACJloC,EAAGkoC,gBAAkB,CACZ,CAAEC,MAAO,EAAGE,UAAWroC,EAAGsoC,cAC1B,CAAEH,MAAO,EAAGE,UAAWroC,EAAGsoC,cAC1B,CAAEH,MAAO,EAAGE,UAAWroC,EAAGsoC,cACnC,CAAEH,MAAO,EAAGE,UAAWroC,EAAGsoC,cAC7B,CAAEH,MAAO,EAAGE,UAAWroC,EAAGsoC,cAC1B,CAAEH,MAAO,EAAGE,UAAWroC,EAAGsoC,gBAG3BtoC,EAAGmoB,UAAY,EACf,IAAIsoD,GAAWzwE,EAAGmoB,UAAY,GAAKnoB,EAAGmlD,SAEtCv7C,EAAe6rB,OAAOz1B,EAAGuwE,YAAaE,EAASzwE,EAAGqnC,aAAcrnC,EAAGsnC,WAAYtnC,EAAG0oC,UAAW1oC,EAAGkoC,gBAAiBloC,EAAG0wE,QAAQjuE,MAE5H,SAAwBC,GACvB,IAAK1C,EAAG2wE,cAAe,CACtB3wE,EAAG2wE,cAAgBjuE,EAASsG,KAAK4nE,gBACjC,IAAK,IAAIpvE,EAAI,EAAGA,EAAIxB,EAAG2wE,cAAc/vE,OAAQY,IAC5CxB,EAAG2wE,cAAcnvE,GAAG6mC,UAAYroC,EAAGsoC,YAGrC,CACAtoC,EAAG2oC,YAAcjmC,EAASsG,KAAK2/B,YAC/B3oC,EAAG6wE,cAAgB7wE,EAAGuwE,YACtBvwE,EAAGmwE,YAAcztE,EAASsG,KAAKq/B,UAI/B,SAAuBI,GACtB,GAAKA,EAGL,IAAK,IAAIjnC,EAAI,EAAGA,EAAIinC,EAAQ7nC,OAAQY,IACnCinC,EAAQjnC,GAAGsvE,SAAW9wE,EAAG+wE,YAAYtoC,EAAQjnC,GAE/C,CATAwvE,CAAchxE,EAAG2oC,YAUlB,GAvCA,CAwCD,EA/EA3oC,EAAGgpC,WAkFH,SAAoB3kC,GACnBuF,EAAeq/B,UAAU5kC,EAC1B,EAnFArE,EAAGixE,cAqFH,SAAuB5sE,GACtB,OAAOyG,EAAO3F,KAAKd,EAAKq2B,MAAO/W,KAAKC,MAAMvf,EAAK0lC,iBAChD,EAtFA/pC,EAAGkxE,WAmBH,SAAoBC,GACG,IAAlBA,EAAOC,SACVpxE,EAAGy1B,QAEL,EAtBAz1B,EAAGqxE,YAwGH,SAAqBphE,GACbjQ,EAAGowE,eACHpwE,EAAGowE,eAAiBngE,EAAQjQ,EAAGowE,mBAAgBvvE,EAG/Cb,EAAGowE,cAAgBngE,CAE3B,EA7GAjQ,EAAGsxE,eAgGH,SAAwBjtE,GAGvB,OADcA,EAAKktE,aACD,EACnB,EAnGAvxE,EAAG+wE,YAoFH,SAAqB1sE,GACX,IAAI+hB,EAAMorD,UAAU1mE,EAAO3F,KAAKd,EAAKq2B,MAAO/W,KAAKC,MAAMvf,EAAK0lC,iBAAkB,CAAEoC,UAAU,KAOnG,OANyB,GAArB/lB,EAAItlB,QAAQ,QACfslB,EAAMA,EAAIqB,UAAU,IAEY,GAApBrB,EAAItlB,QAAQ,OAA2C,GAA9BslB,EAAItlB,QAAQqM,gBACrCiZ,EAAMA,EAAIhgB,QAAQ,IAAK+G,eAE7BiZ,CACR,EA5FApmB,EAAGyxE,aA6GH,SAAsBriD,GACrB,OAAIpvB,EAAG2oC,YAAYr4B,gBAAgB,QAAS8e,EAAS+Y,OAAOvnC,OAAS,IAC1DZ,EAAGowE,cACqB,GAApBpwE,EAAGowE,eAAsBpwE,EAAGowE,eAAiBhhD,EAAS+Y,OAE7B,GAApBnoC,EAAGowE,eAKPpwE,EAAGowE,oBAAP,EAOb,EA7HApwE,EAAG0xE,cAuBH,SAAuB9vE,GACnB5B,EAAG0wE,OAAS9uE,EACZ5B,EAAGy1B,QACP,EAxBMz1B,EAAGq+C,QAOT,SAAiB7zB,GACb,OAAO5J,OAAO4J,GAAM1J,OAAO,aAC/B,EARM9gB,EAAG2xE,aAEH,SAAsBnnD,GAClB,OAAQ5J,OAAO4J,GAAMonD,eAAe,aACxC,EA8HN3xE,KAAKkH,QANL,WACKnH,EAAGuwE,aACNvwE,EAAGy1B,QAEL,CAGD,CAEErtB,OAAO/I,QArKD4I,OAAO,iBAAiBC,WAAW,iBAAkB+/C,GAE1DA,EAAgB9/C,QAAU,CAAC,eAAgB,iBAAkB,SAmKhE,CAtKD,E,aCAA,SAAU9I,GASN,SAASwyE,EAAwB/mE,EAAQrL,EAAcqyE,EAAkBjyE,GACrE,IAAIG,EAAKC,KACTD,EAAG+xE,mBAAqBtyE,EAAauyE,iBACrChyE,EAAGiyE,cAAgBxyE,EAAa6mB,WAChCtmB,EAAGkyE,YAAc,GAEjBlyE,EAAGmyE,cAOH,SAAuBC,GACnB,IAAIr3C,EAAQ,6BACR/6B,EAAG+xE,mBAAqBK,EAAUL,mBAClCh3C,EAAQ,qCAEZjwB,EAAOyL,GAAGwkB,EAAO,CAAEvkB,GAAI47D,EAAU1gD,YAAc0gD,EAAUxwE,GAAIowE,iBAAkBI,EAAUL,kBAC7F,EAZA/xE,EAAGqyE,cAEH,SAAuBD,GACnBtnE,EAAOyL,GAAG,kCAAmC,CAACy7D,iBAAkBI,EAAUL,iBAAkBz0D,KAAM80D,EAAUl/D,MAChH,EA2BAlT,EAAGmH,QALH,WAXI2qE,EAAiBQ,uCAAuC7vE,MAExD,SAA+BC,GACvB1C,EAAG+xE,iBACH/xE,EAAGkyE,YAAcryE,EAAQ,SAARA,CAAkB6C,EAASsG,KAAM,CAAE+oE,iBAAkB/xE,EAAG+xE,mBAEzE/xE,EAAGkyE,YAAcxvE,EAASsG,IAElC,IAKA8oE,EAAiBS,iBACrB,CAGJ,CAEA,SAASC,EAAwB/yE,EAAcuQ,EAAMnQ,EAASiyE,EAAkBtyE,EAAQ8I,EAAS6G,GAC7F,IAAInP,EAAKC,OACHR,EAAa+W,GAAK,EACpBxW,EAAGyyE,cAAgBhzE,EAAa+W,GAEhCxW,EAAG0yE,oBAAsBjzE,EAAa+W,GAE1CxW,EAAG2yE,aAA2C,IAA7BlzE,EAAamzE,YAC9B5yE,EAAGyyE,cAAgBhzE,EAAa+W,GAAK,IAAM/W,EAAa+W,GAAK,EAC7DxW,EAAGgyE,mBAAqBvyE,EAAauyE,iBACrChyE,EAAGgpB,YAAchZ,EAAKghB,kBAAkBhkB,MACxChN,EAAG6yE,yBAA0B,EAE7B7yE,EAAG8yE,UAAW,EACd9yE,EAAG+yE,WAAY,EAEf/yE,EAAGgzE,aAUH,WACI,IAAI5sD,EAAM,gCAAkCpmB,EAAGyyE,YAAc,iBAAmBtlE,aAAe,gBAAkBnN,EAAGgpB,YAAc,SAAWoF,YAAY3G,UAAU,EAAG,GAKtK,OAJIznB,EAAG6yE,0BACHzsD,EAAMA,EAAM,aAAe6sD,aAGxBpzE,EAAQ,WAARA,CAAoBumB,EAC/B,EAfA,IAAM8sD,EAAsB,SAACzwD,GACzBzgB,QAAQC,IAAI,mBAAoBwgB,GAC5BA,EAAM0wD,SAAW7qE,EAAQpD,SAASiuE,QAAyB,aAAf1wD,EAAMzZ,OAClDhJ,EAAG+yE,WAAY,EACfvzE,EAAOi1B,UAEf,EAqCAz0B,EAAGmH,QAzBH,WAEImB,EAAQ4tB,iBAAiB,UAAWg9C,GAEpC,IAAIlhB,EAAQ,CAAC8f,EAAiBS,mBAC1BvyE,EAAG0yE,qBACH1gB,EAAMviD,KAAKqiE,EAAiBsB,2BAA2BpzE,EAAG0yE,sBAG9DvjE,EAAG6B,IAAIghD,GAAOvvD,MAEd,SAAkBE,GACd3C,EAAG6yE,wBAA0BlwE,EAAO,GAChC3C,EAAG0yE,sBACH1yE,EAAGyyE,cAAgB9vE,EAAO,GAAGqG,MAEjChJ,EAAG8yE,UAAW,CAClB,GAMJ,EAIAtzE,EAAOuI,IAAI,YAAY,WACnBO,EAAQa,YAAY,cAAeb,EAAQpD,SAASiuE,QACpD7qE,EAAQ+qE,oBAAoB,UAAWH,EAC3C,GACJ,CAEA,SAASI,EAA6B7zE,EAAcqyE,GAChD,IAAI9xE,EAAKC,KACTD,EAAGgyE,mBAAqBvyE,EAAauyE,iBACrChyE,EAAGuzE,cAAgB9zE,EAAa6d,KAChCtd,EAAGwzE,UAAY,GAEfxzE,EAAGyzE,aAOH,WACI3B,EAAiB2B,aAAazzE,EAAGgyE,iBAAkB,IAAIvvE,MAEvD,SAA6BC,GACzB1C,EAAGwzE,UAAY9wE,EAASsG,KAAK0qE,UACjC,GACJ,EAZA1zE,EAAG2zE,OAEH,WACIvrE,OAAOuZ,QAAQC,MACnB,EAeA5hB,EAAGmH,QAJH,WACInH,EAAGyzE,cACP,CAGJ,CAjJAp0E,EAAQ4I,OAAO,iBAAiBC,WAAW,yBAA0B2pE,GACrExyE,EAAQ4I,OAAO,iBAAiBC,WAAW,yBAA0BsqE,GACrEnzE,EAAQ4I,OAAO,iBAAiBC,WAAW,8BAA+BorE,GAE1EzB,EAAwB1pE,QAAU,CAAC,SAAU,eAAgB,4BAA6B,WAC1FqqE,EAAwBrqE,QAAU,CAAC,eAAgB,UAAW,UAAW,4BAA6B,SAAU,UAAW,MAC3HmrE,EAA6BnrE,QAAU,CAAC,eAAgB,4BA4I3D,CAnJD,CAmJGC,OAAO/I,Q,aCnJV,SAAUA,GAKN,SAASyyE,EAAiB/tD,EAAO5U,GAE7BlP,KAAKqyE,qCAAuC,WACxC,OAAOvuD,EAAMI,IAAIhX,aAAe,qDACpC,EAEAlN,KAAKwzE,aAAe,SAASzB,EAAkB3sC,GAC3C,OAAOthB,EAAMI,IAAIhX,aAAe,8BAAgCwuB,EAAE2J,MAAM,CAAC9uB,GAAIw7D,EAAkB3sC,IAAIA,IACvG,EAEAplC,KAAKmzE,2BAA6B,SAAU9sD,GACxC,OAAOvC,EAAMI,IAAIhX,aAAe,4CAA8CwuB,EAAE2J,MAAM,CAAEhf,WAAYA,IACxG,EAEArmB,KAAK2zE,qBAAuB,SAAUC,GAClC,OAAO9vD,EAAMI,IAAIhX,aAAe,sCAAwCwuB,EAAE2J,MACtE,CACI9uB,GAAIq9D,EACJC,aAAc,8BACdC,UAAW,yDACXxhD,UAAW,IAGvB,EAEAtyB,KAAK+zE,OAAS,SAAUC,GACpB,OAAOlwD,EAAMQ,KAAKpX,aAAe,uBAAwB8mE,EAAQ,CAAEvpD,QAAS,CAAEC,cAAc,IAChG,EAEA1qB,KAAKi0E,OAAS,SAAUC,GACpB,OAAOpwD,EAAMQ,KAAKpX,aAAe,4BAA6BgnE,EAAO,CAAEzpD,QAAS,CAAEC,cAAc,IACpG,EAEA1qB,KAAKsyE,gBAAkB,WACnB,IAAIz5D,EAAQ3J,EAAG2J,QAEXs7D,EAAI1lE,kBAAkB,+BAO1B,OANI0lE,QACArwD,EAAMI,IAAIhX,aAAe,yCAAyC1K,MAOtE,SAAoBC,GAChBsC,kBAAkB,8BAA+BtC,EAASsG,MAC1D8P,EAAMmB,QAAQvX,EAASsG,KAC3B,IARI8P,EAAMmB,QAAc,SAANm6D,GAGXt7D,EAAMO,OAMjB,CACJ,CACDjR,OAAO/I,QAvDE4I,OAAO,iBAAiByd,QAAQ,4BAA6BosD,GAErEA,EAAiB3pE,QAAU,CAAC,QAAS,KAqDxC,CAxDD,E,aCAA,SAAW9I,GAGP,SAASg1C,EAAmBC,EAAgBC,EAAiB/7B,EAAiBg8B,EAAiC6/B,GAsT3G,SAASC,EAA+B70E,EAAcggC,GAClDz/B,GAAKC,KACLD,GAAGwX,iBAAmB/X,EAAaw3B,KACnCj3B,GAAGu0E,eAAiB90E,EAAa+W,GACjCipB,EAAkBoD,uBAAuB7iC,GAAGwX,iBAAkBxX,GAAGu0E,eACrE,CAzTNjgC,EACOvZ,MAAM,eAAgB,CACtBnJ,SAAU,wBAEhBmJ,MAAM,oBAAqB,CACrB3U,IAAK,iBACLvP,YAAa2B,EAAgBsD,QAAQ,oBAAqB,0CACvD5T,WAAYsQ,EAAgBiuB,cAAc,qBAAsB,sBACnE3vB,aAAc,KACd9N,KAAM,CACCyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,OAAQ8oB,EAAgBtN,gBAAgBC,KAAO,KAGjHnM,MAAM,yBAA0B,CACtC3U,IAAK,eACLhC,OAAQ,CAAC4C,MAAO,MACPnQ,YAAa2B,EAAgBsD,QAAQ,yBAA0B,yCAC/D5T,WAAYsQ,EAAgBiuB,cAAc,qBAAsB,sBACzE3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,OAAQ8oB,EAAgBtN,gBAAgBC,KAAO,EAC1GlM,YAAa,uBAElBD,MAAM,uBAAwB,CAChC3U,IAAK,2BACFhC,OAAQ,CAAE5N,GAAI,MACdK,YAAa2B,EAAgBsD,QAAQ,uBAAwB,0CAC7D5T,WAAYsQ,EAAgBiuB,cAAc,uBAAwB,2BAClE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,OAAQ8oB,EAAgBtN,gBAAgBC,KAAO,EAC1GlM,YAAa,uBAGvBD,MAAM,wBAAyB,CAC/B3U,IAAK,oBACCwL,SAAU,wCACV1pB,WAAY,mBAClB4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,WAAY8oB,EAAgBtN,gBAAgBC,KAAO,KAG/GnM,MAAM,4BAA6B,CACnC3U,IAAK,wBACCvP,YAAa2B,EAAgBsD,QAAQ,4BAA6B,6CAClE5T,WAAYsQ,EAAgBiuB,cAAc,4BAA6B,yBAC7E3vB,aAAc,KACd9N,KAAM,CACIyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,WAAY8oB,EAAgBtN,gBAAgBC,KAAO,EAC9GlM,YAAa,2BAGpBD,MAAM,6BAA8B,CACpC3U,IAAK,8BACFvP,YAAa2B,EAAgBsD,QAAQ,6BAA8B,8CACnE5T,WAAYsQ,EAAgBiuB,cAAc,6BAA8B,0BAC3E3vB,aAAc,KACd9N,KAAM,CACCyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,WAAY8oB,EAAgBtN,gBAAgBC,KAAO,EAC9GlM,YAAa,2BAG1BD,MAAM,0BAA2B,CACjC3U,IAAK,sBACIvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,+CAChE5T,WAAY,qBACrB4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAExGnM,MAAM,4BAA6B,CAClC3U,IAAK,gCACLhC,OAAQ,CAAE5N,GAAI,MACdK,YAAa2B,EAAgBsD,QAAQ,4BAA6B,+CAClE5T,WAAYsQ,EAAgBiuB,cAAc,4BAA6B,sBACvE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,EAC/GlM,YAAa,6BAG1BD,MAAM,8BAA+B,CACrC3U,IAAK,+BACLvP,YAAa2B,EAAgBsD,QAAQ,8BAA+B,wDAC3D5T,WAAYsQ,EAAgBiuB,cAAc,8BAA+B,4BAClF3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,EAC/GlM,YAAa,6BAG1BD,MAAM,mBAAoB,CAC1B3U,IAAK,YACLvP,YAAa2B,EAAgBsD,QAAQ,mBAAoB,wCAChD5T,WAAYsQ,EAAgBiuB,cAAc,mBAAoB,oBAC9D3vB,aAAc,KACdsN,OAAQ,CACJA,OAAQ,MAErBpb,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,MAAO8oB,EAAgBtN,gBAAgBC,KAAO,KAG1GnM,MAAM,sBAAuB,CAC7B3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,2CACnD5T,WAAYsQ,EAAgBiuB,cAAc,sBAAuB,kBAC1E3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,KAG5GnM,MAAM,qBAAsB,CAC5B3U,IAAK,qBACLvP,YAAa2B,EAAgBsD,QAAQ,qBAAsB,+CAClD5T,WAAYsQ,EAAgBiuB,cAAc,qBAAsB,iBACzE3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,EAC3GlM,YAAa,yBAG1BD,MAAM,2BAA4B,CAClC3U,IAAK,4BACLvP,YAAa2B,EAAgBsD,QAAQ,2BAA4B,qDACxD5T,WAAYsQ,EAAgBiuB,cAAc,2BAA4B,wBAC/E3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,EAC3GlM,YAAa,yBAExBD,MAAM,0BAA2B,CACnC3U,IAAK,sBACLvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,gDACvD5T,WAAYsQ,EAAgBiuB,cAAc,0BAA2B,sBAC9E3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,aAAc8oB,EAAgBtN,gBAAgBC,KAAO,KAE/GnM,MAAM,8BAA+B,CACvC3U,IAAK,0BACLvP,YAAa2B,EAAgBsD,QAAQ,0BAA2B,gDACvD5T,WAAYsQ,EAAgBiuB,cAAc,0BAA2B,sBAC9E3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,aAAc8oB,EAAgBtN,gBAAgBC,KAAO,KAE/GnM,MAAM,sBAAuB,CAC/B3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,gDAC5D5T,WAAYsQ,EAAgBiuB,cAAc,sBAAuB,kBACjE3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,KAE1GnM,MAAM,4BAA6B,CACrC3U,IAAK,0BACLvP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,gDAC5D5T,WAAYsQ,EAAgBiuB,cAAc,sBAAuB,kBACjE3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,KAE1GnM,MAAM,qBAAsB,CAC9B3U,IAAK,qBACLvP,YAAa2B,EAAgBsD,QAAQ,qBAAsB,iDAClD5T,WAAYsQ,EAAgBiuB,cAAc,qBAAsB,iBACzE3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,QAAS8oB,EAAgBtN,gBAAgBC,KAAO,KAE1GnM,MAAM,qBAAsB,CAC3B3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QAAQ,qBAAsB,2CACrD5T,WAAYsQ,EAAgBiuB,cAAc,qBAAsB,iBACtE3vB,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAEpHnM,MAAM,yBAA0B,CAC/B3U,IAAK,qBACLvP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,8CACzD5T,WAAYsQ,EAAgBiuB,cAAc,yBAA0B,iBAC1E3vB,aAAc,KACd9N,KAAM,CACIyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,EAC/GlM,YAAa,wBAExBD,MAAM,+BAAgC,CACxC3U,IAAK,oCACIvP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,8CAC/D5T,WAAYsQ,EAAgBiuB,cAAc,yBAA0B,qBAC7E3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,EAC/GlM,YAAa,wBAExBD,MAAM,yBAA0B,CAClC3U,IAAK,4BACIvP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,2CAC/D5T,WAAYsQ,EAAgBiuB,cAAc,yBAA0B,qBAC7E3vB,aAAc,KACd9N,KAAM,CACOyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,EAC/GlM,YAAa,wBAExBD,MAAM,sBAAuB,CAC5B3U,IAAK,0BACLvP,YAAa2B,EAAgBsD,QAAQ,sBAAuB,4CACtD5T,WAAYsQ,EAAgBiuB,cAAc,sBAAuB,kBACvE3vB,aAAc,KACR9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgBrpB,cAAgBmpD,EAAeG,gBAAkB,KAEvGz5C,MAAM,yBAA0B,CAClC3U,IAAK,qBACLvP,YAAa2B,EAAgBsD,QAAQ,yBAA0B,+CACtD5T,WAAYsQ,EAAgBiuB,cAAc,yBAA0B,qBAC7E3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,aAAc8oB,EAAgBtN,gBAAgBC,KAAO,KAEzGnM,MAAM,uBAAwB,CACtC3U,IAAK,mBACLvP,YAAa2B,EAAgBsD,QAAQ,uBAAwB,6CACpD5T,WAAYsQ,EAAgBiuB,cAAc,uBAAwB,mBAC3E3vB,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAO,CAAuG,KAGnI1Z,MAAM,yBAA0B,CACvB3U,IAAK,qBACLhC,OAAQ,CAAEkC,WAAY,KAAM0rD,iBAAkB,MACvDn7D,YAAa2B,EAAgBsD,QAAQ,yBAA0B,8CAC/D5T,WAAY,yBACZ4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAG1GnM,MAAM,4BAA6B,CAChC3U,IAAK,mDACLhC,OAAQ,CAAEkC,WAAY,KAAM0rD,iBAAkB,MAC9Cn7D,YAAa2B,EAAgBsD,QAAQ,yBAA0B,8CAC/D5T,WAAY,yBACZ4O,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAG5HnM,MAAM,6BAA8B,CACpC3U,IAAK,gDACLvP,YAAa2B,EAAgBsD,QAAQ,8BAA+B,oDACpE5T,WAAY,yBACZ4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAGhHnM,MAAM,oCAAqC,CAC3C3U,IAAK,oDACLhC,OAAQ,CACPwuD,aAAa,GAEd/7D,YAAa2B,EAAgBsD,QAAQ,8BAA+B,oDACpE5T,WAAY,yBACZ4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAGhHnM,MAAM,kCAAmC,CACzC3U,IAAK,uDACLvP,YAAa2B,EAAgBsD,QAAQ,mCAAoC,mDACzE5T,WAAY,8BACZ4O,aAAc,KACd9N,KAAM,CACLyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,YAAa8oB,EAAgBtN,gBAAgBC,KAAO,KAExGnM,MAAM,wBAAyB,CACvC3U,IAAK,uCACLle,WAAY,mBACZ4O,aAAc,OAEdikB,MAAM,6BAA8B,CACpC3U,IAAK,mBACLvP,YAAa2B,EAAgBsD,QAAQ,wBAAyB,gDAC9D5T,WAAY,wBACZ4O,aAAc,OAERikB,MAAM,8BAA+B,CAClC3U,IAAK,0BACLvP,YAAa2B,EAAgBsD,QAAQ,8BAA+B,sDACpE5T,WAAY,yBACZ4O,aAAc,KACd9N,KAAM,CACFyrC,KAAM,WAAc,OAAOF,EAAgB9oB,gBAAgB,iBAAkB8oB,EAAgBtN,gBAAgBC,KAAO,KAG3HnM,MAAM,oCAAqC,CACxC3U,IAAK,yBACLle,WAAYosE,EACZx9D,aAAc,OAGlBw9D,EAA+BnsE,QAAU,CAAC,eAAgB,sBAO9D,CAEDC,OAAO/I,QAhUE4I,OAAO,iBAAiB4sC,OAAOR,GACvCA,EAAmBlsC,QAAU,CAAC,iBAAkB,kBAAmB,kBAAmB,kCAAmC,oBA+T5H,CAjUD,E,aCAA,SAAW9I,GA6IP,SAASo1E,EAAaJ,EAAgB10E,GACZ,MAAlB+/D,SAAS1yD,QAAe0yD,SAAS1yD,MAAQyH,uBAE7C,IAAI5E,EAAe6vD,SACfz4B,EAAkB,CAClBC,KAAM,GACNwtC,MAAO,GACPC,cAAe,GACfvrD,MAAO,IAGX,SAASwrD,EAAgB5kE,GACrBH,EAAeG,CACnB,CAEA,SAAS8Z,EAAuB+qD,GAC5B,IAAIC,EAAYC,IAEhB,IAAKD,EACD,GAAID,EACAC,EAAYrpD,EACRopD,EACA5tC,EAAgBytC,YAGpB,IACI,IAAK,IAAIlzE,EAAI,EAAGA,EAAIqO,EAAa+S,MAAMhiB,SAC/Bk0E,EADuCtzE,IAI3C,GAAIqO,EAAa+S,MAAMphB,GAAGwzE,mBACtB,IACI,IAAIh5B,EAAI,EACRA,EACAnsC,EAAa+S,MAAMphB,GAAGwzE,mBACjBp0E,OACLo7C,IAEA,GACInsC,EAAa+S,MAAMphB,GACdwzE,mBAAmBh5B,GACnB/U,iBACDA,EAAgBytC,OAIhB,oBAHJ7kE,EAAa+S,MAAMphB,GACdwzE,mBAAmBh5B,GACnBi5B,iBAAiBC,cAExB,CACEJ,GAAY,EACZ,KACJ,CAIhB,CAAE,MAAO/rE,GACL/G,QAAQoZ,MAAMrS,GACd+rE,GAAY,CAChB,CAIR,OAAOA,CACX,CAEA,SAASrpD,EAAgBopD,EAAqBM,EAAkBC,GAC5D,GACKf,EAAeG,kBAAwC,IAApBW,IAA2BC,GAC/DL,IAEA,OAAO,EACX,GAAIllE,EAAa+S,MACb,IAEI,IAAK,IAAIphB,EAAI,EAAGA,EAAIqO,EAAa+S,MAAMhiB,OAAQY,IAC3C,GAAIqO,EAAa+S,MAAMphB,GAAGwzE,mBACtB,IACI,IAAIh5B,EAAI,EACRA,EACAnsC,EAAa+S,MAAMphB,GAAGwzE,mBAAmBp0E,OACzCo7C,IAMA,GAHInsC,EAAa+S,MAAMphB,GAAGwzE,mBAAmBh5B,GACpCi5B,iBAAiBC,eACtBL,KAGEhlE,EAAa+S,MAAMphB,GAAGwzE,mBACpBh5B,GACF/U,mBAAqBkuC,EAEvB,OAAO,CAI3B,CAAE,MAAOpsE,GAEL,OADA/G,QAAQoZ,MAAMrS,IACP,CACX,CAGJ,GAAI8G,EAAawlE,SACb,IAEI,IAAS7zE,EAAI,EAAGA,EAAIqO,EAAawlE,SAASz0E,OAAQY,IAC9C,IACI,IAAIqnC,EAAI,EACRA,EAAIh5B,EAAawlE,SAAS7zE,GAAGohB,MAAMhiB,OACnCioC,IAEA,GACIh5B,EAAawlE,SAAS7zE,GAAGohB,MAAMimB,GAC1BmsC,mBAEL,IACQh5B,EAAI,EACRA,EACAnsC,EAAawlE,SAAS7zE,GAAGohB,MAAMimB,GAC1BmsC,mBAAmBp0E,OACxBo7C,IAOA,GAJInsC,EAAawlE,SAAS7zE,GAAGohB,MAAMimB,GAC1BmsC,mBAAmBh5B,GACnBi5B,iBAAiBC,eACtBL,KAGEhlE,EAAawlE,SAAS7zE,GAAGohB,MAAMimB,GAC5BmsC,mBAAmBh5B,GACnB/U,mBACCkuC,EAEN,OAAO,CAK/B,CAAE,MAAOpsE,GAEL,OADA/G,QAAQoZ,MAAMrS,IACP,CACX,CAGJ,OAAO,CACX,CAEA,SAASgsE,IACL,IAAMO,EAAuB,CAAC,gBAAiB,cAAe,aAC9D,QAAOzlE,EAAa+S,OAAQ/S,EAAa+S,MAAMgnB,MAAK,SAAA2rC,GAAI,OAAID,EAAqBhkE,SAASikE,EAAK/vE,WAAW,GAC9G,CAEA,SAAS0lB,IACL,QAASrb,EAAajO,GAAK,CAC/B,CAEA,MAAO,CACHqlC,gBAAiBA,EACjBxb,gBAAiBA,EACjBspD,gBAAiBA,EACjBjrD,uBAAwBA,EACxBoB,WAAYA,EACZ0pD,gBAAiBA,EACjBz1C,KAAM,WACF,MAAO,CACHq2C,gBAAiB,SAAUxlE,GACvBH,EAAa4lE,SAAWvqD,IAAe,GAAHtC,OAAM5Y,EAAKqV,UAAUuf,MAAM,EAAG,IAAEhc,OAAG5Y,EAAKsV,SAASsf,MAAM,EAAG,IAAO,GACrGhkB,OAAO80D,OAAOtnD,YAAY3G,UAAU,EAAG,IAEvCzlB,QAAQC,IAAI,YAAcmsB,YAC9B,EACA4C,gBAAiB,WACb,OAAOnhB,CACX,EACAo3B,gBAAiBA,EACjBxb,gBAAiBA,EACjBspD,gBAAiBA,EACjBjrD,uBAAwBA,EACxBoB,WAAYA,EACZ0pD,gBAAiBA,EAEzB,EAER,CA4DA,SAASe,EACLrhC,EACAshC,EACAC,EACAr9D,EACAs9D,EACAthC,EACAuhC,EACA1B,EACAI,EACAuB,GAEAJ,EAAmBK,UAAU,KAC7BF,EAAkBG,WAAU,GAG5BF,EAAoBnhC,OAAO,CACvBiG,QAASq7B,uBAGb7hC,EACKvZ,MAAM,OAAQ,CACXlkB,YAAa2B,EAAgBsD,QACzB,OACA,4BAEJ5T,WAAYsQ,EAAgBiuB,cAAc,OAAQ,QAClD3vB,aAAc,OAEjBikB,MAAM,WAAY,CACf3U,IAAK,YACLvP,YAAa2B,EAAgBsD,QACzB,WACA,gCAEJ5T,WAAYsQ,EAAgBiuB,cACxB,WACA,iBAEJ3vB,aAAc,KACd9N,KAAM,CACF0rC,UAAU,KAGjB3Z,MAAM,QAAS,CACZ3U,IAAK,SACLvP,YAAa2B,EAAgBsD,QACzB,kBACA,+DAEJ5T,WAAY,aACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,EACVE,eAAe,KAGtB7Z,MAAM,SAAU,CACb3U,IAAK,UACLvP,YAAa2B,EAAgBsD,QACzB,mBACA,mCAEJ5T,WAAY,cACZ4O,aAAc,OAEjBikB,MAAM,kBAAmB,CACtB3U,IAAK,yBACLvP,YAAa2B,EAAgBsD,QACzB,kBACA,+DAEJ5T,WAAY,aACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,EACVE,eAAe,KAGtB7Z,MAAM,iBAAkB,CACrB3U,IAAK,kBACLvP,YAAa2B,EAAgBsD,QACzB,sBACA,wEAEJ5T,WAAY,sBACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,KAGjB3Z,MAAM,iBAAkB,CACrB3U,IAAK,wBACLvP,YAAa2B,EAAgBsD,QACzB,sBACA,wEAEJ5T,WAAY,sBACZ4O,aAAc,KACd9N,KAAM,CACF0rC,UAAU,KAGjB3Z,MAAM,YAAa,CAChB3U,IAAK,IACLvP,YAAa2B,EAAgBsD,QACzB,YACA,4BAEJ5T,WAAYsQ,EAAgBiuB,cACxB,YACA,aAEJ3vB,aAAc,OAEjBikB,MAAM,YAAa,CAChBlkB,YAAa2B,EAAgBsD,QACzB,YACA,iCAEJ5T,WAAYsQ,EAAgBiuB,cAAc,OAAQ,QAClD3vB,aAAc,OAGtB++D,EAAcO,aAAa3mE,KAAK,sBAChComE,EAAcQ,eAAc,GAE5B7hC,EAAgC8hC,QAAQ,aACxCR,EAAmBS,UAAU,0BAA2B,CACpDC,YAAarpE,aAAe,sCAAwCspE,iBAGxE,IAAIjvD,EAAU4G,YAAY3G,UAAU,EAAG,GAEvCquD,EAAmBY,kBAAkBlvD,GACrCsuD,EAAmBa,iBAAiB,MAEpCb,EAAmBc,kBAAiB,GACpCd,EAAmBe,gBAAe,GAClCj2D,OAAO80D,OAAOluD,GACdsuD,EAAmBgB,yBAAyB,OAE5CzC,EAAe0C,gBAAgB/+D,oBAAoB,mBAEnD89D,EAAmBY,kBAAkBlvD,GACrCsuD,EAAmBc,kBAAiB,GACpCd,EAAmBe,gBAAe,GAClCf,EAAmBa,iBAAiB,MACpCb,EAAmBgB,yBAAyB,MAChD,CAEA,SAASE,EACLz3E,EACAwkB,EACA5U,EACAwkB,EACAlS,EACA3W,EACA/K,EACAk3E,EACAt3E,EACA2/B,EACA43C,EACAjxD,EACAy2B,EACAy6B,EACA7uE,EACA8uE,EACA5lC,EACA6iC,EACAgD,EACA7rE,EACA8rE,EACAC,EACA7+C,GAEA,IA4CQ8+C,EA5CJC,EAAsBtoE,EAAG2J,QAwK7B,SAAS4+D,IAGL,IAAIC,EAAcvvE,OAAOktC,WAAa3Z,EAAE9sB,UAAUtG,QAWlD,OANmB,IAAfovE,IACAA,EAAc,KAGdA,EAAc,IAAMA,EAAc,KAAGA,EAAc,IAEhDA,CACX,CAtLAp4E,EAAWq4E,aAAezoE,EAAG2J,QAC7BvZ,EAAWyD,YAAcy0E,EAAoBp+D,QAC7C9Z,EAAWs4E,mBAAqBt4E,EAAWq4E,aAAav+D,QAExD9Z,EAAWwI,IAAI,2CAA2C,WACtDpI,EAAWm4E,SACf,IAEAv4E,EAAWsN,sBACPrB,EAAiBqB,sBAErBoqE,EAAcc,qBAAqBp4E,GAEnCJ,EAAWiV,UAAYC,sBACG,oBAAfujE,YAA+BA,aACtCj0D,EAAMk0D,SAASvtD,QAAQwtD,OAAO,cAAgB34E,EAAWiV,WAG7DuP,EAAMk0D,SAASvtD,QAAQwtD,OAAiB,SAAIC,SAC5Cp0D,EAAMk0D,SAASvtD,QAAQwtD,OAAO,iBAC1B,wBACJn0D,EAAMk0D,SAASvtD,QAAQwtD,OAAe,YAAIr3E,EAC1CtB,EAAWg2B,KAAOtnB,eAAqB,KACvC1O,EAAW64E,UAAYnqE,eAA0B,UACjD1O,EAAW84E,YAAclB,EAAU1sE,SACnClL,EAAWumD,aAAeA,aAC1BvmD,EAAW+4E,iBAAmBjB,EAC9B93E,EAAWg5E,SAAWtqE,eAAyB,SAE/C1O,EAAWi5E,kBAkIX,WACI,OAAIvqE,eAAesqE,SAAS33E,OAAS,EAC1B,qBAAuBqN,eAAesqE,SAAW,QAEjD,6BAEf,EAvIAh5E,EAAWk5E,mBAyHX,WACI,OAAI98C,EAAE9sB,UAAUnG,SAAWizB,EAAEvzB,QAAQM,SAC1B,gBAAkBgvE,IAAmB,MAErC,OAEf,EA9HAn4E,EAAWo4E,YAAcD,EAEzBn4E,EAAWsmD,uBAAyBtmD,EAAWumD,aAAaC,SAC5DxmD,EAAWm5E,MAAQC,YACnBp5E,EAAWq5E,aAUW,QAFdpB,EAAaqB,UAAU,kBAEc,KAAfrB,EACf,KAEJ7zD,KAAKC,MAAM4zD,GAZtBj4E,EAAWu5E,WAAa1wE,OAAOlD,WAAakD,OAAOc,OAAOhE,SAC1D3F,EAAWw5E,gBAAiB,EAC5Bx5E,EAAWwH,cAAgB,IAAIe,OAAOmG,eAA8B,eACpE1O,EAAWy5E,eAAiB,EAY5Bz5E,EAAW2H,qBAAuB,WAC9B,GAAK3H,EAAWq5E,aAAhB,CAIA,IAAI/6C,EAAQt+B,EAAWq5E,aAAaj8D,MAOpC,OALiBvU,OAAOijE,YAAcjjE,OAAOijE,WAAW,gCAAgCC,SACtE/rE,EAAWq5E,aAAaK,eAAiB15E,EAAWq5E,aAAaK,cAAcr4E,OAAS,IACtGi9B,EAAQt+B,EAAWq5E,aAAaK,eAG7Bp7C,CATP,CAUJ,EAEAt+B,EAAWwxC,cAAgB,SAAU7L,EAAKG,GACtC,OAAO/X,KAAKC,MAAMD,KAAK6X,UAAYE,EAAMH,EAAM,GAAKA,EACxD,EAEA3lC,EAAW25E,0BAA4B,SAAU98D,GAC7C,OAAOnO,eAAemO,EAC1B,EAEA7c,EAAW45E,wBAA0B,SAAUliD,GAC3C,QAAKA,IAEqC,mBAA/BmiD,2BACAA,2BAA2BniD,GAGe,SAA1CrsB,gBAAgB,sBAE/B,EAEArL,EAAWwM,aAAe,CACtBiqB,OAAQ,CACJC,aAAa,EACbojD,qBAAqB,GAEzBC,UAAW,CACPC,iBAAiB,GAErBvtE,MAAO,CACHqB,cAAeF,aAAe,QAC9BrB,UAAU,EACVG,gBAAgB,EAChButE,2BAA4B,SAEhCC,QAAS,CACLC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,EACZC,gBAAgB,EAChBC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,yBAAyB,EACzBC,kBAAkB,EAClBC,iBAAiB,EACjBC,mBAAmB,EACnBC,cAAc,EACdC,gBAAgB,EAChBC,iBAAiB,EACjBC,wBAAoB55E,EACpB65E,oBAAoB,EACpBC,uBAAuB,EACvBC,oBAAoB,EACpBxpE,wCAAyC,GACzCypE,8BAA+B,GAC/B18D,0BAAsBtd,EACtBi6E,yBAAyB,GAE7Br6B,YAAa,CACTs6B,mBAAmB,EACnBC,aAAc,IAElBj5D,SAAU,CACNk5D,cAAc,GAElB93E,qBAAsB,CAClB22E,gBAAgB,GAEpB7qE,OAAQ,CACJisE,oBAAgBr6E,IAIxBtB,EAAW47E,eAAiB,SAAUlzE,EAAQmU,GAC1C,OAAO7c,EAAWwM,aAAa9D,GAAQmU,EAC3C,EAEAg/D,mBAAmB,SAAS,SAAUC,EAASzqC,IAE/B,IAARA,IACArxC,EAAWw5E,gBAAiB,EAC5BuC,gBAAiB,EAEzB,IAmCA/7E,EAAWwI,IAAI,0BAA0B,SAAUsK,GAC/C9S,EAAW84E,YAAclB,EAAU1sE,SACnClL,EAAWi8B,gBAAiB,EAEvBj8B,EAAWg8E,sBAAsBjzE,EAAQ24C,SAAS,EAAG,GAE1D1hD,EAAWg8E,sBAAuB,CACtC,IAEApsE,EAAG6B,IAAI,CAAC2iB,EAAYsgB,oBAAoBxxC,MAExC,SAAsBC,GAClB+e,EAAQ+zD,gBAAgB9yE,EAAS,GAAGsG,MACpCzJ,EAAWsQ,aAAe4R,EAAQuP,kBAClCzxB,EAAWsQ,aAAawO,iBAAmBiJ,iBAC3C/nB,EAAWsQ,aAAawX,eAAiB+G,YACzC7uB,EAAW2rB,WAAazJ,EAAQyJ,aAChC3rB,EAAW0P,OAASlP,EAAYkP,OAChC1P,EAAWksB,gBAAkBhK,EAAQgK,gBACrClsB,EAAW0nC,gBAAkBxlB,EAAQwlB,gBACrC1nC,EAAWuqB,uBAAyBrI,EAAQqI,uBAC5CvqB,EAAWw1E,gBAAkBtzD,EAAQszD,gBACrCr4B,EAAqB8+B,cAAgBj8E,EAAWsQ,aAAajO,GAC7D86C,EAAqB++B,oBACjBl8E,EAAWsQ,aAAa6rE,4BAC5Bn8E,EAAWo8E,OACP3jE,oBAAoB,yBAA2ByJ,EAAQgK,gBACnD,eACAhK,EAAQwlB,gBAAgBC,MAEhC3nC,EAAWq8E,cAAe,EAC1Bl/B,EAAqB8+B,cAAgBj8E,EAAWsQ,aAAajO,GAEzC,UAAhBwsB,cACAkpD,EAAQuE,eAAeC,UAAY,KAGvCrE,EAAoBx9D,SAAQ,GAC5BjY,QAAQC,IAAI,kCACZ4M,SAASq2D,cAAc,IAAI6W,YAAY,+BAEnCt6D,EAAQyJ,eACRsmB,EAAe35B,WAAWmkE,yBAC1BxqC,EAAegB,QACXx6B,oBAAoB,+BACpBu/D,EAA2B1/D,eAI/Bw8D,EAAeG,kBAAoB/yD,EAAQyJ,eAC3CyI,EACKsoD,8BACAx5E,MAAK,SAAUC,GACZnD,EAAWg8B,UAAY74B,EAASsG,IACpC,IAGRzJ,EAAW28E,uBACP,oBACA,6BAGJC,sBAAsB58E,EAAWm5E,MAAM0D,aAAc78E,EAAWm5E,MAAM2D,kBAElEC,UAAUC,aACVD,UAAUC,WAAWrmD,iBAAiB,SAAUsmD,wBAChDA,yBAER,IAIA,IAAIC,EAAgBttE,EAAG2J,QAqKvB,GApKAvZ,EAAWwyB,oBAAsB0qD,EAAcpjE,QAC3CrB,oBAAoB,qBAAuByJ,EAAQyJ,aACnDwN,EAAkBpH,oBAAoB7uB,MAAK,SAACC,GACxC+5E,EAAcxiE,QAAQ,IACtB1a,EAAWyyB,SAAWtvB,EAASsG,IACnC,KAEAyzE,EAAcxiE,QAAQ,IACtB1a,EAAWyyB,SAAW,IAE1BzyB,EAAWwI,IAAI,yBA8Gf,SAAoC0a,EAAOoK,GACvC,GAAoB,IAAhBA,EAAK5pB,QAAgB1D,EAAWyyB,SAAU,CAK1C,IAJA,IAAI0qD,EAAoB7vD,EAAKpC,WACzBkyD,EAAkB9vD,EAAK0F,SACvBqqD,EAAkB/vD,EAAK5pB,OACvB45E,GAAa,EACRr7E,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IAAK,CACjD,IAAIs7E,GAAwB,EACxBvjD,EAAUh6B,EAAWyyB,SAASxwB,GAClC,GAAI+3B,EAAQpH,cAAcvxB,OAAQ,CAE9B,IADA,IAAIm8E,EAAgB,EACXp7E,EAAI,EAAGA,EAAI43B,EAAQpH,cAAcvxB,OAAQe,IAAK,CACnD,IAAIq7E,EAAKzjD,EAAQpH,cAAcxwB,GAC3Bq7E,EAAGp7E,KAAO+6E,GACPK,EAAGxlE,mBAAqBklE,GACxBM,EAAG5qD,SAAWwqD,IACjBI,EAAG5qD,OAASwqD,EACZE,GAAwB,EACxBD,GAAa,GAEC,IAAdG,EAAG5qD,QACH2qD,GAER,CACID,IACAvjD,EAAQ0jD,cAAkC,IAAhBF,EAAuBxjD,EAAQpH,cAAcvxB,OAE/E,CACJ,CAEIi8E,GACAt9E,EAAW8K,WAAW,yBAE9B,CACJ,IA9IA9K,EAAW29E,mBAAqB,SAASC,GACrC,IAAIrkE,EAAQ3J,EAAG2J,QA0Bf,OAzBAvZ,EAAWwyB,oBAAoBtvB,MAAK,WAChC,GAAIlD,EAAWyyB,SAAU,CAGrB,IAFA,IACIorD,EADAC,GAAuB,EAElB77E,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IAC5C,GAAIjC,EAAWyyB,SAASxwB,GAAGq3B,kBAAoBwkD,EAAsB,CAEjE,IADA,IAAIC,EAAiB/9E,EAAWyyB,SAASxwB,GAChCG,EAAI,EAAGA,EAAI27E,EAAenrD,cAAcvxB,OAAQe,IAGrD,GAFKy7E,IAAaA,EAAcE,EAAenrD,cAAc3wB,IAEd,IAA3C87E,EAAenrD,cAAcxwB,GAAGywB,OAEhC,YADAtZ,EAAMmB,QAAQqjE,EAAenrD,cAAcxwB,IAInD07E,GAAuB,CAC3B,CAEJ,GAAIF,GAAsBC,EAEtB,YADAtkE,EAAMmB,QAAQmjE,EAGtB,CACAtkE,EAAMmB,QAAQ,KAClB,IACOnB,EAAMO,OACjB,EAEA9Z,EAAWg+E,iBAAmB,WAC1B,IAAIzkE,EAAQ3J,EAAG2J,QAiBf,OAhBAvZ,EAAWwyB,oBAAoBtvB,MAAK,WAChC,GAAIlD,EAAWyyB,SACX,IAAK,IAAIxwB,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IAC5C,GAAIjC,EAAWyyB,SAASxwB,GAAGq3B,iBAEvB,IADA,IAAIykD,EAAiB/9E,EAAWyyB,SAASxwB,GAChCG,EAAI,EAAGA,EAAI27E,EAAenrD,cAAcvxB,OAAQe,IACrD,GAA+C,IAA3C27E,EAAenrD,cAAcxwB,GAAGywB,OAEhC,YADAtZ,EAAMmB,SAAQ,GAOlCnB,EAAMmB,SAAQ,EAClB,IACOnB,EAAMO,OACjB,EAEA9Z,EAAWo5B,kBAAoB,SAAUniB,EAAIgnE,EAAgBC,GACrDl+E,EAAWyyB,UAAYzyB,EAAWyyB,SAASpxB,QAC3C83B,EAAkBC,kBAAkBniB,GAAI/T,MAAK,WAEzC,IADA,IAAI66E,EACK97E,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IAC5CjC,EAAWyyB,SAASxwB,GAAGq3B,iBAAmBt5B,EAAWyyB,SAASxwB,GAAGI,KAAO4U,EACxEjX,EAAW8K,WAAW,0BAA2BmM,GAE7CjX,EAAWyyB,SAASxwB,GAAGq3B,mBACvBykD,EAAiB/9E,EAAWyyB,SAASxwB,IAI7C,GAAIg8E,GAAkBF,EAAgB,CAClC,IAAInkD,EACJ,IAAS33B,EAAI,EAAGA,EAAI87E,EAAenrD,cAAcvxB,OAAQY,IAChD23B,GAAyD,IAA3CmkD,EAAenrD,cAAc3wB,GAAG4wB,SAC/C+G,EAAamkD,EAAenrD,cAAc3wB,IAI9Ci8E,IAAoBtkD,GAAcmkD,EAAenrD,cAAcvxB,OAAS,IACxEu4B,EAAamkD,EAAenrD,cAAc,IAG1CgH,GACAT,EAAkBO,eAAeE,EAEzC,CACJ,GAER,EAEA55B,EAAW2xB,4BAA8B,WACrC,IAAIpY,EAAQ3J,EAAG2J,QAoBf,OAnBAvZ,EAAWwyB,oBAAoBtvB,MAAK,WAChC,IAAIwvB,EAAc,EACdyrD,EAAkB,EACtB,GAAIn+E,EAAWyyB,SACX,IAAK,IAAIxwB,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,OAAQY,IAC5C,IAAK,IAAIG,EAAI,EAAGA,EAAIpC,EAAWyyB,SAASxwB,GAAG2wB,cAAcvxB,OAAQe,IAC7DswB,IACuD,IAAnD1yB,EAAWyyB,SAASxwB,GAAG2wB,cAAcxwB,GAAGywB,QACxCsrD,IAKhB,IAAI/jD,EAAI,EACJ1H,EAAc,IACd0H,EAAuB,IAAlB+jD,EAAyBzrD,GAElCnZ,EAAMmB,QAAQ0f,EAClB,IACO7gB,EAAMO,OACjB,EAwCAqjC,EAAqBniC,mBAAqB,GAC1CmiC,EAAqBihC,cAAgB,EACrCjhC,EAAqBkhC,qBAAuB,EAC5ClhC,EAAqBmhC,kBAAmB,EACxCnhC,EAAqBohC,eAAgB,EAEjC7vE,eAAkC,mBAAK1O,EAAW45E,wBAAwB,cAG1E,GADA55E,EAAWw+E,6BAA+B,GACtC9vE,eAAkC,kBAAEnN,QAAQ,KAAO,EAAG,CACtD,IAAI+6C,EAAQ5tC,eAAkC,kBAAEqgB,MAAM,KACtDhmB,EAAQ01E,GAAG,SAAUniC,EAAM,GAAI,QAE/B,IAAK,IAAIr6C,EAAI,EAAGA,EAAIq6C,EAAMj7C,OAAQY,IAC9BjC,EAAWw+E,6BAA6BtuE,KAAK,CACzC7N,GAAIi6C,EAAMr6C,GACV0R,KAAM,iBAAmB1R,IAIjC,IACQA,EAAI,EACRA,EAAIjC,EAAWw+E,6BAA6Bn9E,OAC5CY,IACF,CACE,IAAIgV,EAAKjX,EAAWw+E,6BAA6Bv8E,GAAGI,GAChD0b,EAAO/d,EAAWw+E,6BAA6Bv8E,GAAG0R,KACtD5K,EAAQ01E,GAAG,SAAUxnE,EAAI,OAAQ8G,EACrC,CACJ,MACIhV,EAAQ01E,GAAG,SAAU/vE,eAAkC,kBAAG,QA6LlE,SAASgwE,IACL,GAAI/G,EAAegH,eACf,KAAO3+E,EAAW4+E,SAASv9E,OAAS,GAAG,CACnC,IAAIoF,EAAMzG,EAAW4+E,SAASjuE,OAAO,EAAG,GACxCgnE,EAAekH,KAAKz6D,KAAKoa,UAAU/3B,EAAI,IAC3C,CAER,CAhMAigB,EAAakB,UAAU,CAAC,GAAG,SAAUC,GAQjC,GAPA7nB,EAAW8+E,cAAgBj3D,EAAYk3D,QACvC/+E,EAAWsnC,aAAezf,EAAYm3D,MACtCh/E,EAAWi/E,kBAAoBj/E,EAAWsnC,aAAavpB,KAAKlX,QACxD,MACA,KAGA7G,EAAW45E,wBAAwB,cAAe,CAKlD,GAJIlrE,eAAkC,mBAClC3F,EAAQ01E,GAAG,OAAQ,WAAY7G,EAAUsH,QAGzCl/E,EAAWw+E,6BACX,IACI,IAAIv8E,EAAI,EACRA,EAAIjC,EAAWw+E,6BAA6Bn9E,OAC5CY,IACF,CACE,IAAI8b,EAAO/d,EAAWw+E,6BAA6Bv8E,GAAG0R,KACtD5K,EAAQ01E,GAAG1gE,EAAO,QAAS,WAAY65D,EAAUsH,OACrD,CAGAxwE,eAAmC,qBAE/B1O,EAAWsQ,cAAgBtQ,EAAWsQ,aAAajO,GAAK,IAAMrC,EAAWm/E,kBACzEp2E,EAAQka,UAAU/S,KAAK,CACnB8a,OAAQhrB,EAAWsQ,aAAajO,KAEpCrC,EAAWm/E,iBAAkB,GAGjCp2E,EAAQka,UAAU/S,KAAK,CACnBgT,MAAO,WACPC,WAAY,CACRi8D,MAAOxH,EAAUsH,UAIjC,CAEA,IAAIA,EAAOr2E,OAAOlD,SAAS05E,SACvBn9D,EAAQyJ,cACRnrB,EAAYyzC,gBACRirC,EAAO,UAAYr3D,EAAYm3D,MAAMn4D,IACrCq4D,EAAO,UAAYr3D,EAAYk3D,QAAQl4D,IACvC,cAIJnY,eAAesqE,SAAS33E,OAAS,GACjCgO,YAAW,WACP+sB,EAAE,cAAclzB,IAAI,YAAawF,eAAesqE,UAChD58C,EAAE,cAAclzB,IAAI,QAAS,QAC7BkzB,EAAE,cAAclzB,IAAI,SAAU,OAClC,GAAG,GAGPlJ,EAAWs/E,iBAAmBj+D,SAE9B4wB,EAAeQ,SACnB,IAEA/rB,EAAamf,QAAQ,CAAC,GAAG,SAAUhe,GAC/B,IAAImW,EAAKnW,EAAYm3D,MAErB,SAASO,EAAmBvhD,GAAgC,IAA5BwhD,EAAaz1B,UAAA1oD,OAAA,QAAAC,IAAAyoD,UAAA,GAAAA,UAAA,GAAG,WACxC/rB,EAAGv0B,MAAQ3J,EAAQ2/E,WAAWzhD,EAAGv0B,KAAKyrC,QACzBlX,EAAGv0B,KAAKyrC,SAEjBrtB,EAAY63D,QACZn0E,EAAOyL,GAAGwoE,IAGtB,CAEA,GAAI/mE,oBAAoB,kBACpB8mE,EAAmBvhD,EAAI,iBAD3B,CAMA,KAAK9b,EAAQyJ,cAAkBqS,EAAGv0B,MAASu0B,EAAGv0B,KAAK0rC,UAG/C,OAFAttB,EAAY63D,aACZn0E,EAAOyL,GAAG,SAEP,GACHkL,EAAQyJ,cACRqS,EAAGv0B,MACHu0B,EAAGv0B,KAAK4rC,cAIR,OAFAxtB,EAAY63D,aACZn0E,EAAOyL,GAAG,QAId,GAAIod,EAAYurD,cAAgBvrD,EAAYurD,aAAa3hD,EAAGjgB,MAGxD,OAFA8J,EAAY63D,aACZn0E,EAAOyL,GAAGod,EAAYurD,aAAa3hD,EAAGjgB,OAI1C,GACIigB,EAAG4hD,KAAKn2E,MACRu0B,EAAG4hD,KAAKn2E,KAAKo2E,gBACb7hD,EAAG4hD,KAAKn2E,KAAKo2E,eAAex+E,OAE5B,IAAK,IAAIY,EAAI,EAAGA,EAAI+7B,EAAG4hD,KAAKn2E,KAAKo2E,eAAex+E,OAAQY,IACpD41E,EAAwBd,QACpB/4C,EAAG4hD,KAAKn2E,KAAKo2E,eAAe59E,IAKxCs9E,EAAmBvhD,EAlCnB,CAmCJ,IAGAh+B,EAAW4+E,SAAW,GAEtB5+E,EAAWwI,IAAI,4BAA4B,SAAU0a,EAAOyrB,GACxD5O,EAAuB+/C,sBAAsBnxC,EACjD,IAEA3uC,EAAWwI,IAAI,6BAA6B,SAAU0a,EAAOoK,GACzDoxD,GACJ,IAEA1+E,EAAWwI,IAAI,yBAAyB,SAAU0a,EAAOoK,GACrD7qB,QAAQs9E,KACJ,uDACIzyD,EAAK0yD,cACL,gBACA1yD,EAAK2yD,QAGa,cAAtB3yD,EAAK0yD,cACLhgF,EAAW8K,WAAW,OAASwiB,EAAK2yD,OAAQ3yD,GAE5CttB,EAAW8K,WAAW,OAASwiB,EAAK0yD,cAAe1yD,EAE3D,IAEAttB,EAAWwI,IAAI,uBAAuB,SAAU0a,EAAOoK,GACnD,IAAI/b,EAAU6S,KAAKC,MAAMiJ,EAAKC,SACX,UAAfhc,EAAQkyB,IACR1D,EAAuB+/C,sBAAsBvuE,EAAQlM,SAErD06B,EAAuBmgD,2BACnB3uE,EAAQ4uE,QACR5uE,EAAQlM,QAGpB,IAEArF,EAAW28E,uBAOX,SAAgCyD,EAAQ7uE,EAAS8uE,GAC7C,IAAIC,EAAY,CACZN,cAAeK,GAAiB,aAChCJ,OAAQG,EACR7yD,QAAShc,GAGTi0D,EAAMl2D,SAASm2D,YAAY,eAC/BD,EAAIE,gBAAgB,0BAA0B,GAAM,EAAM,CACtDjc,EAAG62B,IAEPz3E,OAAO88D,cAAcH,EACzB,EAlBA38D,OAAO8tB,iBACH,0BAmBJ,SAAoCltB,GAChC,IAAIrG,EAASqG,EAAK82E,OAAO92B,EACrBrmD,IACApD,EAAW4+E,SAAS1uE,KAAK9M,GACzBs7E,IAER,IAvBI,GAkCJ/G,EAAe6I,SACnB,CAGA,SAASC,EAA2B7wE,GAWhC,MAAO,CACH8wE,QAAS,SAAUA,GACf,IAAIC,EAAYD,EAAQ75D,IAAItlB,QAAQ,SAWpC,OATIo/E,EAAY,GACZA,GAAaD,EAAQ75D,IAAIxlB,OAAS,GACI,GAhBlD,SAA+BwlB,GAE3B,IADA,IAAI+5D,EAAQ/5D,EAAIjlB,cACPK,EAAI,EAAGA,EAAI4+E,uBAAuBx/E,OAAQY,IAC/C,GAAI2+E,EAAMr/E,QAAQs/E,uBAAuB5+E,KAAO,EAC5C,OAAO,EAGf,OAAO,CACX,CAQY6+E,CAAsBJ,EAAQ75D,OAE9B65D,EAAQ75D,IAAM65D,EAAQ75D,IAAM,MAAQqwD,gBAKjCwJ,CACX,EACAv9E,SAAU,SAAUA,GAChB,GAC0B,GAAtB49E,WAAWC,SACX79E,EAASgoB,QAAQ,iBACnB,CACE,IACI09C,EADS,gBACMoY,KAAK99E,EAASgoB,QAAQ,kBACzC,GAAa,MAAT09C,GAAiBA,EAAMxnE,OAAS,EAAG,CAEnC,IADA,IAAI6/E,EAAY,EACPj/E,EAAI,EAAGA,EAAI4mE,EAAMxnE,OAAQY,IAC9Bi/E,KAAerY,EAAM5mE,GAGrBi/E,EAAYH,WAAWI,WACvB1+E,QAAQoZ,MACJ,iBACIqlE,EACA,yCACA/9E,EAASmyC,OAAOzuB,IAGhC,CACJ,CAEA,OAAO1jB,GAAYyM,EAAGylD,KAAKlyD,EAC/B,EACAi+E,cAAe,SAAUC,GAKrB,OAAOzxE,EAAGuX,OAAOk6D,EACrB,EAER,CAnvCAvhF,EAAQ4I,OAAO,gBAAiB,CAC5B,KACA,YACA,YACA,aACA,YACA,UACA,aACA,eACA,aACA,SACA,mBACA,UACA,yBACA,UACA,eACA,qBACA,oBACA,cACA,aACA,cACA,kBACA,oBAGJ5I,EAAQ4I,OAAO,iBAAiBg+B,SAAS,kBAAmB,CACxD46C,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACR7+C,OAAQ,IAGZ9iC,EAAQ4I,OAAO,iBAAiBi+B,SAAS,YAoSzC,WACI,IAAI+6C,EACJ,SAASC,EAAuB9kE,GAC5B,SAAUA,GACN,KAAK,EACD,OAAO6kE,EAAU,cACrB,KAAK,EACD,OAAOA,EAAU,uBACrB,KAAK,EACD,OAAOA,EAAU,wBACrB,KAAK,GACD,OAAOA,EAAU,yBACrB,KAAK,GACD,OAAOA,EAAU,oCACrB,KAAK,GACD,OAAOA,EAAU,uBAE7B,CAEA,SAASlJ,EAAqBnlE,GAC1BquE,EAAYruE,CAChB,CAEA,MAAO,CACHsuE,uBAAwBA,EACxBnJ,qBAAsBA,EACtB54C,KAAM,WACF,MAAO,CACH+hD,uBAAwBA,EACxBnJ,qBAAsBA,EAE9B,EAER,IApUA14E,EAAQ4I,OAAO,iBAAiBi+B,SAAS,aAsUzC,WACI,IAAIi7C,GAAe,EAEnB,SAAS3M,IACL,OAAO2M,CACX,CAEA,SAASpK,EAAgB30C,GACrB++C,EAAe/+C,CACnB,CAEA,MAAO,CACHoyC,eAAgBA,EAChBuC,gBAAiBA,EACjB53C,KAAM,WACF,MAAO,CACHq1C,eAAgBA,EAChBuC,gBAAiBA,EAEzB,EAER,IAzVA13E,EAAQ4I,OAAO,iBAAiBi+B,SAAS,WAiDzC,WACI,IAAIk7C,EAAaxgE,SAEjB,SAASygE,EAAQ13D,EAAW23D,GAEpB1gE,OAAO6iB,SAAS7iB,SAASwM,KAAKg0D,IAAaz/B,UAAY,IACvDy/B,EAAaxgE,UAGjB,IAAI2gE,EAAWC,cAAcjxE,eAAe,QAASoZ,GACjD83D,EAAgB9I,YAAY+I,MAAMnxE,eAClC,QACAoZ,GAGJ,OAAI43D,EACOp0E,aAAeo0E,EAASI,QACxBF,EACAt0E,aAAes0E,EAAcE,QAE7Bx0E,aAAem0E,CAE9B,CAEA,SAASM,EAAcj4D,EAAW23D,GAC9B,IAAIC,EAAWC,cAAcjxE,eAAe,QAASoZ,GAErD,OAAI43D,GAAYA,EAASM,WACdN,EAASM,WAETP,CAEf,CAEA,SAASQ,EAAiBC,GACtBP,cAAgBO,CACpB,CAEA,MAAO,CACHjmE,QAASulE,EACT56C,cAAem7C,EACfI,iBAAkBF,EAClB3iD,KAAM,WACF,MAAO,CACH8iD,iBAAkB,WACd,OAAOT,aACX,EACA1lE,QAASulE,EACT56C,cAAem7C,EACfI,iBAAkBF,EAE1B,EAER,IArGAziF,EAAQ4I,OAAO,iBAAiBi+B,SAAS,UAAWuuC,GAEpDp1E,EAAQ4I,OAAO,iBAAiB4sC,OAAO8gC,GACvCt2E,EAAQ4I,OAAO,iBAAiBi6E,IAAIlL,GACpC33E,EACK4I,OAAO,iBACPk6E,QAAQ,qBAAsBnC,GAEnCrK,EAAextE,QAAU,CACrB,iBACA,qBACA,gBACA,kBACA,qBACA,kCACA,oBACA,oBACA,kBACA,uBAEJ6uE,EAAY7uE,QAAU,CAClB,aACA,QACA,KACA,eACA,UACA,SACA,qBACA,WACA,aACA,yBACA,iBACA,eACA,uBACA,YACA,UACA,0BACA,uBACA,YACA,kBACA,mBACA,UACA,6BACA,qBAEJ63E,EAA2B73E,QAAU,CAAC,MACtCssE,EAAatsE,QAAU,CAAC,oBAAqB,sBAyvC7CC,OAAO8tB,iBAAiB,QAvFxB,WACI,IAAIksD,EAAQl0E,0BAA0B,QAAShJ,SAASC,MACnDi9E,IACDA,EAAQ3tE,uBAGZ,IAAI4tE,EAAY1mD,EAAE2mD,WAClB3mD,EAAE4mD,KAAK,CACHn8D,IAAKjZ,aAAe,yCACpBq1E,SAAU,OACVvxC,OAAQ,MACRvmB,QAAS,CACL,aAAc03D,KAEnB3/E,MAAK,SAAUggF,GACdjB,cAAgBiB,EAAQC,cAExBC,YAAcF,EAAQG,YACtBloE,qBAAuB+nE,EAAQhoE,qBAC/BqrC,aAAe28B,EAAQI,aACvBluE,OAAS8tE,EAAQ/tE,OACjB8lC,gBAAkBioC,EAAQK,gBAC1BT,EAAUpoE,SACd,IAEA,IAAI8oE,EAASpnD,EAAE2mD,WAEfh1E,WAAaY,0BAA0B,MAAOhJ,SAASC,MACvD,IAAI69E,EAAO90E,0BAA0B,OAAQhJ,SAASC,MAClD89E,EAAc,GAEdD,IACAC,EAAc,SAAWD,GAG7BrnD,EAAE4mD,KAAK,CACHn8D,IAAKjZ,aAAe,kCAAoC81E,EACxDT,SAAU,OACV93D,QAAS,CACL,aAAc03D,KAEnB3/E,MACC,SAAUumB,GACFA,EAAYhc,OAA8B,IAArBgc,EAAYhc,OACjCE,oBAAoB8b,EAAYhc,MAAOgc,EAAYpnB,IAEvD89D,SAAW12C,EAAYlmB,KACvBsrB,YAAcpF,EAAY1G,YAC1BgF,iBAAmB0B,EAAY7G,UAC/B65D,wBAA6D,GAAnChzD,EAAYk6D,qBACtCH,EAAO9oE,SACX,IACA,WACI8oE,EAAO9oE,SACX,IAGJ,IAAIkpE,EAAcxnD,EAAE2mD,WACpB3mD,EAAEi5B,KAAKmuB,GAAQtgF,MAAK,WACZuV,oBAAoB,uBAAyB0nD,SAAS99D,GAAK,EAC3D+5B,EAAE4mD,KAAK,CACHn8D,IAAKjZ,aAAe,4CACpBq1E,SAAU,OACVvxC,OAAQ,MACRvmB,QAAS,CACL,aAAc03D,KAEnB3/E,MACC,SAAU2wB,GACNgwD,gBAAkBhwD,EAClB+vD,EAAYlpE,SAChB,IACA,WACIkpE,EAAYlpE,SAChB,IAGJkpE,EAAYlpE,SAEpB,IAGA0hB,EAAEi5B,KAAKytB,EAAWU,EAAQI,GAAa1gF,MAAK,WACxCpD,EAAQgkF,UAAUx0E,SAAU,CAAC,iBAAkB,CAAEy0E,UAAU,GAC/D,GACJ,GAIH,CA/0CD,CA+0CGl7E,OAAO/I,Q,aC/0CV,SAAWA,GAYV,SAASkkF,EAAehkF,EAAYssB,EAAWjsB,EAAUuP,EAAIwkB,EAAa7oB,EAAQ2W,EAAS9hB,EAAYo1C,EACtGtrC,EAAW+5E,EAAuBtvE,EAAcs3B,EAAuBi4C,EAAY75E,EAAgBnK,EAC7FikF,EAAyBlrE,EAAiBka,EAAiBgG,GACjE,IAAI14B,EAAKC,KA2BT,SAAS0jF,IAAoC,IAAAC,EACxC5zE,EAAOyR,EAAQuP,kBACnB,MAAO,wBAAPpI,OAAuC,QAAvCg7D,EAA+B5zE,aAAI,EAAJA,EAAMpO,UAAE,IAAAgiF,EAAAA,GAAK,EAC7C,CAwEA,SAAS/oD,EAASE,EAAO3W,GACrBA,EACFtZ,EAAOyL,GAAGwkB,EAAO3W,GAGjBtZ,EAAOyL,GAAGwkB,EAEZ,CAyEA,SAAS8oD,EAAgBzwD,GACxB7zB,EAAWgkD,eAAiB,GAE5B,IAAI,IAAI/hD,EAAI,EAAGA,EAAI4xB,EAAUxyB,OAAQY,IACN,KAA3B4xB,EAAU5xB,GAAG2W,YACf5Y,EAAWgkD,eAAe9zC,KAAK2jB,EAAU5xB,GAAG4W,SAK/C,CA2DA,SAAS0rE,EAAS96E,GACjBwE,gBAAgBm2E,KAAqC,GACjDpkF,EAAW2rB,aACT64D,cACJn6E,EAAeuhB,kBAAkB,wBAAwB,IAI9CniB,GAAQA,EAAKg7E,iBAAmBh7E,EAAKg7E,gBAAgBpiF,KACrDrC,EAAWo5B,kBAAkB3vB,EAAKg7E,gBAAgBpiF,IAC9CoH,EAAKg7E,gBAAgB7xD,eAAiBnpB,EAAKg7E,gBAAgB7xD,cAAcvxB,OAAS,GAClF83B,EAAkBO,eAAejwB,EAAKg7E,gBAAgB7xD,cAAc,IAGtF,CAgEA,SAAS8xD,EAAYC,GACpBlkF,EAAGmkF,WAAW,CACbnoE,KAAM,mCAAmC5V,QAAQ,SAAU89E,EAAYhxE,MACvEkxE,aAAa,EACbC,yBAA0Bl3E,aAAe,sEACzCqH,UAAWjV,EAAWiV,UACtB8vE,KAAMJ,GAER,CAsEA,SAASK,EAAQC,GAChB7kF,EAAW,sBAAsB8C,MAAK,SAAUwH,GAC/C,IAAIw6E,EAAax6E,EAAYy6E,uBAAuBt+E,QAAQ,UAAWo+E,EAAatxE,MAEpFlT,EAAGmkF,WAAW,CACbnoE,KAAMyoE,EACNL,aAAa,IACX,WACFrvC,EAAU3rC,MACX,IAAG,WACF2rC,EAAUn8B,MACX,GACD,GACD,CAlaA5Y,EAAG6X,WA8BH,WAuCC,GAtCA6rE,EAAwBiB,KAAKllF,EAAamZ,MAE7BnZ,EAAak1C,UACbp1C,EAAWqlF,SAAU,GAGlC5kF,EAAG6kF,YAAYpjE,GACXzJ,oBAAoB,yBAA2ByJ,EAAQyJ,cAC1DlrB,EAAGkxC,kCAEA3xC,EAAW84E,aAAe94E,EAAW84E,YAAe,GACvD7sC,EAAsB+B,oBAAoB,CACzCu3C,sBAAuBvlF,EAAW84E,YAAe,IAInD1kD,EAAYzN,cAAczjB,MAC1B,SAA4BC,GAC3BnD,EAAW8iB,SAAW3f,EAASsG,KAC/B,IAAK,IAAIxH,EAAI,EAAGA,EAAIjC,EAAW8iB,SAASzhB,OAAQY,IAC/CjC,EAAW8iB,SAAS7gB,GAAGm0B,YAAc,SAAgBp2B,EAAW8iB,SAAS7gB,GAAG8gB,YAAYmF,UAAU,EAAG,EACvG,IAEahG,EAAQyJ,cACRthB,EAAem7E,eAAe,sBAAsBtiF,MAAK,SAAUC,GACzC,SAAlBA,EAASsG,KACTzJ,EAAWoL,oBAAqB,EAET,UAAlBjI,EAASsG,OACdzJ,EAAWoL,oBAAqB,EAExC,IAGwB,MAAjCpL,EAAWoL,qBACdpL,EAAWoL,mBAAqBC,gBAAgB,uBAG7C6W,EAAQyJ,eAAiBtgB,gBAAgB+4E,KAGhCx0E,EAAG6B,IAAI,CACH2iB,EAAYqxD,mBAHsB,GAIlCp7E,EAAem7E,eAAe,0BAC/BtiF,MAAK,SAAUE,GACd,IAAIsiF,EAAkBtiF,EAAO,GAAGqG,KAC5Bk8E,EAA0C,SAAnBviF,EAAO,GAAGqG,KAEjCi8E,GAAmBC,EACrC13E,gBAAgBm2E,KAAqC,GAC5BsB,IAAoBC,GAC3BllF,EAAGmlF,kBAEX,QACG,CACH,IAAMC,EAA2B12E,kBAAkB,uBAC/C02E,GACAz2E,qBAAqB,uBAGzB,IAAI02E,EAAYn3E,0BAA0B,YAAahJ,SAASC,MAC5DigF,GAA0C,SAAdC,GAC5BrlF,EAAGmlF,iBAAiBxhE,KAAKC,MAAMwhE,GAEvC,CAETvB,EAAgBT,gBACjB,EAjGApjF,EAAG6kF,YAoHH,SAAqB70E,GACpBrQ,EAAW2lF,IAAIl3D,YAAY3G,UAAU,EAAG,IAAIhlB,MAAK,WAChDlD,EAAWq4E,aAAa39D,UACxB2G,OAAO80D,OAAOtnD,YAAY3G,UAAU,EAAG,GACxC,IAEA9nB,EAAWm4E,UAEXv4E,EAAW8K,WAAW,wBACvB,EA5HArK,EAAGkxC,gCA8HH,WACCh9B,EAAag9B,kCAAkCzuC,MAE/C,SAAgDC,GACzCA,EAASsG,KAIfhJ,EAAGmxC,iBACJ,GACD,EAvIAnxC,EAAGmxC,gBAyIH,WACCj9B,EAAai9B,kBAAkB1uC,MAE/B,SAAgCC,GAE3BA,GAAoC,GAAxBA,EAASsG,KAAKpI,QAA+C,GAAhC8B,EAASsG,KAAK,GAAGovB,cAGrD11B,GAAoC,GAAxBA,EAASsG,KAAKpI,QAAe8B,EAASsG,KAAK,GAAGovB,YAAc,EAChFmsD,EAAQ7hF,EAASsG,KAAK,IAEdtG,GAAYA,EAASsG,KAAKpI,OAGpC,GACD,EAvJAZ,EAAGulF,sBA4LH,WACChmF,EAAWimF,mBAAoB,CAC1B,EA7LNxlF,EAAGylF,uBAgXH,SAAgCC,GAC/B1lF,EAAG2lF,eAAiBD,EACpBnmF,EAAWsQ,aAAa+1E,yBAA2BF,EAE/C1lF,EAAG2lF,eAAiB3lF,EAAG6lF,eAC1BtmF,EAAWsQ,aAAa+1E,wBAA0BrmF,EAAWsQ,aAAai2E,6BAA+B9lF,EAAG6lF,aAC5Gh6D,EAAU7jB,OAAOhI,EAAG+lF,aAEtB,EAvXM/lF,EAAGmkF,WAmQT,SAAoBtvC,EAAQmxC,EAAQC,GACnC,GAAIjmF,EAAGkmF,cACNlmF,EAAGmmF,YAAY12E,KAAK,CAAEolC,OAAQA,EAAQmxC,OAAQA,EAAQC,QAASA,QADhE,CAKAjmF,EAAGkmF,eAAgB,EAEdD,IACJA,EAAU,WAAc,GAErBD,GACHA,IAED,IAAII,EAAgB38E,EAAUL,KAAK,CACtByN,YAAa2B,EAAgBsD,QAAQ,cAAe,8CAChE5T,WAAYm+E,EACZvvE,aAAc,KACdiF,OAAQ84B,EACR99B,kBAAkB,IAGnBqvE,EAAc3jF,KAAKwjF,EAASA,GAC5BG,EAAc3jF,MAAK,WAElB,GADAzC,EAAGkmF,eAAgB,EACflmF,EAAGmmF,YAAYvlF,OAAQ,CAC1B,IAAIooD,EAAIhpD,EAAGmmF,YAAYj2E,OAAOlQ,EAAGmmF,YAAYvlF,OAAS,EAAG,GAAG,GAC5DZ,EAAGmkF,WAAWn7B,EAAEnU,OAAQmU,EAAEg9B,OAAQh9B,EAAEi9B,QACrC,CACD,IAEAI,EAAiBl+E,QAAU,CAAC,YA3B5B,CA6BA,SAASk+E,EAAiB58E,GAChBxJ,KAENyY,MAEH,WACCjP,EAAUmP,MACX,CACD,CACD,EA5SM5Y,EAAGmlF,iBA6LH,SAA0BmB,GAoBtB,SAASC,EAAW7iE,EAAcD,EAAO+iE,GAoBrC,SAASC,EAAuBh9E,GAEhC,MArBqB5I,IAAjB6iB,IACAA,GAAe,GAEnBja,EAAUL,KAAK,CACXF,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCjmB,YAAa1J,aAAe,4CAC5Bu4B,qBAAqB,EACrB0I,eAAe,EACflmC,WAAYu+E,EACZ3vE,aAAc,KACdiF,OAAQ,CACJ2H,aAAcA,EAChCD,MAAOA,EACP+iE,SAAUA,GAEIzvE,kBAAkB,IACnBtU,KAAKqhF,EAAUA,GAElB2C,EAAuBt+E,QAAU,CAAC,aAK9C5I,EAAWwI,IAAI,0BAA0B,SAAUgB,EAAGC,GACrDS,EAAUmP,KAAK5P,GACXA,EAAK09E,UACR7rD,EAAS7xB,EAAK09E,SAEJ,GACJ,CAhDInnF,EAAWqlF,QACXrlF,EAAW8K,WAAW,qBAItBi8E,EACAC,GAAW,EAAOD,GAElB18E,EAAe4Z,kBAAkB/gB,MAAK,SAAUC,GAC5C,GAAIA,EAASsG,MAA0B,KAAlBtG,EAASsG,MAAiC,OAAlBtG,EAASsG,KAAe,CACnF,IAAMA,EAAO2a,KAAKC,MAAMlhB,EAASsG,YAEPnI,IAArBmI,EAAK6a,cAAkD,IAArB7a,EAAK6a,cAA8C,IAArB7a,EAAK6a,aAAwC,OAAf7a,EAAKya,QACvG8iE,EAAWv9E,EAAK6a,YAAa7a,EAAKya,MAAOza,EAAKw9E,SACjC,CACJ,GAkCd,EA/OAxmF,EAAGmmF,YAAc,GAEjB5mF,EAAWs7B,SAAWA,EACtBt7B,EAAWonF,aAkGX,SAAsBC,EAAWC,QACbhmF,IAAhBgmF,IAA6C,IAAhBA,GAC/Bj4E,YAAW,SAASk4E,GACnBj4E,SAASC,eAAeg4E,GAAK/3E,OAC9B,GAAG,EAAI63E,EAET,EAtGArnF,EAAWwnF,QAAUtD,EAAWuD,GAAG,UACnCznF,EAAWy8B,OAASynD,EAAWuD,GAAG,UAElCznF,EAAWwnF,QAAUtD,EAAWwD,GAAG,UAAU,SAAS7e,GACrD7oE,EAAWwnF,QAAU3e,CACtB,IACA7oE,EAAWy8B,OAASynD,EAAWwD,GAAG,UAAU,SAAS7e,GACpD7oE,EAAWy8B,OAASosC,CACrB,IAEA7oE,EAAWoL,mBAAqB,KAsIhC3K,EAAG6X,aAEHtY,EAAWwI,IAAI,uCAkLf,SAAsC0a,EAAOoK,GAC5CttB,EAAWsQ,aAAa6rE,8BAAgC7uD,EAAKC,QAC7DvtB,EAAWk1B,SACZ,IApLAl1B,EAAWwI,IAAI,iCAsLf,SAAiC0a,EAAOoK,GACvCttB,EAAWsQ,aAAa+1E,0BAA4B/4D,EAAKC,QACzDvtB,EAAWk1B,SACZ,IAxLAl1B,EAAWwI,IAAI,uBAkMT,SAAwB0a,EAAOoK,GAC3B,GAAKttB,EAAWo8E,OAAhB,CAIT,IAAI7qE,EAAU6S,KAAKC,MAAMiJ,EAAKC,SAE9BvtB,EAAWsQ,aAAai2E,6BAA+BzmF,EAAQ8E,KAAK5E,EAAWsQ,aAAa+1E,yBAE5FrmF,EAAWimF,mBAAoB,EAE/B5lF,EAASI,EAAGulF,sBAAuB,MAEnCvlF,EAAG6lF,aAAe/0E,EAAQo2E,sBAC1BlnF,EAAG+lF,YAAcl6D,EAAU7rB,EAAGylF,uBAAwB,GAAI,GAAG,EAAOzlF,EAAG6lF,aAAe,IACtF7lF,EAAG2lF,cAAgB,CAZV,CAaV,IAjNApmF,EAAWwI,IAAI,kBA6NT,SAAmB0a,EAAOoK,GACtB,GAAKttB,EAAWo8E,OAAhB,CAIT,IAAI7qE,EAAU6S,KAAKC,MAAMiJ,EAAKC,SAC9B9qB,QAAQC,IAAI6O,GACZvR,EAAWsQ,aAAas3E,aAAer2E,EACnCjC,SAASu4E,WACZ7C,EAAQzzE,IAGR0yE,EAAsB9pC,GAAG,aACzB/d,EAAEvzB,QAAQ6+E,GAAG,SAAU,WACtBzD,EAAsB5pC,MACtB2qC,EAAQzzE,GAER6qB,EAAEvzB,QAAQi/E,IAAI,QACf,IAfQ,CAiBV,IAhPM9nF,EAAWwI,IAAI,uBAkJrB,SAAwB0a,EAAOoK,GAC9B,IAAI/b,EAAU6S,KAAKC,MAAMiJ,EAAKC,SAC9B9qB,QAAQC,IAAI6O,GAERjC,SAASu4E,WACZnD,EAAYnzE,IAGZ0yE,EAAsB9pC,GAAG,sBACzB/d,EAAEvzB,QAAQ6+E,GAAG,SAAU,WACtBzD,EAAsB5pC,MACtBqqC,EAAYnzE,GAEZ6qB,EAAEvzB,QAAQi/E,IAAI,QACf,IAEF,IAhKM9nF,EAAWwI,IAAI,4BAA4B,SAAU0a,EAAOoK,GACxD,IAAIzI,EAAST,KAAKC,MAAMiJ,EAAKC,SAC7BvtB,EAAW8K,WAAW,wBAAyB+Z,EACnD,IAEA7kB,EAAWwI,IAAI,4BAA6Bu/E,QAAQC,OAAOC,KAAKC,aAAaz1C,SAEnFzyC,EAAWwI,IAAI,2BAA4B+7E,GAErCvkF,EAAWwI,IAAI,oBAErB,SAAyBgB,EAAGqqB,GAC3BywD,EAAgBzwD,EACjB,GAmPD,CAEA,SAASs0D,IAET,CAEA,SAASC,EAAmBpoF,EAAY+lD,EAAY7lD,EAAci3B,EAAW6uB,EAAqBC,EAAkB9I,EAC7G3C,EAAiBl6C,EAAS42B,EAAU7sB,EAAgB8uB,EAAmBvpB,GAC7E,IAAInP,EAAKC,KACTD,EAAGylD,eAAiBx3C,eAA4B,YAChDjO,EAAGgyB,SAAW,GACRhyB,EAAG4nF,mBAAqB,EAExB,IAAIC,EAAwB14E,EAAG2J,QAC3BgvE,EAA+BD,EAAsBxuE,QAKzDrZ,EAAG0lD,WAYT,WACCJ,EAAWkB,eAAexmD,EAAGylD,gBAAgBhjD,MAE7C,SAA2BC,GAC1B1C,EAAG4lD,KAAOljD,EAASsG,KACnBhJ,EAAG4lD,KAAK/uB,UAAY,IAAIH,EAAU12B,EAAG4lD,KAAK/uB,WAE1C,IAAI8mB,EAAe39C,EAAG4lD,KAAK/uB,UAAUmkB,WAAW,SAC5C4C,EAAWmqC,iBACTnqC,GAAwB,IAAZA,IAAmBD,EAAa/8C,OAAS,IAC1Dg9C,EAAWD,EAAa,GAAG7wB,QAAQlI,UAGpCm1B,EAAgBsC,YAAY,CAC3Br1B,MAAOhnB,EAAG4lD,KAAK7H,MACfzB,YAAat8C,EAAG4lD,KAAKzK,YACrB8K,SAAUjmD,EAAG4lD,KAAKM,SAClBlI,IAAKJ,GAEP,GACD,EA/BM59C,EAAGgoF,oBAIH,WACIzoF,EAAW29E,oBAAmB,GAAMz6E,MAAK,SAAUu6E,GAC5CA,GACCtkD,EAAkBO,eAAe+jD,EACzC,GACJ,EAPAtgC,EAAqBE,qBAAuB,MA+BlD58C,EAAGioF,aAEG,WACI,OAAO,IAAMjoF,EAAG4nF,kBACpB,EAEN5nF,EAAGmH,QAAU,aA+HNnH,EAAGylD,eAAiB,EACzBzlD,EAAG0lD,cAMuD,IAAtDnmD,EAAWwM,aAAautE,UAAUC,iBACrC3vE,EAAes+E,mBAAmBzlF,MArIpC,SAAiCC,GAC5BA,EAASsG,MAA0B,KAAlBtG,EAASsG,MAAiC,OAAlBtG,EAASsG,MACtChJ,EAAGmoF,cAAgBxkE,KAAKC,MAAMlhB,EAASsG,MACvChH,QAAQC,IAAI,iBAAkBjC,EAAGmoF,eAEjCnoF,EAAGmoF,cAAcC,WAAW3qD,MAAQ,QACpCoqD,EAAsB5tE,QAAQ,KAI7Cja,EAAGmoF,cAAgB,CAClBC,WAAY,CACXxnD,MAAM,EACNjkB,MAAO,CAAEa,QAAS,IAClB6qE,WAAY,GACSC,WAAY,MACZC,YAAY,EACZC,mBAAoB,CAChB,CACIrmE,UAAWmF,iBACXzlB,MAAO,+BAGf4mF,iBAAkB,CACd,CACItmE,UAAWmF,iBACXzlB,MAAO,yLAGf6mF,cAAe,CACX7mF,MAAO,SAGjC8mF,WAAY,CACX/nD,MAAM,EACNoiB,OAAQ,SACRhnC,KAAM,GACNssE,WAAY,MACS7nE,MAAO,EACP+nE,mBAAoB,CAChB,CACIrmE,UAAWmF,iBACXzlB,MAAuB,UAAhBusB,YAA0B,QAAU,SAGnDw6D,mBAAoB,CAChB/mF,MAAO,QAGjCgnF,gBAAiB,CAChBjoD,MAAM,EACeoiB,OAAQ,SAC7BhtB,OAAQ,iBACRha,KAAM,GACNssE,WAAY,OACS7nE,MAAO,EACP+nE,mBAAoB,CAChB,CACIrmE,UAAWmF,iBACXzlB,MAAuB,UAAhBusB,YAA0B,qCAAuC,mBAGhFw6D,mBAAoB,CAChB/mF,MAAO,QAGjCinF,YAAa,CACZloD,MAAM,EACeoiB,OAAQ,SAC7BhtB,OAAQ,aACRha,KAAM,GACNssE,WAAY,OACS7nE,MAAO,EACP+nE,mBAAoB,CAChB,CACIrmE,UAAWmF,iBACXzlB,MAAuB,UAAhBusB,YAA0B,cAAgB,eAGzDw6D,mBAAoB,CAChB/mF,MAAO,QAGjCknF,QAAS,CACRnoD,MAAM,EACNgnD,mBAAoB,GACpBoB,KAAM,OACNC,UAAU,GAEXC,MAAO,CACNtoD,MAAM,IAKT5gC,EAAG4nF,qBAAuB5nF,EAAGmoF,cAAcY,QAAQI,YAE/CnpF,EAAG4nF,oBAAsB,IAC5B5nF,EAAG4nF,mBAAqB,IAET5nF,EAAGmoF,cAAcY,SAA6C,SAAlC/oF,EAAGmoF,cAAcY,QAAQC,OACrDhpF,EAAGopF,aAAe,CACdC,YAAarpF,EAAG4nF,mBAAqB,IAAM5nF,EAAG4nF,mBAAqB,EACnEqB,UAAgD,IAAtCjpF,EAAGmoF,cAAcY,QAAQE,WAInDjpF,EAAGmoF,cAAcY,SAA6C,SAAlC/oF,EAAGmoF,cAAcY,QAAQC,OACpDhpF,EAAG4nF,mBAAqB,IAC3B5nF,EAAG4nF,mBAAqB,GACrB5nF,EAAG4nF,mBAAqB,IAC3B5nF,EAAG4nF,mBAAqB,IAGdroF,EAAWg+E,mBAAmB96E,MAAK,SAAC6mF,GAE5BtpF,EAAGmoF,cAAcC,WAAWmB,8BAD5BD,EAC4DtpF,EAAGmoF,cAAcC,WAAWoB,gCAE5BxpF,EAAGmoF,cAAcC,WAAWqB,sBAEhG,IAEA5B,EAAsB5tE,QAAQ,GAC3C,IAcS,IAAI+3C,EAAQ,CACR81B,EACAvoF,EAAWwyB,qBAGf5iB,EAAG6B,IAAIghD,GAAOvvD,MAAK,WACf,IAAIinF,EAAW,GACf,GAAInqF,EAAWyyB,SAAU,CAEpC,IAAI23D,EAAW3pF,EAAG4nF,mBACd5nF,EAAGmoF,cAAcY,SAA6C,SAAlC/oF,EAAGmoF,cAAcY,QAAQC,MAAmBhpF,EAAG4nF,mBAAqB,IACjF+B,EAAW,GAGf,IAAK,IAAInoF,EAAI,EAAGA,EAAIjC,EAAWyyB,SAASpxB,QAAUY,EAAImoF,EAAUnoF,IAC5DkoF,EAASj6E,KAAKlQ,EAAWyyB,SAASxwB,GAE1C,CACAxB,EAAG4pF,kBAAoBrqF,EAAWyyB,SAASpxB,OAC3CZ,EAAGgyB,SAAW03D,CAClB,GACV,CACD,CAjpBArqF,EAAQ4I,OAAO,iBAAiBC,WAAW,OAAQq7E,GACnDlkF,EAAQ4I,OAAO,iBAAiBC,WAAW,gBAAiBw/E,GAC5DroF,EAAQ4I,OAAO,iBAAiBC,WAAW,YAAay/E,GAExDpE,EAAep7E,QAAU,CAAC,aAAc,YAAa,WAAY,KAAM,eAAgB,SAAU,UAAW,aAAc,YACzH,YAAa,wBAAyB,qBAAsB,wBAAyB,aAAc,iBAC7F,eAAgB,0BAA2B,UAAW,yBAA0B,qBACvFu/E,EAAuBv/E,QAAU,GACjCw/E,EAAmBx/E,QAAU,CAAC,aAAc,sBAAuB,eAAgB,YAAa,sBAC/F,mBAAoB,uBAAwB,kBAAmB,UAAW,WAAY,iBAAkB,oBAAqB,KAyoB9H,CAnpBD,CAmpBGC,OAAO/I,Q,aCnpBV,SAAUA,GAeT,SAASwqF,EAAoBjgF,EAAgBuF,EAAI4U,GAC7C9jB,KAAK6pF,QAAU,GAEf7pF,KAAK8pF,UAAY,WACb,GAAI9pF,KAAK+pF,QACL,OAAO/pF,KAAK+pF,QAEhB,IAAIlxE,EAAQ3J,EAAG2J,QAOf,OANA7Y,KAAK+pF,QAAUlxE,EAAMO,QAErBzP,EAAewf,MAAMqyB,kBAAkB,UAAW,0BAA2B,GAAGh5C,MAAK,SAAUC,GAC3FoW,EAAMmB,QAAQvX,EAASsG,KAC3B,IAEO/I,KAAK+pF,OAChB,EAEA/pF,KAAKgqF,UAAY,SAAU7tE,EAAK03B,EAAOtsB,GACnCvnB,KAAK8pF,YAAYtnF,MAAK,SAAUuG,GACvBA,GAAoC,SAA5BA,EAAKnH,MAAMV,eAGxB4iB,EAAMI,IAAIhX,aAAe,2BAA4B,CAAEiX,OAAQ,CAAEhI,IAAKA,EAAK03B,MAAOA,EAAOtsB,QAASA,IACtG,GACJ,CACJ,CAEA,SAAS0iE,EAA0BxG,GAelC,MAdgB,CACfj/D,SAAU,IACV8G,KAGD,SAAsB1F,EAAOskE,EAAM3+D,GAClCk4D,EAAwB0G,SAAS3nF,MAAK,SAAU4nF,GAC1CA,EAAW7+D,EAAM8+D,mBAGtBH,EAAKx+D,QACN,GACD,EAGD,CAEA,SAAS+3D,EAAwBv0E,GAChC,IAAIo7E,EAAmB,CAAC,EACpBC,EAAer7E,EAAG2J,QAEtB,MAAO,CACN6rE,KAID,SAAc0F,GACb,GAAKA,IACJA,EAAaz/E,gBAAgB,sBAD9B,CAOA4C,gBAAgB,oBAAqB68E,GAErCA,EAAaA,EAAW/7D,MAAM,KAC9B,IAAK,IAAI9sB,EAAI,EAAGA,EAAI6oF,EAAWzpF,OAAQY,IACtC+oF,EAAiBF,EAAW7oF,KAAM,EAGnCgpF,EAAavwE,QAAQswE,EATrB,CAUD,EAnBCH,OAqBD,WACC,OAAOI,EAAanxE,OACrB,EACD,CAzFAha,EAAQ4I,OAAO,iBAAiBuc,UAAU,aA2FvC,WAmBI,MAlBgB,CACZimE,QAAS,UACT5kE,MAAO,CACH6kE,gBAAiB,cAErBn/D,KAGJ,SAAuB1F,EAAOgF,EAASnI,EAAYioE,GAC/CA,EAAQC,YAAYC,UAAY,SAAUC,GACtC,OAAOA,GAAcjlE,EAAM6kE,eAC/B,EAEA7kE,EAAMzT,OAAO,mBAAmB,WAC5Bu4E,EAAQI,WACZ,GACJ,EAGJ,IA9GH1rF,EAAQ4I,OAAO,iBAAiBuc,UAAU,SAmK1C,WAoBC,MAnBgB,CACfC,SAAU,IACV8G,KAGD,SAAmB1F,EAAOgF,EAASW,GAClC,IAAIizD,EAAO,GAEXjzD,EAAMw/D,SAAS,SAAS,SAAU5oD,GACjCq8C,EAAOr8C,CACR,IAEAvX,EAAQogE,KAAK,SAAS,WACjBxM,GAAgB,IAARA,IACXr2E,OAAOlD,SAASC,KAAOs5E,EAEzB,GACD,EAGD,IAvLAp/E,EAAQ4I,OAAO,iBAAiBuc,UAAU,mBAAoB0lE,GAC9D7qF,EAAQ4I,OAAO,iBAAiByd,QAAQ,0BAA2Bg+D,GACnErkF,EAAQ4I,OAAO,iBAAiByd,QAAQ,sBAAuBmkE,GAE/DK,EAA0B/hF,QAAU,CAAC,2BACrCu7E,EAAwBv7E,QAAU,CAAC,MAKnC0hF,EAAoB1hF,QAAU,CAAC,iBAAkB,KAAM,QA8KvD,CA3LD,CA2LGC,OAAO/I,Q,aC3LV,SAAWA,GAkCP,SAAS6rF,EAAUvrF,GACf,OAAO,SAAS2iC,GACZ,IAAI6oD,EAAUxrF,EAAWmyC,QAAQ,iBACjC,OAAOlxB,OAAO0hB,GAAM8oD,kBAAavqF,EAAWsqF,EAAQllF,WACxD,CACJ,CAkBA,SAASolF,EAAapU,GACrB,IAAIqU,EAAQ,CAAC,EAEV,SAASC,EAAqBz3C,GAC7B,GAAIw3C,EAAMx3C,GACH,OAAOw3C,EAAMx3C,GAGnBw3C,EAAMx3C,GAAS,yBACfmjC,EAAciK,uBAAuBptC,GAAOrxC,MAAK,SAAU2/B,GACjDkpD,EAAMx3C,GAAS1R,CACzB,IAAG,SAAUlmB,GACZla,QAAQC,IAAI,8BAAgCia,GAC5CovE,EAAMx3C,GAAS,4BAChB,GAEF,CAGA,OAFAy3C,EAAqBC,WAAY,EAE1BD,CACX,CA5EAlsF,EAAQ4I,OAAO,iBAAiBX,OAAO,WAAW,WAC9C,OAAO,SAAUg7B,EAAMmpD,GACnB,GAAInpD,EAAM,CACN,IAAIlF,EAAOxc,SACX,GAAI6qE,EAAO,CACP,IAAIjhE,EAAO,IAAIzB,KACfqU,EAAOA,EAAKI,IAAIhT,EAAKkhE,oBAAqB,UAC9C,CACA,IAAInuD,EAAK3c,OAAO0hB,GACZmB,EAAW7iB,OAAO6iB,SAASlG,EAAGnQ,KAAKgQ,IACvC,OAAO9P,KAAKC,MAAMkW,EAASke,WAAa,KAAOle,EAASgb,UAAY,GACxE,CACJ,CACJ,IAEAp/C,EAAQ4I,OAAO,iBAAiBX,OAAO,QAAQ,WAC3C,OAAO,SAAUwsC,EAAOhzB,GACpB,GAAIgzB,EACA,OAAOlzB,OAAOkzB,GAAOhzB,OAAOA,GAAU,IAC9C,CACJ,IAEAzhB,EAAQ4I,OAAO,iBAAiBX,OAAO,QAAQ,WAC3C,OAAO,SAAUwsC,GACb,GAAIA,EACA,OAAOlzB,OAAOkzB,GAAOhzB,OAAO,KACpC,CACJ,IAEAzhB,EAAQ4I,OAAO,iBAAiBX,OAAO,YAAa4jF,GAEpDA,EAAU/iF,QAAU,CAAC,cASrB9I,EAAQ4I,OAAO,iBAAiBX,OAAO,YAAY,WAC/C,OAAO,SAAUwsC,EAAO23C,GACpB,GAAI33C,EAAO,CACP,GAAI23C,EAAO,CACP,IAAI9kD,EAAI/lB,OAAOkzB,GACf,OAAOnN,EAAErJ,SAASqJ,EAAEglD,YAAa,KAAK7qE,OAAO,OACjD,CACA,OAAOF,OAAOkzB,GAAOhzB,OAAO,OAChC,CACJ,CACJ,IAEAzhB,EAAQ4I,OAAO,iBAAiBX,OAAO,SAAU+jF,GAEjDA,EAAaljF,QAAU,CAAC,WAuB3B,CA9ED,CA8EGC,OAAO/I,Q,aC9EV,SAAUA,GAwCN,SAASs0B,EAAY5P,EAAOjZ,EAAQjL,GACnCI,KAAK2rF,yBAA2B,SAAUjiE,EAAW+E,GACpD,IAAIqM,EAAQjwB,EAAOqZ,IAAIwF,GAClBoR,IAGAA,EAAM/xB,KAEJ+xB,EAAM/xB,KAAKo2E,iBACjBrkD,EAAM/xB,KAAKo2E,eAAiB,IAF5BrkD,EAAM/xB,KAAO,CAAEo2E,eAAgB,IAIhCrkD,EAAM/xB,KAAKo2E,eAAiBrkD,EAAM/xB,KAAKo2E,eAAex2D,OAAO8F,GAC9D,EAEGzuB,KAAKg8E,4BAA8B,WAC/B,OAAOl4D,EAAMI,IAAIhX,aAAe,uCACpC,EAEAlN,KAAKg0C,gBAAkB,WACnB,OAAOlwB,EAAMI,IAAIhX,aAAe,2BACpC,EAEAlN,KAAKimB,YAAc,WACf,OAAOnC,EAAMI,IAAIhX,aAAe,0BACpC,EAEAlN,KAAK+kF,mBAAqB,SAAU/tD,GAChC,OAAOlT,EAAMI,IAAIhX,aAAe,gCAAiC,CAC7DiX,OAAQ,CACJ6S,KAAMA,IAGlB,EAEAh3B,KAAK2zB,mBAAqB,WACtB,OAAO7P,EAAMI,IAAIhX,aAAe,gCACpC,EAEAlN,KAAKk+D,8BAAgC,SAAUl2D,EAAQmU,GACnD,GAAIyvE,eAAgB,CAChB,IAAIvqF,EAAWuqF,eAAet7E,eAAe,aAActI,GAC3D,GAAI3G,GAAYA,EAASyB,SAAU,CAC/B,IAAI0mC,EAAInoC,EAASyB,SAASwN,eAAe,MAAO6L,GAChD,OAAOqtB,EAAIA,EAAE5nC,WAAQhB,CACzB,CACJ,CAEJ,EAEAZ,KAAK6rF,iCAAmC,SAAU7jF,EAAQmU,EAAK03B,GAC3D,GAAI+3C,eAAgB,CAChB,IAAIvqF,EAAWuqF,eAAet7E,eAAe,aAActI,GAC3D,GAAI3G,GAAYA,EAASyB,SAAU,CAC/B,IAAI0mC,EAAInoC,EAASyB,SAASwN,eAAe,MAAO6L,GAC5CqtB,IACAA,EAAE5nC,MAAQiyC,EAElB,CACJ,CACJ,EAEA7zC,KAAK8rF,gBAAkB,SAAUj4C,GAC7B,OAAOj0C,EAAQ,WAARA,CAAoBi0C,EAC/B,CACJ,CAEA,SAASxU,EAAuB1/B,EAAU+J,GACtC1J,KAAKw/E,2BAA6B,SAAUroD,EAAQ0F,EAAMkb,GACtD,IAAI71C,EAkCR,SAAsB6pF,GAClBC,QAAU,uDAEV,IADA,IAAIC,EAAe,GACV1qF,EAAI,EAAGA,EArCQ,EAqCCA,IAAK,CAC1B,IAAI2qF,EAAY7+D,KAAKC,MAAMD,KAAK6X,SAAW8mD,QAAQrrF,QACnDsrF,GAAgBD,QAAQxkE,UAAU0kE,EAAWA,EAAY,EAC7D,CACA,OAAOD,CACX,CA1CeA,GACPn1D,EAAO,YAAc50B,EAAO,kIAAoIi1B,EAAS,gKAAkK0F,EAAO,sBAChUz9B,EAAQwrB,QAAQhc,SAAS8pD,cAAc,qBAE7C1gB,OAAOlhB,GAEvBn3B,GAAS,SAAU4W,GACfnX,EAAQwrB,QAAQhc,SAAS8pD,cAAc,IAAMniD,IAAK2d,SAAS,qBAE3Dv0B,GAAS,SAAUwsF,GACf/sF,EAAQwrB,QAAQhc,SAAS8pD,cAAc,IAAMyzB,IAASzgE,QAC1D,GAAG,KAAK,EAAMnV,EAElB,GAAGwhC,GAAW,KAAO,EAAM71C,EAC/B,EAEAlC,KAAKo/E,sBAAwB,SAAUvuE,GACnC,IAAI8gB,EAAW,yCAA2C9gB,EAAU,cACpEnH,EAASP,KAAK,CACV2H,SAAU,aACV7H,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCgJ,UAAW,IACXlU,SAAUA,EACVmU,UAAU,EACVjvB,aAAc,KACd5O,WAAY,SAAUyB,GACT1J,KACN+lC,MAAQ,WACPr8B,EAASiP,MACb,CACJ,GAER,CAWJ,CAEA,SAAS2+D,EAA2BxzD,EAAOpa,GACvC,IAAI0iF,EAEJpsF,KAAK4X,WAAa,WACd,IACIy0E,SAASC,cAAcC,iBACvBH,EAAYC,SAASD,aAEXI,WAAU,SAAUC,GAC1B1qF,QAAQC,IAAI,UAAWyqF,GACnBA,GAAWA,EAAQ1jF,MAAsC,SAA9B0jF,EAAQ1jF,KAAK2jF,cA0BxD,SAAoBD,GAChB,IAAI96D,EAAW,sDAAwD86D,EAAQ1jF,KAAK8zB,KAAO,8DAC3FnzB,EAASP,KAAK,CACV2H,SAAU,aACV7H,OAAQ7J,EAAQwrB,QAAQhc,SAASiuB,MACjCgJ,UAAW,IACXlU,SAAUA,EACVmU,UAAU,EACVjvB,aAAc,KACd5O,WAAY,SAAUyB,GACT1J,KACN+lC,MAAQ,WACPr8B,EAASiP,MACb,EAHS3Y,KAINutC,MAAQ,WACHk/C,EAAQ1jF,KAAK4jF,eACb1nF,SAASC,KAAOunF,EAAQ1jF,KAAK4jF,aAErC,CACJ,GAER,CA9CgBC,CAAWH,EAEnB,IACApQ,UAAUwQ,cAAcC,SAAS5/E,aAAe,4BAC3C1K,MAAK,SAACuqF,GACHX,EAAUY,iBAAiBD,GAC3BnnD,aAAaqnD,oBAAoBzqF,MAAK,SAAC0qF,GAChB,YAAfA,GACAnrF,QAAQC,IAAI,oCAkDhCoqF,EAAUe,WAAW3qF,MAAK,SAAC4qF,GAL/B,IAAqCC,EAMzBD,GACArrF,QAAQC,IAAI,kBAAmBorF,IAPNC,EAQED,EAP5BtpE,EAAMI,IAAIhX,aAAe,mDAAqDwuB,EAAE2J,MAAM,CAAC9uB,GAAI82E,MAOjD7qF,MAAK,SAAS8qF,GAC/CA,EAAMvkF,KAINhH,QAAQC,IAAI,0CAA2CorF,GAlB3E,SAAgCC,EAAgBr2D,GACrClT,EAAMI,IAAIhX,aAAe,8CAAgDwuB,EAAE2J,MAAM,CAAE9uB,GAAI82E,EAC1Fr2D,KAAc,IACtB,CAYoBu2D,CAAsBH,EAK9B,KAIArrF,QAAQC,IAAI,sEAKpB,IAAE,OAAO,SAACia,GACNla,QAAQC,IAAI,6CAA8Cia,EAG9D,KApEoBla,QAAQC,IAAI,sCAEpB,GACJ,IAEJoqF,EAAUoB,kBAAkB,0FAChC,CAAE,MAAOryE,GACLpZ,QAAQC,IAAI,gCACZD,QAAQC,IAAImZ,EAChB,CACJ,CA4DJ,CAtPH/b,EAAQ4I,OAAO,iBAAiByd,QAAQ,eAAgBiO,GACrDt0B,EAAQ4I,OAAO,iBAAiByd,QAAQ,yBAA0B4Z,GAClEjgC,EAAQ4I,OAAO,iBAAiByd,QAAQ,6BAA8B6xD,GAEtEl4E,EAAQ4I,OAAO,iBAAiByd,QAAQ,kBAAmB,CAAC,UAAW,UAAW,SAAUpd,EAASzI,GACtFI,KACNo8C,YAAc,SAAUqxC,GACzBplF,EAAQuG,SAAS8+E,kBAAkB,SAAS,GAAG78E,QAAU48E,EAAQ1mE,MACjE1e,EAAQuG,SAAS8+E,kBAAkB,eAAe,GAAG78E,QAAU48E,EAAQpxC,YAEnEoxC,EAAQznC,WACR39C,EAAQuG,SAAS8+E,kBAAkB,YAAY,GAAG78E,QAAU48E,EAAQznC,UAGpEynC,EAAQ1mE,OAAS0mE,EAAQ1mE,MAAMpmB,OAAS,IACxCiO,SAASC,eAAe,YAAYgC,QAAU48E,EAAQ1mE,OAEtD0mE,EAAQpxC,aAAeoxC,EAAQpxC,YAAY17C,OAAS,IACpDiO,SAASC,eAAe,kBAAkBgC,QAAU48E,EAAQpxC,aAE5DoxC,EAAQ1vC,KAAO0vC,EAAQ1vC,IAAIp9C,OAAS,IACpCiO,SAASC,eAAe,YAAYgC,QAAUjR,EAAQ,eAARA,CAAwB6tF,EAAQ1vC,MAE9E0vC,EAAQzvC,OAASyvC,EAAQzvC,MAAMr9C,OAAS,IACxCiO,SAASC,eAAe,YAAYgC,QAAUjR,EAAQ,eAARA,CAAwB6tF,EAAQzvC,QAElFpvC,SAASC,eAAe,UAAUgC,QAAU5L,SAASC,KAEjDuoF,EAAQE,uBAAyD,IAAjCF,EAAQE,qBACxCtlF,EAAQuG,SAASmY,MAAQ6mE,YAAYH,EAAQ1mE,MAAMpmB,OAAS,EAAI8sF,EAAQ1mE,MAAQ,MAAQ,IAAM8mE,YAE9FxlF,EAAQuG,SAASmY,MAAQ6mE,WAAWC,YAAcJ,EAAQ1mE,MAAMpmB,OAAS,EAAI,MAAQ8sF,EAAQ1mE,MAAQ,IAC7G,CACJ,IAEA2M,EAAYxrB,QAAU,CAAC,QAAS,SAAU,WAC1Cm3B,EAAuBn3B,QAAU,CAAC,WAAY,YAC9CovE,EAA2BpvE,QAAU,CAAC,QAAS,WAkNlD,CAxPD,CAwPGC,OAAO/I,Q,YC04EP+I,OAAO/I,QAjoFkB4I,OAAO,iBAAiBi6E,IAAI,CAAC,iBAAkB,SAAU6L,GACnF,aAEAA,EAAeC,IAAI7gF,aAAe,wDAChC,oqDAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,k+IA0FF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,omCA4CF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,y3CAIF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,wYAIF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,wiBAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,46BAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,8rBAwBF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,klBAIF4gF,EAAeC,IAAI7gF,aAAe,6DAChC,szBAIF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,w4EAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,wVAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,6lBA0BF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,8VAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,siIAQF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,8UAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,q5FAUF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,wkBAIF4gF,EAAeC,IAAI7gF,aAAe,4DAChC,sVAIF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,ipBAIF4gF,EAAeC,IAAI7gF,aAAe,8CAChC,qmBAIF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,s3DAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,4TAIF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,siBAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,2hBAIF4gF,EAAeC,IAAI7gF,aAAe,0DAChC,eAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,smKAQF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,sSAIF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,4NAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,idAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,y6CAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,8/CAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,49EAIF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,8vCAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,6GAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,oyBAIF4gF,EAAeC,IAAI7gF,aAAe,uEAChC,q7HAYF4gF,EAAeC,IAAI7gF,aAAe,8DAChC,2rJAYF4gF,EAAeC,IAAI7gF,aAAe,yEAChC,wlIAoBF4gF,EAAeC,IAAI7gF,aAAe,gEAChC,i7JAoBF4gF,EAAeC,IAAI7gF,aAAe,4CAChC,0xQAIF4gF,EAAeC,IAAI7gF,aAAe,mCAChC,wkBAgCF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,4yPAsZF4gF,EAAeC,IAAI7gF,aAAe,iCAChC,40SAsaF4gF,EAAeC,IAAI7gF,aAAe,kCAChC,mKAIF4gF,EAAeC,IAAI7gF,aAAe,wCAChC,wkDAIF4gF,EAAeC,IAAI7gF,aAAe,4CAChC,o0DAIF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,08CAIF4gF,EAAeC,IAAI7gF,aAAe,kCAChC,83KAIF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,upEAIF4gF,EAAeC,IAAI7gF,aAAe,sCAChC,qqDAIF4gF,EAAeC,IAAI7gF,aAAe,sCAChC,otLAIF4gF,EAAeC,IAAI7gF,aAAe,yCAChC,uqCAoBF4gF,EAAeC,IAAI7gF,aAAe,yCAChC,gNAQF4gF,EAAeC,IAAI7gF,aAAe,mCAChC,kHAIF4gF,EAAeC,IAAI7gF,aAAe,oCAChC,21DAIF4gF,EAAeC,IAAI7gF,aAAe,qCAChC,ySAIF4gF,EAAeC,IAAI7gF,aAAe,uCAChC,uCAIF4gF,EAAeC,IAAI7gF,aAAe,mCAChC,kqBA0BF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,+tEAUF4gF,EAAeC,IAAI7gF,aAAe,yCAChC,o/GAYF4gF,EAAeC,IAAI7gF,aAAe,wCAChC,mkHAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,uoBAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,sgFAIF4gF,EAAeC,IAAI7gF,aAAe,sEAChC,kSAIF4gF,EAAeC,IAAI7gF,aAAe,uCAChC,8MAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,2XAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,iqEAkBF4gF,EAAeC,IAAI7gF,aAAe,gEAChC,uuJAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,ksCAoBF4gF,EAAeC,IAAI7gF,aAAe,8CAChC,moBAsBF4gF,EAAeC,IAAI7gF,aAAe,gDAChC,+EAIF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,i1CAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,mTAoBF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,8qBAIF4gF,EAAeC,IAAI7gF,aAAe,8CAChC,u3BAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,6/DAIF4gF,EAAeC,IAAI7gF,aAAe,4CAChC,kHAIF4gF,EAAeC,IAAI7gF,aAAe,8CAChC,oFAIF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,qwQAwDF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,0nEAkBF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,kyMA0DF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,iyNAsEF4gF,EAAeC,IAAI7gF,aAAe,6DAChC,gmDAIF4gF,EAAeC,IAAI7gF,aAAe,iEAChC,+sEAIF4gF,EAAeC,IAAI7gF,aAAe,kFAChC,mOAIF4gF,EAAeC,IAAI7gF,aAAe,iEAChC,iYAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,6IAIF4gF,EAAeC,IAAI7gF,aAAe,4CAChC,2wBAQF4gF,EAAeC,IAAI7gF,aAAe,2CAChC,m3GAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,q0BAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,yxCAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,gHAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,g6DAkJF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,2BAIF4gF,EAAeC,IAAI7gF,aAAe,2BAChC,8iCAcF4gF,EAAeC,IAAI7gF,aAAe,gCAChC,+7CAkCF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,69BAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,smEAgEF4gF,EAAeC,IAAI7gF,aAAe,4CAChC,ivBAkCF4gF,EAAeC,IAAI7gF,aAAe,2BAChC,6/JA0BF4gF,EAAeC,IAAI7gF,aAAe,wCAChC,+ufA8eF4gF,EAAeC,IAAI7gF,aAAe,+BAChC,qBAEJ,IAo/BG/E,OAAO/I,QAl/BkB4I,OAAO,iBAAiBi6E,IAAI,CAAC,iBAAkB,SAAU6L,GACnF,aAEAA,EAAeC,IAAI7gF,aAAe,iFAChC,mnGAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,IAIF4gF,EAAeC,IAAI7gF,aAAe,kGAChC,8qCAIF4gF,EAAeC,IAAI7gF,aAAe,mFAChC,guVAIF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,i5HAIF4gF,EAAeC,IAAI7gF,aAAe,oFAChC,uiDAIF4gF,EAAeC,IAAI7gF,aAAe,iFAChC,49DAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,80BAIF4gF,EAAeC,IAAI7gF,aAAe,gFAChC,klEAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,0uDAIF4gF,EAAeC,IAAI7gF,aAAe,kGAChC,unCAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,0pBAIF4gF,EAAeC,IAAI7gF,aAAe,qFAChC,oYAIF4gF,EAAeC,IAAI7gF,aAAe,qFAChC,IAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,q8BAIF4gF,EAAeC,IAAI7gF,aAAe,qFAChC,ihCAIF4gF,EAAeC,IAAI7gF,aAAe,wEAChC,qsBAIF4gF,EAAeC,IAAI7gF,aAAe,mFAChC,6/CAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,+5CAIF4gF,EAAeC,IAAI7gF,aAAe,iFAChC,8KAIF4gF,EAAeC,IAAI7gF,aAAe,sFAChC,qvOAIF4gF,EAAeC,IAAI7gF,aAAe,4FAChC,q1FAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,+8BAIF4gF,EAAeC,IAAI7gF,aAAe,0FAChC,y+DAIF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,kYAIF4gF,EAAeC,IAAI7gF,aAAe,gFAChC,8TAIF4gF,EAAeC,IAAI7gF,aAAe,iFAChC,w1CA4BF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,kqCAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,mqBAIF4gF,EAAeC,IAAI7gF,aAAe,6EAChC,0SAIF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,+lVAknBF4gF,EAAeC,IAAI7gF,aAAe,0EAChC,+FAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,wSAIF4gF,EAAeC,IAAI7gF,aAAe,2EAChC,kzCAIF4gF,EAAeC,IAAI7gF,aAAe,mFAChC,+7BAIF4gF,EAAeC,IAAI7gF,aAAe,6EAChC,wQAQF4gF,EAAeC,IAAI7gF,aAAe,oFAChC,o4CAIF4gF,EAAeC,IAAI7gF,aAAe,4EAChC,gUAIF4gF,EAAeC,IAAI7gF,aAAe,gFAChC,k8BAQF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,wJAIF4gF,EAAeC,IAAI7gF,aAAe,kFAChC,gGAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,ozDAIF4gF,EAAeC,IAAI7gF,aAAe,iFAChC,izCAIF4gF,EAAeC,IAAI7gF,aAAe,4EAChC,IAIF4gF,EAAeC,IAAI7gF,aAAe,+EAChC,i0FAcF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,46GAQF4gF,EAAeC,IAAI7gF,aAAe,gFAChC,ynBAQF4gF,EAAeC,IAAI7gF,aAAe,kFAChC,oOAIF4gF,EAAeC,IAAI7gF,aAAe,yFAChC,8gDAIF4gF,EAAeC,IAAI7gF,aAAe,gFAChC,mfAIF4gF,EAAeC,IAAI7gF,aAAe,8EAChC,qlFAoBF4gF,EAAeC,IAAI7gF,aAAe,2EAChC,wIAIF4gF,EAAeC,IAAI7gF,aAAe,4EAChC,ulCAIF4gF,EAAeC,IAAI7gF,aAAe,uFAChC,s0DAIF4gF,EAAeC,IAAI7gF,aAAe,qFAChC,sQAIF4gF,EAAeC,IAAI7gF,aAAe,qFAChC,2FAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,qSAIF4gF,EAAeC,IAAI7gF,aAAe,kGAChC,40FAIF4gF,EAAeC,IAAI7gF,aAAe,4FAChC,26GAIF4gF,EAAeC,IAAI7gF,aAAe,iGAChC,IAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,2kDAIF4gF,EAAeC,IAAI7gF,aAAe,2FAChC,wpCAIF4gF,EAAeC,IAAI7gF,aAAe,sGAChC,8bAIF4gF,EAAeC,IAAI7gF,aAAe,8FAChC,wUAEJ,IA0vEG/E,OAAO/I,QAxvEkB4I,OAAO,iBAAiBi6E,IAAI,CAAC,iBAAkB,SAAU6L,GACnF,aAEAA,EAAeC,IAAI7gF,aAAe,gDAChC,krGAIF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,wlEAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,uuCAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,+gJAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,woBAIF4gF,EAAeC,IAAI7gF,aAAe,0DAChC,0vPAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,+kDAIF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,26FAMF4gF,EAAeC,IAAI7gF,aAAe,yDAChC,gvDAgCF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,2iBAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,oqBAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,2SAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,2EAIF4gF,EAAeC,IAAI7gF,aAAe,gDAChC,gRAIF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,mjBAIF4gF,EAAeC,IAAI7gF,aAAe,0DAChC,kpBAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,6OAIF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,4oBAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,6QAIF4gF,EAAeC,IAAI7gF,aAAe,gDAChC,yPAIF4gF,EAAeC,IAAI7gF,aAAe,2CAChC,wPAQF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,i0CAIF4gF,EAAeC,IAAI7gF,aAAe,0CAChC,8NAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,4JAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,6rBAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,mFAIF4gF,EAAeC,IAAI7gF,aAAe,yDAChC,uJAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,8zFA8EF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,0zEAIF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,muDAgCF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,47FAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,ogCAoBF4gF,EAAeC,IAAI7gF,aAAe,iEAChC,kYAIF4gF,EAAeC,IAAI7gF,aAAe,oDAChC,wOAIF4gF,EAAeC,IAAI7gF,aAAe,wDAChC,0rBAoBF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,sHAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,6uHAgRF4gF,EAAeC,IAAI7gF,aAAe,6DAChC,kSAIF4gF,EAAeC,IAAI7gF,aAAe,gDAChC,+9BAwCF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,2shBAwyBF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,2cAIF4gF,EAAeC,IAAI7gF,aAAe,+DAChC,m0BAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,8wBA8BF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,gHAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,q/CAgFF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,yHAIF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,ycA0BF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,88BAIF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,unGA0BF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,uiCAIF4gF,EAAeC,IAAI7gF,aAAe,4DAChC,6zFA0IF4gF,EAAeC,IAAI7gF,aAAe,yDAChC,u/FAQF4gF,EAAeC,IAAI7gF,aAAe,iEAChC,gnCAIF4gF,EAAeC,IAAI7gF,aAAe,6DAChC,i2DA8DF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,u9FAQF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,4tBAMF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,6qCAIF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,0dAIF4gF,EAAeC,IAAI7gF,aAAe,2DAChC,qiDAgDF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,kyBAQF4gF,EAAeC,IAAI7gF,aAAe,kDAChC,6ZAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,4DAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,+kEA8DF4gF,EAAeC,IAAI7gF,aAAe,gDAChC,4/BAYF4gF,EAAeC,IAAI7gF,aAAe,sDAChC,+3EA4IF4gF,EAAeC,IAAI7gF,aAAe,uDAChC,2WAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,kjPAMF4gF,EAAeC,IAAI7gF,aAAe,yDAChC,kpBAIF4gF,EAAeC,IAAI7gF,aAAe,yDAChC,4BAIF4gF,EAAeC,IAAI7gF,aAAe,6CAChC,m/BAIF4gF,EAAeC,IAAI7gF,aAAe,2CAChC,6TAIF4gF,EAAeC,IAAI7gF,aAAe,+CAChC,+rBAIF4gF,EAAeC,IAAI7gF,aAAe,iDAChC,wqCAgCF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,oeAIF4gF,EAAeC,IAAI7gF,aAAe,qDAChC,4mFAIF4gF,EAAeC,IAAI7gF,aAAe,mDAChC,ukBAIF4gF,EAAeC,IAAI7gF,aAAe,4DAChC,w1CAIF4gF,EAAeC,IAAI7gF,aAAe,qEAChC,qlBAEJ,G,GC52LI8gF,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBttF,IAAjButF,EACH,OAAOA,EAAaC,QAGrB,IAAIpmF,EAASgmF,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAC,EAAoBH,GAAUlmF,EAAQA,EAAOomF,QAASH,GAG/CjmF,EAAOomF,OACf,C","sources":["webpack://bizpartengage.web/./FrontEnd/Core/Controllers/completeregister.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/exthome.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/forgotpassword.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/login.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/logout.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/mypage.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/notifications.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/register.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/terms.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/themestest.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/unsubscribe.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/welcome.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/ActivityReminders.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/AdminBar.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CookieSettings.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CountdownTimer.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CultureSelector.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Engage.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Favorites.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Header.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/LayoutComponent.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Leaderboard.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/LevelProgress.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MainMenu.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MyNotes.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MyText.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Notifications.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/OpenIdLoginBtns.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/ProfileMenu.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Search.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/SimulateUser.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/SocialShare.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/TipSomeone.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Unsubscribe.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/completeregisterService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/engageService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/eventStatisticsService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/favoriteService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/forgotpasswordService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/leaderboardService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/levelService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/myNotesService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/portalService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/register.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/sessionService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/ssoService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/termsService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/unitService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/userService.js","webpack://bizpartengage.web/./FrontEnd/Core/routing.js","webpack://bizpartengage.web/./FrontEnd/Effects/effects.js","webpack://bizpartengage.web/./FrontEnd/Effects/fireworks.js","webpack://bizpartengage.web/./FrontEnd/Effects/pagetitlenotification.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/CMS/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/CMS/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Campaign/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Campaign/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Certifications/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Certifications/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Dictionary/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Dictionary/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/deactivateGoal.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/managerGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myRootGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myTasks.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneActivity.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneGoal.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneTask.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/taskStatus.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Activities/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Calendar/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Calendar/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Dashboard/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Goals/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/ManagerSettings/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Resultreport/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Tasks/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Team/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Event/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Event/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forms/Plugins/questions.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forum/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forum/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Journey/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/MasterRun/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Search/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/SpeedQuiz/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/SpeedQuiz/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/routing.js","webpack://bizpartengage.web/./FrontEnd/app.js","webpack://bizpartengage.web/./FrontEnd/controllers.js","webpack://bizpartengage.web/./FrontEnd/directives.js","webpack://bizpartengage.web/./FrontEnd/filters.js","webpack://bizpartengage.web/./FrontEnd/services.js","webpack://bizpartengage.web/./FrontEnd/templates.js","webpack://bizpartengage.web/webpack/bootstrap"],"sourcesContent":["(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.completeregister', completeRegister);\r\n\r\n completeRegister.$inject = ['$rootScope', '$scope', '$stateParams', 'core.completeregisterService', '$translate', '$timeout', '$filter', '$sce', 'core.users.service'];\r\n\r\n function completeRegister($rootScope, $scope, $stateParams, completeRegisterService, $translate, $timeout, $filter, $sce, userService) {\r\n var vm = this;\r\n\r\n vm.CompleteRegistrationGuid = $stateParams.guid;\r\n vm.Unauthorized = false;\r\n\r\n vm.MobilePattern = /^\\+[0-9]{10,}$/;\r\n vm.MobilePatternSE = /^\\+460?7[0|2|3|6|9][0-9]{7}$/;\r\n\r\n vm.GetUser = GetUser;\r\n vm.CompleteRegistration = CompleteRegistration;\r\n vm.GenderClick = GenderClick;\r\n vm.GetGender = GetGender;\r\n vm.IsMobileValid = IsMobileValid;\r\n vm.LoadTranslations = LoadTranslations;\r\n vm.GetPassword = GetPassword;\r\n vm.IsEmailValid = IsEmailValid;\r\n vm.SendVerificationCode = SendVerificationCode;\r\n vm.IsPasswordSecure = IsPasswordSecure;\r\n\r\n vm.IsMainCustomField = IsMainCustomField;\r\n vm.IsPostCustomField = IsPostCustomField;\r\n vm.IsPostCustomFieldValid = IsPostCustomFieldValid;\r\n\r\n vm.UnitLogo = $rootScope.GetUnitSettingsImage();\r\n\r\n function IsPostCustomFieldValid(customField) {\r\n var formFieldKey = 'extcusfield_' + customField.CustomId;\r\n //any form errors - not valid\r\n if (vm.MyForm[formFieldKey] && vm.MyForm[formFieldKey].$error.pattern) return false;\r\n\r\n if (customField.IsMandatory) {\r\n //if mandatory and no value - not valid\r\n if (!vm.ExtCustomFieldValues || !vm.ExtCustomFieldValues[customField.CustomId]) return false;\r\n\r\n //if mandatory and options exist - valid if value is set\r\n if (customField.Options && customField.Options.length > 0) {\r\n return vm.ExtCustomFieldValues[customField.CustomId] !== undefined;\r\n }\r\n\r\n //if mandatory and no options and no value - not valid\r\n if (!vm.ExtCustomFieldValues[customField.CustomId].length) return false;\r\n }\r\n\r\n //if phone, mandatory check has already been done above, but we still need to check if the phone number is valid\r\n if (customField.CustomId.indexOf('PHONE') >= 0) {\r\n if (vm.CustomFieldsMobileBadInput && vm.CustomFieldsMobileBadInput[customField.CustomId]) return false;\r\n\r\n if (vm.ExtCustomFieldValues[customField.CustomId] && !vm.IsMobileValid(vm.ExtCustomFieldValues[customField.CustomId], true)) return false; \r\n }\r\n\r\n return true; \r\n }\r\n\r\n function IsMainCustomField(field) {\r\n return field.CustomId.toLowerCase().startsWith(\"postfield_\") === false;\r\n }\r\n\r\n function IsPostCustomField(field) {\r\n return field.CustomId.toLowerCase().startsWith(\"postfield_\") === true;\r\n }\r\n\r\n function IsEmailValid() {\r\n if (!vm.User || !vm.User.Email) return false;\r\n if (!vm.EmailPattern) return true;\r\n\r\n return vm.EmailPattern.test(vm.User.Email);\r\n }\r\n\r\n function SendVerificationCode() {\r\n if (vm.IsEmailValid()) {\r\n completeRegisterService.SendVerificationCode(vm.CompleteRegistrationGuid, vm.User.Email).then(SendVerificationCodeCallback, SendVerificationCodeError);\r\n } else { \r\n vm.ShowEmailInvalid = true;\r\n }\r\n\r\n function SendVerificationCodeCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n if (result) {\r\n vm.VerificationCodeSent = true;\r\n } else {\r\n SendVerificationCodeError();\r\n }\r\n }\r\n\r\n function SendVerificationCodeError() {\r\n console.log(\"send verification code error\");\r\n }\r\n }\r\n\r\n function IsMobileValid(number, skipSeMatch) {\r\n if (!number) return false;\r\n\r\n if (number.startsWith(\"+46\") && vm.MobilePatternSE && !skipSeMatch) {\r\n return vm.MobilePatternSE.test(number)\r\n } else {\r\n return vm.MobilePattern.test(number)\r\n }\r\n }\r\n\r\n function GenderClick(gender) {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n vm.Genders[i].checked = vm.Genders[i] === gender;\r\n }\r\n }\r\n\r\n function GetUser() {\r\n completeRegisterService.GetUserByActionGuid(vm.CompleteRegistrationGuid).then(GetUserByActionGuidCallback, HandleError);\r\n\r\n function GetUserByActionGuidCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n vm.User = result.User;\r\n InitFormSettings(result.Settings);\r\n vm.Initialized = true;\r\n }\r\n\r\n function HandleError(response) { \r\n if (response.status === 401) {\r\n vm.Unauthorized = true;\r\n vm.UnauthorizedMessage = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n }\r\n\r\n function GetGender() {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n if (vm.Genders[i].checked) {\r\n return vm.Genders[i].SystemName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function IsPasswordSecure() {\r\n return !vm.GetPassword || $rootScope.PasswordRegex.test(vm.Password);\r\n }\r\n\r\n function GetPassword() {\r\n if (vm.IsPasswordSecure() && vm.Password && vm.Password === vm.RepeatPassword) {\r\n return vm.Password;\r\n } \r\n }\r\n\r\n function CompleteRegistration() { \r\n \r\n var gender = vm.GetGender();\r\n\r\n var password;\r\n var passwordValid = true;\r\n if (vm.FormSettings && vm.FormSettings.AllowSetPassword) {\r\n password = vm.GetPassword();\r\n if (!password) {\r\n passwordValid = false;\r\n }\r\n } \r\n\r\n var mobileValid = vm.IsMobileValid(vm.User.Mobile) && !vm.MobileBadInput;\r\n\r\n var postExtFieldsValid = true;\r\n if (vm.FormSettings.ExtCustomFields) {\r\n for (var i = 0; i < vm.FormSettings.ExtCustomFields.length; i++) {\r\n var customField = vm.FormSettings.ExtCustomFields[i];\r\n //just check post fields because I dont want to risk messing up the other ones\r\n if (IsPostCustomField(customField) && !IsPostCustomFieldValid(customField)) {\r\n postExtFieldsValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n if (vm.MyForm.$valid && gender && passwordValid && mobileValid && !vm.Submitting && !vm.Submitted && postExtFieldsValid) {\r\n var extCustomFieldValues;\r\n if (vm.ExtCustomFieldValues) {\r\n extCustomFieldValues = angular.copy(vm.ExtCustomFieldValues);\r\n\r\n for (var customId in extCustomFieldValues) {\r\n if (extCustomFieldValues.hasOwnProperty(customId)) {\r\n var item = extCustomFieldValues[customId];\r\n if (item && (item.Value || item.Value === '')) {\r\n extCustomFieldValues[customId] = item.Value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n console.log(\"submitted\", extCustomFieldValues);\r\n vm.ShowValidation = false;\r\n vm.Submitting = true;\r\n\r\n vm.User.Gender = gender;\r\n\r\n completeRegisterService.CompleteRegistration(vm.CompleteRegistrationGuid, vm.User, password, extCustomFieldValues, vm.VerificationCode).then(CompleteRegistrationCallback, HandleError);\r\n\r\n function CompleteRegistrationCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(\"result\", result);\r\n vm.Submitted = true;\r\n vm.Success = result.Success;\r\n if (!vm.Success) {\r\n vm.Message = $sce.trustAsHtml(result.Message);\r\n } else {\r\n vm.SuccessMessage = $sce.trustAsHtml(result.Message)\r\n var redirectUrl = result.ExtraInfo.RedirectUrl;\r\n if (redirectUrl) {\r\n if (redirectUrl.startsWith('/') && redirectUrl.toLowerCase().indexOf('login') < 0) {\r\n setSessionStorage('highlightLogin', 'true');\r\n }\r\n\r\n vm.RedirectTimeout = $timeout(() => {\r\n location.href = $filter('siteroot')(redirectUrl);\r\n }, 20000);\r\n }\r\n }\r\n }\r\n\r\n function HandleError() {\r\n console.log(\"handle error\");\r\n vm.Success = false;\r\n vm.Submitted = true;\r\n vm.InternalError = true;\r\n vm.Message = \"Something went wrong, please try again later.\"\r\n }\r\n } else {\r\n console.log(\"not valid\");\r\n vm.ShowValidation = true;\r\n }\r\n \r\n }\r\n\r\n function LoadTranslations() {\r\n $translate([\r\n 'CORE.COMPLETEREGISTER.ERROR_MSG',\r\n 'CORE.COMPLETEREGISTER.MAILTO' \r\n\r\n ]).then(function (translations) {\r\n \r\n var msg = translations['CORE.COMPLETEREGISTER.ERROR_MSG']?.toString();\r\n var mail = translations['CORE.COMPLETEREGISTER.MAILTO']?.toString();\r\n if (msg && mail) {\r\n vm.ErrorMessage = msg.replace('##MAILTOLINK##', '' + mail + '');\r\n } else {\r\n vm.ErrorMessage = msg;\r\n }\r\n console.log(\"error msg\", vm.ErrorMessage);\r\n \r\n });\r\n }\r\n\r\n function InitFormSettings(settings) {\r\n if (settings.ExtCustomFields) {\r\n for (var i = 0; i < settings.ExtCustomFields.length; i++) {\r\n if (settings.ExtCustomFields[i].Options?.length > 0) {\r\n var options = settings.ExtCustomFields[i].Options;\r\n for (var j = 0; j < options.length; j++) {\r\n options[j].Id = options[j].Value; \r\n }\r\n }\r\n\r\n if (IsPostCustomField(settings.ExtCustomFields[i])) {\r\n vm.HasPostCustomFields = true;\r\n }\r\n }\r\n }\r\n vm.FormSettings = settings;\r\n console.log(\"vm.FormSettings\", vm.FormSettings);\r\n }\r\n\r\n function Init() {\r\n \r\n userService.GetGenders().then(GetGendersCallback);\r\n vm.LoadTranslations();\r\n completeRegisterService.GetGuidInfo(vm.CompleteRegistrationGuid).then(GetGuidInfoCallback, HandleError);\r\n\r\n function GetGuidInfoCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(\"GetGuidInfoCallback\", result);\r\n if (result.Type === 'COMPLETE_REGISTRATION') {\r\n vm.GetUser();\r\n } else if (result.Type === 'CREATE_USER_FOR_UNIT') {\r\n vm.CreateUserForUnit = true;\r\n InitFormSettings(result.Settings);\r\n\r\n if (vm.FormSettings.AllowEmailDomains && vm.FormSettings.AllowEmailDomains.length > 0) {\r\n var regexDomains = vm.FormSettings.AllowEmailDomains.join('|');\r\n //vm.EmailPattern = new RegExp(\"^\\\\w+([-+.']\\\\w+)*@(?=(?:\" + regexDomains + \")\\\\.\\\\w+$)\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*$\");\r\n vm.EmailPattern = new RegExp(\"^[a-zA-Z0-9._%+-]+@(?:\" + regexDomains + \")$\");\r\n } \r\n\r\n vm.Initialized = true;\r\n }\r\n } \r\n\r\n function HandleError(response) {\r\n if (response.status === 401) {\r\n vm.Unauthorized = true;\r\n vm.UnauthorizedMessage = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function GetGendersCallback(response) {\r\n var genders = BizPartCoreHelpers.getResponseValue(response); \r\n vm.Genders = genders.filter(g => g.SystemName !== 'OTHER');\r\n }\r\n\r\n $scope.$on(\"$destroy\", () => {\r\n if (vm.RedirectTimeout) {\r\n $timeout.cancel(vm.RedirectTimeout);\r\n }\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.exthome', extHome);\r\n\r\n extHome.$inject = ['$rootScope', '$window'];\r\n\r\n function extHome($rootScope, $window) {\r\n var vm = this;\r\n\r\n //const width = 1600;\r\n const width = screen.width;\r\n const css = {\r\n height: width > 1600 ? '60%' : '80%',\r\n width: width > 1600 ? '60%' : '86%',\r\n top: '10%',\r\n left: width > 1600 ? '20%' : '7%',\r\n boxShadow:\r\n '0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)',\r\n borderRadius: '5px',\r\n };\r\n\r\n $rootScope.$on('WELCOMEGUIDE.COMPLETED', function (e, data) {\r\n vm.showWelcomeGuide = false;\r\n $window.parent.postMessage(\r\n { show: false, dimBackground: false, css: {} },\r\n '*'\r\n );\r\n });\r\n\r\n $rootScope.$on('WELCOMEGUIDE.SHOW', function (e, data) {\r\n vm.showWelcomeGuide = true;\r\n var showData = {\r\n show: true,\r\n dimBackground: true,\r\n css: css,\r\n };\r\n $window.parent.postMessage(showData, '*');\r\n });\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('core.forgotpassword', forgotpasswordController);\r\n\tangular.module('bizPartEngage').controller('core.changepassword', changepasswordController);\r\n\r\n\tforgotpasswordController.$inject = [\"$rootScope\", \"core.forgotpasswordService\", \"$mdDialog\", \"$translate\", \"bizValidationService\", \"$mdToast\", \"bizCoreService\"];\r\n changepasswordController.$inject = [\"$rootScope\", \"core.forgotpasswordService\", \"$mdDialog\", \"$translate\", \"bizValidationService\", \"$mdToast\", \"$stateParams\", \"$state\", \"bizCoreService\"];\r\n\r\n\tfunction forgotpasswordController($rootScope, forgotpasswordService, $mdDialog, $translate, bizValidationService, $mdToast, bizCoreService) {\r\n\t\tvar vm = this;\r\n\t\tvm.IsIframed = false;\r\n\t\tvm.mode = 'requestpassword';\r\n\t\tvm.SendForgotPasswordWithEmail = SendForgotPasswordWithEmail;\r\n\t\tvm.Message = '';\r\n vm.ShowLogin = ShowLogin;\r\n vm.ErrorObject = null;\r\n\t\tvm.Portal;\r\n\r\n\t\tvm.BackgroundImage = 'Images/login-img.png';\r\n\t\tvm.IsImagesInitialized = false;\r\n\r\n\t\tvm.User = {\r\n\t\t\tEmail: ''\r\n\t\t};\r\n\r\n\t\tfunction ShowLogin() {\r\n\t\t\t$rootScope.$broadcast('SHOW-LOGIN-DIRECTIVE');\r\n\t\t}\r\n\r\n\t\tfunction SendForgotPasswordWithEmail() {\r\n\t\t\tvm.Message = '';\r\n\t\t\tif (vm.User.Email && vm.User.Email.indexOf('@') > 0) { // bizValidationService.FormValid(vm.MyForm1) == true && \r\n\r\n\t\t\t\tforgotpasswordService.SendPasswordRecoveryEmail(vm.User.Email).then(forgotpasswordSuccess);\r\n\r\n\t\t\t\tfunction forgotpasswordSuccess(response) {\r\n\t\t\t\t\tif (response.data.Success == true) {\r\n\t\t\t\t\t\tvm.User.Email = '';\r\n\t\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.EMAILSENT').then(function(translation) {\r\n\t\t\t\t\t\t\tvm.Message = translation || 'E-mail sent!';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (response.data.Message.length > 0) {\r\n\t\t\t\t\t\tvm.Message = response.data.Message;\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t\r\n\t\t\t\t$translate('CORE.FORGOTPASSWORD.NOVALIDEMAILSUPPLIED').then(function (translation) {\r\n\t\t\t\t\tvm.Message = translation || 'No valid email was supplied';\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction GetInitData() {\r\n\t\t\tforgotpasswordService.GetBackgroundImage().then(function (response) {\r\n\t\t\t\tif (response.length > 0)\r\n\t\t\t\t\tvm.BackgroundImage = response;\r\n\r\n\t\t\t\tvm.IsImagesInitialized = true;\r\n\t\t\t});\r\n\r\n\t\t\t$rootScope.HasAcceptedCookies = getLocalStorage('HasAcceptedCookies');\r\n }\r\n\r\n\t\tfunction Init() {\r\n\t\t\tif (window.location.search.indexOf('framed') > -1) {\r\n\t\t\t\tvm.IsIframed = true;\r\n\t\t\t}\r\n\r\n\t\t\tGetInitData();\r\n\t\t}\r\n\r\n\t\tvm.$onInit = Init;\r\n\t}\r\n\r\n function changepasswordController($rootScope, forgotpasswordService, $mdDialog, $translate, bizValidationService, $mdToast, $stateParams, $state, bizCoreService) {\r\n\t\tvar vm = this;\r\n\t\tvm.Guid = $stateParams.guid;\r\n\t\tvm.mode = 'changepassword';\r\n\t\tvm.PasswordWasUpdated = false;\r\n\t\tvm.IsGuidValid = false;\r\n\r\n\t\tvm.BackgroundImage = 'Images/login-img.png';\r\n\t\tvm.IsImagesInitialized = false;\r\n\r\n\t\tvm.UpdatePassword = UpdatePassword;\r\n\t\tvm.Init = Init;\r\n\r\n function Init() {\r\n GetInitData();\r\n\r\n\t\t\tforgotpasswordService.IsResetPasswordGuidValid(vm.Guid).then(IsResetPasswordGuidValidSuccess);\r\n\r\n\t\t\tfunction IsResetPasswordGuidValidSuccess(response) {\r\n\t\t\t\tvm.IsGuidValid = response.data.Success;\r\n\r\n\t\t\t\tif (vm.IsGuidValid == false) {\r\n\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.GUIDNOTVALID').then(function (translation) {\r\n\t\t\t\t\t\tvm.Message = translation || 'Supplied link is not valid!';\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n }\r\n\r\n function GetInitData() {\r\n\t\t\tforgotpasswordService.GetBackgroundImage().then(function (response) {\r\n\t\t\t\tif (response.length > 0)\r\n\t\t\t\t\tvm.BackgroundImage = response;\r\n\r\n\t\t\t\tvm.IsImagesInitialized = true;\r\n\t\t\t});\r\n }\r\n\t\t\r\n\t\tfunction UpdatePassword() {\r\n\t\t\tif (!vm.MyForm2.$valid || vm.Password != vm.RepeatPassword) {\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//if (bizValidationService.FormValid(vm.MyForm2) == true) { // TODO more validation, regex...?\r\n\r\n\t\t\t\t//vm.Password = vm.Password.trim();\r\n\t\t\t\t//vm.RepeatPassword = vm.RepeatPassword.trim();\r\n\r\n\t\t\t\t//if (vm.Password != vm.RepeatPassword) {\r\n\t\t\t\t//\t$translate('CORE.FORGOTPASSWORD.PASSWORDNOTSAME').then(function (translation) {\r\n\t\t\t\t//\t\tvm.Message = translation || 'Passwords does not match!';\r\n\t\t\t\t//\t});\r\n\t\t\t\t//}\r\n\t\t\t\t//else {\r\n\t\t\t\t\tforgotpasswordService.UpdatePassword(vm.Guid, vm.Password).then(updateSuccess);\r\n\r\n\t\t\t\t\tfunction updateSuccess(response) {\r\n\t\t\t\t\t\tif (response.data.Success == true) {\r\n\t\t\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.RESETSUCCESS').then(function (translation) {\r\n\t\t\t\t\t\t\t\tvm.Message = translation || 'Password updated!';\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tvm.PasswordWasUpdated = true;\r\n\t\t\t\t\t\t\tvm.Password = '';\r\n vm.RepeatPassword = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tvm.Message = response.data.Message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t//}\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tvm.$onInit = vm.Init;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.login', loginController);\r\n\r\n loginController.$inject = [\"$rootScope\", \"loginService\", \"core.forgotpasswordService\", \"$timeout\", \"$state\", \"$window\", \"bizLoaderService\", \r\n \"$stateParams\", \"bizValidationService\", \"$translate\", \"bizCoreService\"];\r\n\r\n function loginController($rootScope, loginService, forgotpasswordService, $timeout, $state, $window, bizLoaderService, \r\n $stateParams, bizValidationService, $translate, bizCoreService) {\r\n var vm = this;\r\n vm.IsInitialized = false;\r\n vm.IsImagesInitialized = false;\r\n vm.BackgroundImage = 'Images/login-img.png';\r\n vm.REMEMBER_ME_VAL_KEY = \"LOGIN_REMEMBER_ME_VAL\";\r\n vm.Message = '';\r\n vm.ErrorObject = null;\r\n vm.LoginError = false;\r\n vm.RememberMe = false; \r\n vm.PasswordWasUpdated = false;\r\n vm.OpenLoginActive = false;\r\n vm.ShowLogo = $rootScope.MiniSettings.Login.ShowLogo;\r\n vm.ShowPortalName = $rootScope.MiniSettings.Login.ShowPortalName;\r\n if ($stateParams.guid === 'init') {\r\n vm.ActivateAccountInit = true;\r\n } else {\r\n vm.ActivateAccountGuid = $stateParams.guid;\r\n }\r\n\r\n vm.PhraseSuffix = $stateParams.phraseSuffix;\r\n\r\n vm.ParentUnitUrlRewrite = $stateParams.parentUnitUrlRewrite;\r\n vm.ExternalUnitKey = $stateParams.externalUnitKey;\r\n\r\n if (vm.ParentUnitUrlRewrite) {\r\n vm.UnitLogo = $rootScope.GetCustomImage('logo');\r\n }\r\n\r\n console.log(\"vm.parentUnitUrlRewrite\", vm.parentUnitUrlRewrite);\r\n console.log(\"vm.ExternalUnitKey\", vm.ExternalUnitKey);\r\n console.log(\"vm.ActivateAccountInit\", vm.ActivateAccountInit)\r\n\r\n vm.Portal;\r\n\r\n vm.Login = Login;\r\n vm.SetRememberMeData = SetRememberMeData;\r\n vm.UpdatePassword = UpdatePassword;\r\n vm.SetHighlightLogin = SetHighlightLogin;\r\n vm.InitEmailVerification = InitEmailVerification;\r\n\r\n function SetHighlightLogin() {\r\n setSessionStorage('highlightLogin', 'true');\r\n }\r\n\r\n function Login() {\r\n vm.UserName = vm.UserName.trim();\r\n vm.Password = vm.Password.trim();\r\n\r\n if (vm.UserName.length == 0 || vm.Password.length == 0)\r\n return;\r\n\r\n bizLoaderService.RequestFullPageLoader();\r\n if(vm.RememberMe) vm.SetRememberMeData();\r\n else deleteLocalStorage(vm.REMEMBER_ME_VAL_KEY);\r\n\r\n \tloginService.Login(vm.UserName, vm.Password).then(LoginCallback, bizLoaderService.RequestFullPageLoaderFinish);\r\n\r\n function LoginCallback(response) {\r\n if (response.data.Token && response.data.Token != \"\") {\r\n deleteStorage(\"BizPartAuthToken\");\r\n setBizPartAuthToken(response.data.Token, response.data.Id);\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n\r\n if (response.data.Id > -1) {\r\n if (response.data.RedirectUrl) {\r\n if (response.data.RedirectUrl === '/') {\r\n $window.location = siteRootPath;\r\n } else {\r\n $window.location = siteRootPath + response.data.RedirectUrl;\r\n }\r\n \r\n }\r\n else if(response.data.HasAdminAccess) {\r\n //$window.location = siteRootPath + \"admin\";\r\n $window.location = $rootScope.MiniSettings.Login.LoginAdminUrl;\r\n } \r\n else if (initialUrl) {\r\n $window.location = siteRootPath + initialUrl;\r\n }\r\n else {\r\n $window.location = siteRootPath;\r\n } \r\n }\r\n else {\r\n \tbizLoaderService.RequestFullPageLoaderFinish();\r\n vm.LoginError = true;\r\n }\r\n }\r\n }\r\n\r\n function SetRememberMeData() {\r\n setLocalStorage(vm.REMEMBER_ME_VAL_KEY, vm.UserName);\r\n }\r\n\r\n function InitEmailVerification() {\r\n if (bizValidationService.FormValid(vm.ActivateAccountInitForm) == true) {\r\n\r\n //We can set it right away as the backend will give no indication of success anyway due to security\r\n vm.AcctivateAccountInitSent = true;\r\n loginService.InitEmailVerification(vm.InitEmail, vm.ParentUnitUrlRewrite, vm.ExternalUnitKey).then(InitEmailVerificationCallback);\r\n\r\n function InitEmailVerificationCallback(response) {\r\n //vm.AcctivateAccountInitSent = true;\r\n }\r\n } \r\n }\r\n\r\n function UpdatePassword() {\r\n if (!vm.MyForm2.$valid || vm.Password != vm.RepeatPassword) {\r\n\r\n return;\r\n }\r\n\r\n //if (bizValidationService.FormValid(vm.MyForm2) == true) { // TODO more validation, regex...?\r\n\r\n //if (vm.Password != vm.RepeatPassword) {\r\n // $translate('CORE.FORGOTPASSWORD.PASSWORDNOTSAME').then(function (translation) {\r\n // vm.Message = translation || 'Passwords does not match!';\r\n // });\r\n //}\r\n //else {\r\n forgotpasswordService.UpdatePassword(vm.ActivateAccountGuid, vm.Password).then(updateSuccess);\r\n\r\n function updateSuccess(response) {\r\n if (response.data.Success == true) {\r\n $translate('CORE.FORGOTPASSWORD.RESETSUCCESS').then(function (translation) {\r\n vm.Message = translation || 'Password updated!';\r\n });\r\n\r\n vm.PasswordWasUpdated = true;\r\n vm.Password = '';\r\n vm.RepeatPassword = '';\r\n\r\n if (response.data.Object) {\r\n if (response.data.Object.redirectUrl) {\r\n vm.RedirectUrl = response.data.Object.redirectUrl;\r\n }\r\n }\r\n }\r\n else {\r\n vm.Message = response.data.Message;\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n }\r\n // }\r\n //}\r\n }\r\n\r\n function GetInitData() {\r\n forgotpasswordService.GetBackgroundImage().then(function (response) {\r\n if (response.length > 0)\r\n vm.BackgroundImage = response;\r\n\r\n vm.IsImagesInitialized = true;\r\n });\r\n\r\n bizCoreService.GetCurrentPortal().then(function(response) {\r\n vm.Portal = response.data;\r\n });\r\n\r\n bizCoreService.GetPortalsetting(\"IsOpenIdLoginEnabled\").then(function (response) {\r\n vm.OpenLoginActive = response.data === 'True';\r\n });\r\n\r\n var openIdOnly = portalSettings[\"IsOpenIdLoginOnly\"];\r\n if (openIdOnly) {\r\n var overrideOpenIdOnly = getParameterByNameFromUrl('s', location.href) === '91af1798-35b0-4974-9ef5-0fcf52fbe355';\r\n if (!overrideOpenIdOnly) {\r\n vm.OpenIdOnly = true;\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n\r\n GetInitData();\r\n\r\n $rootScope.HasAcceptedCookies = getLocalStorage('HasAcceptedCookies');\r\n\r\n if (vm.ActivateAccountGuid) {\r\n loginService.ActivateAccount(vm.ActivateAccountGuid).then(ActivateAccountCallback);\r\n\r\n function ActivateAccountCallback(response) {\r\n console.log(response);\r\n vm.Message = response.data.Message;\r\n vm.ActivateAccountSuccess = response.data.Success;\r\n vm.ErrorObject = response.data.Object;\r\n\r\n if (response.data.Success && response.data.ExtraInfo?.UserName) {\r\n setSessionStorage('ACTIVATED_EMAIL_USERNAME', response.data.ExtraInfo.UserName);\r\n } else if (response.data.ExtraInfo?.UserName) {\r\n setSessionStorage('ACTIVATED_EMAIL_USERNAME', response.data.ExtraInfo.UserName);\r\n $window.location = siteRootPath + $rootScope.MiniSettings[\"Login\"][\"AlreadyVerifiedRedirectUrl\"];\r\n }\r\n }\r\n }\r\n else {\r\n var rememberMeVal = getLocalStorage(vm.REMEMBER_ME_VAL_KEY);\r\n var activatedEmailUserName = getSessionStorage('ACTIVATED_EMAIL_USERNAME');\r\n if (activatedEmailUserName) {\r\n deleteSessionStorage('ACTIVATED_EMAIL_USERNAME');\r\n }\r\n\r\n if (rememberMeVal || activatedEmailUserName) {\r\n vm.UserName = rememberMeVal || activatedEmailUserName;\r\n if (rememberMeVal) {\r\n vm.RememberMe = true;\r\n }\r\n setTimeout(function () {\r\n document.getElementById(\"password\").focus();\r\n }, 10);\r\n } \r\n }\r\n\r\n vm.IsInitialized = true;\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.logout', logoutController);\r\n\r\n logoutController.$inject = [\"$rootScope\", \"core.users.service\"];\r\n\r\n function logoutController($rootScope, userService) {\r\n var vm = this;\r\n\r\n function Init() {\r\n userService.Logout();\r\n }\r\n\r\n $rootScope.Initialized.then(Init);\r\n }\r\n}(window.angular));","(function(angular) {\r\n angular.module('bizPartEngage').controller('core.mypage', mypageController);\r\n angular.module('bizPartEngage').controller('core.mysettings', mysettingsController);\r\n angular.module('bizPartEngage').controller('core.mysecurity', mysecurityController);\r\n angular.module('bizPartEngage').controller('core.mycustomsettings', mycustomsettingsController);\r\n angular.module('bizPartEngage').controller('core.mycolleagues', mycolleaguesController);\r\n angular.module('bizPartEngage').controller('core.myleaderboards', myleaderboardsController);\r\n angular.module('bizPartEngage').controller('core.myrelatedusers', myRelatedUsersController);\r\n\r\n mypageController.$inject = [\"$rootScope\", \"$state\", \"modules.education.service\", \"core.users.service\", \"core.level.serivce\", \r\n \"core.event.statistics.service\", \"core.engage.service\", \"modules.certifications.service\"];\r\n mysettingsController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdDialog\", \"$translate\", \"bizMediabankService\", \r\n \"bizMediabankUploadService\", \"$mdToast\", \"$q\", \"bizCoreService\", \"bizCore\", \"$filter\", \"$scope\"];\r\n mysecurityController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\"];\r\n mycustomsettingsController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\", \"$translate\", \"$scope\"];\r\n mycolleaguesController.$inject = [\"$rootScope\", \"core.unit.service\"];\r\n myleaderboardsController.$inject = [\"$rootScope\", \"core.unit.service\", \"core.leaderboard.service\"];\r\n myRelatedUsersController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\", \"$translate\", \"$stateParams\", \"$q\"];\r\n\r\n function myRelatedUsersController($rootScope, userService, $mdToast, $translate, $stateParams, $q) {\r\n var vm = this;\r\n\r\n vm.Clean = $stateParams.clean === true;\r\n\r\n vm.AddRelatedUser = AddRelatedUser;\r\n vm.RemoveRelatedUser = RemoveRelatedUser;\r\n vm.FilterByRelationType = FilterByRelationType;\r\n vm.Save = Save;\r\n\r\n function FilterByRelationType(relationTypeId) {\r\n return function (user) {\r\n if (!user.Relations) return false;\r\n\r\n var relations = user.Relations.GetItemsByValue('RelationTypeId', relationTypeId);\r\n if (!relations) return false;\r\n var byParent = relations.GetItemByValue('ParentUserId', $rootScope.LoggedInUser.Id)\r\n if (byParent !== null) return true;\r\n\r\n return relations.GetItemByValue('ChildUserId', $rootScope.LoggedInUser.Id) !== null;\r\n };\r\n };\r\n\r\n function AddRelatedUser(relationTypeId, focus) {\r\n vm.RelatedUsers.push({\r\n Relations: [{\r\n RelationTypeId: relationTypeId,\r\n ParentUserId: $rootScope.LoggedInUser.Id\r\n }],\r\n Focus: focus\r\n });\r\n }\r\n\r\n function RemoveRelatedUser(user) {\r\n var index = vm.RelatedUsers.indexOf(user);\r\n if (index > -1) {\r\n vm.RelatedUsers.splice(index, 1);\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n\r\n function Save() {\r\n userService.UpdateRelatedUsers(vm.RelatedUsers).then(function(response) {\r\n vm.RelatedUsers = response.data || [];\r\n \r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n vm.HasSaved = true;\r\n\r\n //$mdToast.show($mdToast.simple().content('Successfully saved').position(\"bottom right\"));\r\n $translate('PROFILE.RELATED_USERS_SAVED').then(function (translation) {\r\n $mdToast.show($mdToast.simple().content(translation).position(\"bottom right\"));\r\n });\r\n }, function () {\r\n $mdToast.show($mdToast.simple().content('Error saving').position(\"bottom right\"));\r\n });\r\n }\r\n\r\n function Init() {\r\n $q.all([\r\n userService.GetRelationTypes(),\r\n userService.GetRelatedUsers()\r\n ]).then(function (result) {\r\n vm.RelationTypes = result[0].data;\r\n vm.RelatedUsers = result[1].data || [];\r\n\r\n if (vm.Clean && vm.RelatedUsers.length === 0 && $rootScope.MiniSettings[\"Profile\"].AutoExpandRelatedUserSystemNamesOnClean.length) {\r\n var autoExpandSystemNames = $rootScope.MiniSettings[\"Profile\"].AutoExpandRelatedUserSystemNamesOnClean;\r\n for (var i = 0; i < vm.RelationTypes.length; i++) {\r\n if (autoExpandSystemNames.includes(vm.RelationTypes[i].SystemName)) {\r\n vm.AddRelatedUser(vm.RelationTypes[i].Id);\r\n }\r\n }\r\n }\r\n }) \r\n }\r\n\r\n $rootScope.Initialized.then(Init);\r\n }\r\n\r\n function mycustomsettingsController($rootScope, userService, $mdToast, $translate, $scope) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.Initialized = false;\r\n \r\n vm.Init = Init;\r\n vm.Save = Save;\r\n vm.IsFieldRestricted = IsFieldRestricted;\r\n vm.IsFieldMandatory = IsFieldMandatory;\r\n\r\n function IsFieldMandatory(customField) {\r\n if (customField.IsMandatory) {\r\n return true;\r\n }\r\n\r\n const group = customField.CustomSettings?.GroupName;\r\n if (!group) return false;\r\n\r\n const groupMandatoryAllOrNone = customField.CustomSettings?.GroupMandatoryAllOrNone;\r\n if (!groupMandatoryAllOrNone) return false;\r\n\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n const customField = vm.User.CustomData[i];\r\n if (customField.CustomSettings?.GroupName === group && customField.Value) {\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n\r\n function IsFieldRestricted(field) {\r\n if (!vm.RestrictedFields) return false;\r\n\r\n var f = vm.RestrictedFields.find(rf => rf.FieldType === 2 && rf.Name.toLowerCase() === field.toLowerCase());\r\n return f !== undefined;\r\n }\r\n\r\n function Save() {\r\n\r\n if (vm.User.CustomData) {\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n var customField = vm.User.CustomData[i];\r\n if (customField.SelectedOption) {\r\n customField.Value = customField.SelectedOption.Id;\r\n }\r\n }\r\n }\r\n\r\n userService.SaveCustomProfileData(vm.User).then(SuccessCallback, HandleError);\r\n \r\n function SuccessCallback(response) {\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n \r\n $mdToast.show($mdToast.simple().content('Successfully saved').position(\"bottom right\")); \r\n }\r\n\r\n function HandleError() {\r\n console.log(\"error!\")\r\n $mdToast.show($mdToast.simple().content('Error saving profile').position(\"bottom right\"));\r\n }\r\n }\r\n\r\n function Init()\r\n {\r\n userService.GetProfile().then(SuccessCallback);\r\n userService.GetProfileRestrictedFields().then(GetProfileRestrictedFieldsSuccess);\r\n\r\n $translate([\r\n 'CORE.EXTSETTINGS_DISABLED_TEXT'\r\n ]).then(GetTranslationsCallback);\r\n\r\n function SuccessCallback(response) {\r\n vm.Initialized = true;\r\n vm.User = response.data;\r\n console.log(\"vm.User\", vm.User);\r\n\r\n if (vm.User.CustomData) {\r\n var currentGroup = null;\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n var customField = vm.User.CustomData[i];\r\n var group = customField.CustomSettings?.GroupName ?? null;\r\n if (currentGroup !== group && (i > 0 || group)) {//new group on first item only if there is a group\r\n customField.NewGroup = true;\r\n }\r\n\r\n currentGroup = group;\r\n\r\n if (customField.CustomSettings?.Options) {\r\n const selected = customField.CustomSettings.Options.GetItemByValue('Id', customField.Value);\r\n if (selected) {\r\n customField.SelectedOption = selected;\r\n }\r\n }\r\n }\r\n\r\n $scope.$watch('vm.User.CustomData', function (newValue, oldValue) {\r\n if (vm.MyForm?.$dirty) {\r\n return;\r\n }\r\n\r\n if (newValue && oldValue) {\r\n for (var i = 0; i < newValue.length; i++) {\r\n if (newValue[i].SelectedOption !== oldValue[i].SelectedOption) {\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n }\r\n }, true);\r\n }\r\n }\r\n\r\n function GetProfileRestrictedFieldsSuccess(response) {\r\n vm.RestrictedFields = response.data;\r\n }\r\n\r\n function GetTranslationsCallback(translations) {\r\n vm.CustomSettingsDisabledText = '

These settings are disabled

';\r\n\r\n var t = translations['CORE.EXTSETTINGS_DISABLED_TEXT'].toString();\r\n if (t !== 'CORE.EXTSETTINGS_DISABLED_TEXT') {\r\n vm.CustomSettingsDisabledText = t;\r\n }\r\n } \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n function mysecurityController($rootScope, userService, $mdToast) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.OldPassword;\r\n vm.NewPassword;\r\n vm.NewPasswordRepeat;\r\n vm.ShowPasswords = false;\r\n\r\n vm.Save = Save;\r\n vm.ToggleShowPassword = ToggleShowPassword;\r\n\r\n function ToggleShowPassword() {\r\n vm.ShowPasswords = !vm.ShowPasswords;\r\n \r\n document.getElementById('newPassword').setAttribute('type', vm.ShowPasswords ? 'text' : 'password');\r\n document.getElementById('newPasswordRepeat').setAttribute('type', vm.ShowPasswords ? 'text' : 'password');\r\n }\r\n\r\n function IsPasswordValidToSave() {\r\n if (vm.OldPassword && vm.OldPassword != \"\" && vm.NewPassword && vm.NewPassword != \"\" && vm.NewPassword === vm.NewPasswordRepeat)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n function Save() {\r\n if (IsPasswordValidToSave() === false)\r\n return false;\r\n\r\n userService.UpdateMyPassword(vm.NewPassword, vm.OldPassword).then(UpdateMyPasswordSuccess);\r\n\r\n function UpdateMyPasswordSuccess(response) {\r\n \t$mdToast.show($mdToast.simple().content(response.data).position(\"bottom right\"));\r\n\r\n \tvm.OldPassword = undefined;\r\n \tvm.NewPassword = undefined;\r\n vm.NewPasswordRepeat = undefined;\r\n\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n return true;\r\n }\r\n }\r\n }\r\n \r\n function mypageController($rootScope, $state, educationService, userService, levelService, eventStatisticsService, engageService, certificationsService) {\r\n var vm = this;\r\n vm.PageMax = 20;\r\n vm.UserStats = undefined;\r\n vm.AuthToken = getBizPartAuthToken();\r\n vm.Mascot = mascot;\r\n\r\n vm.EducationCount = -1;\r\n vm.BlogCount = -1;\r\n vm.VideoCount = -1;\r\n vm.ScormCount = -1;\r\n vm.QuizCount = -1;\r\n vm.TotalEducationCount = -1;\r\n\r\n vm.Notifications = [];\r\n vm.NotificationsPage = 1;\r\n vm.ActivityLog = [];\r\n vm.ActivityLogPage = 1;\r\n vm.GainMoreExperience = [];\r\n vm.GainMoreExperiencePage = 1;\r\n vm.LastGainedExperience = [];\r\n vm.LastGainedExperiencePage = 1;\r\n vm.CertificationCount = 0;\r\n vm.CompletedEducationCount = 0;\r\n\r\n vm.GetCompletedCount = GetCompletedCount;\r\n vm.GetLoggedInUserNotifications = GetLoggedInUserNotifications;\r\n vm.GetLoggedInUserExperiencePointHistory = GetLoggedInUserExperiencePointHistory;\r\n vm.GetAllEventStatisticsForUser = GetAllEventStatisticsForUser;\r\n vm.GetSuggestions = GetSuggestions;\r\n vm.GoToSuggestion = GoToSuggestion;\r\n vm.GetSuggestionIcon = GetSuggestionIcon;\r\n vm.ShowCertificates = ShowCertificates;\r\n vm.GetUserLogStats = GetUserLogStats;\r\n vm.GetStatCount = GetStatCount;\r\n vm.Initialize = Initialize;\r\n vm.GoToItem = GoToItem;\r\n\r\n function GoToItem(item) { \r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) {\r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n $state.go(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n $state.go(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n $state.go(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n }\r\n }\r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n switch (item.ObjectType) {\r\n case 'HTML5':\r\n $state.go(\"base.modules.html5education\", { id: item.ObjectId });\r\n break;\r\n case 'MediabankFile':\r\n $state.go(\"base.modules.mediafile\", { id: item.ObjectId });\r\n break;\r\n case 'Blog':\r\n $state.go(\"base.modules.blog\", { id: item.ObjectId });\r\n break;\r\n case 'SCORM':\r\n location.href = siteRootPath + \"SCORM/\" + item.ObjectId;\r\n break;\r\n } \r\n }\r\n\r\n function GetStatCount(types) {\r\n var count = -1;\r\n if(types && vm.UserStats) {\r\n //We handle multiple types...\r\n if(types.length > 1) {\r\n for(var i = 0; i < types.length; i++) {\r\n for(var y = 0; y < vm.UserStats.EngageObjectLogs.length; y++) {\r\n if(vm.UserStats.EngageObjectLogs[y].EngageObjectType === types[i] && vm.UserStats.EngageObjectLogs[y].Passed === true) {\r\n count++;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for(var i = 0; i < vm.UserStats.EngageObjectLogs.length; i++) {\r\n if(vm.UserStats.EngageObjectLogs[i].EngageObjectType === types && vm.UserStats.EngageObjectLogs[i].Passed === true) {\r\n count++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function GetUserLogStats() {\r\n userService.GetUserLogStats().then(function(response) {\r\n vm.UserStats = response.data;\r\n\r\n var eduCount = 0;\r\n var blogCount = 0;\r\n var videoCount = 0;\r\n var scormCount = 0;\r\n var quizCount = 0;\r\n for (var i = 0; i < vm.UserStats.EngageObjectLogs.length; i++) {\r\n if (vm.UserStats.EngageObjectLogs[i].Passed === true) {\r\n switch (vm.UserStats.EngageObjectLogs[i].EngageObjectType) {\r\n case 1:\r\n eduCount++;\r\n break;\r\n case 2:\r\n blogCount++;\r\n break;\r\n case 3:\r\n videoCount++;\r\n break;\r\n case 4:\r\n scormCount++;\r\n break;\r\n case 5:\r\n quizCount++;\r\n break;\r\n }\r\n\r\n } \r\n }\r\n \r\n vm.EducationCount = eduCount;\r\n vm.BlogCount = blogCount;\r\n vm.VideoCount = videoCount;\r\n vm.ScormCount = scormCount;\r\n vm.QuizCount = quizCount;\r\n vm.TotalEducationCount = eduCount + scormCount;\r\n\r\n console.log(\"count done\"); \r\n });\r\n }\r\n\r\n function ShowCertificates(){\r\n \t$mdDialog.show({\r\n \t\ttemplateUrl: siteRootPath + \"Frontend/Core/Views/mypagecertificates.html\",\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tcontroller: certificateController,\r\n\t\t\t\tbindToController: true\r\n \t});\r\n\t\t\t\r\n \tcertificateController.$inject = [\"$mdDialog\"];\r\n\r\n \tfunction certificateController($mdDialog) {\r\n \t\tvar vm = this;\r\n\r\n \t\tvm.GetCertificates = GetCertificates;\r\n\r\n \t\tfunction GetCertificates() {\r\n\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function GetCompletedCount() {\r\n educationService.GetCompletedCount().then(GetCompletedCountSuccess);\r\n\r\n function GetCompletedCountSuccess(response) {\r\n vm.CompletedEducationCount = response.data.Education;\r\n vm.CompletedEducationCount += response.data.CertificationEducation;\r\n\r\n vm.CertificationCount = response.data.Certification;\r\n }\r\n }\r\n\r\n function GetLoggedInUserNotifications(page) {\r\n userService.GetLoggedInUserNotifications(vm.PageMax, page).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n vm.Notifications = response.data;\r\n }\r\n }\r\n\r\n function GetLoggedInUserExperiencePointHistory(page) {\r\n levelService.GetLoggedInUserExperiencePointHistory(vm.PageMax, page).then(GetLoggedInUserExperiencePointHistorySuccess);\r\n\r\n function GetLoggedInUserExperiencePointHistorySuccess(response) {\r\n vm.LastGainedExperience = response.data;\r\n }\r\n }\r\n\r\n function GetAllEventStatisticsForUser(page) {\r\n eventStatisticsService.GetAllEventStatisticsForUser(page, vm.PageMax).then(GetAllEventStatisticsForUserSuccess);\r\n\r\n function GetAllEventStatisticsForUserSuccess(response) {\r\n vm.ActivityLog = response.data;\r\n }\r\n }\r\n\r\n function GetSuggestions(page) {\r\n engageService.GetSuggestions(page, vm.PageMax).then(GetSuggestionsSuccess);\r\n\r\n function GetSuggestionsSuccess(response) {\r\n vm.GainMoreExperience = response.data;\r\n }\r\n }\r\n\r\n function GoToSuggestion(item) {\r\n switch (item.ControlType) {\r\n case \"HTML5EDUCATION\":\r\n $state.go('base.modules.html5education', {id: item.Value.Id});\r\n break;\r\n case \"MISSION\":\r\n $state.go('base.modules.missionsview', {id: item.Value.Id});\r\n break;\r\n }\r\n }\r\n\r\n function GetSuggestionIcon(item) {\r\n switch (item.ControlType) {\r\n case \"HTML5EDUCATION\":\r\n return \"fa-graduation-cap\";\r\n case \"MISSION\":\r\n return \"fa-star\";\r\n }\r\n }\r\n\r\n function GetCertificationsForUser() {\r\n certificationsService.GetCertificationsForUser().then(function(response) {\r\n vm.UserCerts = response.data;\r\n });\r\n }\r\n\r\n function Initialize() {\r\n vm.GetCompletedCount();\r\n vm.GetLoggedInUserNotifications(vm.NotificationsPage);\r\n vm.GetAllEventStatisticsForUser(vm.ActivityLogPage);\r\n vm.GetSuggestions(vm.GainMoreExperiencePage);\r\n\r\n vm.GetUserLogStats();\r\n GetCertificationsForUser();\r\n\r\n if (IsPortalSettingTrue('IsLevelSystemEnabled')) {\r\n vm.GetLoggedInUserExperiencePointHistory(vm.LastGainedExperiencePage);\r\n }\r\n }\r\n\r\n vm.Initialize();\r\n }\r\n\r\n function mysettingsController($rootScope, userService, $mdDialog, $translate, bizMediabankService, bizMediabankUploadService, $mdToast, $q, bizCoreService, bizCoreProvider, $filter, $scope) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.Initialized = false;\r\n vm.GendersInitialized = $q.defer();\r\n vm.CountriesInitialized = $q.defer();\r\n vm.UnitTypesInitialized = $q.defer();\r\n vm.UserUnitsInitialized = $q.defer();\r\n \r\n vm.GetUser = GetUser;\r\n vm.UpdateCustomFieldValue = UpdateCustomFieldValue;\r\n vm.GetCustomFieldValue = GetCustomFieldValue;\r\n \r\n vm.AllowSms = false;\r\n vm.PortalCustomerName = portalCustomerName;\r\n vm.NotificationSettings = notificationSettings;\r\n \r\n vm.SaveMyDetails = SaveMyDetails;\r\n vm.Unregister = Unregister;\r\n vm.AskToUnregister = AskToUnregister;\r\n vm.UpdateAllowSMSForLoggedInUser = UpdateAllowSMSForLoggedInUser;\r\n vm.GetLoggedInUserSetting = GetLoggedInUserSetting;\r\n vm.GetLoggedInUserSettingAsBoolean = GetLoggedInUserSettingAsBoolean;\r\n vm.SetFile = SetFile;\r\n vm.SetTempFile = SetTempFile;\r\n vm.GetProfileImageUrl = GetProfileImageUrl;\r\n vm.FavoriteTagFilter = FavoriteTagFilter;\r\n vm.SetSelectedUserType = SetSelectedUserType;\r\n vm.GetProfileRestrictedFields = GetProfileRestrictedFields;\r\n vm.IsFieldRestricted = IsFieldRestricted;\r\n vm.SetGender = SetGender;\r\n \r\n vm.Initialize = Initialize;\r\n\r\n function GetProfileImageUrl() {\r\n if (!vm.User)\r\n return $filter('siteroot')('Images/Common/no_user_photo.png');\r\n\r\n return (vm.TempFile ? ($filter('ngfDataUrl')(vm.TempFile)) : ($filter('siteroot')(vm.User.Photo ? vm.User.Photo : 'Images/Common/no_user_photo.png')));\r\n }\r\n\r\n function IsFieldRestricted(field) {\r\n if (!vm.RestrictedFields) return false;\r\n\r\n var f = vm.RestrictedFields.find(rf => rf.FieldType === 1 && rf.Name.toLowerCase() === field.toLowerCase());\r\n return f !== undefined;\r\n }\r\n\r\n function GetProfileRestrictedFields() {\r\n userService.GetProfileRestrictedFields().then(GetProfileRestrictedFieldsSuccess);\r\n\r\n function GetProfileRestrictedFieldsSuccess(response) {\r\n vm.RestrictedFields = response.data;\r\n }\r\n }\r\n\r\n function GetUser() {\r\n userService.GetProfile().then(GetLoggedInUserSuccess); //GetLoggedInUserFromDB\r\n \r\n function GetLoggedInUserSuccess(response) {\r\n vm.Initialized = true;\r\n vm.User = response.data;\r\n vm.GetCustomFieldValue();\r\n vm.SetSelectedUserType();\r\n vm.SetGender();\r\n SetCountry();\r\n SetUnits();\r\n\r\n vm.HadMiddleNameOnLastFetch = vm.User.MiddleName && vm.User.MiddleName.length > 0;\r\n }\r\n }\r\n\r\n function SetUnits() {\r\n vm.UnitTypesInitialized.promise.then(function () {\r\n //todo: support for multiple units of the same type, because that might be the case, right?\r\n for (var i = 0; i < vm.User.Units.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit.GetItemByValue('Id', vm.User.Units[i].UnitTypeId);\r\n if (ut) {\r\n var unit = ut.Units.GetItemByValue('Id', vm.User.Units[i].Id);\r\n if (unit) {\r\n ut.SelectedUnit = unit;\r\n }\r\n } \r\n }\r\n \r\n console.log(\"unittypes init user\", vm.User);\r\n\r\n vm.UserUnitsInitialized.resolve('');\r\n });\r\n }\r\n\r\n function SetCountry() {\r\n vm.CountriesInitialized.promise.then(function () {\r\n if (vm.User.CountryId > 0) {\r\n var userCountry = vm.Countries.filter(c => c.Id === vm.User.CountryId);\r\n if (userCountry.length === 1) {\r\n vm.SelectedCountry = userCountry[0];\r\n } else {\r\n console.log(\"more than one country matched? something is wrong...\")\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n function SetGender() {\r\n vm.GendersInitialized.promise.then(function () {\r\n if (vm.User.Gender) {\r\n var userGender = vm.Genders.filter(g => g.SystemName.toLowerCase() == vm.User.Gender.toLowerCase());\r\n if (userGender.length === 1) {\r\n vm.User.Gender = userGender[0].SystemName;//in case there is a case difference\r\n } else if (userGender.length === 0) {\r\n vm.Genders.push({\r\n SystemName: vm.User.Gender,\r\n DisplayName: vm.User.Gender\r\n });\r\n } else {\r\n console.log(\"more than one gender matched? something is wrong...\")\r\n }\r\n }\r\n })\r\n }\r\n\r\n function GetCustomFieldValue() {\r\n userService.GetCustomFieldValue(1, vm.User.Id).then(GetCustomFieldValueSuccess);\r\n\r\n function GetCustomFieldValueSuccess(response) {\r\n if(response.data)\r\n vm.CompanyNumber = response.data.Value ? response.data.Value : undefined;\r\n }\r\n }\r\n\r\n function UpdateCustomFieldValue() {\r\n userService.UpdateCustomFieldValue(1, vm.User.Id, vm.CompanyNumber).then(UpdateCustomFieldValueSuccess);\r\n\r\n function UpdateCustomFieldValueSuccess(response) {\r\n }\r\n }\r\n\r\n function SetTempFile(files) {\r\n \tif (!files.length)\r\n \t\treturn;\r\n\t\t\t\t\r\n \tvm.TempFile = files[0];\r\n console.log(vm.TempFile);\r\n\r\n vm.MyForm.$setDirty();\r\n }\r\n\r\n function SetFile(file) {\r\n \tif (file.length > 0) {\r\n \t\tvm.File = file[0];\r\n\r\n \t\tvar settings = {\r\n \t\t\tFileType: bizMediabankService.FileTypes.Image,\r\n \t\t\tFileLocation: bizMediabankService.UploadLocations.UserProfile,\r\n \t\t\tFilePattern: '',\r\n \t\t\tIsPrivate: true,\r\n \t\t\tIsInvisible: true,\r\n \t\t\tIsPrivateControlHidden: true,\r\n \t\t\tIsInvisibleControlHidden: true,\r\n \t\t\tIsUser: true\r\n \t\t}\r\n\r\n \t\tvar promise = bizMediabankUploadService.UploadFile(vm.File, vm.File.name, '', bizMediabankService.UploadLocations.UserProfile, true, true, settings, [], []);\r\n \t\tpromise.then(UploadFileSuccessCallback);\r\n\r\n \t\treturn promise;\r\n\r\n \t\tfunction UploadFileSuccessCallback(response) {\r\n \t\t\tif (response) {\r\n \t\t\t\tvar status = response.data;\r\n \t\t\t\tvm.File = status.Object;\r\n \t\t\t\tvm.User.Photo = vm.File.FileUrl;\r\n \t\t\t\t$rootScope.LoggedInUser.Photo = vm.File.FileUrl;\r\n \t\t\t\tvm.TempFile = undefined;\r\n userService.SaveBasicProfile(vm.User);\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function SaveMyDetails(showToast) {\r\n if (vm.TempFile)\r\n vm.SetFile([vm.TempFile]).then(SuccessCallback);\r\n else {\r\n vm.User.UserTypeId = (vm.SelectedUserType && vm.SelectedUserType.Id > 0 ? vm.SelectedUserType.Id : -1);\r\n vm.User.CountryId = (vm.SelectedCountry && vm.SelectedCountry.Id > 0 ? vm.SelectedCountry.Id : -1);\r\n \r\n //todo: support for multiple units of the same type, because that might be the case, right?\r\n if (vm.AllowedUnitTypesToEdit) {\r\n for (var i = 0; i < vm.AllowedUnitTypesToEdit.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit[i];\r\n var currentUserUnitsForType = vm.User.Units.filter(u => u.UnitTypeId === ut.Id);\r\n if (currentUserUnitsForType.length > 1) {\r\n console.error(\"Multiple units of the same type not supported yet\")\r\n continue;//no support for multiple units of the same type yet\r\n }\r\n \r\n var currentUserUnit = currentUserUnitsForType.length === 1 ? currentUserUnitsForType[0] : null;\r\n\r\n var removeCurrentUnit = currentUserUnit && (!ut.SelectedUnit || ut.SelectedUnit.Id !== currentUserUnit.Id);\r\n var addNewUnit = ut.SelectedUnit && (!currentUserUnit || ut.SelectedUnit.Id !== currentUserUnit.Id);\r\n\r\n if (removeCurrentUnit) {\r\n vm.User.Units = vm.User.Units.filter(u => u.Id !== currentUserUnit.Id);\r\n }\r\n\r\n if (addNewUnit) {\r\n vm.User.Units.push(ut.SelectedUnit);\r\n } \r\n }\r\n }\r\n \r\n userService.SaveBasicProfile(vm.User).then(SuccessCallback);\r\n }\r\n\r\n \tvm.UpdateAllowSMSForLoggedInUser();\r\n\r\n if (vm.CompanyNumber && vm.CompanyNumber != \"\")\r\n vm.UpdateCustomFieldValue();\r\n\r\n function SuccessCallback(response) {\r\n \t$rootScope.LoggedInUser = angular.copy(vm.User);\r\n\r\n vm.IsEditMode = false;\r\n\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n \tif (showToast){\r\n \t\t$translate('CORE.DETAILSUPDATED').then(function(translation) {\r\n \t\t\t$mdToast.show($mdToast.simple().content(translation).position(\"bottom right\"));\r\n \t\t});\r\n \t}\r\n }\r\n }\r\n\r\n function Unregister() {\r\n userService.DeleteMe().then(DeleteMeSuccess);\r\n\r\n function DeleteMeSuccess() {\r\n window.location.href = siteRootPath;\r\n }\r\n }\r\n\r\n function AskToUnregister() {\r\n $translate('CORE.ASKTOUNREGISTER').then(function(translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: profileDialogController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation,\r\n IsSureCheck: true\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n if (response) {\r\n vm.Unregister();\r\n }\r\n });\r\n });\r\n }\r\n\r\n function UpdateAllowSMSForLoggedInUser() {\r\n userService.UpdateAllowSMSForLoggedInUser(vm.AllowSms).then(UpdateAllowSMSForLoggedInUserSuccess).catch(UpdateAllowSMSForLoggedInUserError);\r\n\r\n function UpdateAllowSMSForLoggedInUserSuccess(response) {\r\n\r\n }\r\n\r\n function UpdateAllowSMSForLoggedInUserError(err) {\r\n vm.AllowSms = !vm.AllowSms;\r\n\r\n $translate('CORE.ERROR.SOMETHING').then(function (translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: profileDialogController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n });\r\n });\r\n }\r\n }\r\n\r\n function GetLoggedInUserSetting(key, callback) {\r\n userService.GetLoggedInUserSetting(key).then(callback);\r\n }\r\n\r\n function GetLoggedInUserSettingAsBoolean(key, callback) {\r\n userService.GetLoggedInUserSettingAsBoolean(key).then(callback);\r\n }\r\n\r\n function FavoriteTagFilter(tag) {\r\n \treturn vm.ShowMoreFavorites || tag.Favorite === undefined || tag.Favorite;\r\n }\r\n\r\n function SetSelectedUserType() {\r\n if (vm.UserTypes && vm.User) {\r\n vm.SelectedUserType = vm.UserTypes.GetItemByValue('Id', vm.User.UserTypeId);\r\n }\r\n }\r\n\r\n function Initialize() {\r\n\r\n userService.GetGenders().then(GetGendersCallback);\r\n\r\n vm.GetProfileRestrictedFields();\r\n \tvm.GetUser();\r\n\r\n vm.GetLoggedInUserSettingAsBoolean('blnAllowSMS', function(response) {\r\n vm.AllowSms = response.data;\r\n });\r\n\r\n bizCoreService.GetAllTags($rootScope.LoggedInUser.CurrentCultureId).then(GetTagsCallback);\r\n userService.GetUserTypes().then(GetUserTypesCallback);\r\n bizCoreService.GetAllActiveCountries().then(GetAllActiveCountriesCallback);\r\n userService.GetProfileAllowedUnitsToEdit().then(GetProfileAllowedUnitsToEditCallback);\r\n\r\n function GetTagsCallback(response) {\r\n \tvm.Tags = response.data;\r\n }\r\n\r\n function GetUserTypesCallback(response) {\r\n vm.UserTypes = response.data;\r\n vm.UserTypes = $filter('orderBy')(vm.UserTypes, 'Name');\r\n vm.SetSelectedUserType();\r\n }\r\n\r\n function GetAllActiveCountriesCallback(response) {\r\n vm.Countries = response.data;\r\n vm.CountriesInitialized.resolve('');\r\n }\r\n\r\n function GetGendersCallback(response) {\r\n var genders = BizPartCoreHelpers.getResponseValue(response);\r\n if ($rootScope.MiniSettings[\"Profile\"].CustomGenderFilterFn) {\r\n vm.Genders = $rootScope.MiniSettings[\"Profile\"].CustomGenderFilterFn(genders);\r\n } else {\r\n vm.Genders = genders;\r\n } \r\n\r\n vm.GendersInitialized.resolve('');\r\n }\r\n\r\n function GetProfileAllowedUnitsToEditCallback(response) {\r\n vm.AllowedUnitsToEdit = response.data;\r\n vm.AllowedUnitTypesToEdit = [];\r\n for (var i = 0; i < vm.AllowedUnitsToEdit.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit.GetItemByValue('Id', vm.AllowedUnitsToEdit[i].UnitTypeId);\r\n if (!ut) {\r\n ut = {\r\n Id: vm.AllowedUnitsToEdit[i].UnitTypeId,\r\n Name: vm.AllowedUnitsToEdit[i].UnitTypeName,\r\n Units: []\r\n }\r\n vm.AllowedUnitTypesToEdit.push(ut);\r\n }\r\n ut.Units.push(vm.AllowedUnitsToEdit[i]);\r\n } \r\n vm.UnitTypesInitialized.resolve('');\r\n }\r\n\r\n $scope.$watch('vm.SelectedCountry', function (newValue, oldValue) { \r\n if (vm.MyForm?.$dirty) {\r\n return;\r\n }\r\n\r\n if (oldValue && newValue != oldValue) {\r\n vm.MyForm.$setDirty();\r\n }\r\n }, true);\r\n\r\n vm.UserUnitsInitialized.promise.then(function () {\r\n $scope.$watch('vm.AllowedUnitTypesToEdit', function (newValue, oldValue) {\r\n if (vm.MyForm?.$dirty || !newValue || !oldValue) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < newValue.length; i++) {\r\n if (newValue[i].SelectedUnit?.Id !== oldValue[i].SelectedUnit?.Id) {\r\n console.log(\"unit changed, new\", newValue[i].SelectedUnit?.Id);\r\n console.log(\"unit changed, old\", oldValue[i].SelectedUnit?.Id);\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n\r\n }, true);\r\n }) \r\n }\r\n\r\n profileDialogController.$inject = [\"$mdDialog\"];\r\n\r\n function profileDialogController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n vm.Ok = Ok;\r\n\r\n function Close() {\r\n $mdDialog.cancel();\r\n }\r\n\r\n function Ok() {\r\n $mdDialog.hide(true);\r\n }\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Initialize);\r\n\r\n \r\n }\r\n\r\n function mycolleaguesController($rootScope, unitService) {\r\n var vm = this;\r\n vm.MyUnit = {};\r\n vm.UnitUsers = [];\r\n vm.Units = [];\r\n vm.ShowSpecificUnit = false;\r\n\r\n vm.GetUsersInUnit = GetUsersInUnit;\r\n vm.Initialize = Initialize;\r\n\r\n function InitializeUnit() {\r\n if ($rootScope.LoggedInUser.Units.length == 1) {\r\n vm.MyUnit = $rootScope.LoggedInUser.Units[0];\r\n\r\n if (~~vm.MyUnit.ParentId > 0) {\r\n GetUnitsByParent(~~vm.MyUnit.ParentId);\r\n }\r\n else {\r\n GetUsersInUnit(vm.MyUnit.Id);\r\n }\r\n }\r\n else {\r\n //Handle multiple units...\r\n }\r\n }\r\n\r\n function GetUsersInUnit(unitId) {\r\n vm.UnitUsers = [];\r\n unitService.GetUsersInUnit(unitId).then(GetUsersInUnitSuccess);\r\n\r\n function GetUsersInUnitSuccess(response) {\r\n vm.UnitUsers = response.data;\r\n }\r\n }\r\n\r\n function GetUnitsByParent(parentId) {\r\n unitService.GetUnitsByParent(parentId).then(GetUnitsByParentSuccess);\r\n\r\n function GetUnitsByParentSuccess(response) {\r\n vm.Units = response.data;\r\n }\r\n }\r\n\r\n function Initialize() {\r\n InitializeUnit();\r\n }\r\n\r\n vm.Initialize();\r\n }\r\n\r\n function myleaderboardsController($rootScope, unitService, leaderboardService) {\r\n var vm = this;\r\n vm.MyUnit = {};\r\n vm.MainUnitLeaderboard = [];\r\n vm.MainUnitLeaderboardMonth = [];\r\n vm.MainUnitLeaderboardYear = [];\r\n vm.UnitLeaderboard = [];\r\n vm.UnitLeaderboardMonth = [];\r\n vm.UnitLeaderboardYear = [];\r\n vm.Limit = 5;\r\n\r\n vm.Initialize = Initialize;\r\n vm.InitializeUnit = InitializeUnit;\r\n vm.GetMainUnitLeaderboard = GetMainUnitLeaderboard;\r\n vm.GetMainUnitLeaderboardBetweenDates = GetMainUnitLeaderboardBetweenDates;\r\n vm.GetUnitLeaderboard = GetUnitLeaderboard;\r\n vm.GetUnitLeaderboardBetweenDates = GetUnitLeaderboardBetweenDates;\r\n\r\n function InitializeUnit() {\r\n if ($rootScope.LoggedInUser.Units.length <= 1) {\r\n \tvm.MyUnit = $rootScope.LoggedInUser.Units[0];\r\n }\r\n else {\r\n //Handle multiple units...\r\n }\r\n }\r\n\r\n function GetMainUnitLeaderboard() {\r\n leaderboardService.GetMainUnitLeaderboard(vm.Limit).then(GetMainUnitLeaderboardSuccess);\r\n\r\n function GetMainUnitLeaderboardSuccess(response) {\r\n vm.MainUnitLeaderboard = response.data;\r\n\r\n console.log('vm.MainUnitLeaderboard', vm.MainUnitLeaderboard);\r\n }\r\n }\r\n\r\n function GetMainUnitLeaderboardBetweenDates(startTime, endTime, callback) {\r\n leaderboardService.GetMainUnitLeaderboardBetweenDates(vm.Limit, startTime, endTime).then(callback);\r\n }\r\n\r\n function GetUnitLeaderboard() {\r\n leaderboardService.GetUnitLeaderboard(vm.Limit).then(GetUnitLeaderboardSuccess);\r\n\r\n function GetUnitLeaderboardSuccess(response) {\r\n vm.UnitLeaderboard = response.data;\r\n }\r\n }\r\n\r\n function GetUnitLeaderboardBetweenDates(startTime, endTime, callback) {\r\n leaderboardService.GetUnitLeaderboardBetweenDates(vm.Limit, startTime, endTime).then(callback);\r\n }\r\n\r\n function Initialize() {\r\n \tInitializeUnit();\r\n\r\n\t\t\tif (vm.MyUnit && vm.MyUnit.ParentId){\r\n\t\t\t\tvm.GetMainUnitLeaderboard();\r\n\t\t\t\tvm.GetMainUnitLeaderboardBetweenDates(moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'), MonthLeaderboardCallback);\r\n\t\t\t\tvm.GetMainUnitLeaderboardBetweenDates(moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'), YearLeaderboardCallback);\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.MyUnit){\r\n\t\t\t\tvm.GetUnitLeaderboard();\r\n\t\t\t\tvm.GetUnitLeaderboardBetweenDates(moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'), MonthUnitLeaderboardCallback);\r\n\t\t\t\tvm.GetUnitLeaderboardBetweenDates(moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'), YearUnitLeaderboardCallback);\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.MyUnit) {\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit).then(function (response) { vm.CountryLeaderboard = response.data; });\r\n\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit, moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'))\r\n\t\t\t\t\t.then(function (response) { vm.CountryLeaderboardMonth = response.data; });\r\n\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit, moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'))\r\n\t\t\t\t\t.then(function (response) { vm.CountryLeaderboardYear = response.data; });\r\n\t\t\t}\r\n }\r\n\r\n function MonthLeaderboardCallback(response) {\r\n vm.MainUnitLeaderboardMonth = response.data;\r\n }\r\n\r\n function YearLeaderboardCallback(response) {\r\n vm.MainUnitLeaderboardYear = response.data;\r\n }\r\n\r\n function MonthUnitLeaderboardCallback(response) {\r\n vm.UnitLeaderboardMonth = response.data;\r\n }\r\n\r\n function YearUnitLeaderboardCallback(response) {\r\n vm.UnitLeaderboardYear = response.data;\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Initialize);\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.notifications', notificationsController);\r\n\r\n notificationsController.$inject = [\"core.users.service\", \"$state\", \"bizUser\"];\r\n\r\n function notificationsController(userService, $state, bizUser) {\r\n var vm = this;\r\n vm.PageMax = 2000;\r\n vm.NotificationsPage = 1;\r\n\r\n vm.Settings = notificationSettings;\r\n\r\n vm.Init = Init;\r\n vm.GetLoggedInUserNotifications = GetLoggedInUserNotifications;\r\n vm.GoToItem = GoToItem;\r\n vm.Back = Back; \r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GoToItem(item) { \r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) {\r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n $state.go(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n $state.go(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n $state.go(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n }\r\n }\r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n switch (item.ObjectType) {\r\n case 'HTML5':\r\n $state.go(\"base.modules.html5education\", { id: item.ObjectId });\r\n break;\r\n case 'MediabankFile':\r\n $state.go(\"base.modules.mediafile\", { id: item.ObjectId });\r\n break;\r\n case 'Blog':\r\n $state.go(\"base.modules.blog\", { id: item.ObjectId });\r\n break;\r\n case 'SCORM':\r\n location.href = siteRootPath + \"SCORM/\" + item.ObjectId;\r\n break;\r\n } \r\n }\r\n\r\n function GetLoggedInUserNotifications(page) {\r\n userService.GetLoggedInUserNotifications(vm.PageMax, page).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n vm.Notifications = response.data;\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetLoggedInUserNotifications(vm.NotificationsPage);\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.register', registerController);\r\n\r\n registerController.$inject = [\"$rootScope\", \"core.registerService\", \"$translate\", \"core.users.service\", \"$window\"];\r\n\r\n function registerController($rootScope, registerService, $translate, userService, $window) {\r\n var vm = this;\r\n vm.Register = Register;\r\n vm.AcceptedConditions = false;\r\n vm.Roles = [];\r\n vm.User = {};\r\n vm.Message = '';\r\n vm.IsEmailValid = IsEmailValid;\r\n vm.IsMobileValid = IsMobileValid;\r\n vm.GenderClick = GenderClick;\r\n vm.GetGender = GetGender;\r\n\r\n vm.MobilePattern = /^\\+[0-9]{10,}$/;\r\n vm.EmailPattern = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n //much of the code here is for the possibility of use in custom views, that might not be used in the default view (yet)\r\n \r\n function Init() {\r\n userService.GetGenders().then(GetGendersCallback);\r\n function GetGendersCallback(response) {\r\n vm.Genders = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function GenderClick(gender) {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n vm.Genders[i].checked = vm.Genders[i] === gender;\r\n }\r\n }\r\n\r\n function IsMobileValid() {\r\n if (!vm.User.Mobile) return false;\r\n\r\n return vm.MobilePattern.test(vm.User.Mobile)\r\n }\r\n\r\n function IsEmailValid() {\r\n if (!vm.User || !vm.User.Email) return false;\r\n if (!vm.EmailPattern) return true;\r\n\r\n return vm.EmailPattern.test(vm.User.Email);\r\n }\r\n\r\n function GetGender() {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n if (vm.Genders[i].checked) {\r\n return vm.Genders[i].SystemName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function Register()\r\n {\r\n var gender = vm.GetGender();\r\n \r\n vm.ShowValidation = true;\r\n if (vm.MyForm.$valid && (!vm.GenderIsMandatory || gender) && vm.AcceptedConditions == true && !vm.Submitting && !vm.Submitted )\r\n {\r\n console.log(\"submitted\");\r\n vm.ShowValidation = false;\r\n vm.Submitting = true;\r\n vm.Message = '';\r\n\r\n vm.User.Gender = gender;\r\n vm.User.IsActive = true;\r\n vm.User.CultureId = $rootScope.LoggedInUser.CurrentCultureId;\r\n vm.User.strCulture = $rootScope.Cultures.GetItemByValue('Id', $rootScope.LoggedInUser.CurrentCultureId).CultureCode;\r\n\r\n registerService.CreateUser(vm.User).then(registerSuccess);\r\n\r\n function registerSuccess(response)\r\n {\r\n vm.Submitted = true;\r\n vm.Success = response.data.Success;\r\n\r\n if (response.data.Success == true)\r\n { \r\n $translate('CORE.REGISTER.USERCREATED').then(function (translation) {\r\n vm.SuccessMessage = translation || 'Follow the instructions mailed to you in order to verify your email address and select a password.';\r\n });\r\n }\r\n else {\r\n vm.Message = response.data.Message;\r\n }\r\n\r\n if ($window.dataLayer) {\r\n $window.dataLayer.push({\r\n event: 'form.Submit',\r\n attributes: {\r\n key: 'register-user-form',\r\n success: vm.Success\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('core.terms.show', showTermsController);\r\n\r\n\tshowTermsController.$inject = [\"core.terms.service\"];\r\n\r\n\tfunction showTermsController(termsService) {\r\n\t\tvar vm = this;\r\n\t\tvm.GetTerms = GetTerms;\r\n\r\n\t\tfunction GetTerms() {\r\n\t\t\tvm.GettingsTerms = true;\r\n\t\t\ttermsService.GetSystemTerms().then(GetTermsCallback);\r\n\r\n\t\t\tfunction GetTermsCallback(response) {\r\n\t\t\t\tvm.GettingsTerms = false;\r\n\t\t\t\tvar terms = BizPartCoreHelpers.getResponseValue(response, []);\r\n\t\t\t\tfor (var i = 0; i < terms.length; i++)\r\n\t\t\t\t\tterms[i].InteractionsDisabled = true;\r\n\r\n\t\t\t\tvm.Terms = terms;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.GetTerms();\r\n\t}\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.themestest', themestestController);\r\n\r\n themestestController.$inject = [];\r\n\r\n function themestestController() {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n console.log('ThemesTest init...')\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.unsubscribe', unsubscribe);\r\n\r\n unsubscribe.$inject = ['$rootScope'];\r\n\r\n function unsubscribe($rootScope) {\r\n var vm = this;\r\n\r\n \r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.welcome', welcomeController);\r\n\r\n welcomeController.$inject = [\"$rootScope\", \"bizCoreService\"];\r\n\r\n function welcomeController($rootScope, bizCoreService) {\r\n var vm = this; \r\n\r\n vm.Init = Init;\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function Init() {\r\n bizCoreService.GetWelcomeGuide().then(function (response) {\r\n var showAdvanced = true;//backwards compatibility, if setting is missing\r\n var pages;\r\n if (response.data && response.data !== \"\" && response.data !== null) {\r\n const data = JSON.parse(response.data);\r\n showAdvanced = data.useAdvanced;\r\n pages = data.pages; \r\n }\r\n vm.showAdvanced = showAdvanced;\r\n vm.pages = pages;\r\n }); \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n}(window.angular));","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizActivityReminder', bizActivityReminder);\r\n\tangular.module('bizPartEngage').service('bizActivityReminderService', bizActivityReminderService);\r\n\r\n\tbizActivityReminderService.$inject = [\"$http\"];\r\n\r\n\tfunction bizActivityReminder() {\r\n\t\treturn {\r\n\t\t\trestrict: 'AE',\r\n\t\t\ttemplateUrl: siteRootPath + 'FrontEnd/Core/Directives/Views/ActivityReminders.html',\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: bizActivityReminderController\r\n\t\t};\r\n\r\n\t\tbizActivityReminderController.$inject = [\"bizActivityReminderService\", \"bizPhraseLoaderService\", \"$filter\", \"$q\", \"$rootScope\"];\r\n\r\n\t\tfunction bizActivityReminderController(bizActivityReminderService, bizPhraseLoaderService, $filter, $q, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Initialize = Initialize;\r\n\t\t\tvm.GetPhrasePlaceholders = GetPhrasePlaceholders;\r\n\r\n\t\t\tbizPhraseLoaderService.LoadPart(\"activityreminder\");\r\n\r\n\t\t\tfunction GetPhrasePlaceholders(reminder) {\r\n\t\t\t\tif (reminder.PhrasePlaceholders)\r\n\t\t\t\t\treturn reminder.PhrasePlaceholders;\r\n\r\n\t\t\t\tvar unitName = $rootScope.LoggedInUser.Units.length ? $rootScope.LoggedInUser.Units[0].Name : \"\";\r\n\t\t\t\tvar parentUnitName = $rootScope.LoggedInUser.ParentUnits.length ? $rootScope.LoggedInUser.ParentUnits[0].Name : \"\";\r\n\r\n\t\t\t\treminder.PhrasePlaceholders = {\r\n\t\t\t\t\t'#USER#': reminder.UserInfo.FirstName + ' ' + reminder.UserInfo.LastName,\r\n\t\t\t\t\t'#UNIT#': reminder.UserIdListUsedIndex == 0 ? unitName : parentUnitName,\r\n\t\t\t\t\t'#USERCOUNT#': reminder.UserIds.length - 1\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn reminder.PhrasePlaceholders;\r\n\t\t\t}\r\n\r\n\t\t\tfunction Initialize() {\r\n\t\t\t\tif ($rootScope.LoggedInUser.Id <= 0)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tbizActivityReminderService.GetActivityReminders(1).then(InitializeCallback);\r\n\r\n\t\t\t\tfunction InitializeCallback(response) {\r\n\t\t\t\t\tvar reminders = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n\t\t\t\t\tfor (var i = 0; i < reminders.length; i++) {\r\n\t\t\t\t\t\tif (!reminders[i].ImageUrl)\r\n\t\t\t\t\t\t\tcontinue\r\n\r\n\t\t\t\t\t\tvm.FirstImageUrl = reminders[i].ImageUrl;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.Reminders = reminders;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.Initialize();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bizActivityReminderService($http) {\r\n\t\tvar baseUrl = siteRootPath + 'api/ActivityReminder/'\r\n\r\n\t\treturn {\r\n\t\t\tGetActivityReminders: GetActivityReminders,\r\n\t\t\tSetActivityReminderViewed: SetActivityReminderViewed\r\n\t\t}\r\n\r\n\t\tfunction GetActivityReminders(maxReminders) {\r\n\t\t\treturn $http.get(baseUrl + 'GetActivityReminders', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tmaxReminders: maxReminders\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction SetActivityReminderViewed(reminder) {\r\n\t\t\treturn $http.post(baseUrl + 'SetActivityReminderViewed', reminder);\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizAdminBar', bizAdminBar);\r\n\tangular.module('bizPartEngage').service('bizAdminBarService', bizAdminBarService);\r\n\r\n\tbizAdminBar.$inject = [];\r\n\tbizAdminBarService.$inject = [\"$http\"];\r\n\r\n\tfunction bizAdminBar() {\r\n\t\treturn {\r\n\t\t\trestrict: \"E\",\r\n\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/AdminBar.html\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tcontroller: bizAdminBarController,\r\n\t\t\tbindToController: true,\r\n\t\t\tscope: {\r\n\t\t\t\tsimulating: \"=\",\r\n\t\t\t\tisAllowedToSimulate: \"=?\"\r\n\t\t\t}\r\n\t\t}\t\t\r\n }\r\n\r\n bizAdminBarController.$inject = [\"$rootScope\", \"bizCoreService\", \"$window\", \"$filter\", \"$mdDialog\", \"bizAdminBarService\", \"bizUser\", \"$transitions\", \"$state\", \"$stateParams\", \"$q\"];\r\n\r\n function bizAdminBarController($rootScope, bizCoreService, $window, $filter, $mdDialog, bizAdminBarService, bizUser, $transitions, $state, $stateParams, $q) {\r\n var vm = this; \r\n\r\n vm.Init = Init;\r\n vm.GetCultures = GetCultures;\r\n vm.ChangeCulture = ChangeCulture;\r\n vm.CancelSimulation = CancelSimulation;\r\n vm.ShowSimulateUser = ShowSimulateUser;\r\n vm.GetAdminUrl = GetAdminUrl;\r\n vm.ShowAdminButton = ShowAdminButton;\r\n vm.SetEditButton = SetEditButton;\r\n vm.GotoAdminEdit = GotoAdminEdit;\r\n\r\n vm.SimulatingDate = BizPartCoreHelpers.getSimulatedDate(); \r\n \r\n function ShowAdminButton() {\r\n //if (!vm.simulating || (vm.simulating && bizUser.HasModuleAccess('DASHBOARD', 20)))\r\n return true;\r\n\r\n //return false;\r\n }\r\n\r\n function GetAdminUrl() {\r\n return bizAdminBarService.AdminUrl || $filter(\"siteroot\")(\"Admin\");\r\n }\r\n\r\n function CancelSimulation() {\r\n bizAdminBarService.CancelSimulation().then(CancelSimulationCallback);\r\n\r\n function CancelSimulationCallback(response) {\r\n var simulation = response.data;\r\n deleteCookie(\"BizPartAuthToken\");\r\n setBizPartAuthToken(simulation.SimulatedByUserToken, simulation.SimulatedByUserId, true);\r\n deleteSessionStorage(\"SimulateDate\");\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function ShowSimulateUser() {\r\n $mdDialog.show({\r\n templateUrl: \"simulate-user\",\r\n controller: simulateUserDialogController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n });\r\n\r\n simulateUserDialogController.$inject = [\"$mdDialog\", \"$scope\"];\r\n\r\n function simulateUserDialogController($mdDialog, $scope) {\r\n var vm = this;\r\n\r\n vm.Users = [];\r\n vm.SearchTerm = \"\";\r\n vm.PageIndex = 0;\r\n vm.PageLength = 20;\r\n vm.IncludeInactive = false;\r\n vm.RoleId = -1;\r\n\r\n vm.Close = Close;\r\n vm.SearchUsers = SearchUsers;\r\n vm.SimulateUser = SimulateUser;\r\n vm.SearchMoreUsers = SearchMoreUsers;\r\n\r\n function SearchUsers(pageIndex) {\r\n vm.PageIndex = pageIndex || 0;\r\n vm.GettingUsers = true;\r\n bizAdminBarService.SearchUsers(vm.SearchTerm, vm.PageIndex, vm.PageLength, vm.IncludeInactive, vm.RoleId).then(SearchUsersCallback);\r\n\r\n function SearchUsersCallback(response) {\r\n vm.UserData = response.data;\r\n\r\n if (vm.PageIndex == 0)\r\n vm.Users = vm.UserData.CurrentPageEntries;\r\n else\r\n vm.Users = vm.Users.concat(vm.UserData.CurrentPageEntries);\r\n\r\n vm.GettingUsers = false;\r\n }\r\n }\r\n\r\n function SearchMoreUsers() {\r\n vm.SearchUsers(vm.PageIndex + 1);\r\n }\r\n\r\n function SimulateUser(user) {\r\n vm.PreparingSimulation = true;\r\n bizAdminBarService.SimulateUser(user.Id, vm.Date).then(SimulateUserCallback);\r\n\r\n function SimulateUserCallback(response) {\r\n\r\n var userSession = response.data;\r\n if (!userSession)\r\n return;\r\n\r\n setBizPartAuthToken(userSession.Token, userSession.UserId);\r\n if (vm.Date) {\r\n setSessionStorage(\"SimulateDate\", moment(vm.Date).format('YYYY-MM-DD HH:mm'));\r\n }\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function Close() {\r\n $mdDialog.hide();\r\n }\r\n\r\n function GetRoles() {\r\n bizCoreService.Admin.GetAllRoles(false).then(GetAllRolesCallback);\r\n\r\n function GetAllRolesCallback(response) {\r\n vm.Roles = response.data; \r\n }\r\n }\r\n\r\n $scope.$watch(\"vm.SelectedRole\", function (newValue, oldValue) {\r\n if (newValue != oldValue) {\r\n vm.RoleId = newValue?.Id ?? -1;\r\n vm.SearchUsers(0);\r\n }\r\n });\r\n\r\n GetRoles();\r\n vm.SearchUsers();\r\n }\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n $window.location.href = $filter('siteroot')('/?lang=' + culture.CultureCode.substring(0, 2));\r\n }\r\n\r\n function GetCultures() {\r\n bizCoreService.GetCultures().then(GetCulturesCallback);\r\n\r\n function GetCulturesCallback(response) {\r\n vm.Cultures = response.data;\r\n vm.CurrentCulture = vm.Cultures.GetItemByValue(\"Id\", ~~currentCultureId);\r\n }\r\n }\r\n\r\n function SetEditButton() {\r\n console.log(\"state\", $state.current)\r\n let showBtn = false;\r\n const stateName = $state.current.name;\r\n if (vm.AdminPageMap.has(stateName)) {\r\n const adminInfo = vm.AdminPageMap.get(stateName);\r\n if (!adminInfo.accessTypeKey || $rootScope.HasWriteOrHigherAccess(adminInfo.accessTypeKey)) {\r\n showBtn = true;\r\n } else {\r\n console.log(\"no access\");\r\n }\r\n } \r\n vm.ShowEditButton = showBtn; \r\n }\r\n\r\n function GotoAdminEdit() {\r\n const stateName = $state.current.name;\r\n\r\n if (vm.AdminPageMap.has(stateName)) {\r\n const adminInfo = vm.AdminPageMap.get(stateName);\r\n if (adminInfo.dynamic) {\r\n adminInfo.getFinalUrl(adminInfo.url).then(url => {\r\n $window.location = siteRootPath + url;\r\n }); \r\n } else {\r\n $window.location = siteRootPath + adminInfo.url;\r\n } \r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetCultures();\r\n\r\n const populateId = (url, moduleType, urlRewrite) => {\r\n const deferred = $q.defer();\r\n bizAdminBarService.GetIdByUrlRewrite(moduleType, urlRewrite).then(response => {\r\n const id = BizPartCoreHelpers.getResponseValue(response);\r\n if (~~id > 0) {\r\n const fUrl = url.replace('##id##', id);\r\n deferred.resolve(fUrl);\r\n } else {\r\n deferred.reject('Id not found');\r\n }\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n vm.AdminPageMap = new Map([\r\n [\"base.modules.blog\", {\r\n url: \"Admin#/admin/modules/blog/index\",\r\n accessTypeKey: \"BLOG\"\r\n }],\r\n [\"base.modules.blogtitle\", {\r\n url: \"Admin#/admin/modules/blog/edit/##id##\",\r\n accessTypeKey: \"BLOG\",\r\n dynamic: true,\r\n getFinalUrl: url => populateId(url, 'Blog', $stateParams.title)\r\n }],\r\n [\"base.modules.media\", {\r\n url: \"Admin#/admin/modules/mediabank/general\",\r\n accessTypeKey: \"MEDIABANK\"\r\n }],\r\n [\"base.modules.mediafile\", {\r\n url: \"Admin#/admin/modules/mediabank/view/##id##\",\r\n accessTypeKey: \"MEDIABANK\",\r\n dynamic: true,\r\n getFinalUrl: url => populateId(url, 'MediabankFile', $stateParams.id)\r\n }],\r\n [\"base.modules.journey\", {\r\n url: \"Admin#/admin/journey\",\r\n accessTypeKey: \"JOURNEY\"\r\n }]\r\n ]);\r\n\r\n if ($rootScope.MiniSettings[\"Startpage\"][\"DisableLoadData\"] === false) {\r\n vm.AdminPageMap.set(\"base.home\", {\r\n url: \"Admin#/admin/portal/startpage\",\r\n accessTypeKey: \"PORTAL\"\r\n });\r\n }\r\n\r\n vm.SetEditButton();\r\n\r\n $transitions.onSuccess({}, ($transition) => {\r\n vm.SetEditButton();\r\n })\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n\tfunction bizAdminBarService($http) {\r\n\t\treturn {\r\n\t\t\tSearchUsers: SearchUsers,\r\n\t\t\tSimulateUser: SimulateUser,\r\n CancelSimulation: CancelSimulation,\r\n GetIdByUrlRewrite: GetIdByUrlRewrite\r\n\t\t};\r\n\r\n\t\tfunction SimulateUser(userId, date) {\r\n return $http.post(siteRootPath + 'api/UserAdmin/SimulateUser', {\r\n UserId: userId,\r\n Date: date\r\n });\r\n\t\t}\r\n\r\n\t\tfunction CancelSimulation() {\r\n\t\t\treturn $http.post(siteRootPath + 'api/User/CancelUserSimulation');\r\n\t\t}\r\n\r\n\t\tfunction SearchUsers(searchTerm, pageIndex, pageLength, includeInactive, roleId) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/UserAdmin/SearchUsersPaged', {\r\n\t\t\t\tsearchTerm: searchTerm,\r\n\t\t\t\tpageIndex: pageIndex,\r\n\t\t\t\tpageLength: pageLength,\r\n includeInactive: includeInactive,\r\n roleId: roleId\r\n\t\t\t});\r\n }\r\n\r\n function GetIdByUrlRewrite(objectType, urlRewrite) {\r\n return $http.get(siteRootPath + 'api/Engage/GetIdByUrlRewrite', {\r\n params: {\r\n objectType,\r\n urlRewrite\r\n },\r\n headers: { \r\n IgnoreLoader: true\r\n }\r\n })\r\n }\r\n\t}\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizCookieSettings', bizCookieSettingsDirective);\r\n\r\n\tbizCookieSettingsDirective.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizCookieSettingsDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\r\n\t\t\t},\r\n\t\t\ttemplateUrl: function (element, attr) {\r\n\t\t\t\tif (attr.templateurl) {\r\n\t\t\t\t\treturn siteRootPath + attr.templateurl;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn bizCoreProvider.getView('core.directives.cookiesettings', \"FrontEnd/Core/Directives/Views/CookieSettings.html\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizCookieSettingsController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t};\r\n\r\n\t\tbizCookieSettingsController.$inject = [\"$rootScope\", \"bizCoreService\"];\r\n\r\n\t\tfunction bizCookieSettingsController($rootScope, bizCoreService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\t//vm.Cookies = [{\r\n\t\t\t//\tName: \"Bizpart\",\r\n\t\t\t//\tValue: \"\",\r\n\t\t\t//\tGroup: \"Functional\",\r\n\t\t\t//\tMandatory: true\r\n\t\t\t//}, {\r\n\t\t\t//\tName: \"Google\",\r\n\t\t\t//\tValue: \"\",\r\n\t\t\t//\tGroup: \"Tracking\",\r\n\t\t\t//\tMandatory: false\r\n\t\t\t//}\r\n\t\t\t//];\r\n\r\n\t\t\tvm.ToggleCookie = ToggleCookie;\r\n\r\n\t\t\tfunction ToggleCookie(item) {\r\n\t\t\t\t$rootScope.HasAcceptedCookies = !$rootScope.HasAcceptedCookies;\r\n\t\t\t\tsetLocalStorage(\"HasAcceptedCookies\", $rootScope.HasAcceptedCookies);\r\n\r\n\t\t\t\tif ($rootScope.IsLoggedIn) {\r\n\t\t\t\t\tbizCoreService.UpdateUserSetting(\"HasAcceptedCookies\", $rootScope.HasAcceptedCookies).then(function (response) {\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n }\r\n\r\n function Init() {\r\n }\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tInit();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizCountdownTimer', bizCountdownTimer);\r\n angular.module('bizPartEngage').service('bizCountdownService', bizCountdownService);\r\n\r\n bizCountdownTimer.$inject = [\"bizCore\", \"bizCountdownService\", \"bizUser\"];\r\n bizCountdownService.$inject = [\"$http\"];\r\n\r\n function bizCountdownTimer(bizCore, bizCountdownService, bizUser) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCore.getView('core.directives.countdowntimer', \"FrontEnd/Core/Directives/Views/CountdownTimer.html\"),\r\n link: linkController,\r\n bindToController: true,\r\n controller: bizMyNotesController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n function linkController(scope, element, attrs) {\r\n //Remove directive if we don't have access to it.\r\n if(!bizUser.HasModuleAccess(\"COUNTDOWN\", 10)) {\r\n scope.$destroy();\r\n element.remove();\r\n }\r\n }\r\n\r\n bizMyNotesController.$inject = [\"$rootScope\", \"$interval\"];\r\n\r\n function bizMyNotesController($rootScope, $interval) {\r\n var vm = this;\r\n vm.Countdown = {};\r\n vm.interval;\r\n\r\n vm.StartTimer = StartTimer;\r\n vm.CancelTimer = CancelTimer;\r\n vm.ResetTime = ResetTime;\r\n\r\n function StartTimer(ignoreUpdate) {\r\n if(vm.HasAccessToStartTimer && !ignoreUpdate) {\r\n vm.Countdown.StartTime = moment().utc().format();\r\n bizCountdownService.StartCountdown(vm.Countdown).then(function(response) {\r\n vm.Countdown.Id = response.data.Id;\r\n });\r\n }\r\n\r\n vm.interval = $interval(function() {\r\n if(~~vm.Countdown.Seconds <= 0) {\r\n vm.Countdown.Seconds = 59;\r\n vm.Countdown.Minutes = (~~vm.Countdown.Minutes - 1).toString();\r\n }\r\n else {\r\n vm.Countdown.Seconds = (~~vm.Countdown.Seconds - 1).toString();\r\n if(~~vm.Countdown.Seconds < 10) vm.Countdown.Seconds = \"0\" + (~~vm.Countdown.Seconds).toString();\r\n }\r\n\r\n if(~~vm.Countdown.Minutes < 10) vm.Countdown.Minutes = \"0\" + (~~vm.Countdown.Minutes).toString();\r\n\r\n if(~~vm.Countdown.Minutes <= 0 && vm.Countdown.Seconds <= 0) {\r\n $interval.cancel(vm.interval);\r\n vm.TimerStarted = false;\r\n }\r\n \r\n }, 1000, 0, true, vm);\r\n vm.TimerStarted = true;\r\n }\r\n\r\n function CancelTimer() {\r\n if(vm.HasAccessToStartTimer) {\r\n bizCountdownService.CancelCountdown(vm.Countdown);\r\n }\r\n\r\n $interval.cancel(vm.interval);\r\n vm.TimerStarted = false;\r\n }\r\n\r\n function ResetTime() {\r\n vm.Countdown.Minutes = \"10\";\r\n vm.Countdown.Seconds = \"00\";\r\n }\r\n\r\n function Init() {\r\n vm.ResetTime();\r\n vm.HasAccessToStartTimer = bizUser.HasModuleAccess(\"COUNTDOWN\", 20);\r\n\r\n if(bizUser.HasModuleAccess(\"COUNTDOWN\", 10)) {\r\n bizCountdownService.GetCountdownForLoggedinUser().then(GetCountdownForLoggedinUserSuccess);\r\n }\r\n\r\n function GetCountdownForLoggedinUserSuccess(response) {\r\n if(response.data) {\r\n var countdown = response.data;\r\n vm.Countdown.Id = countdown.Id;\r\n vm.Countdown.CreatedByUserFullName = countdown.CreatedByUserFullName;\r\n var elapsedSeconds = moment(moment().utc()).diff(countdown.StartTime, 'seconds');\r\n var elapsedMinutes = Math.floor(elapsedSeconds / 60);\r\n elapsedSeconds = Math.floor(elapsedSeconds % 60);\r\n \r\n vm.Countdown.Minutes = countdown.Minutes - elapsedMinutes;\r\n\r\n var secondsLeft = countdown.Seconds - elapsedSeconds;\r\n\r\n if(secondsLeft < 0) {\r\n vm.Countdown.Minutes--;\r\n vm.Countdown.Seconds = 60 + secondsLeft;\r\n }\r\n else {\r\n vm.Countdown.Seconds = secondsLeft;\r\n }\r\n\r\n vm.StartTimer(true);\r\n }\r\n }\r\n }\r\n\r\n var hubListender = $rootScope.$on('HUB_COUNTDOWN', function(event, args) {\r\n var c = JSON.parse(args.Content);\r\n if(!vm.TimerStarted && !c.Cancelled) {\r\n vm.Countdown = c;\r\n vm.StartTimer(true);\r\n }\r\n else if(vm.TimerStarted === true && c.Cancelled === true) {\r\n vm.CancelTimer();\r\n }\r\n });\r\n\r\n function Destroy() {\r\n //Unsubscribe for the hub event...\r\n hubListender();\r\n }\r\n\r\n vm.$onInit = Init;\r\n vm.$onDestroy = Destroy;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizCountdownService($http) {\r\n var servicePath = siteRootPath + \"api/Countdown/\";\r\n\r\n this.GetCountdownForLoggedinUser = function() {\r\n return $http.get(servicePath + \"GetCountdownForLoggedinUser\");\r\n };\r\n\r\n this.StartCountdown = function(countdown) {\r\n return $http.post(servicePath + \"StartCountdown\", countdown);\r\n };\r\n\r\n this.CancelCountdown = function(countdown) {\r\n return $http.post(servicePath + \"CancelCountdown\", countdown);\r\n }; \r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizCultureSelector', bizCultureSelectorDirective);\r\n\r\n bizCultureSelectorDirective.$inject = [\"bizCore\"];\r\n\r\n function bizCultureSelectorDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n useGbflagForUs: '@?'\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n }\r\n else {\r\n return bizCoreProvider.getView('core.directives.cultureselector', \"FrontEnd/Core/Directives/Views/CultureSelector.html\");\r\n }\r\n },\r\n bindToController: true,\r\n controller: bizCultureSelectorController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizCultureSelectorController.$inject = [\"bizCoreService\", \"$rootScope\"];\r\n\r\n function bizCultureSelectorController(bizCoreService, $rootScope) {\r\n var vm = this; \r\n\r\n vm.GetCultures = GetCultures;\r\n vm.ChangeLanguage = ChangeLanguage;\r\n\r\n function GetCultures() {\r\n bizCoreService.GetCultures().then(GetCulturesCallback);\r\n\r\n function GetCulturesCallback(response) {\r\n var cultures = response.data; \r\n\r\n vm.Cultures = []; \r\n for (var i = 0; i < cultures.length; i++) {\r\n cultures[i].Flag = 'Images/StatFlags/' + GetImageName(cultures[i].CultureCode);\r\n cultures[i].ShortCultureCode = GetShortCountryCode(cultures[i].CultureCode);\r\n\r\n if (cultures[i].IsVisible) {\r\n vm.Cultures.push(cultures[i]);\r\n }\r\n }\r\n \r\n vm.CurrentCulture = vm.Cultures.GetItemByValue(\"Id\", ~~currentCultureId);\r\n\r\n function GetShortCountryCode(cultureCode) {\r\n var ccParts = cultureCode.split('-');\r\n if (ccParts.length > 0) {\r\n return ccParts[0];\r\n }\r\n return cultureCode;\r\n }\r\n\r\n function GetImageName(cultureCode) {\r\n var ccParts = cultureCode.split('-');\r\n if (ccParts.length > 1) {\r\n var countryCode = ccParts[1];\r\n //console.log(\"useGbflagForUs\", vm.useGbflagForUs);\r\n if (vm.useGbflagForUs) {\r\n if (countryCode.toLowerCase() == \"us\") {\r\n countryCode = \"GB\";\r\n }\r\n }\r\n return countryCode + \".png\";\r\n }\r\n console.log(\"culture selector, could not split country code\", cultureCode);\r\n }\r\n }\r\n }\r\n\r\n function ChangeLanguage(cultureCode) {\r\n var url = window.location.href;\r\n var qs;\r\n var parts = url.split('?');\r\n if (parts.length >= 2) {\r\n url = parts[0];\r\n\r\n var qsParts = parts[1].split(/[&;]/g);\r\n for (var i = 0; i < qsParts.length; i++) {\r\n if (qsParts[i].indexOf('lang=') === -1) {\r\n if (qs) {\r\n qs = qs + \"&\" + qsParts[i];\r\n } else {\r\n qs = qsParts[i];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (qs) qs = \"?\" + qs + \"&\";\r\n else qs = \"?\";\r\n\r\n var ccParts = cultureCode.split('-');\r\n window.location.href = url + qs + \"lang=\" + ccParts[0];\r\n } \r\n\r\n function Init() {\r\n vm.GetCultures();\r\n }\r\n\r\n vm.$onInit = function () {\r\n Init();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizEngageJourney', bizEngageJourneyDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageProgress', bizEngageProgressDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageProgressBar', bizEngageProgressBarDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageJourneyProgressBar', bizEngageJourneyProgressBarDirective);\r\n angular.module('bizPartEngage').directive('bizEngageProgressSettings', bizEngageProgressSettingsDirective);\r\n angular.module('bizPartEngage').directive('bizEngageStackedObjects', bizEngageStackedObjectsDirective);\r\n\r\n\tbizEngageJourneyDirective.$inject = [\"bizCore\"];\r\n\tbizEngageProgressDirective.$inject = [\"bizCore\"];\r\n\tbizEngageProgressBarDirective.$inject = [\"bizCore\"]\r\n bizEngageProgressSettingsDirective.$inject = [\"bizCore\"];\r\n bizEngageStackedObjectsDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizEngageStackedObjectsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n engageObjects: '=',\r\n categoryId: '=',\r\n horizontal: '=?',\r\n gotoFunc: '&',\r\n bigImage: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.engagestackedobjects', \"FrontEnd/Core/Directives/Views/EngageStackedObjects.html\"),\r\n bindToController: true,\r\n controller: bizEngageStackedObjectsController,\r\n controllerAs: \"vm\",\r\n }\r\n\r\n bizEngageStackedObjectsController.$inject = ['$filter'];\r\n\r\n function bizEngageStackedObjectsController($filter) {\r\n var vm = this;\r\n\r\n vm.ImageList = [];\r\n\r\n vm.Init = Init;\r\n vm.SetSelected = SetSelected;\r\n vm.SetSelectedImageFirst = SetSelectedImageFirst;\r\n vm.Goto = Goto;\r\n\r\n function Goto() {\r\n vm.gotoFunc()(vm.Selected);\r\n }\r\n\r\n function SetSelected(obj) {\r\n vm.Selected = obj;\r\n vm.SetSelectedImageFirst();\r\n }\r\n\r\n function SetSelectedImageFirst() { \r\n var index = 0;\r\n for (var i = 0; i < vm.ImageList.length; i++) {\r\n if (vm.ImageList[i].Id === vm.Selected.Id) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index === 0)\r\n return;\r\n\r\n var first = vm.ImageList[index];\r\n var newList = [first];\r\n for (var i = 0; i < vm.ImageList.length; i++) {\r\n if (i !== index) {\r\n newList.push(vm.ImageList[i]);\r\n }\r\n }\r\n vm.ImageList = newList;\r\n }\r\n\r\n function Init() {\r\n\r\n if (!vm.engageObjects || !vm.engageObjects.length)\r\n return;\r\n \r\n var category;\r\n for (var i = 0; i < vm.engageObjects.length && !category; i++) {\r\n category = vm.engageObjects[i].GenericCategories.GetItemByValue('Id', vm.categoryId); \r\n }\r\n\r\n if (!category)\r\n return;\r\n\r\n for (var i = 0; i < vm.engageObjects.length; i++) {\r\n var catObj = category.Objects.GetItemByValue('Id', vm.engageObjects[i].Id);\r\n vm.engageObjects[i].Order = catObj.Order;\r\n }\r\n \r\n vm.engageObjects = $filter('orderBy')(vm.engageObjects, 'Order');\r\n\r\n vm.Selected = vm.engageObjects[0]; \r\n\r\n for (var i = 0; i < vm.engageObjects.length; i++) { \r\n vm.ImageList.push(vm.engageObjects[i]);\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n\tfunction bizEngageProgressBarDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tlabel: '@',\r\n progress: '=',\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogressbar', \"FrontEnd/Core/Directives/Views/EngageProgressBar.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressBarController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageProgressBarController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageProgressBarController(engageService) {\r\n\t\t\tvar vm = this;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageJourneyProgressBarDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tlabel: '@',\r\n showCustomJourney: '=?',//favorites not used atm\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n template: '',\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageJourneyProgressBarController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageJourneyProgressBarController.$inject = ['$rootScope', 'core.engage.service'];\r\n\r\n\t\tfunction bizEngageJourneyProgressBarController($rootScope, engageService) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.progress = 0;\r\n\r\n\t\t\tvm.Init = Init;\r\n\r\n function GetJourneys() {\r\n\r\n $rootScope.JourneysInitialized.then(InitJourneys);\r\n\r\n function InitJourneys() {\r\n vm.Journeys = $rootScope.Journeys;\r\n\r\n var objectCount = 0;\r\n var finishedObjectCount = 0;\r\n for (var i = 0; i < vm.Journeys.length; i++) {\r\n for (var j = 0; j < vm.Journeys[i].EngageObjects.length; j++) {\r\n objectCount++;\r\n if (vm.Journeys[i].EngageObjects[j].Status === 3) {\r\n finishedObjectCount++;\r\n }\r\n }\r\n } \r\n\r\n var progress = 0;\r\n if (objectCount > 0) {\r\n progress = Math.round((finishedObjectCount * 100) / objectCount);\r\n }\r\n vm.progress = progress;\r\n }\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tGetJourneys();\r\n\r\n\t\t\t\t//REGISTER FOR UPDATES\r\n\t\t\t\tif(vm.showCustomJourney) {\r\n\t\t\t\t\t$rootScope.$on('favorites.change', function() {\r\n\t\t\t\t\t\tGetJourneys();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageProgressSettingsDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tsettingsHandler: '='\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogresssettings', \"FrontEnd/Core/Directives/Views/EngageProgressSettings.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressSettingsController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageProgressSettingsController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageProgressSettingsController(engageService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.Save = Save;\r\n\t\t\tvm.GetSettings = GetSettings;\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tvm.settingsHandler = {\r\n\t\t\t\t\tSave: vm.Save\r\n\t\t\t\t};\r\n\t\t\t\tvm.GetSettings();\r\n\t\t\t}\r\n\r\n\t\t\tfunction GetSettings() {\r\n\t\t\t\tengageService.GetSettings().then(GetSettingsCallback);\r\n\r\n\t\t\t\tfunction GetSettingsCallback(response) {\r\n\t\t\t\t\tvm.Settings = response.data;\r\n\t\t\t\t\tvm.OriginalSettings = angular.copy(vm.Settings);\r\n\t\t\t\t\tvm.settingsHandler.Settings = vm.Settings;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Save() {\r\n\t\t\t\tvm.SavedSettings = true;\r\n\t\t\t\tengageService.SaveSettings(vm.Settings);\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onDestroy = function () {\r\n\t\t\t\tif (!vm.SavedSettings)\r\n\t\t\t\t\tObject.assign(vm.Settings, vm.OriginalSettings);\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageProgressDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\twidth: '@',\r\n\t\t\t\tdata: '=?',\r\n settings: '=?',\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogress', \"FrontEnd/Core/Directives/Views/EngageProgress.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n bizEngageProgressController.$inject = ['core.engage.service', '$scope', 'bizUser', '$rootScope'];\r\n\r\n function bizEngageProgressController(engageService, $scope, bizUser, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n vm.Mascot = mascot;\r\n vm.BackgroundImage;\r\n\r\n vm.Init = Init;\r\n vm.SetProgress = SetProgress;\r\n\t\t\t//vm.GetEngageJourneys = GetEngageJourneys;\r\n\r\n\t\t\t//function GetEngageJourneys(useCache) {\r\n\t\t\t//\tengageService.GetEngageJourneysForUser(!useCache).then(GetEngageJourneysCallback);\r\n\r\n\t\t\t//\tfunction GetEngageJourneysCallback(journeys) {\r\n // vm.data = {};\r\n // console.log(\"journeys\", journeys)\r\n\r\n\t\t\t//\t\tif (journeys.Custom && journeys.Custom.length)\r\n\t\t\t//\t\t\tvm.data.Custom = journeys.Custom[0].TotalProgress;\r\n\r\n\t\t\t//\t\tif (journeys.General && journeys.General.length)\r\n\t\t\t//\t\t\tvm.data.General = journeys.General[0].TotalProgress;\r\n\t\t\t//\t}\r\n // } \r\n\r\n function SetProgress() {\r\n $rootScope.GetAllJourneysTotalProgress().then((progress) => { \r\n vm.data = {};\r\n vm.data.General = progress;\r\n });\r\n }\r\n\r\n\t\t\tfunction Init() {\r\n \r\n\r\n\t\t\t\tif (!vm.settings) {\r\n\r\n\t\t\t\t\tvm.settings = {\r\n\t\t\t\t\t\tHideGeneralJourneyProgress: true,\r\n\t\t\t\t\t\tHideCustomJourneyProgress: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\n\t\t\t\t\tengageService.GetSettings().then(GetSettingsCallback);\r\n }\r\n\r\n if (vm.showProfileImage) {\r\n vm.LoggedInUser = bizUser.getLoggedInUser();\r\n if (vm.LoggedInUser) {\r\n vm.BackgroundImage = vm.LoggedInUser.Photo || 'Images/Common/no_user_photo.png';\r\n }\r\n }\r\n\r\n if (!vm.BackgroundImage) {\r\n vm.BackgroundImage = vm.Mascot.Image;\r\n }\r\n\r\n\t\t\t\tif (vm.data) return;\r\n\r\n vm.settings.HideCustomJourneyProgress = true;\r\n vm.SetProgress();\r\n \r\n\t\t\t\t//vm.GetEngageJourneys(true);\r\n\r\n $scope.$on('favorites.change', vm.SetProgress);\r\n $scope.$on('engageobject.finished', vm.SetProgress);\r\n\r\n\t\t\t\tfunction GetSettingsCallback(response) {\r\n\t\t\t\t\tvm.settings = response.data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageJourneyDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engagejourney', \"FrontEnd/Core/Directives/Views/EngageJourney.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageJourneyController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizEngageJourneyController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageJourneyController(engageService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.GetEngageState = GetEngageState;\r\n\r\n\t\t\tfunction GetEngageState(engageObject) {\r\n\t\t\t\tswitch (engageObject.EngageObjectType) {\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn \"base.modules.html5education({id: \" + engageObject.Id + \"})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn engageObject.UrlRewrite ? \"base.modules.blogtitle({title: '\" + engageObject.UrlRewrite + \"'})\" : \"base.modules.blog({id: \" + engageObject.Id + \"})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\treturn \"base.modules.mediafile({id: '\" + (engageObject.UrlRewrite || engageObject.Id) + \"'})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tengageService.GetEngageJourneys(false).then(GetJourneysCallback);\r\n\r\n\t\t\t\tfunction GetJourneysCallback(response) {\r\n\t\t\t\t\tvm.EngageJourneys = response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizFavorite', bizFavorite);\r\n\tangular.module('bizPartEngage').directive('bizFavoriteList', bizFavoriteList);\r\n\tangular.module('bizPartEngage').directive('bizFavoriteEditList', bizFavoriteEditList);\r\n\r\n\tbizFavorite.$inject = [\"bizCore\"];\r\n\tbizFavoriteList.$inject = [\"bizCore\"];\r\n\tbizFavoriteEditList.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizFavorite(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectType: '@',\r\n\t\t\t\tobjectId: '@',\r\n\t\t\t\tlabel: '@',\r\n\t\t\t\tfavorite: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favorite', \"FrontEnd/Core/Directives/Views/Favorite.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteController.$inject = ['core.services.favorite', '$rootScope'];\r\n\r\n\t\tfunction bizFavoriteController(favoriteService, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.ToggleFavorite = ToggleFavorite;\r\n\r\n\t\t\tfunction ToggleFavorite() {\r\n\t\t\t\tvm.favorite = !vm.favorite;\r\n\r\n\t\t\t\tif (vm.favorite)\r\n\t\t\t\t\tfavoriteService.AddFavorite(vm.objectType, vm.objectId).then(FavoriteChangeCallback);\r\n\t\t\t\telse\r\n\t\t\t\t\tfavoriteService.RemoveFavorite(vm.objectType, vm.objectId).then(FavoriteChangeCallback);\r\n\r\n\t\t\t\tfunction FavoriteChangeCallback(){\r\n\t\t\t\t\tfavoriteService.GetFavorites(false).then(function(response) {\r\n\t\t\t\t\t\t$rootScope.$broadcast('favorites.change', response.data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tif (vm.favorite !== undefined) return;\r\n\r\n\t\t\t\tif ($rootScope.FavMarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavMarkedCssClass = 'fa fa-heart biz-primary-icon';\r\n\r\n\t\t\t\tif ($rootScope.FavUnmarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavUnmarkedCssClass = 'fa fa-heart-o';\r\n\r\n\t\t\t\tfavoriteService.IsFavorite(vm.objectType, vm.objectId).then(IsFavoriteCallback);\r\n\r\n\t\t\t\tfunction IsFavoriteCallback(response) {\r\n\t\t\t\t\tvm.favorite = !!response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizFavoriteList(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectType: '@',\r\n\t\t\t\tfavorites: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favoritelist', \"FrontEnd/Core/Directives/Views/FavoriteList.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteListController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteListController.$inject = ['core.services.favorite'];\r\n\r\n\t\tfunction bizFavoriteListController(favoriteService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.RemoveFavorite = RemoveFavorite;\r\n\r\n\t\t\tfunction RemoveFavorite(favorite) {\r\n\t\t\t\tfavoriteService.RemoveFavorite(favorite.ObjectType, favorite.ObjectId);\r\n\t\t\t\tvm.favorites.Remove(favorite);\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tif (vm.favorites) return;\r\n\r\n\t\t\t\tif ($rootScope.FavMarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavMarkedCssClass = 'fa fa-heart biz-primary-icon';\r\n\r\n\t\t\t\tif ($rootScope.FavUnmarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavUnmarkedCssClass = 'fa fa-heart-o';\r\n\r\n\t\t\t\tfavoriteService.GetFavorites(false, vm.objectType).then(GetFavoritesCallback);\r\n\r\n\t\t\t\tfunction GetFavoritesCallback(response) {\r\n\t\t\t\t\tvm.favorites = response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizFavoriteEditList(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favoritelist', \"FrontEnd/Core/Directives/Views/FavoriteEditList.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteEditListController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteEditListController.$inject = ['core.services.favorite', 'bizCoreService', '$rootScope'];\r\n\r\n\t\tfunction bizFavoriteEditListController(favoriteService, bizCoreService, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.Tags = [];\r\n\t\t\tvm.Init = Init;\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tbizCoreService.GetAllTags($rootScope.LoggedInUser.CurrentCultureId).then(GetTagsCallback);\r\n\r\n\t\t\t\tfunction GetTagsCallback(response) {\r\n\t\t\t\t\tvm.Tags = response.data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if (vm.favorites) return;\r\n\r\n\t\t\t\t// favoriteService.GetFavorites(false, vm.objectType).then(GetFavoritesCallback);\r\n\r\n\t\t\t\t// function GetFavoritesCallback(response) {\r\n\t\t\t\t// \tvm.favorites = response.data;\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n\r\n\t\t\t//vm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizHeader', bizHeaderDirective);\r\n angular.module('bizPartEngage').directive('bizGlobalSiteTitle', bizGlobalSiteTitleDirective);\r\n\r\n bizHeaderDirective.$inject = [\"bizCore\"];\r\n bizGlobalSiteTitleDirective.$inject = [];\r\n\r\n function bizGlobalSiteTitleDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n template: '',\r\n controller: bizGlobalSiteTitleController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizGlobalSiteTitleController.$inject = [\"base.service\"];\r\n\r\n function bizGlobalSiteTitleController(baseService) {\r\n var vm = this;\r\n\r\n baseService.GetGlobalSiteTitle().then(function (response) {\r\n vm.SiteTitle = response.data;\r\n });\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizHeaderDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.header', \"FrontEnd/Core/Directives/Views/Header.html\"),\r\n controller: bizHeaderController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizHeaderController.$inject = [\"core.users.service\", \"bizCoreService\", \"$window\", \"$filter\", \"$rootScope\", \"$element\"];\r\n\r\n function bizHeaderController(userService, bizCoreService, $window, $filter, $rootScope, $element) {\r\n var vm = this;\r\n vm.logo = portalSettings['logo'];\r\n vm.lastScrollTop = 0;\r\n vm.scrollTop = 0;\r\n vm.scrollDirection = '';\r\n\r\n vm.ShowLogin = false;\r\n vm.ShowFavorites = false;\r\n vm.ShowSearch = false;\r\n vm.ShowCultures = false;\r\n\r\n this.GoToAdmin = GoToAdmin;\r\n this.Logout = Logout;\r\n this.Search = Search;\r\n this.ChangeCulture = ChangeCulture;\r\n this.ToggleCollapseHeader = ToggleCollapseHeader;\r\n this.Init = Init;\r\n this.ClickOutsideMenu = ClickOutsideMenu;\r\n\r\n $rootScope.$watch('MiniSettings.Header.KeepBgClass',\r\n function (newVal, oldVal) {\r\n if (newVal && newVal != oldVal) {\r\n if ($rootScope.MiniSettings.Header.KeepBgClass === true)\r\n AddBgClass();\r\n else\r\n RemoveBgClass();\r\n }\r\n }\r\n );\r\n\r\n $rootScope.$on('CLOSE_ALL_MENUS', function (event, args) {\r\n CloseAllMenus();\r\n });\r\n\r\n $rootScope.$on('HIDE-LOGIN-DIRECTIVE', function (event, args) {\r\n vm.ShowLogin = false;\r\n $rootScope.$digest();\r\n });\r\n\r\n $rootScope.$on('SHOW-LOGIN-DIRECTIVE', function (event, args) {\r\n vm.ShowLogin = true;\r\n $rootScope.$digest();\r\n });\r\n\r\n function HighLightItem(showOverlay) {\r\n if (showOverlay === true) {\r\n angular.element('#base-home').addClass('highlight-header-item');\r\n }\r\n else {\r\n angular.element('#base-home').removeClass('highlight-header-item');\r\n }\r\n }\r\n\r\n function ClickOutsideMenu() {\r\n vm.ShowLogin = false;\r\n HighLightItem(false);\r\n\r\n $rootScope.$broadcast('CLICK_OUTSIDE_MENU');\r\n }\r\n\r\n function CloseAllMenus() {\r\n if (vm.ShowLogin || vm.ShowFavorites || vm.ShowSearch || vm.ShowCultures) {\r\n vm.ShowLogin = false;\r\n vm.ShowFavorites = false;\r\n vm.ShowSearch = false;\r\n vm.ShowCultures = false;\r\n }\r\n\r\n $rootScope.$digest();\r\n }\r\n\r\n function GoToAdmin() {\r\n $window.location.href = $filter('siteroot')('/admin');\r\n }\r\n\r\n function Logout() {\r\n console.log(\"logout btn\")\r\n userService.Logout();\r\n }\r\n\r\n function Search(searchText) {\r\n \treturn bizCoreService.Search(searchText).then(function (response) {\r\n \t\treturn response.data;\r\n \t});\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n if (culture.QueryString)\r\n { \r\n $window.location.href = $filter('siteroot')('/' + culture.QueryString);\r\n }\r\n }\r\n\r\n function ToggleCollapseHeader() {\r\n $element.parent().toggleClass('collapsed');\r\n }\r\n\r\n function onScroll() {\r\n vm.scrollTop = $window.pageYOffset || document.documentElement.scrollTop;\r\n vm.scrollDirection = vm.lastScrollTop < vm.scrollTop ? 'down' : 'up';\r\n\r\n if (vm.scrollDirection === 'down' && vm.scrollTop > 5 && $rootScope.MiniSettings[\"Header\"][\"PreventHideOnScroll\"] === false) { // iOS fix 5px\r\n angular.element('.biz-header').addClass('hide-menu');\r\n }\r\n else {\r\n angular.element('.biz-header').removeClass('hide-menu');\r\n }\r\n\r\n var offsetLimit = 0;\r\n var offsetElement = angular.element('#header-bg-offset');\r\n if (offsetElement.length > 0 && offsetElement[0].offsetTop > 0) {\r\n var logoHeight = angular.element('.biz-site-logo-wrapper')[0].clientHeight;\r\n offsetLimit = offsetElement[0].offsetTop - (logoHeight !== undefined ? logoHeight : 0);\r\n }\r\n\r\n if (vm.scrollTop > offsetLimit) {\r\n AddBgClass();\r\n CloseAllMenus();\r\n }\r\n else if ($rootScope.MiniSettings[\"Header\"][\"KeepBgClass\"] === false) {\r\n RemoveBgClass();\r\n }\r\n vm.lastScrollTop = vm.scrollTop;\r\n }\r\n\r\n function Init() {\r\n vm.ShowTipSomeone = portalSettings['IsShowTipSomeoneEnabled'];\r\n vm.OpenIdProviderId = portalSettings[\"loginopenidp\"];\r\n\r\n if ($rootScope.MiniSettings.Header.KeepBgClass === true)\r\n AddBgClass();\r\n\r\n $window.addEventListener('scroll', onScroll);\r\n\r\n if (isSessionStorageTrue('highlightLogin')) {\r\n vm.ShowLogin = true;\r\n HighLightItem(true);\r\n deleteSessionStorage('highlightLogin');\r\n }\r\n }\r\n\r\n function AddBgClass() {\r\n //console.log('AddBgClass');\r\n angular.element('.biz-header').addClass('menu-w-bg');\r\n }\r\n\r\n function RemoveBgClass() {\r\n //console.log('RemoveBgClass');\r\n angular.element('.biz-header').removeClass('menu-w-bg');\r\n }\r\n\r\n this.$onInit = vm.Init; \r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizLayoutComponent', bizLayoutComponent);\r\n\tangular.module('bizPartEngage').service('bizLayoutComponentService', bizLayoutComponentService);\r\n\r\n\tbizLayoutComponent.$inject = [\"bizLayoutComponentService\", \"$compile\", \"container\"];\r\n\tbizLayoutComponentService.$inject = [\"$http\"]\r\n\r\n\tfunction bizLayoutComponent(bizLayoutComponentService, $compile, container) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: bizLayoutComponentLink\r\n\t\t}\r\n\r\n\t\tfunction bizLayoutComponentLink(scope, element, attrs) {\r\n\t\t\tvar htm = '';\r\n\r\n\t\t\tif (!attrs.bizLayoutComponent)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tbizLayoutComponentService.GetLayoutComponent(attrs.bizLayoutComponent).then(GetLayoutComponentCallback);\r\n\r\n\t\t\tfunction GetLayoutComponentCallback(response) {\r\n\t\t\t\tscope.LayoutComponent = BizPartCoreHelpers.getResponseValue(response, {});\r\n\r\n\t\t\t\tif (scope.LayoutComponent.Container) {\r\n\t\t\t\t\tscope.LayoutComponent.Container = new container(scope.LayoutComponent.Container);\r\n\t\t\t\t\tvar compiled = $compile(htm)(scope);\r\n\t\t\t\t\telement.html(compiled);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizLayoutComponentService($http) {\r\n\t\tvar servicepath = siteRootPath + \"api/layout/\";\r\n\r\n\t\tthis.GetLayoutComponent = function (type) {\r\n\t\t\treturn $http.get(servicepath + \"GetLayoutComponentForUser\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\ttype: type\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizLeaderboard', bizLeaderboardDirective);\r\n\r\n bizLeaderboardDirective.$inject = [\"bizCore\"];\r\n\r\n function bizLeaderboardDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n leaderboard: \"=\",\r\n header: \"@\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.leaderboard', \"FrontEnd/Core/Directives/Views/Leaderboard.html\"),\r\n controller: bizHeaderController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizHeaderController.$inject = [\"bizUser\"];\r\n\r\n function bizHeaderController(bizUser) {\r\n var vm = this;\r\n\r\n vm.IsMe = IsMe;\r\n\r\n function IsMe(user) {\r\n return user.UserId == bizUser.getLoggedInUser().Id;\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizDefaultLevelProgress', bizDefaultLevelProgressDirective);\r\n\r\n bizDefaultLevelProgressDirective.$inject = [\"bizCore\"];\r\n\r\n function bizDefaultLevelProgressDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: true,\r\n templateUrl: function (element, attrs) {\r\n \tif (!attrs.templateUrl)\r\n \t\treturn bizCoreProvider.getView('core.directives.defaultlevelprogress', \"FrontEnd/Core/Directives/Views/DefaultLevelProgress.html\");\r\n\t\t\t\t\r\n \treturn siteRootPath + attrs.templateUrl;\r\n },\r\n controller: bizDefaultLevelProgressController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizDefaultLevelProgressController.$inject = [\"$rootScope\", \"core.users.service\"];\r\n\r\n function bizDefaultLevelProgressController($rootScope, userService) {\r\n var vm = this;\r\n vm.CurrentLevel;\r\n vm.NextLevel;\r\n vm.UserExperienceSum = 0;\r\n vm.PercentageCompleted = 0;\r\n vm.ExpLeftToNextLevel = 0;\r\n\r\n vm.GetLoggedInUserDefaultLevelProgress = GetLoggedInUserDefaultLevelProgress;\r\n vm.CalculateExperience = CalculateExperience;\r\n\r\n function GetLoggedInUserDefaultLevelProgress() {\r\n userService.GetLoggedInUserDefaultLevelProgress().then(GetLoggedInUserDefaultLevelProgressSuccess);\r\n\r\n function GetLoggedInUserDefaultLevelProgressSuccess(response) {\r\n vm.CurrentLevel = response.data.m_Item1;\r\n vm.AllLevels = response.data.m_Item2;\r\n vm.UserExperienceSum = response.data.m_Item3;\r\n\r\n vm.CurrentLevelIndex = vm.AllLevels.GetIndexByValue('Id', vm.CurrentLevel.Id);\r\n\r\n for (var i = 0; i < vm.AllLevels.length; i++) {\r\n \tif (vm.AllLevels[i].RequiredExp > vm.CurrentLevel.RequiredExp) {\r\n \t\tvm.NextLevel = vm.AllLevels[i];\r\n \t\tbreak;\r\n \t}\r\n }\r\n\r\n vm.CalculateExperience();\r\n }\r\n }\r\n\r\n function CalculateExperience() {\r\n var sum = vm.UserExperienceSum - vm.CurrentLevel.RequiredExp;\r\n var needed = vm.NextLevel !== undefined ? vm.NextLevel.RequiredExp - vm.CurrentLevel.RequiredExp : 0;\r\n\r\n if(~~needed > 0) {\r\n vm.PercentageCompleted = (sum / needed) * 100;\r\n }\r\n else {\r\n vm.PercentageCompleted = 100;\r\n }\r\n\r\n vm.ExpLeftToNextLevel = needed > 0 ? needed - sum : 0;\r\n\r\n if (vm.PercentageCompleted > 100)\r\n \tvm.PercentageCompleted = 100;\r\n\r\n if(vm.ExpLeftToNextLevel < 0) {\r\n vm.ExpLeftToNextLevel = 0;\r\n }\r\n }\r\n\r\n if (IsPortalSettingTrue('IsLevelSystemEnabled'))\r\n vm.GetLoggedInUserDefaultLevelProgress();\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizMainMenu', bizMainMenuDirective);\r\n angular.module('bizPartEngage').directive('bizMenuJourney', bizMenuJourney);\r\n angular.module('bizPartEngage').directive('bizMenuJourneyCollection', bizMenuJourneyCollection);\r\n angular.module('bizPartEngage').directive('bizMenuJourneyStatus', bizMenuJourneyStatus);\r\n angular.module('bizPartEngage').service('bizMainMenuService', bizMainMenuService);\r\n\r\n bizMainMenuDirective.$inject = [\"bizCore\"];\r\n bizMenuJourney.$inject = [\"bizCore\"];\r\n bizMenuJourneyCollection.$inject = [\"bizCore\"];\r\n bizMenuJourneyStatus.$inject = [\"bizCore\"];\r\n bizMainMenuService.$inject = [\"$http\"];\r\n\r\n function bizMenuJourneyStatus(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: { \r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourneyStatus.html\"),\r\n controller: bizMenuJourneyStatusController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyStatusController.$inject = [\"$rootScope\", \"bizJourneyService\"];\r\n\r\n function bizMenuJourneyStatusController($rootScope, bizJourneyService) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n\r\n vm.SetCurrentJourney = SetCurrentJourney;\r\n vm.GoToNextJourneyObject = GoToNextJourneyObject;\r\n vm.SetNextJourneyObject = SetNextJourneyObject;\r\n vm.CloseJourneyPanel = CloseJourneyPanel;\r\n\r\n vm.JourneyPanelOpen = false;\r\n\r\n function CloseJourneyPanel() {\r\n vm.JourneyPanelOpen = false;\r\n }\r\n\r\n function GoToNextJourneyObject(event) {\r\n event.stopPropagation();\r\n\r\n bizJourneyService.GoToEngageItem(vm.NextJourneyObject);\r\n }\r\n\r\n function SetCurrentJourney() {\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n vm.CurrentJourney = $rootScope.Journeys[i];\r\n }\r\n }\r\n }\r\n\r\n vm.SetNextJourneyObject();\r\n });\r\n }\r\n\r\n function SetNextJourneyObject() {\r\n if (vm.CurrentJourney) {\r\n var nextObject;\r\n for (var i = 0; i < vm.CurrentJourney.EngageObjects.length; i++) {\r\n if (!nextObject && vm.CurrentJourney.EngageObjects[i].Status !== 3) {\r\n nextObject = vm.CurrentJourney.EngageObjects[i];\r\n }\r\n }\r\n vm.NextJourneyObject = nextObject;\r\n }\r\n }\r\n\r\n function Init() { \r\n vm.SetCurrentJourney();\r\n\r\n $rootScope.$on('CURRENT_JOURNEY_CHANGED', (event, args) => {\r\n vm.SetCurrentJourney();\r\n });\r\n\r\n $rootScope.$on('JOURNEY_OBJECT_UPDATED', (event, args) => {\r\n vm.SetNextJourneyObject();\r\n }); \r\n } \r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMenuJourney(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n journey: \"=?\",\r\n fromCollection: \"@?\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourney.html\"),\r\n controller: bizMenuJourneyController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyController.$inject = [\"$rootScope\"];\r\n\r\n function bizMenuJourneyController($rootScope) {\r\n var vm = this;\r\n vm.Init = Init;\r\n vm.Round = Round;\r\n\r\n function Init() {\r\n\r\n }\r\n\r\n function Round(p) {\r\n return Math.round(p);\r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMenuJourneyCollection(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n closeFunc: \"&\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourneyCollection.html\"),\r\n controller: bizMenuJourneyCollectionController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyCollectionController.$inject = [\"$rootScope\", \"bizJourneyService\", \"$state\"];\r\n\r\n function bizMenuJourneyCollectionController($rootScope, bizJourneyService, $state) {\r\n var vm = this;\r\n vm.Init = Init;\r\n vm.GoToJourneyPage = GoToJourneyPage;\r\n vm.SetCurrentJourney = SetCurrentJourney;\r\n\r\n function SetCurrentJourney(id) {\r\n if ($rootScope.Journeys && $rootScope.Journeys.length) {\r\n $rootScope.SetCurrentJourney(id, true);\r\n vm.closeFunc();\r\n }\r\n }\r\n\r\n function GoToJourneyPage() {\r\n vm.closeFunc();\r\n $state.go(\"base.modules.journey\");\r\n }\r\n\r\n function Init() {\r\n \r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMainMenuDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n menuItems: \"=\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.main.menu', \"FrontEnd/Core/Directives/Views/MainMenu.html\"),\r\n controller: bizMainMenuController,\r\n controllerAs: \"vm\",\r\n\t\t\tbindToController: true\r\n }\r\n\r\n bizMainMenuController.$inject = [\"$state\", \"$stateParams\", \"scrollService\", \"$rootScope\", \"bizMainMenuService\", \"core.users.service\", \"bizCoreService\", \"$window\", \"$filter\"];\r\n\r\n function bizMainMenuController($state, $stateParams, scrollService, $rootScope, bizMainMenuService, userService, bizCoreService, $window, $filter) {\r\n var vm = this;\r\n \tvm.GetItemLink = GetItemLink;\r\n vm.Navigate = Navigate;\r\n vm.IsActiveItem = IsActiveItem;\r\n vm.IsAnchorLink = IsAnchorLink;\r\n vm.HandleMenuClick = HandleMenuClick;\r\n vm.CurrentLocation = CurrentLocation;\r\n vm.Logout = Logout;\r\n vm.Login = Login;\r\n vm.ChangeCulture = ChangeCulture;\r\n vm.Init = Init;\r\n \r\n vm.ShowInstallPWA = ShowInstallPWA;\r\n vm.InstallPWA = InstallPWA;\r\n vm.HasInstalledPwa = false; \r\n vm.ShowJourneyWidget = false;\r\n\r\n vm.lastScrollTop = 0;\r\n vm.scrollTop = 0;\r\n vm.scrollDirection = '';\r\n vm.hasSentCloseEvent = false; \r\n\r\n \tvar objectTypeSettings = {\r\n \t\t100: {\r\n \t\t\tName: \"CMSPage\",\r\n \t\t\tState: \"base.modules.cms\",\r\n \t\t\tIdentifier: \"id\"\r\n \t\t}\r\n };\r\n\r\n function Logout() {\r\n userService.Logout();\r\n }\r\n\r\n function Login() {\r\n console.log(\"login\");\r\n if (vm.OpenIdProviderId) {\r\n $window.location.href = $filter('siteroot')('OpenIdLogin/' + vm.OpenIdProviderId);\r\n }\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n if (culture.QueryString) {\r\n $window.location.href = $filter('siteroot')('/' + culture.QueryString);\r\n }\r\n }\r\n\r\n function HandleMenuClick(item, parentItem) {\r\n // Show/Hide sub-menus\r\n if (item.Children.length > 0) {\r\n if (item.Expanded === true) {\r\n item.Expanded = false;\r\n return;\r\n }\r\n\r\n for (var i = 0; i < $rootScope.MenuItems.length; i++) {\r\n $rootScope.MenuItems[i].Expanded = false;\r\n }\r\n\r\n item.Expanded = !item.Expanded;\r\n return;\r\n }\r\n\r\n if (parentItem)\r\n parentItem.Expanded = false;\r\n\r\n $rootScope.ExpandMainMenu = false;\r\n\r\n // External/http links\r\n if (item.Link.indexOf(window.location.hostname) > -1) {\r\n window.location.href = item.Link;\r\n return;\r\n }\r\n else if(item.Link.startsWith('http')) {\r\n window.open(item.Link, '_blank');\r\n return;\r\n }\r\n\r\n // Anchor links\r\n if (IsAnchorLink(item)) {\r\n\r\n if (item.Link.indexOf('#') == 0) {\r\n scrollService.ScrollTo($(item.Link), 0);\r\n }\r\n else {\r\n location.href = item.Link;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function CurrentLocation() {\r\n return location.href.replace(location.hash, '');\r\n } \r\n\r\n function IsActiveItem(item) {\r\n if(!item) return;\r\n\r\n var state = $state.current;\r\n\r\n if (typeof item === 'string') {\r\n if (item == state.name || (state.data && state.data.parentState === item)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n else if (item.Link == state.name ||\r\n state.data !== undefined && item.Link == state.data.parentState ||\r\n item.ControllerScope == state.name ||\r\n state.data !== undefined && item.ControllerScope === state.data.parentState) {\r\n return true;\r\n }\r\n else if (item.ObjectType == 100 && $stateParams !== undefined && $stateParams.id == item.ObjectIdentifier) {\r\n return true;\r\n }\r\n else { \r\n return false;\r\n }\r\n }\r\n\r\n function IsAnchorLink(item) {\r\n if (item.Link.indexOf('#') > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GetItemLink(item) {\r\n\r\n \tif (!item.ObjectType)\r\n \t\treturn item.Link;\r\n\r\n \tvar setting = objectTypeSettings[item.ObjectType];\r\n \tif (setting) {\r\n \t\tvar link = String.format('{0}({{1}:\"{2}\"})', setting.State, setting.Identifier, item.ObjectIdentifier);\r\n \t\treturn link;\r\n \t}\r\n }\r\n\r\n function Navigate(url) {\r\n $state.go(url);\r\n }\r\n\r\n function ShowInstallPWA() {\r\n if (IsPortalSettingTrue('IsPWAEnabled') && $rootScope.mobile && pwaDeferredPrompt !== undefined && !vm.HasInstalledPwa) { \r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n function InstallPWA(e) {\r\n vm.HasInstalledPwa = true;\r\n installPWA(e);\r\n } \r\n\r\n function onScroll() {\r\n // only for desktop\r\n\r\n vm.scrollTop = $window.pageYOffset || document.documentElement.scrollTop;\r\n vm.scrollDirection = vm.lastScrollTop < vm.scrollTop ? 'down' : 'up';\r\n\r\n if (vm.scrollDirection === 'down' && vm.scrollTop > 5 && vm.hasSentCloseEvent === false) { // iOS fix 5px\r\n $rootScope.ExpandMainMenu = false;\r\n vm.hasSentCloseEvent = true;\r\n $rootScope.$digest();\r\n }\r\n\r\n if (vm.scrollDirection === 'up') {\r\n vm.hasSentCloseEvent = false;\r\n }\r\n\r\n vm.lastScrollTop = vm.scrollTop;\r\n }\r\n\r\n function Init() {\r\n if (IsPortalSettingTrue('IsJourneyEnabled')) {\r\n vm.ShowJourneyWidget = IsPortalSettingTrue('IsJourneyMenuWidgetEnabled');\r\n }\r\n vm.ShowTipSomeone = IsPortalSettingTrue('IsShowTipSomeoneEnabled');\r\n vm.OpenIdProviderId = portalSettings[\"loginopenidp\"];\r\n\r\n if ($rootScope.mobile === false)\r\n $window.addEventListener('scroll', onScroll);\r\n }\r\n\r\n this.$onInit = vm.Init; \r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMainMenuService($http) {\r\n var servicePath = siteRootPath + 'api/menu/'; \r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizMyNotes', bizMyNotes);\r\n angular.module('bizPartEngage').controller('biz.my.notes.edit.dialog', bizMyNotesEditDialogController);\r\n\r\n bizMyNotes.$inject = [\"bizCore\", \"core.users.service\"];\r\n bizMyNotesEditDialogController.$inject = [\"$mdDialog\", \"bizMediabankService\", \"bizCoreService\", \"core.mynotes.service\", \"$q\", \"$translate\"];\r\n\r\n function bizMyNotes(bizCore, userService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n limit: '@',\r\n limitDateFrom: '=?',\r\n limitDateTo: '=?'\r\n },\r\n templateUrl: bizCore.getView('core.directives.mynotes', \"FrontEnd/Core/Directives/Views/MyNotes.html\"),\r\n bindToController: true,\r\n controller: bizMyNotesController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizMyNotesController.$inject = ['$mdDialog', 'core.mynotes.service'];\r\n\r\n function bizMyNotesController($mdDialog, myNotesService) {\r\n var vm = this;\r\n vm.Notes = [];\r\n\r\n vm.EditMyNotesDialog = EditMyNotesDialog;\r\n vm.GetMyNotes = GetMyNotes;\r\n\r\n function EditMyNotesDialog() {\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/MyNotesEditDialog.html\",\r\n controller: 'biz.my.notes.edit.dialog',\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n locals: {\r\n limit: vm.limit,\r\n fromDate: vm.limitDateFrom, \r\n toDate: vm.limitDateTo,\r\n notes: angular.copy(vm.Notes),\r\n data: angular.copy(vm.Data)\r\n }\r\n }).then(EditClose);\r\n\r\n function EditClose(data) {\r\n vm.GetMyNotes();\r\n if (data) {\r\n vm.Data = data;\r\n }\r\n }\r\n }\r\n\r\n function GetMyNotes() {\r\n \r\n var from = BizPartCoreHelpers.getDateNow().subtract(100, 'days').toDate();\r\n var to = BizPartCoreHelpers.getDateNow().add(100, 'days').toDate();\r\n\r\n if (vm.limitDateFrom) { \r\n from = moment(vm.limitDateFrom).toDate();\r\n }\r\n\r\n if (vm.limitDateTo) { \r\n to = moment(vm.limitDateTo).toDate();\r\n }\r\n\r\n var limit = 4;\r\n if (vm.limit) {\r\n limit = ~~vm.limit;\r\n } \r\n\r\n myNotesService.GetMyNotes(limit, from, to).then(GetMyNotesSuccess);\r\n function GetMyNotesSuccess(response) {\r\n vm.Notes = response.data;\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetMyNotes();\r\n userService.GetLoggedInUserSetting(\"MY_NOTES\").then(GetSettingCallback);\r\n\r\n function GetSettingCallback(response) {\r\n var data = BizPartCoreHelpers.getResponseValue(response);\r\n if (data) {\r\n vm.Data = JSON.parse(data);\r\n } else {\r\n vm.Data = {\r\n ImageUrl: \"https://qeeptest.bizpart.com/Upload/5/Mediabank/Files/39210552-2472-4021-8ac8-06b0e9b59d0f.jpg\",\r\n Color: \"#FFF\"\r\n };\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMyNotesEditDialogController($mdDialog, bizMediabankService, bizCoreService, myNotesService, $q, $translate) {\r\n var vm = this;\r\n\r\n vm.AddNote = AddNote;\r\n vm.Save = Save;\r\n vm.Close = Close;\r\n vm.SelectImage = SelectImage; \r\n\r\n //todo: fix some general color translations\r\n vm.Colors = [\r\n {\r\n Name: 'Svart',\r\n Id: '#000'\r\n },\r\n {\r\n Name: 'Vit',\r\n Id: '#FFF'\r\n }\r\n ];\r\n\r\n function AddNote() {\r\n var note = {\r\n Id: 0,\r\n Text: \"\"\r\n };\r\n\r\n vm.notes.unshift(note);\r\n }\r\n\r\n function Save() {\r\n vm.data.ImageUrl = vm.image ? vm.image.FileUrl : undefined;\r\n vm.data.Color = vm.selectedColor.Id;\r\n $q.all([\r\n bizCoreService.UpdateUserSetting(\"MY_NOTES\", JSON.stringify(vm.data)),\r\n myNotesService.SaveMyNotes(vm.notes)\r\n ])\r\n .then(function (response) {\r\n myNotesService.ClearPromiseCache();\r\n $mdDialog.hide(vm.data);\r\n }); \r\n }\r\n\r\n function Close(data) {\r\n $mdDialog.hide(data);\r\n }\r\n\r\n function SelectImage() {\r\n bizMediabankService.ShowMediabankDialog(vm.image, null, vm.uploadSettings).then(ShowMediabankDialogCallback);\r\n\r\n function ShowMediabankDialogCallback(file) {\r\n if (!file)\r\n return;\r\n vm.image = file;\r\n }\r\n } \r\n\r\n \r\n\r\n vm.$onInit = function () { \r\n vm.selectedColor = vm.Colors.GetItemByValue('Id', vm.data.Color);\r\n vm.image = {\r\n FileUrl: vm.data.ImageUrl\r\n };\r\n\r\n vm.uploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.MyText,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n }; \r\n\r\n $translate('BIZMYNOTES_EDIT_NOTE_HEADER').then(function (translation) { \r\n var header = translation.toString(); \r\n header = header.replace('##FROM##', moment(vm.fromDate).format('DD MMMM'));\r\n header = header.replace('##TO##', moment(vm.toDate).format('DD MMMM'));\r\n vm.header = header;\r\n });\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizMyText', bizMyText); \r\n\r\n bizMyText.$inject = [\"bizCore\", \"core.users.service\"]; \r\n\r\n function bizMyText(bizCore, userService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settingKey: '@' \r\n },\r\n templateUrl: bizCore.getView('core.directives.mytext', \"FrontEnd/Core/Directives/Views/MyText.html\"),\r\n bindToController: true,\r\n controller: bizMyTextController,\r\n controllerAs: \"vm\" \r\n }\r\n\r\n bizMyTextController.$inject = ['$mdDialog'];\r\n\r\n function bizMyTextController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.DefaultData = {\r\n ImageUrl: '~/Images/mytext-default.png',\r\n Text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vulputate sodales consectetur. Proin gravida felis vel dolor ornare, eu cursus est maximus.',\r\n Color: '#000'\r\n }; \r\n\r\n vm.Init = Init; \r\n vm.OpenEdit = OpenEdit; \r\n\r\n function OpenEdit() {\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/MyTextEdit.html\",\r\n controller: EditDialogController,\r\n controllerAs: \"vm\", \r\n bindToController: true, \r\n locals: {\r\n settingKey: vm.settingKey,\r\n data: angular.copy(vm.Data),\r\n settingKey: vm.settingKey\r\n }\r\n }).then(EditClose);\r\n\r\n function EditClose(data) { \r\n if (data) {\r\n vm.Data = data;\r\n }\r\n }\r\n\r\n EditDialogController.$inject = [\"$mdDialog\", \"bizMediabankService\", \"bizCoreService\"];\r\n\r\n function EditDialogController($mdDialog, bizMediabankService, bizCoreService) {\r\n var vm = this;\r\n vm.Save = Save;\r\n vm.Cancel = Cancel;\r\n\r\n vm.Colors = [\r\n {\r\n Name: 'Svart',\r\n Id: '#000'\r\n },\r\n {\r\n Name: 'Vit',\r\n Id: '#FFF'\r\n }\r\n ];\r\n\r\n vm.selectedColor = vm.Colors.GetItemByValue('Id', vm.data.Color);\r\n vm.image = {\r\n FileUrl: vm.data.ImageUrl\r\n };\r\n\r\n vm.uploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.MyText,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n };\r\n\r\n function Save() {\r\n vm.data.ImageUrl = vm.image ? vm.image.FileUrl : undefined;\r\n vm.data.Color = vm.selectedColor.Id;\r\n bizCoreService.UpdateUserSetting(vm.settingKey, JSON.stringify(vm.data)).then(function (response) {\r\n $mdDialog.hide(vm.data);\r\n }); \r\n }\r\n\r\n function Cancel() {\r\n $mdDialog.hide();\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n userService.GetLoggedInUserSetting(vm.settingKey).then(GetSettingCallback);\r\n\r\n function GetSettingCallback(response) { \r\n var data = BizPartCoreHelpers.getResponseValue(response); \r\n if (data) {\r\n vm.Data = JSON.parse(data);\r\n } else {\r\n vm.Data = vm.DefaultData;\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n \r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizNotifications', bizNotifications);\r\n angular.module('bizPartEngage').constant('notificationSettingType', {\r\n FAB: 1,\r\n STANDARD: 2,\r\n DIALOG: 3\r\n });\r\n angular.module('bizPartEngage').constant('notificationPosition', {\r\n TOPLEFT: 1,\r\n TOPRIGHT: 2,\r\n BOTTOMLEFT: 3,\r\n BOTTOMRIGHT: 4,\r\n CENTER: 5\r\n });\r\n angular.module('bizPartEngage').provider('bizNotificationProvider', bizNotificationProvider);\r\n angular.module('bizPartEngage').service('bizNotificationService', bizNotificationService);\r\n\r\n bizNotifications.$inject = [\"bizCore\", \"bizNotificationProvider\", \"notificationSettingType\", \"notificationPosition\", \"bizNotificationService\"];\r\n bizNotificationProvider.$inject = [\"notificationSettingType\"];\r\n bizNotificationService.$inject = [\"$http\", \"$mdDialog\", \"$mdToast\"];\r\n\r\n function bizNotificationProvider(notificationSettingType) {\r\n function getView() {\r\n switch (notificationSettings.Type) {\r\n case notificationSettingType.FAB:\r\n return \"FrontEnd/Core/Directives/Views/NotificationsFAB.html\";\r\n case notificationSettingType.STANDARD:\r\n return \"FrontEnd/Core/Directives/Views/Notifications.html\";\r\n case notificationSettingType.DIALOG:\r\n return \"FrontEnd/Core/Directives/Views/NotificationsDialog.html\";\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n getView: getView,\r\n $get: function () {\r\n return {\r\n getView: getView,\r\n };\r\n }\r\n };\r\n }\r\n\r\n\tfunction bizNotifications(bizCoreProvider, bizNotificationProvider, notificationSettingType, notificationPosition, bizNotificationService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.notifications', bizNotificationProvider.getView()),\r\n controller: bizNotificationsController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizNotificationsController.$inject = [\"$rootScope\", \"$timeout\", \"$translate\", \"bizNotificationService\", \"$state\", \"bizEffects\", \"$transitions\", \"core.engage.service\", \"bizJourneyService\", \"bizUser\"]\r\n\r\n function bizNotificationsController($rootScope, $timeout, $translate, bizNotificationService, $state, bizEffects, $transitions, coreEngageService, bizJourneyService, bizUser) {\r\n var vm = this;\r\n vm.Fade = false;\r\n vm.IsPulsating = false;\r\n vm.CanFade = true;\r\n vm.DoGroup = false;\r\n vm.ShowNotifications = false;\r\n vm.FadeTimer = 6000;\r\n vm.Notifications = [];\r\n vm.GroupedNotifications = [];\r\n vm.FirstItemOfType = [];\r\n vm.Settings = notificationSettings;\r\n vm.Settings.Mascot = mascot; \r\n vm.MaxSubItemsLength = 5; \r\n vm.SubItemsGroupWithinSecounds = 3600; \r\n vm.MaxNotificationsToShow = 1;\r\n\r\n vm.AddNotification = AddNotification;\r\n vm.StartFadeTimer = StartFadeTimer;\r\n vm.CancelFadeTimer = CancelFadeTimer;\r\n vm.GetNotifications = GetNotifications;\r\n vm.GetPositionClass = GetPositionClass;\r\n vm.SetFade = SetFade;\r\n vm.GetHighestId = GetHighestId;\r\n vm.Pulsate = Pulsate;\r\n vm.StopPulsating = StopPulsating;\r\n vm.SetProperties = SetProperties;\r\n vm.GoToItem = GoToItem;\r\n vm.IsHighlighted = IsHighlighted;\r\n vm.InitSlick = InitSlick;\r\n vm.ExistInSubitems = ExistInSubitems;\r\n vm.GroupNotifications = GroupNotifications;\r\n vm.UnHighlightAllNotifications = UnHighlightAllNotifications;\r\n vm.NavigateTo = NavigateTo;\r\n vm.SetUrlRewrite = SetUrlRewrite;\r\n\r\n //keeping this method around, useful for testing\r\n vm.FakeMessageForTesting = FakeMessageForTesting;\r\n function FakeMessageForTesting(key, msg, objectType, settings) {\r\n var content = {\r\n Key: key || 'ENGAGE_OBJECT_DONE',\r\n Message: msg || 'You have completed X',\r\n NotificationId: getRandomInt(),\r\n ObjectType: objectType || 'MediabankFile',\r\n Settings: settings,\r\n Show: true \r\n }\r\n\r\n vm.AddNotification(undefined, {\r\n Content: JSON.stringify(content)\r\n })\r\n\r\n function getRandomInt(min, max) {\r\n var min = 1000000;\r\n var max = 9999999;\r\n return Math.floor(Math.random() * (max - min) + min);\r\n }\r\n }\r\n\r\n function InitSlick() {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n // $timeout(function() {\r\n // vm.AddNotification(null, {\r\n // NotificationId: 'abc',\r\n // HubKey: \"USER_NOTIFICATION\",\r\n // Content: JSON.stringify({\r\n // Key: \"ENGAGE_OBJECT_DONE\",\r\n // Message: \"Detta är ett test meddelande...\",\r\n // Subject: \"Test subject\"\r\n // }),\r\n // Settings: JSON.stringify({\r\n\r\n // })\r\n // });\r\n // }, 2500);\r\n\r\n function AddNotification(event, not) { \r\n \tif (!not.Content)\r\n \t\treturn;\r\n \r\n var notification = JSON.parse(not.Content); \r\n\r\n //to avoid dupes and/or missing notifications (as they also arrive via ws)\r\n if (vm.Notifications.GetItemByValue('NotificationId', notification.NotificationId) || vm.ExistInSubitems(notification.NotificationId))\r\n return;\r\n \r\n if (vm.LatestNotification?.Show) { \r\n if (!vm.Queue)\r\n vm.Queue = []; \r\n vm.Queue.push(not);\r\n return;\r\n }\r\n\r\n notification.Show = true; \r\n if (notification.Settings) {\r\n notification.Settings = JSON.parse(notification.Settings);\r\n }\r\n\r\n vm.Notifications.unshift(notification);\r\n vm.GroupNotifications();\r\n\r\n vm.StartFadeTimer(notification); \r\n vm.SetFade(false);\r\n vm.Pulsate();\r\n\r\n vm.SetUrlRewrite(notification);\r\n\r\n vm.LatestNotification = angular.copy(notification);\r\n\r\n if(notification.Settings && notification.Settings.Effect) {\r\n TriggerEffect(notification.Settings.Effect);\r\n }\r\n \r\n $timeout(function() {\r\n vm.LatestNotification.Show = false;\r\n if (vm.Queue?.length > 0) {\r\n var queueNotification = vm.Queue.shift(); \r\n $timeout(() => {\r\n vm.AddNotification(undefined, queueNotification);\r\n }, 1000);\r\n }\r\n }, 8000); \r\n }\r\n\r\n function TriggerEffect(effect) {\r\n bizEffects.Show(effect);\r\n }\r\n\r\n function GetHighestId() {\r\n var id = 0;\r\n for (var i = 0; i < vm.Notifications.length; i++) {\r\n if (vm.Notifications[i].NotificationId > id) {\r\n id = vm.Notifications[i].NotificationId;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n function StartFadeTimer(notification) {\r\n \tnotification.FadeTimer = $timeout(function () {\r\n \t\tnotification.FadeTimer = undefined;\r\n \t\tnotification.Fading = $timeout(function () {\r\n notification.Fading = undefined;\r\n notification.Show = false;\r\n \t\t}, 2000);\r\n \t}, vm.FadeTimer)\r\n }\r\n\r\n function CancelFadeTimer(notification) {\r\n \tif (notification.FadeTimer) {\r\n \t\t$timeout.cancel(notification.FadeTimer);\r\n \t\tnotification.FadeTimer = undefined;\r\n \t}\r\n \tif (notification.Fading) {\r\n \t\t$timeout.cancel(notification.Fading);\r\n \t\tnotification.Fading = undefined;\r\n \t}\r\n }\r\n\r\n function ExistInSubitems(id) { \r\n \r\n for (var g = 0; g < vm.GroupedNotifications.length; g++) {\r\n if (vm.GroupedNotifications[g].Items !== undefined) {\r\n for (var gi = 0; gi < vm.GroupedNotifications[g].Items.length; gi++) {\r\n if (vm.GroupedNotifications[g].Items[gi].NotificationId == id) {\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GroupNotifications() {\r\n\r\n if (!vm.DoGroup) {\r\n vm.GroupedNotifications = vm.Notifications.slice();\r\n return;\r\n }\r\n\r\n var grouped = [];\r\n \r\n for (var index = 0; index < vm.Notifications.length; index++) {\r\n \r\n var not = vm.Notifications[index];\r\n var subItems = [not]; \r\n\r\n var nextIndex;\r\n var groupNext = true;\r\n for (nextIndex = index + 1; nextIndex < vm.Notifications.length && groupNext; nextIndex++) { \r\n var nextNot = vm.Notifications[nextIndex];\r\n var sameKey = not.Key === nextNot.Key;\r\n var duration = moment.duration(moment(not.DateSent).diff(nextNot.DateSent));\r\n var seconds = duration.asSeconds();\r\n var withinTime = seconds < vm.SubItemsGroupWithinSecounds;\r\n\r\n if (sameKey && withinTime && subItems.length < vm.MaxSubItemsLength) {\r\n subItems.push(nextNot);\r\n } else if(sameKey && withinTime) {\r\n //DO NOTHING... ELSE WE GROUP THE NEXT ONES BELOW...\r\n } \r\n else {\r\n groupNext = false; \r\n }\r\n } \r\n\r\n if (subItems.length == 1) {\r\n grouped.push(subItems[0]);\r\n } else {\r\n grouped.push({\r\n \"NotificationId\": not.NotificationId,\r\n \"Items\": subItems\r\n });\r\n var extraItemsAddedInMainLoop = subItems.length - 1;\r\n index = index + extraItemsAddedInMainLoop;\r\n }\r\n }\r\n vm.GroupedNotifications = grouped;\r\n console.log(vm.GroupedNotifications);\r\n\r\n vm.InitSlick();\r\n }\r\n\r\n function GetNotifications() {\r\n if (IsPortalSettingTrue('IsUserNotificationsEnabled') && bizUser.IsLoggedIn())\r\n bizNotificationService.GetLoggedInUserNotifications(10, 1).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n var notificationsFromServer = response.data; \r\n if (vm.Notifications.length > 0) {\r\n //to avoid dupes and/or missing notifications (as they also arrive via signalr)\r\n for (var i = 0; i < notificationsFromServer.length; i++) {\r\n if (!vm.Notifications.GetItemByValue('NotificationId', notificationsFromServer[i].NotificationId)) {\r\n vm.Notifications.push(notificationsFromServer[i]);\r\n }\r\n }\r\n } else {\r\n vm.Notifications = response.data;\r\n } \r\n\r\n vm.GroupNotifications();\r\n \r\n vm.SetProperties();\r\n vm.SetUrlRewrite();\r\n }\r\n }\r\n\r\n function GetPositionClass() {\r\n switch(vm.Settings.Position) {\r\n case notificationPosition.TOPLEFT:\r\n return \"top-left\";\r\n case notificationPosition.TOPRIGHT:\r\n return \"top-right\";\r\n case notificationPosition.BOTTOMLEFT:\r\n return \"bottom-left\";\r\n case notificationPosition.BOTTOMRIGHT:\r\n return \"bottom-right\";\r\n case notificationPosition.CENTER:\r\n return \"center\";\r\n }\r\n }\r\n\r\n function SetFade(val) {\r\n if(val === true && vm.CanFade === true && vm.ShowNotifications === false && vm.IsPulsating === false) {\r\n vm.Fade = true;\r\n }\r\n else {\r\n vm.Fade = false;\r\n $timeout(function(vm) {\r\n vm.SetFade(true);\r\n }, vm.FadeTimer, true, vm);\r\n }\r\n }\r\n\r\n function Pulsate(time) {\r\n vm.IsPulsating = true;\r\n\r\n if(~~time > 0) {\r\n $timeout(function(vm) {\r\n vm.StopPulsating();\r\n }, time, true, vm);\r\n }\r\n }\r\n\r\n function StopPulsating() {\r\n vm.IsPulsating = false;\r\n }\r\n\r\n function SetProperties() {\r\n for(var i = 0; i < vm.Notifications.length; i++) {\r\n if (vm.Notifications[i].ConfirmRead == false || moment(vm.Notifications[i].DateSent).isAfter(moment().subtract(1, 'minutes'))) {\r\n vm.Pulsate();\r\n } \r\n }\r\n }\r\n\r\n function SetUrlRewrite(item) {\r\n var engageObjectList = [];\r\n for (var i = 0; i < vm.Notifications.length; i++) {\r\n if ((!item || (item.ObjectType === vm.Notifications[i].ObjectType && item.ObjectId === vm.Notifications[i].ObjectId)) && coreEngageService.IsEngageObject(vm.Notifications[i].ObjectType)) {\r\n engageObjectList.push({\r\n Id: vm.Notifications[i].ObjectId,\r\n EngageObjectType: vm.Notifications[i].ObjectType\r\n });\r\n } \r\n }\r\n \r\n coreEngageService.GetEngageObjectsByObjectIdAndType(engageObjectList).then(GetEngageObjectsCallback);\r\n\r\n function GetEngageObjectsCallback(response) { \r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n for (var i = 0; i < result.length; i++) {\r\n if (result[i].UrlRewrite) {\r\n for (var j = 0; j < vm.Notifications.length; j++) {\r\n if (vm.Notifications[j].ObjectId === result[i].Id && coreEngageService.GetEngageObjectTypeId(vm.Notifications[j].ObjectType) === result[i].EngageObjectType) {\r\n vm.Notifications[j].ObjectUrlRewrite = result[i].UrlRewrite;\r\n if (vm.LatestNotification && vm.Notifications[j].NotificationId === vm.LatestNotification.NotificationId) {\r\n vm.LatestNotification.ObjectUrlRewrite = result[i].UrlRewrite;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function GoToItem(item) { \r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n if (coreEngageService.IsEngageObject(item.ObjectType)) { \r\n if (item.ObjectUrlRewrite) {\r\n coreEngageService.RedirectToEngageObject(item.ObjectType, item.ObjectUrlRewrite);\r\n } else {\r\n coreEngageService.RedirectToEngageObject(item.ObjectType, item.ObjectId);\r\n } \r\n return;\r\n } \r\n\r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) { \r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n vm.NavigateTo(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n vm.NavigateTo(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n vm.NavigateTo(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITYFORGOAL':\r\n vm.NavigateTo(\"base.modules.goals.activityforgoal\", { goalId: ~~item.ObjectId }); \r\n break;\r\n }\r\n }\r\n\r\n if (item.Key === \"JOURNEY_COMPLETED\") {\r\n if (item.Settings && item.Settings.Data && !item.Settings.Data.FeedbackLink) return;\r\n bizJourneyService.GetJourneySettings().then(GetJourneySettingsCallback);\r\n function GetJourneySettingsCallback(response) {\r\n var journeySettings = response.data;\r\n var feedbackPage = journeySettings.FeedbackPage;\r\n if (feedbackPage) {\r\n vm.NavigateTo(\"base.modules.cms\", { id: feedbackPage, params: { objectKey: 'JOURNEY', objectId: ~~item.ObjectId} });\r\n } \r\n } \r\n }\r\n }\r\n\r\n function NavigateTo(state, params) { \r\n $state.go(state, params);\r\n //vm.ShowNotifications = false;\r\n //if(vm.LatestNotification) {\r\n // vm.LatestNotification.Show = false; \r\n //}\r\n }\r\n\r\n function UnHighlightAllNotifications() {\r\n for (var i = 0; i < vm.SortedNotifications.length; i++) {\r\n vm.SortedNotifications[i].NoHighlight = true;\r\n }\r\n }\r\n\r\n function IsHighlighted(index) {\r\n if (vm.MaxNotificationsToShow <= 1) {\r\n return false;\r\n }\r\n\r\n if (vm.SortedNotifications) {\r\n if (vm.SortedNotifications[index].NoHighlight) {\r\n return false;\r\n }\r\n\r\n if (index == 0) \r\n return true;\r\n\r\n if (index > 0 && vm.SortedNotifications[index].Key !== undefined) { \r\n var duration = moment.duration(moment(vm.SortedNotifications[0].DateSent).diff(vm.SortedNotifications[index].DateSent));\r\n var seconds = duration.asSeconds(); \r\n\r\n if (seconds < 120) \r\n return true;\r\n }\r\n \r\n }\r\n\r\n return false;\r\n }\r\n\r\n function Init() {\r\n $rootScope.$on(\"HUB_USER_NOTIFICATION\", vm.AddNotification);\r\n\r\n vm.GetNotifications();\r\n\r\n $timeout(function (vm) {\r\n vm.SetFade(true);\r\n }, 3000, true, vm);\r\n\r\n //$timeout(function (vm) {\r\n // vm.SetFade(true);\r\n //}, vm.FadeTimer, true, vm);\r\n\r\n //$timeout(() => {\r\n // var settings = {\r\n // EmojiIcon: '🥳'\r\n // };\r\n // vm.FakeMessageForTesting(undefined, undefined, undefined, JSON.stringify(settings));\r\n //}, 2000);\r\n\r\n //$timeout(() => {\r\n // vm.FakeMessageForTesting(undefined, \"Another new message\");\r\n //}, 5000);\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n //hide notifications when going to another page\r\n $transitions.onStart({}, function () { \r\n vm.ShowNotifications = false; \r\n if(vm.LatestNotification) {\r\n vm.LatestNotification.Show = false; \r\n }\r\n }); \r\n }\r\n\r\n return directive;\r\n\t}\r\n\r\n\tfunction bizNotificationService($http, $mdDialog, $mdToast) {\r\n\r\n this.GetLoggedInUserNotifications = function(max, page) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserNotifications?' + $.param({ max: max, page: page }));\r\n };\r\n\r\n\t\tthis.CustomNotificationHandlers = {\r\n\t\t\t\"POPUP\": {\r\n\t\t\t\tEnabled: true,\r\n\t\t\t\tHandler: PopupNotificationHandler\r\n\t\t\t},\r\n\t\t\t\"CUSTOM\": {\r\n\t\t\t\tEnabled: true,\r\n\t\t\t\tHandler: CustomNotificationHandler\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction CustomNotificationHandler(notification) {\r\n\t\t\tvar template = '' + notification.Message + '';\r\n\t\t\t$mdToast.show({\r\n\t\t\t\tposition: 'top center',\r\n\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\thideDelay: 20000,\r\n\t\t\t\ttemplate: template,\r\n\t\t\t\tautoWrap: true,\r\n\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\tcontroller: function ($mdToast) {\r\n\t\t\t\t\tvar vm = this;\r\n\t\t\t\t\tvm.close = function () {\r\n\t\t\t\t\t\t$mdToast.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction PopupNotificationHandler(notification) {\r\n\t\t\t$mdDialog.show({\r\n\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/PopupNotification.html\",\r\n\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\tbindToController: true,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tskipHide: true,\r\n\t\t\t\tcontroller: PopupNotificationController,\r\n\t\t\t\tlocals: {\r\n\t\t\t\t\tNotification: notification\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfunction PopupNotificationController() {\r\n\t\t\t\tvar vm = this;\r\n\r\n\t\t\t\tvm.Close = Close;\r\n\r\n\t\t\t\tfunction Close() {\r\n\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizOpenLoginBtns', bizOpenLoginBtnsDirective);\r\n\r\n bizOpenLoginBtnsDirective.$inject = [\"bizCore\", \"$filter\", \"loginService\"];\r\n\r\n function bizOpenLoginBtnsDirective(bizCore, $filter, loginService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n openIdOnly: \"@?\"\r\n },\r\n templateUrl: bizCore.getView('core.directives.openidloginbtns', \"FrontEnd/Core/Directives/Views/OpenIdLoginBtns.html\"),\r\n bindToController: true,\r\n controller: bizOpenLoginBtnsController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n function bizOpenLoginBtnsController() {\r\n var vm = this;\r\n\r\n \r\n vm.GoToOpenIdLogin = GoToOpenIdLogin; \r\n\r\n function GoToOpenIdLogin(provider) {\r\n window.location.href = $filter('siteroot')('~/OpenIdLogin/' + provider.Id);\r\n }\r\n\r\n vm.$onInit = function () { \r\n loginService.GetActiveOpenIdProviders().then(GetActiveOpenIdProvidersSuccess);\r\n\r\n function GetActiveOpenIdProvidersSuccess(response) {\r\n vm.Providers = response.data;\r\n } \r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizProfileMenu', bizProfileMenuDirective);\r\n\r\n bizProfileMenuDirective.$inject = [\"bizCore\"];\r\n\r\n function bizProfileMenuDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: true,\r\n templateUrl: bizCoreProvider.getView('core.directives.profilemenu', \"FrontEnd/Core/Directives/Views/ProfileMenu.html\"),\r\n controller: bizCoreProvider.getController('core.directives.profilemenu', bizProfileMenuController),\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizProfileMenuController.$inject = [\"$rootScope\"];\r\n\r\n function bizProfileMenuController($rootScope) {\r\n \tvar vm = this;\r\n\t\t\tvm.IsActive = IsActive;\r\n\r\n\t\t\tfunction IsActive(m) {\r\n\t\t\t\tif(m.State === $rootScope.CurrentState.name || m.State === $rootScope.CurrentState.data?.parentState)\r\n\t\t\t\t\treturn true;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n \t$rootScope.Initialized.then(function () {\r\n \t\tvm.States = [{\r\n \t\t\tPhrase: \"CORE.MYPAGE\",\r\n \t\t\tState: \"base.core.profile.home\",\r\n \t\t\tIcon: \"fa fa-user\"\r\n \t\t}, {\r\n \t\t\tPhrase: \"CORE.LEADERBOARDS\",\r\n \t\t\tState: \"base.core.profile.leaderboards\",\r\n \t\t\tIcon: \"fa fa-bar-chart\",\r\n \t\t\tEnabled: $rootScope.HasModuleAccess('LEVEL_SYSTEM', $rootScope.AccessTypeRight.Read),\r\n \t\t\tPortalSettingForEnable: \"IsLevelSystemEnabled\"\r\n \t\t}, {\r\n \t\t\tPhrase: \"CORE.MYCOLLEAGUES\",\r\n \t\t\tState: \"base.core.profile.colleagues\",\r\n \t\t\tIcon: \"fa fa-users\",\r\n \t\t\tEnabled: $rootScope.HasModuleAccess('UNITS', $rootScope.AccessTypeRight.Read),\r\n \t\t\tPortalSettingForEnable: \"IsUnitEnabled\"\r\n \t\t}, {\r\n Phrase: \"CORE.WELCOMEPAGE\",\r\n \t\t\tState: \"base.core.welcome\",\r\n \t\t\tIcon: \"fas fa-door-open\"\r\n }, {\r\n Phrase: \"CORE.MYSETTINGS\",\r\n State: \"base.core.profile.settings\",\r\n Icon: \"fa fa-cog\"\r\n }];\r\n \t})\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizSearch', bizSearchDirective);\r\n\tangular.module('bizPartEngage').service('bizSearchService', bizSearchService);\r\n\r\n\tbizSearchDirective.$inject = [\"bizCore\"];\r\n\tbizSearchService.$inject = [\"$state\"];\r\n\r\n function bizSearchDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n \tReferrerType: \"@referrerType\",\r\n\t\t\t\tReferrerId: \"@referrerId\",\r\n Expand: \"=?expand\",\r\n ExplicitIndexList: \"@explicitIndexList\",\r\n Source: \"@source\",\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return bizCoreProvider.getView('core.directives.search', \"FrontEnd/Core/Directives/Views/Search.html\")\r\n }\r\n },\r\n controller: bizSearchController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizSearchController.$inject = [\"core.users.service\", \"bizCoreService\", \"bizSearchService\", \"$state\", \"$rootScope\"];\r\n\r\n function bizSearchController(userService, bizCoreService, bizSearchService, $state, $rootScope) {\r\n \t var vm = this;\r\n\t\t vm.MaxHits = 20;\r\n vm.CanSearch = true;\r\n\r\n \t vm.Search = Search; \t\r\n \t vm.GoToResult = GoToResult;\r\n vm.GoToResults = GoToResults;\r\n vm.ClearForm = ClearForm;\r\n vm.GoToResults = GoToResults;\r\n vm.GetCustomValue = GetCustomValue;\r\n\r\n vm.HitsIncement = 4;\r\n\r\n function ClearForm() {\r\n vm.SearchText = '';\r\n vm.Expand = false;\r\n vm.Results = null;\r\n }\r\n\r\n \t function GoToResults() {\r\n \t\t vm.Expand = false;\r\n\r\n \t\t if (!vm.SearchText)\r\n \t\t\t return;\r\n\r\n \t\t $state.go('base.modules.search', { query: vm.SearchText});\r\n \t }\r\n\r\n function Search() {\r\n if (!vm.SearchText || vm.SearchText.length < bizSearchService.MinSearchTermLength || !vm.CanSearch)\r\n \t\t return;\r\n\r\n vm.SearchIndexList = null;\r\n\r\n \t\t vm.SearchIndexList = [\r\n { Index: 2, SearchIndexExternalName: \"Page\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 3, SearchIndexExternalName: \"Blog\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 4, SearchIndexExternalName: \"Dictionary\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 5, SearchIndexExternalName: \"Video\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 6, SearchIndexExternalName: \"Educations\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n ];\r\n\t\t\t\t\r\n\t\t\t\tvm.CanSearch = false;\r\n\t\t\t\tsetTimeout(function(vm) {\r\n\t\t\t\t\tvm.CanSearch = true;\r\n }, 500, vm);\r\n\r\n return bizCoreService.Search(vm.SearchText, vm.MaxHits, vm.ReferrerType, vm.ReferrerId, [], vm.SearchInIndexes).then(SearchCallback);\r\n\r\n \tfunction SearchCallback(response) {\r\n \t\tvar results = BizPartCoreHelpers.getResponseValue(response, {});\r\n\r\n \t\tfor (var i = 0; i < results.IndexList.length; i++) {\r\n \t\t results.IndexList[i].Items = results.ResultItems.GetItemsByValue('Index', results.IndexList[i].Index);\r\n \t\t}\r\n\r\n if (vm.ExplicitIndexNumbers && vm.ExplicitIndexNumbers.length > 0)\r\n results.IndexList = results.IndexList.filter(r => vm.ExplicitIndexNumbers.includes(r.Index))\r\n\r\n if (typeof GetSearchResultCallbackFn === 'function') {\r\n results = GetSearchResultCallbackFn(results, vm.Source, $rootScope);\r\n }\r\n\r\n vm.Results = results;\r\n \t\tvm.Expand = true;\r\n \t}\r\n \t}\r\n\r\n function GetCustomValue(item, key) {\r\n var customValue = item.CustomValues.GetItemsByValue('Key', key);\r\n\r\n if (customValue != null && customValue.length == 1) {\r\n return customValue[0].Value;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function GoToResult(item) {\r\n vm.Expand = false;\r\n bizCoreService.LogSearch(item);\r\n const itemUrl = bizSearchService.GetItemUrl(item);\r\n\r\n if (itemUrl)\r\n window.location.assign(itemUrl);\r\n }\r\n\r\n function Init() {\r\n vm.SearchIndexList = [\r\n { Index: 2, SearchIndexExternalName: \"Page\", TotalHits: vm.HitsIncement },\r\n { Index: 3, SearchIndexExternalName: \"Blog\", TotalHits: vm.HitsIncement },\r\n { Index: 4, SearchIndexExternalName: \"Dictionary\", TotalHits: vm.HitsIncement },\r\n { Index: 5, SearchIndexExternalName: \"Video\", TotalHits: vm.HitsIncement },\r\n { Index: 6, SearchIndexExternalName: \"Educations\", TotalHits: vm.HitsIncement },\r\n ];\r\n\r\n vm.SearchInIndexes = vm.SearchIndexList;\r\n if (vm.ExplicitIndexList) {\r\n vm.ExplicitIndexNumbers = vm.ExplicitIndexList.split(',').map(s => parseInt(s.trim(), 10));\r\n vm.SearchInIndexes = vm.SearchIndexList.filter(si => vm.SearchIndexList.some(e => vm.ExplicitIndexNumbers.includes(si.Index)));\r\n }\r\n }\r\n\t\t\t\r\n\t\t\tthis.$onInit = Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizSearchService($state) {\r\n this.MinSearchTermLength = 3;\r\n this.CustomIndexUrls = {};\r\n\r\n this.GetItemUrl = function (item) {\r\n if (typeof GetSearchResultItemUrlFn === 'function') {\r\n return GetSearchResultItemUrlFn(item, $state);\r\n }\r\n\r\n if (item.State == 'base.modules.educations') {\r\n // temphack for scorm\r\n return url = $state.href(item.State);\r\n }\r\n\r\n \t\t var url = $state.href(item.State, JSON.parse(item.StateParameters));\r\n\r\n \t\t if (!this.CustomIndexUrls[item.SearchIndexExternalName])\r\n \t\t\t return url;\r\n\r\n \t\t for (var i = 0; i < this.CustomIndexUrls[item.SearchIndexExternalName].length; i++) {\r\n \t\t\t if (this.CustomIndexUrls[item.SearchIndexExternalName][i].ItemIds.indexOf(item.ItemId) > -1) {\r\n \t\t\t\t return $state.href(this.CustomIndexUrls[item.SearchIndexExternalName][i].State, this.CustomIndexUrls[item.SearchIndexExternalName][i].StateParams)\r\n\t\t\t\t\t\t + this.CustomIndexUrls[item.SearchIndexExternalName][i].Query.replace(\"#ITEMID#\", item.ItemId);\r\n \t\t\t }\r\n \t\t }\r\n\r\n \t\t return url;\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizSimulateUser', bizSimulateUser);\r\n angular.module('bizPartEngage').service('bizSimulateUserService', bizSimulateUserService);\r\n\r\n bizSimulateUser.$inject = [];\r\n bizSimulateUserService.$inject = [\"$http\"];\r\n\r\n function bizSimulateUser() {\r\n return {\r\n restrict: \"E\",\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/SimulateUser.html\",\r\n controllerAs: \"vm\",\r\n controller: bizSimulateUserController,\r\n bindToController: true,\r\n scope: {\r\n simulating: \"=?\",\r\n isAllowedToSimulate: \"=?\"\r\n }\r\n }\r\n }\r\n\r\n bizSimulateUserController.$inject = [\"$rootScope\", \"$window\", \"$filter\", \"bizSimulateUserService\"];\r\n\r\n function bizSimulateUserController($rootScope, $window, $filter, bizSimulateUserService) {\r\n var vm = this;\r\n\r\n vm.Init = Init; \r\n vm.CancelSimulation = CancelSimulation;\r\n vm.SimulateShadowUser = SimulateShadowUser; \r\n\r\n function CancelSimulation() {\r\n vm.Preparing = true;\r\n bizSimulateUserService.CancelSimulation().then(CancelSimulationCallback);\r\n\r\n function CancelSimulationCallback(response) {\r\n var simulation = response.data;\r\n deleteCookie(\"BizPartAuthToken\");\r\n setBizPartAuthToken(simulation.SimulatedByUserToken, simulation.SimulatedByUserId, true);\r\n deleteSessionStorage(\"SimulateDate\");\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function SimulateShadowUser(key) {\r\n vm.Preparing = true;\r\n bizSimulateUserService.SimulateShadowUser(key).then(SimulateUserCallback);\r\n\r\n function SimulateUserCallback(response) {\r\n\r\n var userSession = response.data;\r\n if (!userSession)\r\n return;\r\n\r\n setBizPartAuthToken(userSession.Token, userSession.UserId);\r\n deleteLocalStorage('HasShownWelcomeGuide');\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n \r\n function Init() {\r\n if ($rootScope.HasModuleAccess('SHADOW_USER_SIMULATION', '10') || isSimulatingShadowUser) {\r\n bizSimulateUserService.GetShadowUserSimulationInfo().then(GetShadowUserSimulationInfoCallback);\r\n\r\n function GetShadowUserSimulationInfoCallback(response) {\r\n vm.ShadowUserSimulationInfo = response.data;\r\n }\r\n }\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n function bizSimulateUserService($http) {\r\n return {\r\n GetShadowUserSimulationInfo: GetShadowUserSimulationInfo,\r\n SimulateShadowUser: SimulateShadowUser,\r\n CancelSimulation: CancelSimulation\r\n };\r\n\r\n function GetShadowUserSimulationInfo() {\r\n return $http.get(siteRootPath + 'api/UserSimulation/GetShadowUserSimulationInfo', {});\r\n }\r\n\r\n function SimulateShadowUser(key) {\r\n return $http.post(siteRootPath + 'api/UserSimulation/SimulateUser', {\r\n ShadowUserConfigKey: key\r\n });\r\n }\r\n\r\n function CancelSimulation() {\r\n return $http.post(siteRootPath + 'api/User/CancelUserSimulation');\r\n } \r\n }\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizSocialShare', bizSocialShareDirective);\r\n\tangular.module('bizPartEngage').service('bizSocialShareService', bizSocialShareService);\r\n\r\n\tbizSocialShareDirective.$inject = [\"bizCore\", \"Socialshare\"];\r\n\tbizSocialShareService.$inject = [\"$http\"];\r\n\r\n\tfunction bizSocialShareDirective(bizCoreProvider, Socialshare) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectId: \"@\",\r\n\t\t\t\tobjectType: \"@\",\r\n\t\t\t\tobjectName: \"@\",\r\n\t\t\t\tuiStateName: \"@\",\r\n\t\t\t\tuiStateParams: \"=\",\r\n\t\t\t\tobject: \"=?\",\r\n\t\t\t\tdisabledProviders: \"=?\",\r\n\t\t\t\tlikeActions: \"@\",\r\n likeActionObjectType: \"@\",\r\n useMenu: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: function (element, attr) {\r\n\t\t\t\tif (attr.templateurl) {\r\n\t\t\t\t\treturn siteRootPath + attr.templateurl;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn bizCoreProvider.getView('core.directives.socialshare', \"FrontEnd/Core/Directives/Views/SocialShare.html\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizSocialShareController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t};\r\n\r\n bizSocialShareController.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"bizSocialShareService\", \"$mdToast\"];\r\n\r\n function bizSocialShareController($rootScope, $scope, $state, bizSocialShareService, $mdToast) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Providers = [{\r\n\t\t\t\tName: \"Twitter\",\r\n Value: \"twitter\",\r\n Icon: \"fab fa-twitter-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Facebook\",\r\n Value: \"facebook\",\r\n Icon: \"fab fa-facebook-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Linkedin\",\r\n Value: \"linkedin\",\r\n Icon: \"fab fa-linkedin\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Email\",\r\n Value: \"email\",\r\n Icon: \"fas fa-envelope-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Messenger\",\r\n Value: \"facebook-messenger\",\r\n Icon: \"fab fa-facebook-messenger\",\r\n\t\t\t\tMobileOnly: true\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Whatsapp\",\r\n Value: \"whatsapp\",\r\n Icon: \"fab fa-whatsapp-square\",\r\n\t\t\t\tMobileOnly: true\r\n\t\t\t}\r\n\t\t\t];\r\n\r\n\t\t\tvm.Share = Share;\r\n\t\t\tvm.SetUrl = SetUrl;\r\n\t\t\tvm.GetShareUrl = GetShareUrl;\r\n\t\t\tvm.ShowShare = false;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.OnCopySuccess = OnCopySuccess;\r\n\r\n function OnCopySuccess(e) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Länk kopierad') \r\n );\r\n }\r\n\r\n\t\t\tfunction GetShareUrl() {\r\n\t\t\t\treturn vm.Url + '?s=' + vm.TrackingId;\r\n\t\t\t}\r\n\r\n\t\t\tfunction SetUrl() {\r\n\t\t\t\tvar state = vm.uiStateName || $state.current.name;\r\n\t\t\t\tvar params = vm.uiStateParams || $state.params;\r\n\r\n\t\t\t\tvm.Url = $state.href(state, params, { absolute: true });\r\n\t\t\t}\r\n\r\n\t\t\tfunction Share(provider) {\r\n\t\t\t\tvm.Sharing = true;\r\n\r\n\t\t\t\tvar share = {\r\n\t\t\t\t\tTrackingId: vm.TrackingId,\r\n\t\t\t\t\tProvider: provider.Value,\r\n\t\t\t\t\tObjectId: vm.objectId,\r\n\t\t\t\t\tObjectType: vm.objectType,\r\n\t\t\t\t\tUrl: vm.Url\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbizSocialShareService.AddSocialShare(share).then(AddSocialShareCallback);\r\n\r\n\t\t\t\tfunction AddSocialShareCallback() {\r\n\t\t\t\t\tvm.Sharing = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.TrackingId = Math.random().toString(36).substr(2, 10);\r\n\t\t\t}\r\n\r\n\t\t\tfunction PerformLikeAction(action) {\r\n\t\t\t if (!action.LikeActionPerformedByUser) {\r\n\t\t\t var LikeActionModel =\r\n {\r\n LikedUserId: vm.object.CreatedByUsr,\r\n LikeKey: vm.likeActionObjectType,\r\n ObjectId: vm.object.Id,\r\n ActionId: action.Action.Id,\r\n Comment: \"Like action performed from social share directive.\"\r\n\t\t\t }\r\n\t\t\t bizSocialShareService.PerformLikeAction(LikeActionModel);\r\n\t\t\t action.LikeActionPerformedByUser = true;\r\n\t\t\t action.Count++;\r\n\t\t\t }\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tvm.TrackingId = Math.random().toString(36).substr(2, 10);\r\n\t\t\t\tvm.SetUrl();\r\n\t\t\t\tif (!vm.object && bizSocialShareService.loadedObject) {\r\n\t\t\t\t console.log(bizSocialShareService.loadedObject);\r\n\t\t\t\t vm.object = bizSocialShareService.loadedObject;\r\n\t\t\t\t vm.likeActionObjectType = \"BLOGENTRY\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.disabledProviders) {\r\n\t\t\t\t\tvm.Providers = vm.Providers.Where(function (provider) {\r\n\t\t\t\t\t\treturn vm.disabledProviders.indexOf(provider.Value) == -1;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizSocialShareService($http) {\r\n\r\n\t this.loadedObject = {};\r\n\r\n\t var controllerPath = siteRootPath + \"api/SocialShareUser/\";\r\n\t var likeActionPath = siteRootPath + \"api/LikeAction/\";\r\n\r\n\t\tthis.AddSocialShare = function (share) {\r\n\t\t\treturn $http.post(controllerPath + \"AddSocialShare\", share, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.AddSocialShareClick = function (click) {\r\n\t\t\treturn $http.post(controllerPath + \"AddSocialShareClick\", click, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.PerformLikeAction = function (LikeActionModel) {\r\n\t\t return $http.post(likeActionPath + \"PerformLikeAction\", LikeActionModel, {\r\n\t\t headers: {\r\n\t\t IgnoreLoader: true\r\n\t\t }\r\n\t\t });\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module(\"bizPartEngage\").directive(\"bizTipSomeone\", bizTipSomeone);\r\n\r\n\tbizTipSomeone.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizTipSomeone(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {\r\n\t\t\t\tfromMobileMenu: '@?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.tipsomeone', \"FrontEnd/Core/Directives/Views/tip-someone.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: bizTipSomeoneController\r\n\t\t};\r\n\r\n\t\tbizTipSomeoneController.$inject = [\"$rootScope\", \"$http\", \"$mdDialog\", \"$timeout\"];\r\n\r\n\t\tfunction bizTipSomeoneController($rootScope, $http, $mdDialog, $timeout) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Initialize = Initialize;\r\n\t\t\tvm.OpenPanel = OpenPanel;\r\n\t\t\t\r\n\r\n\t\t\tfunction OpenPanel() {\r\n\t\t\t\t$mdDialog.show({\r\n\t\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/tip-someone-popup.html\",\r\n\t\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\t\tescapeToClose: true,\r\n\t\t\t\t\tcontroller: popupController,\r\n\t\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\t\tlocals: {\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbindToController: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpopupController.$inject = [\"$mdDialog\"];\r\n\t\t\t\tfunction popupController($mdDialog) {\r\n\t\t\t\t\tvar vm = this;\r\n\t\t\t\t\tvm.OnBtnClick = OnBtnClick;\r\n\t\t\t\t\tvm.Close = Close;\r\n\t\t\t\t\tvm.Init = Init;\r\n\r\n\t\t\t\t\tfunction Init() {\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction Close() {\r\n\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\r\n\t\t\t\t\tfunction OnBtnClick() {\r\n\t\t\t\t\t\tif (!vm.Email) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.Clicked = true;\r\n\t\t\t\t\t\tvm.Error = '';\r\n\t\t\t\t\t\t$http.get(siteRootPath + 'api/User/TipSomeone', {\r\n\t\t\t\t\t\t\tparams: {\r\n\t\t\t\t\t\t\t\temail: vm.Email,\r\n\t\t\t\t\t\t\t\tmessage: vm.Message || ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\t\t\tvar result = BizPartCoreHelpers.getResponseValue(response);\r\n\t\t\t\t\t\t\tif (result.Success) {\r\n\t\t\t\t\t\t\t\tvm.Sent = true;\r\n\t\t\t\t\t\t\t\t$timeout(() => {\r\n\t\t\t\t\t\t\t\t\tvm.Clicked = false;\r\n\t\t\t\t\t\t\t\t\tvm.Sent = false;\r\n\t\t\t\t\t\t\t\t\tvm.Email = '';\r\n\t\t\t\t\t\t\t\t\tvm.Message = '';\r\n\t\t\t\t\t\t\t\t}, 2000);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvm.Clicked = false;\r\n\t\t\t\t\t\t\t\tvm.Error = result.Message;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tInit();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.fromMobileMenu) {\r\n\t\t\t\t\t$rootScope.ExpandMainMenu = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\tfunction Initialize() {\r\n\r\n\t\t\t}\r\n\r\n\t\t\t$rootScope.Initialized.then(vm.Initialize);\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizUnsubscribe', bizUnsubscribeDirective);\r\n angular.module('bizPartEngage').service('bizUnsubscribeService', bizUnsubscribeService);\r\n\r\n bizUnsubscribeDirective.$inject = [\"bizCore\"];\r\n bizUnsubscribeService.$inject = [\"$http\"]\r\n\r\n function bizUnsubscribeDirective(bizCore) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCore.getView('core.directives.unsubscribe', \"FrontEnd/Core/Directives/Views/Unsubscribe.html\"),\r\n bindToController: true,\r\n controller: bizUnsubscribeController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizUnsubscribeController.$inject = [\"bizUnsubscribeService\"];\r\n\r\n function bizUnsubscribeController(bizUnsubscribeService) {\r\n var vm = this;\r\n\r\n vm.Logo = portalSettings['logo']; \r\n\r\n vm.Init = Init;\r\n vm.GetEncodedQS = GetEncodedQS;\r\n vm.GetCategoriesByCode = GetCategoriesByCode;\r\n vm.ConfirmCategories = ConfirmCategories;\r\n vm.GetCategoryIdsToLink = GetCategoryIdsToLink;\r\n vm.IsCategoryOptIn = IsCategoryOptIn;\r\n\r\n function IsCategoryOptIn(category) {\r\n return category.CategoryType === 1;\r\n }\r\n\r\n function GetCategoryIdsToLink() {\r\n var catIds = [];\r\n for (var i = 0; i < vm.Categories.length; i++) {\r\n var cat = vm.Categories[i];\r\n var isChecked = cat.Checked;\r\n var isOptIn = IsCategoryOptIn(cat);\r\n\r\n //the user selects which categories they are NOT interested in\r\n if (isOptIn && !isChecked) {\r\n //if category is opt in, they should be added if they have not checked\r\n catIds.push(cat.Id);\r\n } else if (!isOptIn && isChecked) {\r\n //if category is opt out, they should be added if they have checked\r\n catIds.push(cat.Id);\r\n }\r\n }\r\n return catIds;\r\n }\r\n\r\n function ConfirmCategories() {\r\n vm.Result = false;\r\n var catIds = vm.GetCategoryIdsToLink();\r\n\r\n if (vm.Code) {\r\n bizUnsubscribeService.SaveCategoriesByCode(vm.Code, catIds).then((response) => {\r\n console.log(\"SaveCategoriesByCode\", response);\r\n vm.Result = true;\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n if (result.Success) {\r\n vm.Success = true;\r\n } else {\r\n vm.Success = false;\r\n } \r\n });\r\n } else {\r\n console.log(\"not implemented yet\");\r\n } \r\n };\r\n\r\n function GetEncodedQS() {\r\n return getParameterByNameFromUrl('c', location.href);\r\n }\r\n\r\n function GetCategoriesByCode(code) {\r\n bizUnsubscribeService.GetCategoriesByCode(code).then((response) => {\r\n var categories = BizPartCoreHelpers.getResponseValue(response, []);\r\n for (var i = 0; i < categories.length; i++) {\r\n var cat = categories[i];\r\n var isOptIn = vm.IsCategoryOptIn(cat);\r\n if (isOptIn) {\r\n //inverse opt in, as the user selects what they are NOT interested in.\r\n cat.Checked = !cat.Checked;\r\n }\r\n }\r\n vm.Categories = categories;\r\n console.log(\"categories\", vm.Categories);\r\n });\r\n }\r\n\r\n function Init() {\r\n vm.Code = vm.GetEncodedQS();\r\n console.log(\"code\", vm.Code);\r\n\r\n if (vm.Code) {\r\n GetCategoriesByCode(vm.Code);\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.Init();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizUnsubscribeService($http) {\r\n var servicepath = siteRootPath + \"api/genericsendcategory/\";\r\n\r\n this.GetCategoriesByCode = function (code) {\r\n return $http.get(servicepath + \"GetCategoriesForUserByCode\", {\r\n params: {\r\n code: code\r\n }\r\n });\r\n }\r\n\r\n this.SaveCategoriesByCode = function (code, catIds) {\r\n return $http.post(servicepath + \"LinkCategoriesToUserByCode\", {\r\n Code: code, CategoryIds: catIds\r\n });\r\n }\r\n }\r\n\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').service('core.completeregisterService', completeRegisterService);\r\n\r\n completeRegisterService.$inject = [\"$http\"];\r\n\r\n function completeRegisterService($http) {\r\n this.GetUserByActionGuid = function (guid) {\r\n return $http.get(siteRootPath + 'api/user/GetUserByActionGuid', { params: { guid } });\r\n };\r\n\r\n this.GetGuidInfo = function (guid) {\r\n return $http.get(siteRootPath + 'api/user/GetGuidInfo', { params: { guid } });\r\n }\r\n\r\n this.CompleteRegistration = function (guid, user, password, extCustomFields, code) {\r\n return $http.post(siteRootPath + 'api/user/CompleteRegistration', { Guid: guid, User: user, Password: password || '', ExtCustomFields: extCustomFields, Code: code || '' });\r\n };\r\n\r\n this.SendVerificationCode = function (guid, email) {\r\n return $http.post(siteRootPath + 'api/user/SendVerificationForCreateUserForUnit', { Guid: guid, Email: email });\r\n };\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').service('core.engage.service', engageService);\r\n\r\n engageService.$inject = [\"$http\", \"$q\", \"$state\"];\r\n\r\n function engageService($http, $q, $state) {\r\n \tvar apiPath = siteRootPath + \"api/engage/\";\r\n \tvar settingsPromise;\r\n \tvar engageJourneyPromise;\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n \t\tGetSettings: GetSettings,\r\n\t\t\tSaveSettings: SaveSettings,\r\n \t\tGetSuggestions: GetSuggestions,\r\n \t\tGetEngageJourneys: GetEngageJourneys,\r\n \t\tGetEngageJourneysByFavoriteTags: GetEngageJourneysByFavoriteTags,\r\n GetEngageJourneysForUser: GetEngageJourneysForUser,\r\n HandleEngageObjectCancelled: HandleEngageObjectCancelled,\r\n RedirectToEngageObject: RedirectToEngageObject,\r\n IsEngageObject: IsEngageObject,\r\n GetEngageObjectsByObjectIdAndType: GetEngageObjectsByObjectIdAndType,\r\n GetEngageObjectTypeId: GetEngageObjectTypeId,\r\n GetEngageObjectTypeById: GetEngageObjectTypeById \r\n };\r\n\r\n function GetEngageObjectTypeId(objectTypeName) {\r\n var ot = objectTypeName.toLowerCase();\r\n switch (ot) {\r\n case 'html5':\r\n return 1; \r\n case 'mediabankfile':\r\n return 3; \r\n case 'blog':\r\n return 2; \r\n case 'scorm':\r\n return 4;\r\n case 'speedquiz':\r\n return 5;\r\n case 'certification':\r\n return 6;\r\n case 'mission':\r\n return 7;\r\n default:\r\n return 0;\r\n } \r\n }\r\n\r\n function GetEngageObjectTypeById(objectTypeId) {\r\n switch (objectTypeId) {\r\n case 1:\r\n return 'html5';\r\n case 3:\r\n return 'mediabankfile';\r\n case 2:\r\n return 'blog';\r\n case 4:\r\n return 'scorm';\r\n case 5:\r\n return 'speedquiz';\r\n case 6:\r\n return 'certification';\r\n case 7:\r\n return 'mission';\r\n default:\r\n return 'None';\r\n } \r\n }\r\n\r\n function IsEngageObject(objectType) {\r\n var engageObjectTypes = ['html5', 'mediabankfile', 'blog', 'scorm']; \r\n return engageObjectTypes.indexOf(objectType.toLowerCase()) >= 0; \r\n }\r\n\r\n function RedirectToEngageObject(objectType, objectId) {\r\n var ot = objectType.toLowerCase();\r\n switch (ot) {\r\n case 'html5':\r\n $state.go(\"base.modules.html5education\", { id: objectId });\r\n break;\r\n case 'mediabankfile':\r\n $state.go(\"base.modules.mediafile\", { id: objectId });\r\n break;\r\n case 'blog':\r\n $state.go(\"base.modules.blogtitle\", { title: objectId });\r\n break;\r\n case 'scorm':\r\n location.href = siteRootPath + \"SCORM/\" + objectId;\r\n break;\r\n } \r\n } \r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = null;\r\n \t\tengageJourneyPromise = null;\r\n \t}\r\n\r\n \tfunction SaveSettings(settings) {\r\n \t\treturn $http.post(apiPath + 'SaveEngageSettingsForUser', settings);\r\n \t}\r\n\r\n \tfunction GetSettings(force) {\r\n \t\tif (!force && settingsPromise) return settingsPromise;\r\n\r\n \t\tsettingsPromise = $http.get(apiPath + 'GetEngageSettingsForUser');\r\n \t\treturn settingsPromise;\r\n \t}\r\n\r\n \tfunction GetEngageJourneysForUser(force) {\r\n \t\t// if (!force && engageJourneyPromise) return engageJourneyPromise;\r\n\r\n \t\tvar deferrer = $q.defer();\r\n \t\tengageJourneyPromise = deferrer.promise;\r\n\r\n \t\t$q.all([GetEngageJourneys(false),\r\n\t\t\t\t\tGetEngageJourneysByFavoriteTags(false)])\r\n\t\t\t\t.then(function (responses) {\r\n \t\t\t\tdeferrer.resolve({\r\n \t\t\t\t\tGeneral: responses[0].data,\r\n \t\t\t\t\tCustom: responses[1].data\r\n \t\t\t\t});\r\n \t\t\t});\r\n\r\n \t\treturn engageJourneyPromise;\r\n \t}\r\n\r\n \tfunction GetEngageJourneysByFavoriteTags(deepload) {\r\n \t\treturn $http.get(apiPath + \"GetEngageJourneysByFavoriteTags\", {\r\n \t\t\tparams: {\r\n \t\t\t\tdeepload: deepload\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetEngageJourneys(deepload) {\r\n \t\treturn $http.get(apiPath + \"GetEngageJourneys\", {\r\n \t\t\tparams: {\r\n\t\t\t\t\tdeepload: deepload\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetSuggestions (max, page) {\r\n \t\treturn $http.get(apiPath + \"GetSuggestions\", {\r\n \t\tparams: {\r\n \t\t\tmax: max,\r\n \t\t\tpage: page\r\n \t\t}\r\n \t});\r\n }\r\n\r\n function HandleEngageObjectCancelled(objectId, objectType) { \r\n\r\n var params = {\r\n objectId: objectId,\r\n objectType: objectType \r\n };\r\n\r\n $http.post(apiPath + 'HandleEngageObjectCancelled', {}, {\r\n params: params,\r\n headers: {\r\n IgnoreLoader: true\r\n }\r\n });\r\n }\r\n\r\n function GetEngageObjectsByObjectIdAndType(objects) { \r\n\r\n return $http.post(apiPath + 'GetEngageObjectsByObjectIdAndType', objects, { \r\n headers: {\r\n IgnoreLoader: true\r\n }\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.event.statistics.service', eventStatisticsService);\r\n\r\n eventStatisticsService.$inject = [\"$http\"];\r\n\r\n function eventStatisticsService($http) {\r\n this.GetAllEventStatisticsForUser = function(page, limit) {\r\n return $http.get(siteRootPath + 'api/eventstatistics/GetAllEventStatisticsForUser?' + $.param({page: page, limit: limit}));\r\n }\r\n }\r\n //GetAllEventStatisticsForUser\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.services.favorite', favoriteService);\r\n\r\n\tfavoriteService.$inject = [\"$http\"];\r\n\r\n\tfunction favoriteService($http) {\r\n\t\tvar apiPath = siteRootPath + 'api/favorites/';\r\n\r\n\t\treturn {\r\n\t\t\tIsFavorite: IsFavorite,\r\n\t\t\tAddFavorite: AddFavorite,\r\n\t\t\tRemoveFavorite: RemoveFavorite,\r\n\t\t\tGetFavorites: GetFavorites\r\n\t\t};\r\n\r\n\t\tfunction IsFavorite(objectType, objectId) {\r\n\t\t\treturn $http.get(apiPath + 'IsFavorite', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction AddFavorite(objectType, objectId) {\r\n\t\t\treturn $http.post(apiPath + 'AddFavorite', {}, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction RemoveFavorite(objectType, objectId) {\r\n\t\t\treturn $http.delete(apiPath + 'RemoveFavorite', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction GetFavorites(deepload, objectType) {\r\n\t\t\tvar params = {\r\n\t\t\t\tdeepload: deepload\r\n\t\t\t};\r\n\r\n\t\t\tif (objectType)\r\n\t\t\t\tparams.objectType = objectType;\r\n\r\n\t\t\treturn $http.get(apiPath + 'GetFavorites', {\r\n\t\t\t\tparams: params\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.forgotpasswordService', forgotpasswordService);\r\n\r\n\tforgotpasswordService.$inject = [\"$http\", \"$rootScope\", \"bizCoreService\"];\r\n\r\n\tfunction forgotpasswordService($http, $rootScope, bizCoreService) {\r\n\t\tthis.IsResetPasswordGuidValid = function (guid) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/user/IsResetPasswordGuidValid', { params: { guid: guid } });\r\n\t\t}\r\n\r\n\t\tthis.SendPasswordRecoveryEmail = function (email) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/user/SendPasswordRecoveryEmail', { params: { email: email } });\r\n\t\t};\r\n\r\n\t\tthis.UpdatePassword = function (guid, newPassword) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/user/UpdatePasswordFromGuid', { guid: guid, newPassword: newPassword });\r\n\t\t};\r\n\r\n\t\tthis.GetBackgroundImage = function () {\r\n\t\t\treturn bizCoreService.GetPortalsetting(\"LoginBackgroundImages\").then(function (response) {\r\n\t\t\t\tvar res = response.data;\r\n\t\t\t\tvar backgroundImages = [];\r\n\r\n\t\t\t\timages = res.replace(/^(,)+|(,)+$/g, '');\r\n\r\n\t\t\t\tif (images.length > 0) {\r\n\t\t\t\t\tif (images.indexOf(',') === -1) {\r\n\t\t\t\t\t\tbackgroundImages.push(images);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tbackgroundImages = images.split(',');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (backgroundImages.length > 0)\r\n\t\t\t\t\t\treturn backgroundImages[$rootScope.RandomBetween(0, backgroundImages.length - 1)];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn '';\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.leaderboard.service', leaderboardService);\r\n\r\n leaderboardService.$inject = [\"$http\"];\r\n\r\n function leaderboardService($http) {\r\n \tvar servicePath = siteRootPath + \"api/Leaderboards/\";\r\n\r\n \tthis.GetGlobalLeaderboard = function (limit, startTime, endTime) {\r\n \t\tvar method = (startTime && endTime) ? \"GetGlobalLeaderboardBetweenDates\" : \"GetGlobalLeaderboard\";\r\n \t\treturn $http.get(servicePath + method, {\r\n \t\t\tparams: {\r\n \t\t\t\tlimit: limit,\r\n \t\t\t\tstartTime: startTime,\r\n \t\t\t\tendTime: endTime\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.GetCountryLeaderboard = function (limit, startTime, endTime) {\r\n \t\tvar method = (startTime && endTime) ? \"GetCountryLeaderboardBetweenDates\" : \"GetCountryLeaderboard\";\r\n \t\treturn $http.get(servicePath + method, {\r\n \t\t\tparams: {\r\n \t\t\t\tlimit: limit,\r\n \t\t\t\tstartTime: startTime,\r\n \t\t\t\tendTime: endTime\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n this.GetMainUnitLeaderboard = function (limit) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetMainUnitLeaderboard?' + $.param({ limit: limit }));\r\n };\r\n\r\n this.GetMainUnitLeaderboardBetweenDates = function (limit, startTime, endTime) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetMainUnitLeaderboardBetweenDates?' + $.param({ limit: limit, startTime: startTime, endTime: endTime }));\r\n };\r\n\r\n this.GetUnitLeaderboard = function (limit) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetUnitLeaderboard?' + $.param({ limit: limit }));\r\n };\r\n\r\n this.GetUnitLeaderboardBetweenDates = function (limit, startTime, endTime) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetUnitLeaderboardBetweenDates?' + $.param({ limit: limit, startTime: startTime, endTime: endTime }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.level.serivce', levelService);\r\n\r\n levelService.$inject = [\"$http\"];\r\n\r\n function levelService($http) {\r\n this.GetLoggedInUserExperiencePointHistory = function(max, page) {\r\n return $http.get(siteRootPath + 'api/level/GetLoggedInUserExperiencePointHistory?' + $.param({max: max, page:page}));\r\n };\r\n\r\n this.GetExperienceValueFromLastCheck = function() {\r\n return $http.get(siteRootPath + 'api/level/GetExperienceValueFromLastCheck');\r\n };\r\n\r\n this.CheckForLevelUp = function() {\r\n return $http.get(siteRootPath + 'api/level/CheckForLevelUp');\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.mynotes.service', myNotesService);\r\n\r\n myNotesService.$inject = [\"$http\"];\r\n\r\n function myNotesService($http) {\r\n \tvar apiPath = siteRootPath + \"api/mynotes/\";\r\n \tvar settingsPromise = [];\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n GetMyNotes: GetMyNotes,\r\n SaveMyNotes: SaveMyNotes,\r\n SaveMyNote: SaveMyNote\r\n };\r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = [];\r\n \t}\r\n\r\n\r\n \tfunction GetMyNotes(limit, startTime, endTime, force) {\r\n var key = \"MY_NOTES\";\r\n \t\tif (!force && settingsPromise[key]) return settingsPromise[key];\r\n\r\n \t\tsettingsPromise[key] = $http.get(apiPath + 'GetMyNotes?' + $.param({limit: limit, startTime: moment(startTime).format(), endTime: moment(endTime).format()}));\r\n \t\treturn settingsPromise[key];\r\n }\r\n \r\n function SaveMyNotes(notes) {\r\n return $http.post(apiPath + \"SaveMyNotes\", notes);\r\n }\r\n\r\n function SaveMyNote(note) {\r\n return $http.post(apiPath + \"SaveMyNote\", note);\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.portal.service', portalService);\r\n\r\n portalService.$inject = [\"$http\", \"$q\", \"$state\"];\r\n\r\n function portalService($http, $q, $state) {\r\n \tvar apiPath = siteRootPath + \"api/portal/\";\r\n \tvar settingsPromise = [];\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n \t\tGetPortalSetting: GetPortalSetting,\r\n };\r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = null;\r\n \t}\r\n\r\n\r\n \tfunction GetPortalSetting(key, force) {\r\n \t\tif (!force && settingsPromise[key]) return settingsPromise[key];\r\n\r\n \t\tsettingsPromise[key] = $http.get(apiPath + 'GetPortalSettingValue?' + $.param({key: key}));\r\n \t\treturn settingsPromise[key];\r\n \t}\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.registerService', registerService);\r\n\r\n registerService.$inject = [\"$http\"];\r\n\r\n function registerService($http) {\r\n this.CreateUser = function (user) {\r\n return $http.post(siteRootPath + 'api/user/CreateUser', { user: user });\r\n }; \r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.session.service', sessionService);\r\n\r\n sessionService.$inject = [\"$mdDialog\", \"$interval\", \"core.users.service\", \"$q\", \"$translate\"];\r\n\r\n function sessionService($mdDialog, $interval, userService, $q, $translate) {\r\n this.SessionTime; \r\n this.SessionTimeEnd; \r\n this.ShowingWarning; \r\n this.Timer;\r\n\r\n this.Initialize = function(time) {\r\n this.SessionTime = time;\r\n this.ShowingWarning = false;\r\n this.Refresh();\r\n localStorage.setItem('BIZEXTPAGE_SESSION_TIMEOUT', time);\r\n };\r\n\r\n this.Start = function() {\r\n Timer = $interval(Tick, 5000, 0, false, this);\r\n };\r\n\r\n this.Stop = function() {\r\n $interval.cancel(Timer);\r\n };\r\n\r\n this.Refresh = function(updateBackend) {\r\n this.SessionTimeEnd = moment().add(this.SessionTime, 's');\r\n\r\n if(updateBackend) {\r\n userService.UpdateUserSession().then(function() {\r\n console.log('Session timer refreshed!');\r\n });\r\n }\r\n };\r\n\r\n this.TimeToShowWarning = function() {\r\n return moment().add(1, 'm') > this.SessionTimeEnd;\r\n };\r\n\r\n this.TimeOut = function() {\r\n return moment() > this.SessionTimeEnd;\r\n };\r\n\r\n function Tick(sessionTimer) {\r\n if (sessionTimer.TimeToShowWarning()) {\r\n if (sessionTimer.ShowingWarning == false) {\r\n $mdDialog.show($mdDialog.alert({\r\n title: $translate.instant(\"CORE.Session.Warning.Title\"),\r\n textContent: $translate.instant(\"CORE.Session.Warning.Content\"),\r\n ok: \"Ok\"\r\n })).then(function() {\r\n sessionTimer.Refresh(true);\r\n sessionTimer.ShowingWarning = false;\r\n });\r\n \r\n sessionTimer.ShowingWarning = true;\r\n }\r\n \r\n if (sessionTimer.TimeOut()) {\r\n sessionTimer.Stop(); \r\n userService.Logout();\r\n }\r\n }\r\n }\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.sso.serivce', ssoService);\r\n\r\n ssoService.$inject = [\"$http\"];\r\n\r\n function ssoService($http) {\r\n this.SSOCheckIfUserExists = function(ssoKey, ssoToken) {\r\n return $http.post(siteRootPath + 'api/loginapi/SSOCheckIfUserExists', {SSOKey: ssoKey, SSOToken: ssoToken});\r\n };\r\n\r\n this.Login = function(ssoKey, ssoToken) {\r\n return $http.post(siteRootPath + 'api/loginapi/SSO', {SSOKey: ssoKey, SSOToken: ssoToken});\r\n };\r\n\r\n this.RegisterSSOUser = function(ssoKey, ssoToken, userName, firstName, lastName, email, countryIsoCode) {\r\n return $http.post(siteRootPath + 'api/loginapi/RegisterSSOUser', \r\n {\r\n SSOKey: ssoKey, \r\n SSOToken: ssoToken,\r\n UserName: userName,\r\n FirstName: firstName,\r\n LastName: lastName,\r\n Email: email,\r\n CountryIsoCode: countryIsoCode\r\n });\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.terms.service', termsService);\r\n\r\n\ttermsService.$inject = [\"$http\"];\r\n\r\n\tfunction termsService($http) {\r\n\t\tthis.GetSystemTerms = function (unitId) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/Terms/GetSystemTerms', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tincludeAccepted: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n})(window.angular);\r\n","(function(angular){\r\n angular.module('bizPartEngage').service('core.unit.service', unitService);\r\n\r\n unitService.$inject = [\"$http\"];\r\n\r\n function unitService($http) {\r\n this.GetUsersInUnit = function(unitId) {\r\n return $http.get(siteRootPath + 'api/Unit/GetUsersInUnit?' + $.param({unitId: unitId}));\r\n };\r\n\r\n this.GetUnitsByParent = function(parentId) {\r\n return $http.get(siteRootPath + 'api/Unit/GetUnitsByParent?' + $.param({ parentId: parentId }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.users.service', userService);\r\n\r\n userService.$inject = [\"$http\", \"$window\", \"$rootScope\"];\r\n\r\n function userService($http, $window, $rootScope) {\r\n this.Logout = function() {\r\n $http.post(siteRootPath + \"api/user/logout\", {}).then(function(response) {\r\n deleteStorage(\"BizPartAuthToken\");\r\n if ($rootScope.MiniSettings[\"Logout\"][\"CustomLogoutFn\"]) {\r\n $rootScope.MiniSettings[\"Logout\"][\"CustomLogoutFn\"]();\r\n }\r\n if (response.data) {\r\n window.location.href = response.data;\r\n } else {\r\n window.location.href = siteRootPath;\r\n }\r\n \r\n //$window.location.reload();\r\n }, function() {\r\n //PROBABLY ALREADY LOGGED OUT...\r\n \twindow.location.href = siteRootPath;\r\n //$window.location.reload();\r\n });\r\n };\r\n\r\n this.AddUserActivity = function (url, refererUrl, activityGroup) {\r\n return $http.post(siteRootPath + 'api/user/AddUserActivity', {url: url,refererUrl: refererUrl,activityGroup: activityGroup});\r\n };\r\n\r\n this.GetLoggedInUserDefaultLevelProgress = function() {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserDefaultLevelProgress');\r\n };\r\n\r\n this.GetLoggedInUserNotifications = function(max, page) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserNotifications?' + $.param({ max: max, page: page }));\r\n };\r\n\r\n this.SaveMyProfile = function(user) {\r\n return $http.post(siteRootPath + 'api/user/SaveMyProfile', user);\r\n };\r\n\r\n this.GetUserGenericCustomFields = function (user) {\r\n return $http.get(siteRootPath + 'api/user/GetUserGenericCustomFields');\r\n };\r\n\r\n this.GetCustomFieldValue = function (customFieldId, objectId) {\r\n return $http.get(siteRootPath + 'api/user/GetCustomFieldValue?' + $.param({ customFieldId: customFieldId, objectId: objectId }));\r\n };\r\n\r\n this.UpdateCustomFieldValue = function (customFieldId, objectId, value) {\r\n \treturn $http.get(siteRootPath + 'api/user/UpdateCustomFieldValue?' + $.param({ customFieldId: customFieldId, objectId: objectId, value: value }));\r\n };\r\n\r\n this.UpdateMyPassword = function(password, oldPassword) {\r\n \treturn $http.post(siteRootPath + 'api/user/UpdateMyPassword', {password: password, oldPassword: oldPassword });\r\n };\r\n\r\n this.DeleteMe = function() {\r\n return $http.delete(siteRootPath + 'api/user/DeleteMe');\r\n }\r\n\r\n this.UpdateAllowSMSForLoggedInUser = function(allowSms) {\r\n return $http.post(siteRootPath + 'api/user/UpdateAllowSMSForLoggedInUser', allowSms);\r\n };\r\n\r\n this.GetLoggedInUserSetting = function(key) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserSetting?' + $.param({key: key}));\r\n };\r\n\r\n this.GetLoggedInUserSettingAsBoolean = function(key) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserSettingAsBoolean?' + $.param({ key: key }));\r\n };\r\n\r\n this.GetLoggedInUser = function () {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUser');\r\n };\r\n\r\n this.GetLoggedInUserFromDB = function () {\r\n return $http.get(siteRootPath + 'api/user/GetUser');\r\n };\r\n\r\n this.GetProfile = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetProfile');\r\n };\r\n\r\n this.GetProfileRestrictedFields = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRestrictedFields');\r\n };\r\n\r\n this.GetProfile = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetProfile');\r\n };\r\n\r\n this.GetRelationTypes = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRelationTypes');\r\n }\r\n\r\n this.GetRelatedUsers = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRelatedUsers');\r\n }\r\n\r\n this.GetProfileAllowedUnitsToEdit = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetAllowedUnitsToEdit');\r\n }\r\n\r\n this.UpdateRelatedUsers = function (relatedUsers) {\r\n return $http.post(siteRootPath + 'api/profile/UpdateRelatedUsers', relatedUsers);\r\n };\r\n\r\n this.SaveBasicProfile = function(user) {\r\n \treturn $http.post(siteRootPath + 'api/profile/SaveBasicProfile', user);\r\n };\r\n\r\n this.SaveCustomProfileData = function(user) {\r\n \treturn $http.post(siteRootPath + 'api/profile/SaveCustomProfileData', user);\r\n };\r\n\r\n this.UpdateUserSession = function() {\r\n return $http.get(siteRootPath + \"api/user/UpdateUserSession\");\r\n };\r\n \r\n this.GetUserLogStats = function () {\r\n return $http.get(siteRootPath + 'api/EngageObjectStatistics/GetUserLogStats');\r\n };\r\n this.GetUserTypes = function () {\r\n return $http.get(siteRootPath + 'api/usertype/GetUserTypes');\r\n }\r\n this.SubscribeToNewsletter = function (key, email) {\r\n return $http.get(siteRootPath + 'api/user/SubscribeToNewsletter?' + $.param({ key: key, email: email }));\r\n };\r\n this.GetGenders = function () {\r\n return $http.get(siteRootPath + 'api/user/GetGenders');\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').config(configCoreFunction);\r\n configCoreFunction.$inject = [\"$stateProvider\", \"bizUserProvider\", \"bizCoreProvider\", \"$translatePartialLoaderProvider\"];\r\n function configCoreFunction($stateProvider, bizUserProvider, bizCoreProvider, $translatePartialLoaderProvider) {\r\n\r\n $stateProvider\r\n .state('base.core', {\r\n template: '
'\r\n })\r\n .state('base.core.profile', {\r\n url: \"/profile\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile', 'FrontEnd/Core/Views/profile.html')\r\n })\r\n .state('base.core.cleanprofile', {\r\n url: \"/cprofile\",\r\n template: \"
\"\r\n })\r\n .state('base.core.profile.home', {\r\n url: \"/home\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.home', 'FrontEnd/Core/Views/mypage.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.home', 'core.mypage'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.settings', {\r\n url: \"/settings\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.settings', 'FrontEnd/Core/Views/mysettings.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.settings', 'core.mysettings'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.security', {\r\n url: \"/security\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.security', 'FrontEnd/Core/Views/mysecurity.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.security', 'core.mysecurity'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.profile.myrelatedusers', {\r\n url: \"/my-related-users\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.myrelatedusers', 'FrontEnd/Core/Views/myrelatedusers.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.myrelatedusers', 'core.myrelatedusers'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.cleanprofile.myrelatedusers', {\r\n url: \"/my-related-users\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.myrelatedusers', 'FrontEnd/Core/Views/myrelatedusers.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.myrelatedusers', 'core.myrelatedusers'),\r\n controllerAs: \"vm\",\r\n params: {\r\n clean: true\r\n },\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); } \r\n }\r\n })\r\n .state('base.core.profile.customsettings', {\r\n url: \"/customsettings\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.customsettings', 'FrontEnd/Core/Views/mycustomsettings.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.customsettings', 'core.mycustomsettings'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.profile.leaderboards', {\r\n url: \"/leaderboards\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.leaderboards', 'FrontEnd/Core/Views/myleaderboards.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.leaderboards', 'core.myleaderboards'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.colleagues', {\r\n url: \"/colleagues\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.colleagues', 'FrontEnd/Core/Views/mycolleagues.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.colleagues', 'core.mycolleagues'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('UNITS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.register', {\r\n url: \"/register\",\r\n templateUrl: bizCoreProvider.getView('core.register', 'FrontEnd/Core/Views/register.html'),\r\n controller: bizCoreProvider.getController('core.register', 'core.register'),\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: IsPortalSettingTrue('IsCreateUserPublic')\r\n }\r\n })\r\n .state('base.core.showterms', {\r\n url: \"/terms\",\r\n templateUrl: bizCoreProvider.getView('base.core.showterms', 'FrontEnd/Core/Views/showterms.html'),\r\n controller: \"core.terms.show\",//bizCoreProvider.getController('core.terms.show', 'core.terms'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.privacypolicy', {\r\n url: \"/privacy-policy\",\r\n templateUrl: bizCoreProvider.getView('base.core.privacypolicy', 'FrontEnd/Core/Views/privacypolicy.html'),\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); }\r\n }\r\n })\r\n .state('cleanbase.privacypolicy', {\r\n url: \"/public-privacy-policy\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.privacypolicy', 'FrontEnd/Core/Views/privacypolicy.html'),\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('base.core.welcome', {\r\n url: \"/welcome\",\r\n templateUrl: bizCoreProvider.getView('base.core.welcome', 'FrontEnd/Core/Views/welcome.html'),\r\n controller: bizCoreProvider.getController('base.core.welcome', 'core.welcome'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.themestest', {\r\n url: \"/themestest\",\r\n templateUrl: bizCoreProvider.getView('base.core.themestest', 'FrontEnd/Core/Views/themestest.html'),\r\n controller: bizCoreProvider.getController('base.core.themestest', 'core.themestest'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.notifications', {\r\n url: \"/notifications\",\r\n templateUrl: bizCoreProvider.getView('base.core.notifications', 'FrontEnd/Core/Views/notifications.html'),\r\n controller: bizCoreProvider.getController('base.core.notifications', 'core.notifications'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('cleanbase.exthome', {\r\n url: \"/exthome\",\r\n params: {\r\n extmode: true\r\n },\r\n templateUrl: bizCoreProvider.getView('cleanbase.exthome', 'FrontEnd/Core/Views/exthome.html'),\r\n controller: \"cleanbase.exthome\",\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); }\r\n }\r\n })\r\n .state('cleanbase.unsubscribe', {\r\n url: \"/unsubscribe\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.unsubscribe', 'FrontEnd/Core/Views/unsubscribe.html'),\r\n controller: \"cleanbase.unsubscribe\",\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('cleanbase.completeregister', {\r\n url: \"/complete-registration/:guid\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.completeregister', 'FrontEnd/Core/Views/completeregister.html'),\r\n controller: \"cleanbase.completeregister\",\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n }\r\n });\r\n }\r\n\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').provider('bizEffects', effectsProvider);\r\n\r\n effectsProvider.$inject = ['fireworksProvider'];\r\n\r\n function effectsProvider(fireworks) {\r\n\r\n function Show(effectSystemName) {\r\n if (effectSystemName === 'CONFETTI') {\r\n confetti();\r\n } else if (effectSystemName === 'FIREWORKS') {\r\n fireworks.showFireworks();\r\n }\r\n } \r\n \r\n return {\r\n Show: Show, \r\n $get: function () {\r\n return {\r\n Show: Show\r\n };\r\n }\r\n }\r\n }\r\n})(window.angular);","(function (angular) {\r\n\tvar SCREEN_WIDTH = window.innerWidth;\r\n\tvar SCREEN_HEIGHT = window.innerHeight;\r\n\tvar DEFAULT_FIREWORKS_TIMEOUT = 10000;\r\n\tvar particles = [];\r\n\tvar rockets = [];\r\n\tvar MAX_PARTICLES = 400;\r\n\tvar mousePos = {\r\n\t\tx: 400,\r\n\t\ty: 300\r\n\t};\r\n\r\n\tvar canvas = document.createElement('canvas');\r\n\tvar context = canvas.getContext('2d');\r\n\r\n\tvar launchInterval;\r\n\tvar loopInterval;\r\n\r\n\tangular.module('bizPartEngage').provider('fireworks', fireworksProvider);\r\n\r\n\tfunction fireworksProvider() {\r\n\t\tvar showingFireworks = false;\r\n\t\tfunction showFireworks(timeout) {\r\n\t\t\tif(!showingFireworks) {\r\n\t\t\t\tangular.element(document.body).append('
');\r\n\t\t\t\tangular.element(\".fireworks\").append(canvas);\r\n\t\r\n\t\t\t\tcanvas.width = SCREEN_WIDTH;\r\n\t\t\t\tcanvas.height = SCREEN_HEIGHT;\r\n\t\r\n\t\t\t\tlaunchInterval = setInterval(launch, 250);\r\n\t\t\t\tloopInterval = setInterval(loop, 1000 / 50);\r\n\t\t\t\tshowingFireworks = true;\r\n\t\t\t\tsetTimeout(hideFireworks, timeout || DEFAULT_FIREWORKS_TIMEOUT);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction hideFireworks() {\r\n\t\t\tangular.element(\".fireworks\").addClass(\"fade\");\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tclearInterval(launchInterval);\r\n\t\t\t\tclearInterval(loopInterval);\r\n\t\t\t\tangular.element(\".fireworks\").remove();\r\n\t\t\t\tshowingFireworks = false;\r\n\t\t\t}, 1500)\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tshowFireworks: showFireworks,\r\n\t\t\thideFireworks: hideFireworks,\r\n\t\t\t$get: function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tshow: showFireworks,\r\n\t\t\t\t\thide: hideFireworks\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t//FUNCTIONS\r\n\tfunction launch() {\r\n\t\tlaunchFrom(Math.random() * SCREEN_WIDTH);\r\n\t}\r\n\r\n\tfunction launchFrom(x) {\r\n\t\tif (rockets.length < 10) {\r\n\t\t\tvar rocket = new Rocket(x);\r\n\t\t\trocket.explosionColor = Math.floor(Math.random() * 360 / 10) * 10;\r\n\t\t\trocket.vel.y = Math.random() * -3 - 4;\r\n\t\t\trocket.vel.x = Math.random() * 6 - 3;\r\n\t\t\trocket.size = 8;\r\n\t\t\trocket.shrink = 0.999;\r\n\t\t\trocket.gravity = 0.01;\r\n\t\t\trockets.push(rocket);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction loop() {\r\n\t\t// update screen size\r\n\t\tif (SCREEN_WIDTH != window.innerWidth) {\r\n\t\t\tcanvas.width = SCREEN_WIDTH = window.innerWidth;\r\n\t\t}\r\n\t\tif (SCREEN_HEIGHT != window.innerHeight) {\r\n\t\t\tcanvas.height = SCREEN_HEIGHT = window.innerHeight;\r\n\t\t}\r\n\r\n\t\t// clear canvas\r\n\t\tcontext.fillStyle = \"rgba(0, 0, 0, 0.05)\";\r\n\t\tcontext.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r\n\r\n\t\tvar existingRockets = [];\r\n\r\n\t\tfor (var i = 0; i < rockets.length; i++) {\r\n\t\t\t// update and render\r\n\t\t\trockets[i].update();\r\n\t\t\trockets[i].render(context);\r\n\r\n\t\t\t// calculate distance with Pythagoras\r\n\t\t\tvar distance = Math.sqrt(Math.pow(mousePos.x - rockets[i].pos.x, 2) + Math.pow(mousePos.y - rockets[i].pos.y, 2));\r\n\r\n\t\t\t// random chance of 1% if rockets is above the middle\r\n\t\t\tvar randomChance = rockets[i].pos.y < (SCREEN_HEIGHT * 2 / 3) ? (Math.random() * 100 <= 1) : false;\r\n\r\n\t\t\t/* Explosion rules\r\n - 80% of screen\r\n - going down\r\n - close to the mouse\r\n - 1% chance of random explosion\r\n */\r\n\t\t\tif (rockets[i].pos.y < SCREEN_HEIGHT / 5 || rockets[i].vel.y >= 0 || distance < 50 || randomChance) {\r\n\t\t\t\trockets[i].explode();\r\n\t\t\t} else {\r\n\t\t\t\texistingRockets.push(rockets[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trockets = existingRockets;\r\n\r\n\t\tvar existingParticles = [];\r\n\r\n\t\tfor (var i = 0; i < particles.length; i++) {\r\n\t\t\tparticles[i].update();\r\n\r\n\t\t\t// render and save particles that can be rendered\r\n\t\t\tif (particles[i].exists()) {\r\n\t\t\t\tparticles[i].render(context);\r\n\t\t\t\texistingParticles.push(particles[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// update array with existing particles - old particles should be garbage collected\r\n\t\tparticles = existingParticles;\r\n\r\n\t\twhile (particles.length > MAX_PARTICLES) {\r\n\t\t\tparticles.shift();\r\n\t\t}\r\n\t}\r\n\r\n\t//FIREWORKS CLASSES\r\n\tfunction Particle(pos) {\r\n\t\tthis.pos = {\r\n\t\t\tx: pos ? pos.x : 0,\r\n\t\t\ty: pos ? pos.y : 0\r\n\t\t};\r\n\t\tthis.vel = {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0\r\n\t\t};\r\n\t\tthis.shrink = .97;\r\n\t\tthis.size = 2;\r\n\r\n\t\tthis.resistance = 1;\r\n\t\tthis.gravity = 0;\r\n\r\n\t\tthis.flick = false;\r\n\r\n\t\tthis.alpha = 1;\r\n\t\tthis.fade = 0;\r\n\t\tthis.color = 0;\r\n\t}\r\n\r\n\tParticle.prototype.update = function () {\r\n\t\t// apply resistance\r\n\t\tthis.vel.x *= this.resistance;\r\n\t\tthis.vel.y *= this.resistance;\r\n\r\n\t\t// gravity down\r\n\t\tthis.vel.y += this.gravity;\r\n\r\n\t\t// update position based on speed\r\n\t\tthis.pos.x += this.vel.x;\r\n\t\tthis.pos.y += this.vel.y;\r\n\r\n\t\t// shrink\r\n\t\tthis.size *= this.shrink;\r\n\r\n\t\t// fade out\r\n\t\tthis.alpha -= this.fade;\r\n\t};\r\n\r\n\tParticle.prototype.render = function (c) {\r\n\t\tif (!this.exists()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tc.save();\r\n\r\n\t\tc.globalCompositeOperation = 'lighter';\r\n\r\n\t\tvar x = this.pos.x,\r\n y = this.pos.y,\r\n r = this.size / 2;\r\n\r\n\t\tvar gradient = c.createRadialGradient(x, y, 0.1, x, y, r);\r\n\t\tgradient.addColorStop(0.1, \"rgba(255,255,255,\" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(0.8, \"hsla(\" + this.color + \", 100%, 50%, \" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(1, \"hsla(\" + this.color + \", 100%, 50%, 0.1)\");\r\n\r\n\t\tc.fillStyle = gradient;\r\n\r\n\t\tc.beginPath();\r\n\t\tc.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size : this.size, 0, Math.PI * 2, true);\r\n\t\tc.closePath();\r\n\t\tc.fill();\r\n\r\n\t\tc.restore();\r\n\t};\r\n\r\n\tParticle.prototype.exists = function () {\r\n\t\treturn this.alpha >= 0.1 && this.size >= 1;\r\n\t};\r\n\r\n\tfunction Rocket(x) {\r\n\t\tParticle.apply(this, [{\r\n\t\t\tx: x,\r\n\t\t\ty: SCREEN_HEIGHT\r\n\t\t}]);\r\n\r\n\t\tthis.explosionColor = 0;\r\n\t}\r\n\r\n\tRocket.prototype = new Particle();\r\n\tRocket.prototype.constructor = Rocket;\r\n\r\n\tRocket.prototype.explode = function () {\r\n\t\tvar count = Math.random() * 10 + 80;\r\n\r\n\t\tfor (var i = 0; i < count; i++) {\r\n\t\t\tvar particle = new Particle(this.pos);\r\n\t\t\tvar angle = Math.random() * Math.PI * 2;\r\n\r\n\t\t\t// emulate 3D effect by using cosine and put more particles in the middle\r\n\t\t\tvar speed = Math.cos(Math.random() * Math.PI / 2) * 15;\r\n\r\n\t\t\tparticle.vel.x = Math.cos(angle) * speed;\r\n\t\t\tparticle.vel.y = Math.sin(angle) * speed;\r\n\r\n\t\t\tparticle.size = 10;\r\n\r\n\t\t\tparticle.gravity = 0.2;\r\n\t\t\tparticle.resistance = 0.92;\r\n\t\t\tparticle.shrink = Math.random() * 0.05 + 0.93;\r\n\r\n\t\t\tparticle.flick = true;\r\n\t\t\tparticle.color = this.explosionColor;\r\n\r\n\t\t\tparticles.push(particle);\r\n\t\t}\r\n\t};\r\n\r\n\tRocket.prototype.render = function (c) {\r\n\t\tif (!this.exists()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tc.save();\r\n\r\n\t\tc.globalCompositeOperation = 'lighter';\r\n\r\n\t\tvar x = this.pos.x,\r\n y = this.pos.y,\r\n r = this.size / 2;\r\n\r\n\t\tvar gradient = c.createRadialGradient(x, y, 0.1, x, y, r);\r\n\t\tgradient.addColorStop(0.1, \"rgba(255, 255, 255 ,\" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(1, \"rgba(0, 0, 0, \" + this.alpha + \")\");\r\n\r\n\t\tc.fillStyle = gradient;\r\n\r\n\t\tc.beginPath();\r\n\t\tc.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size / 2 + this.size / 2 : this.size, 0, Math.PI * 2, true);\r\n\t\tc.closePath();\r\n\t\tc.fill();\r\n\r\n\t\tc.restore();\r\n\t};\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').provider('pageTitleNotification', pageTitleNotificationProvider);\r\n\r\n function pageTitleNotificationProvider() {\r\n var Vars = {\r\n OriginalTitle: document.title,\r\n Interval: null\r\n };\r\n\r\n function On(notification, intervalSpeed) {\r\n Vars.Interval = setInterval(function () {\r\n document.title = (Vars.OriginalTitle == document.title)\r\n ? notification\r\n : Vars.OriginalTitle;\r\n }, (intervalSpeed) ? intervalSpeed : 1000);\r\n }\r\n\r\n function Off() {\r\n clearInterval(Vars.Interval);\r\n document.title = Vars.OriginalTitle;\r\n }\r\n\r\n return {\r\n On: On,\r\n Off: Off,\r\n $get: function() {\r\n return {\r\n On: On,\r\n Off: Off,\r\n };\r\n }\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.blogs.list', blogsListController);\r\n angular.module('bizPartEngage').controller('modules.blogs.show', blogsShowController);\r\n angular.module('bizPartEngage').controller('modules.blogs.showbytag', blogsShowByTagController);\r\n\r\n blogsListController.$inject = [\"modules.blog.service\", \"$translate\", \"MetadataService\", \"$filter\", \"bizCoreService\", \"container\", \"bizEngageService\"];\r\n blogsShowController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$stateParams\", \"MetadataService\", \"container\",\r\n \"bizContainerSettings\", \"bizEngageService\", \"bizCoreService\", \"$filter\"];\r\n blogsShowByTagController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$stateParams\", \"MetadataService\", \"container\", \"bizEngageService\", \"$filter\"];\r\n\r\n function blogsListController(blogService, $translate, MetadataService, $filter, bizCoreService, container, bizEngageService) {\r\n var vm = this;\r\n\r\n vm.BlogItems = [];\r\n vm.GUISettings = {};\r\n\r\n vm.GetBlogEntries = GetBlogEntries;\r\n vm.GetSettings = GetSettings;\r\n\r\n vm.SortMostCommented = SortMostCommented;\r\n vm.SortMostLiked = SortMostLiked;\r\n\r\n function SortMostCommented() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsCommented = items.sort(function (a, b) { return b.Comments.length - a.Comments.length }).slice(0, 6);\r\n }\r\n\r\n function SortMostLiked() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsLiked = items.sort(function (a, b) { return b.LikeValue - a.LikeValue }).slice(0, 6);\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) { \r\n var bsMethod = blogService.GetNewestBlogEntries; \r\n if (journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 2)?.Value) {\r\n bsMethod = blogService.GetBlogEntriesByJourneyOrder;\r\n } \r\n bsMethod(0, true, ignoreLoader, undefined, -1).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.SortMostLiked();\r\n vm.SortMostCommented();\r\n\r\n //Populate Images and description\r\n HandleBlogData();\r\n }\r\n }\r\n\r\n function HandleBlogData() {\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n //vm.InitSlick(vm.BlogItems[i], 2);\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n }\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings && vm.SelectedItem) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetBlogEntries();\r\n vm.GetSettings();\r\n\r\n $translate(['BLOG.META.TITLE', 'BLOG.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['BLOG.META.TITLE'],\r\n description: translations['BLOG.META.DESCRIPTION']\r\n })\r\n });\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function blogsShowController($rootScope, blogService, $stateParams, MetadataService, container,\r\n bizContainerSettings, bizEngageService, bizCoreService, $filter) {\r\n var vm = this;\r\n vm.SelectedItem = {};\r\n vm.EventSource = \"BLOG\";\r\n bizContainerSettings.ContainerRefererType = \"BLOG\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n vm.Preview = getParameterByNameFromUrl('preview', window.location.href) === 'true';\r\n\r\n vm.EntryTitle = $stateParams.title;\r\n\r\n vm.GetOneBlogEntry = GetOneBlogEntry;\r\n vm.GetDate = GetDate;\r\n\r\n function GetDate(date) {\r\n var momentDate = moment(date);\r\n if (momentDate.isValid() && (momentDate.hours() > 0 || momentDate.minutes() > 0))\r\n return moment(date).format('dddd D MMM YYYY HH:mm');\r\n else\r\n return moment(date).format('dddd D MMM YYYY');\r\n }\r\n\r\n function GetOneBlogEntry() {\r\n vm.AllItemsFetched = true;\r\n\r\n //handle if we give it the ID instead of the urlRewrite.\r\n if (~~vm.EntryTitle > 0) { \r\n blogService.GetOneBlogEntry(~~vm.EntryTitle, vm.Preview).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n } else {\r\n blogService.GetOneBlogEntryByTitle(vm.EntryTitle).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n }\r\n\r\n function GetOneBlogEntryError(err) {\r\n if (err.status == 401 || err.status == 404 || err.status == 500)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOneBlogEntrySuccess(response) {\r\n var blogItem = response.data;\r\n vm.EntryId = blogItem.Id;\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n bizContainerSettings.ContainerRefererCreatedByUserId = blogItem.UserId;\r\n vm.ItemsFetched = true\r\n vm.GettingMoreItems = false;\r\n\r\n blogItem.DisplayDates = FormatCreatedUpdatedDateDisplay(blogItem.Created, blogItem.Updated);\r\n blogItem.Container = new container(blogItem.Container);\r\n bizEngageService.HandleContainer(blogItem.Container, blogItem.Id, bizEngageService.Types.Blog, 7, vm.EventSource); \r\n\r\n vm.SelectedItem = blogItem;\r\n\r\n HandleMetaData();\r\n GetSettings(); \r\n }\r\n }\r\n\r\n function HandleMetaData() {\r\n var imageModules = vm.SelectedItem.Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n\r\n var videoModules = vm.SelectedItem.Container.getModules(\"VIDEO\");\r\n var videoUrl = \"\";\r\n if (videoModules.length > 0) {\r\n videoUrl = videoModules[0].Content.VideoUrl;\r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.SelectedItem.Title,\r\n description: vm.SelectedItem.Description,\r\n img: imageUrl,\r\n video: videoUrl\r\n });\r\n }\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n } \r\n\r\n function Init() {\r\n vm.GetOneBlogEntry();\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function blogsShowByTagController($rootScope, blogService, $stateParams, MetadataService, container, bizEngageService, $filter) {\r\n var vm = this;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n vm.BlogPostUrlRewrite = $stateParams.blogPostUrlRewrite;\r\n\r\n vm.SelectedItem = null;\r\n vm.EntriesPerPage = 10;\r\n\r\n vm.GetTag = GetTag;\r\n vm.PopulateContainer = PopulateContainer;\r\n vm.SetSelectedItem = SetSelectedItem;\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName) {\r\n blogService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n blogService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag ? vm.SelectedTag.Id : undefined;\r\n vm.Tag = response.data || response.data[0];\r\n\r\n if (vm.Tag.length > 0) {\r\n MetadataService.setMetaTags({\r\n title: vm.Tag.Name,\r\n description: vm.Tag.Description\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n var categoryIds = [];\r\n\r\n if (typeof CustomBlogTagFilter === 'function') {\r\n tagIds = CustomBlogTagFilter($rootScope.CurrentState, tagIds);\r\n }\r\n\r\n if (typeof CustomBlogCategoryFilterFn === 'function') {\r\n categoryIds = CustomBlogCategoryFilterFn($rootScope.CurrentState);\r\n }\r\n\r\n blogService.GetNewestBlogEntries(0, true, ignoreLoader, tagIds, -1, categoryIds).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.GettingMoreItems = false;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.EntriesPerPage);\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n\r\n HandleBlogPosts();\r\n }\r\n }\r\n\r\n function SetSelectedItem(entry) {\r\n vm.BlogItems.map((e) => { e.Selected = false; });\r\n entry.Selected = true;\r\n\r\n vm.SelectedItem = entry;\r\n }\r\n\r\n function PopulateContainer(entry) {\r\n /*console.log(entry);*/\r\n if (entry.Container == null || entry.Container.Id === -1) {\r\n blogService.GetOneBlogEntry(entry.Id).then((response) => {\r\n var blogItem = response.data;\r\n entry.Container = new container(blogItem.Container);\r\n\r\n entry.Expanded = !entry.Expanded;\r\n });\r\n }\r\n else {\r\n entry.Expanded = !entry.Expanded;\r\n }\r\n\r\n vm.SetSelectedItem(entry);\r\n }\r\n\r\n function HandleBlogPosts() {\r\n //Populate Images and description\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n\r\n if (typeof CustomHandleBlogPostsFn === 'function') {\r\n vm.BlogItems = CustomHandleBlogPostsFn($rootScope.CurrentState, $stateParams, vm.BlogItems, PopulateContainer);\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetTag(GetBlogEntries);\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n $rootScope.$on('selected-tag-changed', function (event, args) {\r\n if (args.tag && args.tag.Id > -1 && vm.TagSystemName != args.tag.SystemName) {\r\n vm.TagSystemName = args.tag.SystemName;\r\n vm.TagId = args.tag.Id;\r\n\r\n GetBlogEntries();\r\n }\r\n else if (args && args.tag === null) {\r\n vm.TagSystemName = '';\r\n vm.TagId = undefined;\r\n\r\n GetBlogEntries();\r\n }\r\n })\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n //DEPRECATED\r\n angular.module('bizPartEngage').controller('modules.blog', blogController);\r\n blogController.$inject = [\"modules.blog.service\", \"$stateParams\", \"$sce\", \"container\", \"$timeout\", \"$mdDialog\",\r\n \"MetadataService\", \"$filter\", \"$translate\", \"$rootScope\", \"bizContainerSettings\", \"bizSocialShareService\",\r\n \"$state\", \"bizEngageService\", \"bizCoreService\"];\r\n function blogController(blogService, $stateParams, $sce, container, $timeout, $mdDialog,\r\n MetadataService, $filter, $translate, $rootScope, bizContainerSettings, bizSocialShareService,\r\n $state, bizEngageService, bizCoreService) {\r\n\r\n var vm = this;\r\n vm.BlogItems = [];\r\n vm.EntryId = ~~$stateParams.id;\r\n vm.EntryTitle = $stateParams.title;\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n vm.GUISettings = {};\r\n\r\n vm.GetBlogEntries = GetBlogEntries;\r\n vm.TotalLikeActions = TotalLikeActions;\r\n vm.GetLikeActionsByValue = GetLikeActionsByValue;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.ExpandItem = ExpandItem;\r\n vm.GetImageUrl = GetImageUrl;\r\n vm.GetDate = GetDate;\r\n vm.InitSlick = InitSlick;\r\n vm.GetMoreItems = GetMoreItems;\r\n vm.GetOneBlogEntry = GetOneBlogEntry;\r\n vm.GetTimeTo = GetTimeTo;\r\n vm.StartEducation = StartEducation;\r\n vm.IsUnpublished = IsUnpublished;\r\n vm.NavigateToBlogEntry = NavigateToBlogEntry;\r\n vm.RedirectToUrlRewrite = RedirectToUrlRewrite;\r\n\r\n vm.GetRelatedBlogEntries = GetRelatedBlogEntries;\r\n vm.GetTag = GetTag;\r\n\r\n bizContainerSettings.ContainerRefererType = \"BLOG\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n\r\n vm.EntriesPerPage = 10;\r\n vm.TotalEntries = vm.EntriesPerPage;\r\n\r\n vm.AddBlogComment = AddBlogComment;\r\n\r\n vm.NotVisible = NotVisible;\r\n\r\n vm.GetSettings = GetSettings;\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function NotVisible(item) {\r\n var now = moment();\r\n var expire = moment(item.ExpireDate);\r\n var publish = moment(item.PublishDate);\r\n\r\n if (publish > now || (moment(expire).isValid() && expire < now))\r\n return true;\r\n }\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName) {\r\n blogService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n blogService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function AddBlogComment(item) {\r\n if (item && $root.LoggedInUser.Id > 0)\r\n blogService.AddBlogComment(vm.NewComment, item.Id).then(AddBlogCommentSuccess);\r\n if (!item.Comments)\r\n item.Comments = [];\r\n\r\n function AddBlogCommentSuccess(response) {\r\n item.Comments.push(response.data);\r\n vm.NewComment = undefined;\r\n }\r\n }\r\n\r\n function StartEducation(education) {\r\n window.open(education.Url, '_blank');\r\n }\r\n\r\n function GetTimeTo(date) {\r\n var now = moment();\r\n var then = moment(date);\r\n var hours = moment.duration(then.diff(now)).asHours();\r\n return Math.round(hours);\r\n }\r\n\r\n function GetMoreItems() {\r\n vm.GettingMoreItems = true;\r\n vm.TotalEntries += vm.EntriesPerPage;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.TotalEntries)\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n vm.GettingMoreItems = false;\r\n }\r\n\r\n function GetDate(date) { \r\n return moment(date).format('dddd D MMM YYYY HH:mm');\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n if (!action.LikeActionPerformedByUser) {\r\n blogService.AddLikeActionToBlogEntry(item.Id, action.Action.Id).then(AddLikeActionToBlogEntrySuccess);\r\n }\r\n\r\n function AddLikeActionToBlogEntrySuccess(response) {\r\n action.LikeActionPerformedByUser = true; // changed from item\r\n action.Count++;\r\n\r\n var totalCount = 0;\r\n var totalValue = 0;\r\n\r\n for (var i = 0; i < item.LikeActions.length; i++) {\r\n totalCount += item.LikeActions[i].Count;\r\n totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n }\r\n\r\n item.AverageLikeValue = totalValue / totalCount;\r\n }\r\n }\r\n\r\n function IsUnpublished(entry) {\r\n if (entry && entry.PublishDate) {\r\n return moment(entry.PublishDate).isAfter(moment());\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GetImageUrl(url) {\r\n if (url) {\r\n if (url.startsWith('/'))\r\n url = url.substr(1, url.length - 1);\r\n\r\n return siteRootPath + url.replace('~', '');\r\n }\r\n }\r\n\r\n function NavigateToBlogEntry(entry) {\r\n return $state.go(\"base.modules.blogtitle\", { title: entry.UrlRewrite }); // || entry.Id\r\n }\r\n\r\n function InitSlick(entry, overrideSlides) {\r\n entry.SlickLoaded = false;\r\n entry.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: overrideSlides || 4,\r\n slidesToScroll: overrideSlides || 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: vm.SlickOverrideResponsiveSlides || 2,\r\n slidesToScroll: vm.SlickOverrideResponsiveSlides || 2\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n entry.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function GetLikeActionsByValue(entry, positive) {\r\n var result = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n if ((positive && entry.LikeActions[i].Action.Value > 0) || (!positive && entry.LikeActions[i].Action.Value < 0)) {\r\n result += entry.LikeActions[i].Count;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function TotalLikeActions(entry) {\r\n var count = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n count += entry.LikeActions[i].Count;\r\n }\r\n return count;\r\n }\r\n\r\n function ExpandItem(item) {\r\n vm.GetRelatedBlogEntries(item);\r\n\r\n if (item.Expanded)\r\n return;\r\n\r\n if (vm.ExpandedItem)\r\n vm.ExpandedItem.Expanded = false;\r\n\r\n vm.ExpandedItem = item;\r\n vm.ExpandedItem.Expanded = true;\r\n window.scrollTo(0, 0);\r\n\r\n bizSocialShareService.loadedObject = item;\r\n }\r\n\r\n function GetRelatedBlogEntries(item) {\r\n if (!item.RelatedEntries) {\r\n blogService.GetRelatedBlogPosts(item.Id).then(GetRelatedBlogPostsSuccess);\r\n }\r\n\r\n function GetRelatedBlogPostsSuccess(response) {\r\n item.RelatedEntries = response.data;\r\n\r\n //Populate Images...\r\n for (var i = 0; i < item.RelatedEntries.length; i++) {\r\n if (item.RelatedEntries[i].ContainerId > 0) {\r\n item.RelatedEntries[i].Container = new container(item.RelatedEntries[i].Container);\r\n var modules = item.RelatedEntries[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n item.RelatedEntries[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = item.RelatedEntries[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (item.RelatedEntries[i].ImageUrl)\r\n item.RelatedEntries[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n item.RelatedEntries[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.InitSlick(item);\r\n }\r\n }\r\n\r\n\r\n function GetOneBlogEntry(entryId, entryTitle) {\r\n vm.AllItemsFetched = true;\r\n\r\n if (entryId > 0) {\r\n blogService.GetOneBlogEntry(entryId, false).then(GetOneBlogEntrySuccess);\r\n } else if (entryTitle) {\r\n blogService.GetOneBlogEntryByTitle(entryTitle, false).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n }\r\n\r\n function GetOneBlogEntryError(err) {\r\n if (err.status == 401 || err.status == 404 || err.status == 500)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOneBlogEntrySuccess(response) {\r\n var blogItem = response.data;\r\n vm.EntryId = blogItem.Id;\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n bizContainerSettings.ContainerRefererCreatedByUserId = blogItem.UserId;\r\n vm.BlogItems.push(blogItem);\r\n vm.ItemsFetched = true\r\n vm.GettingMoreItems = false;\r\n\r\n blogItem.Container = new container(blogItem.Container);\r\n bizEngageService.HandleContainer(blogItem.Container, blogItem.Id, bizEngageService.Types.Blog);\r\n\r\n vm.SelectedItem = blogItem;\r\n vm.ExpandItem(blogItem);\r\n\r\n var imageModules = vm.BlogItems[0].Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n\r\n var videoModules = vm.BlogItems[0].Container.getModules(\"VIDEO\");\r\n var videoUrl = \"\";\r\n if (videoModules.length > 0) {\r\n videoUrl = videoModules[0].Content.VideoUrl;\r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: blogItem.Title,\r\n description: blogItem.Description,\r\n img: imageUrl,\r\n video: videoUrl\r\n });\r\n\r\n vm.GetBlogEntries(true);\r\n\r\n vm.GetSettings();\r\n }\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) {\r\n if (vm.TagSystemName) {\r\n GetTag(GetBlogEntriesLocal);\r\n } else {\r\n GetBlogEntriesLocal(ignoreLoader);\r\n }\r\n\r\n vm.SortMostCommented = SortMostCommented;\r\n vm.SortMostLiked = SortMostLiked;\r\n\r\n function SortMostCommented() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsCommented = items.sort(function (a, b) { return b.Comments.length - a.Comments.length }).slice(0, 6);\r\n }\r\n\r\n function SortMostLiked() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsLiked = items.sort(function (a, b) { return b.LikeValue - a.LikeValue }).slice(0, 6);\r\n }\r\n\r\n function GetBlogEntriesLocal(ignoreLoader) {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n blogService.GetNewestBlogEntries(0, true, ignoreLoader, tagIds, -1).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.SortMostLiked();\r\n vm.SortMostCommented();\r\n vm.GettingMoreItems = false;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.EntriesPerPage);\r\n console.log(vm.BlogItemsToShow);\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n\r\n //Populate Images and description\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n vm.InitSlick(vm.BlogItems[i], 2);\r\n }\r\n if (!vm.ExpandedItem && (vm.EntryId > 0 || vm.EntryTitle)) {\r\n var entry;\r\n if (vm.EntryId > 0) {\r\n entry = vm.BlogItems.GetItemByValue('Id', vm.EntryId);\r\n } else if (vm.EntryTitle) {\r\n entry = vm.BlogItems.GetItemByValue('UrlRewrite', vm.EntryTitle);\r\n }\r\n if (!entry)\r\n vm.GetOneBlogEntry(vm.EntryId, vm.EntryTitle);\r\n else {\r\n vm.EntryId = entry.Id;\r\n vm.SelectedItem = entry;\r\n vm.ExpandItem(entry);\r\n }\r\n }\r\n else if (vm.TagId > 0 || vm.TagSystemName) {\r\n GetTag();\r\n }\r\n else if (!vm.SelectedItem) {\r\n vm.SelectedItem = vm.BlogItems[0];\r\n }\r\n }\r\n }\r\n }\r\n\r\n function RedirectToUrlRewrite(id) {\r\n blogService.GetEntryUrlRewriteById(id).then(GetEntryUrlRewriteByIdCallback);\r\n\r\n function GetEntryUrlRewriteByIdCallback(response) {\r\n var urlRewrite = BizPartCoreHelpers.getResponseValue(response);\r\n $state.go(\"base.modules.blogtitle\", { title: urlRewrite })\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n var id = ~~$stateParams.id;\r\n if (id > 0) {\r\n\r\n vm.RedirectToUrlRewrite(id);\r\n return;\r\n }\r\n\r\n if (vm.EntryTitle) {\r\n GetOneBlogEntry(vm.EntryId, vm.EntryTitle);\r\n }\r\n else {\r\n vm.GetBlogEntries();\r\n }\r\n\r\n $translate(['BLOG.META.TITLE', 'BLOG.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['BLOG.META.TITLE'],\r\n description: translations['BLOG.META.DESCRIPTION']\r\n })\r\n });\r\n });\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizModuleBlogList', bizModuleBlogListDirective);\r\n\r\n bizModuleBlogListDirective.$inject = [];\r\n\r\n function bizModuleBlogListDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=\"\r\n },\r\n templateUrl: function(element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return siteRootPath + \"FrontEnd/Modules/Blog/Views/blog-list.html\"\r\n }\r\n },\r\n controller: bizModuleBlogListController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n };\r\n\r\n bizModuleBlogListController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$timeout\", \"$sce\", \"core.services.favorite\"];\r\n\r\n function bizModuleBlogListController($rootScope, blogService, $timeout, $sce, favoritesService) {\r\n var vm = this;\r\n vm.BlogItems = [];\r\n\r\n vm.Init = Init;\r\n\r\n function InitObjectMiniList() {\r\n\r\n console.log(\"bloglist settings\", vm.settings);\r\n vm.BlogItemsForMiniObjectList = [];\r\n\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n var blogItem = vm.BlogItems[i];\r\n\r\n var miniObject = {\r\n Id: blogItem.Id,\r\n Name: blogItem.Title,\r\n Description: blogItem.Description,\r\n ImageUrl: blogItem.ImageUrl,\r\n EngageObjects: [],\r\n Url: { state: 'base.modules.blogtitle', params: { title: blogItem.UrlRewrite } }\r\n };\r\n\r\n vm.BlogItemsForMiniObjectList.push(miniObject);\r\n }\r\n }\r\n\r\n function Init() {\r\n var ids = [];\r\n\r\n if(!vm.settings) {\r\n console.warn('No settings provided...');\r\n return;\r\n }\r\n \r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n\r\n if (vm.settings.Filter == 'newest') {\r\n const categoryIds = vm.settings.CategoryIds !== undefined ? JSON.parse(vm.settings.CategoryIds) ?? null : null;\r\n const tagIds = vm.settings.TagIds !== undefined ? JSON.parse(vm.settings.TagIds) ?? null : null;\r\n blogService.GetNewestBlogEntries(0, true, true, tagIds, vm.settings.Limit + 1, categoryIds).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n blogService.GetBlogEntriesByJourneyOrder(0, true, true, $rootScope.FavoriteTagIds, vm.settings.Limit + 1).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'related') {\r\n blogService.GetRelatedBlogPosts(vm.settings.RelatedId).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'mostcommented') {\r\n blogService.GetMostCommentedPosts(vm.settings.Limit).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'mostliked') {\r\n blogService.GetMostLikedPosts(vm.settings.Limit).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'featured') {\r\n\r\n for(var i = 0; i < vm.settings.Limit; i++) {\r\n ids.push(vm.settings.SelectedBlogs[i].Id);\r\n }\r\n \r\n blogService.GetBlogPosts(ids).then(GetBlogPostsSuccess);\r\n }\r\n\r\n function GetBlogPostsSuccess(response) {\r\n if(vm.settings.Filter == 'featured') {\r\n vm.BlogItems = [];\r\n\r\n for(var i = 0; i < ids.length; i++) {\r\n vm.BlogItems.push(response.data.GetItemByValue('Id', ids[i]));\r\n }\r\n }\r\n else {\r\n vm.BlogItems = response.data;\r\n }\r\n\r\n HandleItems();\r\n }\r\n\r\n function HandleItems() {\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n\r\n InitObjectMiniList();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.blog.service', blogService);\r\n\r\n blogService.$inject = [\"$http\"];\r\n\r\n function blogService($http) {\r\n \tthis.GetBlogEntries = function () {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPostsForUser\");\r\n \t};\r\n\r\n\t\tthis.GetRelatedBlogPosts = function (relatedToId) {\r\n\t\t\treturn $http.get(siteRootPath + \"api/BlogUser/GetRelatedBlogPosts\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\trelatedToId: relatedToId\r\n\t\t\t\t},\r\n\t\t\t\tignoreLoadingBar: true\r\n\t\t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: true\r\n \t\t\t}\r\n \t\t});\r\n };\r\n\r\n this.GetEntryUrlRewriteById = function (id) {\r\n return $http.get(siteRootPath + \"api/BlogUser/GetEntryUrlRewriteById\", {\r\n params: {\r\n id: id\r\n }\r\n });\r\n }\r\n\r\n \tthis.GetOneBlogEntry = function (id, preview) {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPost\", {\r\n \t\t\tparams: {\r\n id: id,\r\n preview: preview || false\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.GetOneBlogEntryByTitle = function (title) {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPostByTitle\", {\r\n \t\t\tparams: {\r\n \t\t\t\ttitle: title\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.AddLikeActionToBlogEntry = function (entryId, actionId) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/BlogUser/AddLikeActionToBlogEntry', { objectId: entryId, actionId: actionId }, { ignoreLoadingBar: true });\r\n \t}\r\n\r\n \tthis.AddBlogComment = function (comment, entryId, parentId) {\r\n \t return $http.post(siteRootPath + 'api/BlogUser/AddBlogComment', {Comment: comment, ObjectId: entryId});\r\n \t}\r\n\r\n \t//this.DeleteBlogComment = function (commentId) {\r\n \t// return $http.get(siteRootPath + 'api/BlogAdmin/DeleteBlogComment', {\r\n \t// params: {\r\n \t// commentId: commentId\r\n \t// }\r\n \t// });\r\n \t//};\r\n\r\n \tthis.GetRelatedEntries = function (entryId, pageSize, pageIndex, overrideCache) {\r\n \t\treturn $http.post(servicePath + 'GetBlogPostsByRelatedEntryLoggedInUser', {\r\n \t\t\tentryId: entryId,\r\n \t\t\tpageSize: pageSize,\r\n \t\t\tpageIndex: pageIndex,\r\n \t\t\toverrideCache: overrideCache\r\n \t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: true\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n \tthis.GetEntriesByTags = function (tagIds, pageIndex, pageSize, overrideCache, ignoreLoader) {\r\n \t\treturn $http.post(servicePath + 'GetBlogPostsByTagsForLoggedInUser', {\r\n \t\t\ttagIds: tagIds,\r\n \t\t\tpageIndex: pageIndex,\r\n \t\t\tpageSize: pageSize,\r\n \t\t\toverrideCache: overrideCache\r\n \t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: ignoreLoader || false\r\n \t\t\t}\r\n \t\t});\r\n }\r\n\r\n const GetBlogEntriesByOrder = (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, order, categoryIds) => {\r\n var parameters = {\r\n tagIds: tagIds,\r\n order: order,\r\n pageIndex: pageIndex,\r\n overrideCache: overrideCache,\r\n updateLatest: true,\r\n pageSize: pageSize,\r\n categoryIds: categoryIds\r\n }\r\n return $http.post('api/BlogUser/GetBlogPostsInOrderForLoggedInUser', parameters, {\r\n headers: {\r\n IgnoreLoader: ignoreLoader || false\r\n }\r\n });\r\n }\r\n\r\n \tthis.GetNewestBlogEntries = function (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, categoryIds) {\r\n return GetBlogEntriesByOrder(pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, 0, categoryIds)\r\n }\r\n\r\n this.GetBlogEntriesByJourneyOrder = function (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize) {\r\n return GetBlogEntriesByOrder(pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, 5)\r\n } \r\n\r\n \tthis.GetTag = function (id) {\r\n \t\treturn $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n \t}\r\n\r\n \tthis.GetTagBySystemName = function (systemName) {\r\n \t\treturn $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n\t\t};\r\n\t\t\r\n\t\tthis.GetBlogPosts = function(ids) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n \t\t\tSpecificIds: ids\r\n \t\t});\r\n\t\t};\r\n\r\n\t\tthis.GetMostCommentedPosts = function(limit) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n\t\t\t\tOrder: 4,\r\n\t\t\t\tPageSize: limit,\r\n\t\t\t\tPageIndex: 0,\r\n\t\t\t\tUseComments: true\r\n \t\t});\r\n\t\t};\r\n\r\n\t\tthis.GetMostLikedPosts = function(limit) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n\t\t\t\tOrder: 2,\r\n\t\t\t\tPageSize: limit,\r\n\t\t\t\tPageIndex: 0,\r\n \t\t});\r\n\t\t};\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').controller('modules.cms.page', pageController);\r\n pageController.$inject = [\"$rootScope\", \"modules.cms.service\", \"$stateParams\", \"container\", \"bizContainerService\", \"bizContainerUrls\", \"bizContainerSettings\", \"MetadataService\", \"$filter\"];\r\n\r\n function pageController($rootScope, cmsService, $stateParams, container, bizContainerService, bizContainerUrls, bizContainerSettings, MetadataService, $filter) {\r\n var vm = this;\r\n vm.PageIdentifier = $stateParams.id;\r\n\r\n vm.GetCMSPage = GetCMSPage;\r\n\r\n bizContainerSettings.ContainerRefererType = \"CMS\";\r\n\r\n vm.uiOnParamsChanged = function (changedParams, transition) {\r\n \t$rootScope.$broadcast('DYNAMIC_PARAMS_CHANGED', changedParams);\r\n }\r\n\r\n function GetCMSPage() {\r\n \tvm.GettingCMSPage = true;\r\n\r\n cmsService.GetCMSPage(vm.PageIdentifier).then(GetCmsPageSuccess, GetCmsPageReject);\r\n\r\n function GetCmsPageReject(response) {\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetCmsPageSuccess(response) {\r\n \t\tvm.Page = response.data;\r\n \t\tvm.Page.Container = new container(vm.Page.Container);\r\n \r\n \t\t$rootScope.DisableMainMenuSticky = !$rootScope.menuSettings.IsSticky;\r\n \t\tvm.GettingCMSPage = false;\r\n\r\n \t\tif (vm.Page.Container.hasStickyNavigation())\r\n \t\t\t$rootScope.DisableMainMenuSticky = true;\r\n\r\n var imageModules = vm.Page.Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n \r\n MetadataService.setMetaTags({\r\n title: vm.Page.Title,\r\n description: vm.Page.Description,\r\n keywords: vm.Page.Keywords,\r\n img: imageUrl\r\n });\r\n }\r\n }\r\n\r\n vm.$onInit = function() {\r\n \tvm.GetCMSPage();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.cms.service', cmsService);\r\n\r\n\tcmsService.$inject = [\"$http\"];\r\n\r\n\tfunction cmsService($http) {\r\n var basePath = siteRootPath + \"api/cmsuser/\";\r\n\r\n this.GetCMSPage = function (urlRewrite) {\r\n return $http.get(basePath + \"GetCMSPage\", {\r\n \tparams: {\r\n \t\turlRewrite: urlRewrite\r\n \t},\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n\r\n this.HasCMSPage = function (urlRewrite) {\r\n return $http.get(basePath + \"HasCMSPage\", {\r\n params: {\r\n urlRewrite: urlRewrite\r\n },\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n\r\n this.GetCMSPageById = function (id) {\r\n return $http.get(basePath + \"GetCMSPageById\", {\r\n params: {\r\n id: id\r\n },\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.campaign', campaignController);\r\n\tangular.module('bizPartEngage').controller('modules.campaign.page', campaignPageController);\r\n\r\n\tcampaignController.$inject = [\"BizCampaignService\", \"$stateParams\", \"$rootScope\", \"$state\",\r\n\t\t\"bizContainerSettings\", \"bizCoreService\"];\r\n\tcampaignPageController.$inject = [\"BizCampaignService\", \"$stateParams\", \"$rootScope\", \"$state\", \"$window\",\r\n\t\t\"bizContainerService\", \"container\", \"$scope\"];\r\n\r\n\tfunction campaignController(campaignService, $stateParams, $rootScope, $state, bizContainerSettings, bizCoreService) {\r\n var vm = this;\r\n\r\n vm.GetCampaign = GetCampaign;\r\n vm.GoToCampaignStart = GoToCampaignStart;\r\n\r\n function GetCampaign() {\r\n \tcampaignService.GettingCampaign = campaignService.GetCampaign($stateParams.urlRewrite);\r\n \tcampaignService.GettingCampaign.then(GetCampaignCallback);\r\n\r\n \tfunction GetCampaignCallback(response) {\r\n \t\tvm.Campaign = response.data;\r\n \t\tcampaignService.Campaign = vm.Campaign;\r\n\r\n \t\tbizContainerSettings.ContainerRefererType = \"CAMPAIGN\";\r\n \t\tbizContainerSettings.ContainerRefererObjectId = vm.Campaign.Id;\r\n\r\n \t\tif ($stateParams.referer)\r\n \t\t\tbizCoreService.LogGenericObjectVisit(\"CAMPAIGN\", vm.Campaign.Id, $stateParams.referer);\r\n\r\n \t\tif (!$stateParams.pageUrlRewrite)\r\n \t\t\tvm.GoToCampaignStart();\r\n \t}\r\n }\r\n\r\n function GoToCampaignStart() {\r\n \tvar startPage = vm.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 1);\r\n \tif (!startPage || $rootScope.LoggedInUser.Id > 0) {\r\n \t\tstartPage = vm.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 2);\r\n \t\tif (!startPage) {\r\n \t\t\tfor (var i = 0; i < vm.Campaign.CampaignPages.length; i++) {\r\n \t\t\t\tif (vm.Campaign.CampaignPages[i].CampaignPageTypeId > 1) {\r\n \t\t\t\t\tstartPage = vm.Campaign.CampaignPages[i];\r\n \t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n \t\r\n \tif (startPage)\r\n \t\t$state.go($rootScope.CurrentState.name + \".page\", { pageUrlRewrite: startPage.UrlRewrite });\r\n \telse\r\n \t\tconsole.warn(\"No access to campaign pages\");\r\n }\r\n\r\n $rootScope.Initialized.then(vm.GetCampaign);\r\n }\r\n\r\n\tfunction campaignPageController(campaignService, $stateParams, $rootScope, $state, $window, bizContainerService, container, $scope) {\r\n \tvar vm = this;\r\n\r\n \tvm.GoToStart = GoToStart;\r\n \tvm.GetCampaignPage = GetCampaignPage;\r\n \tcampaignService.ChangePage = ChangePage;\r\n\r\n \tfunction ChangePage(pageId) {\r\n \t\tif ($rootScope.LoggedInUser.Id > 0) {\r\n \t\t\tvar page = campaignService.Campaign.CampaignPages.GetItemByValue('Id', pageId);\r\n \t\t\tif (page)\r\n \t\t\t\t$state.go($rootScope.CurrentState.name, { pageUrlRewrite: page.UrlRewrite });\r\n \t\t}\r\n \t\telse\r\n \t\t\t$window.location.reload();\r\n \t}\r\n\r\n \tfunction GoToStart() {\r\n \t\tvar startPage = campaignService.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 1);\r\n \t\tif (!startPage || $rootScope.LoggedInUser.Id > 0) {\r\n \t\t\tstartPage = campaignService.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 2);\r\n \t\t\tif (!startPage) {\r\n \t\t\t\tfor (var i = 0; i < campaignService.Campaign.CampaignPages.length; i++) {\r\n \t\t\t\t\tif (campaignService.Campaign.CampaignPages[i].CampaignPageTypeId > 1) {\r\n \t\t\t\t\t\tstartPage = campaignService.Campaign.CampaignPages[i];\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (startPage)\r\n \t\t\t$state.go($rootScope.CurrentState.name, { pageUrlRewrite: startPage.UrlRewrite });\r\n \t}\r\n\r\n \tfunction GetCampaignPage() {\r\n \t\tvm.GettingCampaignPage = true;\r\n\r\n \t\tcampaignService.GettingCampaign.then(PerformGetCampaignPage);\r\n\r\n \t\tfunction PerformGetCampaignPage() {\r\n \t\t\tif (!campaignService.Campaign)\r\n \t\t\t\treturn;\r\n\r\n \t\t\tvar page = campaignService.Campaign.CampaignPages.GetItemByValue(\"UrlRewrite\", $stateParams.pageUrlRewrite);\r\n \t\t\tif (!page) {\r\n \t\t\t\tvm.GoToStart();\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\tcampaignService.GetCampaignPage(page.Id).then(GetCampaignPageCallback);\r\n\r\n \t\t\tfunction GetCampaignPageCallback(response) {\r\n \t\t\t\tvar page = response.data;\r\n \t\t\t\tif (page && page.Container) {\r\n \t\t\t\t\tpage.Container = new container(page.Container);\r\n \t\t\t\t\tvm.CampaignPage = page;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tvm.GettingCampaignPage = false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \tvar destroyOnModuleFinish = $rootScope.$on('MODULE_FINISH', function (e, module) {\r\n \t\tif (module.UseSettings) {\r\n \t\t\tbizContainerService.SetContainerModuleInstanceFinished(module.Id).then(ModuleInstanceFinishedSuccess);\r\n \t\t}\r\n \t});\r\n\r\n \t$scope.$on(\"$destroy\", destroyOnModuleFinish);\r\n\r\n \t$rootScope.Initialized.then(vm.GetCampaignPage);\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('BizCampaignService', campaignService);\r\n\r\n\tcampaignService.$inject = [\"$http\"];\r\n\r\n function campaignService($http) {\r\n \tvar controllerPath = siteRootPath + \"api/CampaignUser/\";\r\n\r\n \treturn {\r\n \t\tGetCampaign: GetCampaign,\r\n \t\tGetCampaignPage: GetCampaignPage\r\n \t};\r\n\r\n \tfunction GetCampaign(urlRewrite) {\r\n \t\treturn $http.get(controllerPath + \"GetCampaign\", {\r\n \t\t\tparams: {\r\n \t\t\t\turlRewrite: urlRewrite\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetCampaignPage(pageId) {\r\n \t\treturn $http.get(controllerPath + \"GetCampaignPage\", {\r\n \t\t\tparams: {\r\n \t\t\t\tid: pageId\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.certifications', indexController);\r\n\r\n indexController.$inject = [\"$stateParams\", \"$state\", \"modules.certifications.service\", \"$rootScope\"];\r\n\r\n function indexController($stateParams, $state, certService, $rootScope) {\r\n var vm = this;\r\n\r\n vm.AuthToken = $rootScope.AuthToken;\r\n vm.CertList = [];\r\n vm.NoImageUrl = 'Images/Common/no_img.svg';\r\n\r\n vm.Init = Init;\r\n vm.GetCertifications = GetCertifications; \r\n\r\n function GetCertifications() {\r\n certService.GetCertificationsForUser().then(GetCertificationsForUserSuccess);\r\n\r\n function GetCertificationsForUserSuccess(response) { \r\n vm.CertList = BizPartCoreHelpers.getResponseValue(response, []);\r\n for (var i = 0; i < vm.CertList.length; i++) { \r\n \r\n var totalXp = 0;\r\n for (var j = 0; j < vm.CertList[i].Items.length; j++) { \r\n totalXp = totalXp + vm.CertList[i].Items[j].Item.ExperienceGive; \r\n }\r\n vm.CertList[i].ExperienceGive = totalXp;\r\n } \r\n }\r\n }\r\n\r\n function Init() { \r\n vm.GetCertifications();\r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.certifications.service', certificationsService);\r\n\r\n certificationsService.$inject = [\"$http\"];\r\n\r\n function certificationsService($http) {\r\n\r\n var servicePath = siteRootPath + 'api/certificationsuser/';\r\n\r\n this.GetCertificationsForUser = function () {\r\n return $http.get(servicePath + 'GetCertificatesForUser');\r\n }; \r\n }\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.dictionary', indexController);\r\n\r\n indexController.$inject = [\"modules.dictionary.service\", \"$stateParams\"];\r\n\r\n function indexController(dictionaryService, $stateParams) {\r\n\t\tvar vm = this;\r\n vm.SelectedItemId = ~~$stateParams.id;\r\n\r\n\t\tvm.Dictionary = [];\r\n\t\tvm.LettersWithWords = [];\r\n vm.GetDictionary = GetDictionary;\r\n\r\n\t\tfunction GetDictionary() {\r\n\t\t\tdictionaryService.GetAllEntries(-1).then(GetDictionarySuccess);\r\n\r\n\t\t\tfunction GetDictionarySuccess(response) {\r\n\t\t\t\tvar dictionary = (response.data.d || response.data);\r\n\r\n\t\t\t\tfor (var i = 0; i < dictionary.length; i++) {\r\n\t\t\t\t\tvar fl = dictionary[i].Word.substring(0, 1);\r\n\t\t\t\t\tdictionary[i].FirstLetter = fl;\r\n\t\t\t\t\tif (vm.LettersWithWords.indexOf(fl) < 1) {\r\n\t\t\t\t\t\tvm.LettersWithWords.push(fl);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.Dictionary = dictionary;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.GetDictionary();\r\n\t\t}\r\n\t}\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.dictionary.service', dictionaryService);\r\n\r\n\tdictionaryService.$inject = [\"$http\"];\r\n\r\n\tfunction dictionaryService($http) {\r\n\t\tthis.GetAllEntries = function (id) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/dictionary/GetAllEntries?' + $.param({ cultureId: id }));\r\n\t\t};\r\n\t\tthis.GetAllEntriesWCategories = function (categories = '') {\r\n\t\t\treturn $http.get(siteRootPath + 'api/dictionary/GetAllEntriesWCategories?' + $.param({ categoriesCommaSep: categories }));\r\n\t\t};\r\n\r\n\t}\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.educations', indexController);\r\n angular.module('bizPartEngage').controller('modules.educations.html5', html5Controller);\r\n\r\n indexController.$inject = [\"modules.education.service\", \"$state\", \"$stateParams\", \"container\", \"$filter\", \"$translate\", \"MetadataService\", \"bizEngageService\"];\r\n html5Controller.$inject = [\"$rootScope\", \"$scope\", \"$q\", \"modules.education.service\", \"BizOnlineEducationReplyService\", \"$stateParams\", \"container\", \r\n \"bizContainerSettings\", \"$translate\", \"MetadataService\", \"bizEngageService\", \"core.engage.service\"];\r\n\r\n function indexController(educationService, $state, $stateParams, container, $filter, $translate, MetadataService, bizEngageService) {\r\n var vm = this;\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n\r\n function GetTag() {\r\n if (vm.TagSystemName) {\r\n educationService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else if (vm.TagId) {\r\n educationService.GetTag(vm.TagId).then(GetTagSuccess);\r\n } \r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['EDUCATION.META.TITLE', 'EDUCATION.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['EDUCATION.META.TITLE'],\r\n description: translations['EDUCATION.META.DESCRIPTION']\r\n })\r\n });\r\n });\r\n\r\n vm.$onInit = function () {\r\n GetTag();\r\n bizEngageService.GetMiniJourneySetting('HTML5').then(function (response) { \r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n }\r\n\r\n function html5Controller($rootScope, $scope, $q, educationService, replyService, $stateParams, container, \r\n bizContainerSettings, $translate, MetadataService, bizEngageService, engageService) {\r\n var vm = this;\r\n vm.OnlineEducation = undefined;\r\n vm.ShowOnlineEducation = false;\r\n vm.ModulesRequiringFinish = [];\r\n vm.OnlineEducationId = ~~$stateParams.id;\r\n vm.OnlineEducationFinished = false;\r\n\r\n bizContainerSettings.ContainerRefererType = \"HTML5\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.OnlineEducationId; \r\n\r\n vm.GetOnlineEducation = GetOnlineEducation;\r\n\r\n function GetOnlineEducation() {\r\n if (vm.OnlineEducationId > 0) {\r\n $q.all([\r\n educationService.GetHTML5Education(vm.OnlineEducationId),\r\n educationService.GetHTML5EducationReply(vm.OnlineEducationId)\r\n ]).then(GetOnlineEducationSuccess, GetOnlineEducationError);\r\n }\r\n else {\r\n vm.OnlineEducationId = $stateParams.id;\r\n\r\n educationService.GetHTML5EducationByUrlRewrite(vm.OnlineEducationId).then(function(response) {\r\n vm.OnlineEducation = response.data; \r\n bizContainerSettings.ContainerRefererCreatedByUserId = vm.OnlineEducation.CreatedByUserId;\r\n\r\n vm.OnlineEducation.Container = new container(vm.OnlineEducation.Container);\r\n vm.OnlineEducation.Container.setModuleFinishHandler(ModuleFinishHandler);\r\n\r\n var modulesWithSettings = vm.OnlineEducation.Container.getModulesWithSettings();\r\n\r\n bizEngageService.HandleContainer(vm.OnlineEducation.Container, vm.OnlineEducation.Id, bizEngageService.Types.HTML5);\r\n \r\n educationService.GetHTML5EducationReply(vm.OnlineEducation.Id).then(function(reply) {\r\n replyService.OnlineEducationReply = reply.data;\r\n replyService.UserStatus = vm.OnlineEducation.UserStatus;\r\n\r\n if(replyService.UserStatus) {\r\n for (var i = 0; i < replyService.UserStatus.length; i++) {\r\n if (replyService.UserStatus[i].IsFinished === true) {\r\n var mod = modulesWithSettings.GetItemByValue('Id', replyService.UserStatus[i].ContainerModuleInstanceId);\r\n if (mod) {\r\n mod.IsFinished = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.ShowOnlineEducation = true;\r\n });\r\n });\r\n }\r\n\r\n function GetOnlineEducationError(err) {\r\n if(err.status == 401)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOnlineEducationSuccess(response) {\r\n vm.OnlineEducation = response[0].data; \r\n bizContainerSettings.ContainerRefererCreatedByUserId = vm.OnlineEducation.CreatedByUserId;\r\n\r\n replyService.OnlineEducationReply = response[1].data;\r\n replyService.UserStatus = vm.OnlineEducation.UserStatus;\r\n\r\n vm.OnlineEducation.Container = new container(vm.OnlineEducation.Container);\r\n vm.OnlineEducation.Container.setModuleFinishHandler(ModuleFinishHandler);\r\n\r\n var modulesWithSettings = vm.OnlineEducation.Container.getModulesWithSettings();\r\n for (var i = 0; i < replyService.UserStatus.length; i++) {\r\n if (replyService.UserStatus[i].IsFinished === true) {\r\n var mod = modulesWithSettings.GetItemByValue('Id', replyService.UserStatus[i].ContainerModuleInstanceId);\r\n if (mod) {\r\n mod.IsFinished = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n vm.ShowOnlineEducation = true;\r\n\r\n bizEngageService.HandleContainer(vm.OnlineEducation.Container, vm.OnlineEducation.Id, bizEngageService.Types.HTML5);\r\n }\r\n }\r\n\r\n function ModuleFinishHandler(module) {\r\n educationService.HTML5ModuleInstanceFinished(replyService.OnlineEducationReply.Id, module.Id).then(ModuleInstanceFinishedSuccess);\r\n\r\n function ModuleInstanceFinishedSuccess(response) {\r\n \t$rootScope.$broadcast('QUESTION_MODULE_RESULT', { module: module, result: response.data });\r\n \tvar modules = vm.OnlineEducation.Container.getModulesWithSettings();\r\n \tvar unfinished = modules.GetItemsByValue(\"IsFinished\", false);\r\n if (unfinished.length == 0 && !vm.IsSubmitted) {\r\n educationService.SubmitHTML5Education(replyService.OnlineEducationReply.Id).then(SubmitEducationSuccess);\r\n vm.IsSubmitted = true;//prevent double submission when last module is within a segment, because both the last module and segment will trigger finish events\r\n }\r\n\r\n function SubmitEducationSuccess(response) {\r\n $rootScope.$broadcast('EDUCATION_FINISHED', response.data);\r\n if (response.data.Success) {\r\n $rootScope.$broadcast('EDUCATION_FINISHED_SUCCESS', response.data);\r\n vm.OnlineEducationFinished = true;\r\n //$timeout(vm.ShowForm, 2500);\r\n }\r\n else {\r\n $rootScope.$broadcast('EDUCATION_FINISHED_FAILED', response.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = function() {\r\n vm.GetOnlineEducation();\r\n\r\n bizEngageService.GetMiniJourneySetting('HTML5').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['EDUCATION.META.TITLE', 'EDUCATION.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['EDUCATION.META.TITLE'],\r\n description: translations['EDUCATION.META.DESCRIPTION']\r\n })\r\n });\r\n }); \r\n }\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.educationsList', bizEducationsListController);\r\n angular.module('bizPartEngage').controller('modules.educationsListModule', bizEducationsListModuleController);\r\n angular.module('bizPartEngage').directive('bizModuleEducationList', bizModuleEducationListDirective);\r\n angular.module('bizPartEngage').directive('bizEducationsList', bizEducationsListDirective);\r\n \r\n bizEducationsListDirective.$inject = [\"bizCore\"];\r\n bizModuleEducationListDirective.$inject = [\"bizCore\"];\r\n bizEducationsListController.$inject = [\"modules.education.service\", \"$state\", \"$stateParams\", \"container\", \"$filter\", \"$translate\", \"MetadataService\"];\r\n\r\n bizEducationsListModuleController.$inject = [\"$rootScope\", \"modules.education.service\", \"$translate\"];\r\n\r\n function bizEducationsListDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.educationlist', 'FrontEnd/Modules/Education/Views/educationslistdirective.html'),\r\n controller: bizCoreProvider.getController('base.modules.educationsList', 'modules.educationsList'),\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n function bizModuleEducationListDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return bizCoreProvider.getView('core.directives.educationlist', 'FrontEnd/Modules/Education/Views/education-list.html');\r\n }\r\n },\r\n controller: bizCoreProvider.getController('base.modules.educationsListModule', 'modules.educationsListModule'),\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n function bizEducationsListController(educationService, $state, $stateParams, container, $filter, $translate, MetadataService) {\r\n var vm = this;\r\n\r\n vm.DataLoaded = false;\r\n\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n\r\n vm.useJourneyOrder = journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 1)?.Value || false;\r\n\r\n \tvm.SCORMUserStatus = {\r\n \t\tNotStarted: 0,\r\n \t\tStarted: 1,\r\n \t\tPassed: 2,\r\n \t\tFailed: 3\r\n \t};\r\n\r\n var skipLoadContainer = true;\r\n\r\n\t\t//todo merge, same list?\r\n vm.HTML5Educations = [];\r\n vm.SCORMEducations = []; \r\n\r\n vm.GetAllEducationTypes = GetAllEducationTypes;\r\n vm.GetHTML5EducationsForLoggedInUser = GetHTML5EducationsForLoggedInUser;\r\n vm.GetSCORMEducations = GetSCORMEducations;\r\n vm.OpenHTML5Education = OpenHTML5Education;\r\n vm.HandleCategoryForEduction = HandleCategoryForEduction;\r\n\r\n vm.TagFilter = TagFilter;\r\n vm.GetTag = GetTag;\r\n\r\n function GetHTML5EducationsForLoggedInUser() {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n\r\n if (tagIds !== undefined) {\r\n educationService.GetHTML5EducationsForLoggedInUserByTagId(tagIds, vm.useJourneyOrder).then(GetHTML5EducationsForLoggedInUserSuccess);\r\n }\r\n else {\r\n educationService.GetHTML5EducationsForLoggedInUser(skipLoadContainer, vm.useJourneyOrder).then(GetHTML5EducationsForLoggedInUserSuccess);\r\n }\r\n \r\n\r\n function GetHTML5EducationsForLoggedInUserSuccess(response) {\r\n var list = response.data;\r\n vm.Tags = [];\r\n vm.Categories = [];\r\n vm.HTML5Educations = [];\r\n\r\n for (var i = 0; i < list.length; i++) {\r\n var edu = list[i];\r\n if ((edu.Description == null || edu.Description == \"\") && skipLoadContainer == false) {\r\n edu.Container = new container(edu.Container);\r\n var modules = edu.Container.getModules(\"Text\");\r\n\r\n if (modules == null || modules.length <= 0) {\r\n modules = edu.Container.getModules(\"ImageText\");\r\n }\r\n\r\n if (modules != null && modules.length > 0) {\r\n edu.Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n\r\n if (vm.HandleCategoryForEduction(edu)) {\r\n \r\n } else {\r\n vm.HTML5Educations.push(edu);\r\n }\r\n\r\n if (!edu.Tags || !edu.Tags.length)\r\n continue;\r\n\r\n for (var j = 0; j < edu.Tags.length; j++) {\r\n if (!vm.Tags.GetItemByValue(\"Id\", edu.Tags[j].Id))\r\n vm.Tags.push(edu.Tags[j]);\r\n }\r\n } \r\n\r\n vm.DataLoaded = true;\r\n }\r\n }\r\n\r\n function HandleCategoryForEduction(edu) {\r\n if (!edu.GenericCategories || !edu.GenericCategories.length)\r\n return false;\r\n\r\n for (var i = 0; i < edu.GenericCategories.length; i++) {\r\n var category = vm.Categories.GetItemByValue('Id', edu.GenericCategories[i].Id);\r\n if (!category) {\r\n category = edu.GenericCategories[i];\r\n category.Entries = [];\r\n category.Selected = edu;\r\n category.IsCategory = true;\r\n vm.Categories.push(category);\r\n vm.HTML5Educations.push(category);\r\n }\r\n category.Entries.push(edu);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName || vm.TagId) {\r\n if (vm.TagSystemName) {\r\n educationService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n educationService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n else {\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function TagFilter(tagId) {\r\n \treturn function (item) {\r\n \t\treturn item.Tags && item.Tags.GetItemByValue('Id', tagId);\r\n \t}\r\n }\r\n\r\n function GetSCORMEducations() {\r\n \teducationService.GetSCORMEducations().then(GetSCORMEducationsSuccess);\r\n\r\n \tfunction GetSCORMEducationsSuccess(response) {\r\n \t\tvm.SCORMEducations = BizPartCoreHelpers.getResponseValue(response, []);\r\n \t\tfor (var i = 0; i < vm.SCORMEducations.length; i++) {\r\n \t\t\tvar edu = vm.SCORMEducations[i];\r\n edu.UserHasPassed = edu.Status == vm.SCORMUserStatus.Passed;\r\n \t\t\tedu.Url = siteRootPath + 'scorm/' + edu.Id;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function OpenHTML5Education(education) {\r\n $state.go('base.modules.html5education', {id: education.Id});\r\n }\r\n\r\n function GetAllEducationTypes() {\r\n vm.GetHTML5EducationsForLoggedInUser();\r\n vm.GetSCORMEducations(); \r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.GetTag(GetAllEducationTypes);\r\n }\r\n }\r\n\r\n function bizEducationsListModuleController($rootScope, educationService, $translate) {\r\n var vm = this;\r\n vm.HTML5Educations = [];\r\n \r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n\r\n if(vm.settings.Filter == 'newest') {\r\n educationService.GetHTML5EducationsForLoggedInUser().then(GetEducationsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n if($rootScope.FavoriteTagIds.length > 0) {\r\n educationService.GetHTML5EducationsForLoggedInUserByTagId($rootScope.FavoriteTagIds, true).then(GetEducationsSuccess);\r\n }\r\n else {\r\n educationService.GetHTML5EducationsForLoggedInUser(false, true).then(GetEducationsSuccess);\r\n }\r\n }\r\n\r\n function GetEducationsSuccess(response) {\r\n vm.HTML5Educations = response.data;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').service('modules.education.service', educationService);\r\n //THIS FOR BACKWORDS COMPABILITY\r\n angular.module('bizPartEngage').service('BizOnlineEducationReplyService', educationService);\r\n //angular.module('bizPartEngage').service('modules.education.service.reply', [replyService]);\r\n //THIS FOR BACKWORDS COMPABILITY\r\n angular.module('bizPartEngage').service('BizOnlineEducationReplyService', [replyService]);\r\n\r\n educationService.$inject = [\"$http\"];\r\n\r\n function educationService($http) {\r\n this.GetCompletedCount = function() {\r\n return $http.get(siteRootPath + 'api/education/GetCompletedCount');\r\n };\r\n\r\n this.GetHTML5EducationsForLoggedInUser = function (skipLoadContainer, journeyOrder) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationsForLoggedInUser?' + $.param({ skipLoadContainer: skipLoadContainer === undefined ? false : true, journeyOrder: journeyOrder || false }));\r\n };\r\n\r\n this.GetHTML5EducationsForLoggedInUserByTagId = function (id, journeyOrder) {\r\n return $http.get(siteRootPath + \"api/education/GetHTML5EducationsForLoggedInUserByTagId?\" + $.param({ tagIds: id, journeyOrder: journeyOrder || false }));\r\n }\r\n\r\n this.GetSCORMEducations = function () {\r\n \treturn $http.get(siteRootPath + 'api/scormuser/GetEducations');\r\n };\r\n\r\n this.GetHTML5Education = function(id) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5Education?' + $.param({ id: id }));\r\n };\r\n\r\n this.GetHTML5EducationByUrlRewrite = function(urlRewrite) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationByUrlRewrite?' + $.param({ urlRewrite: urlRewrite }));\r\n };\r\n\r\n this.GetHTML5EducationReply = function(educationId) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationReply?' + $.param({ educationId: educationId }));\r\n };\r\n\r\n this.HTML5ModuleInstanceFinished = function (replyId, containerModuleInstanceId) {\r\n return $http.post(siteRootPath + 'api/education/HTML5ModuleInstanceFinished?' + $.param({ containerModuleInstanceId: containerModuleInstanceId}), replyId);\r\n };\r\n\r\n this.SubmitHTML5Education = function (replyId) {\r\n return $http.post(siteRootPath + 'api/education/SubmitHTML5Education', replyId);\r\n };\r\n\r\n this.GetTag = function (id) {\r\n return $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n }\r\n\r\n this.GetTagBySystemName = function (systemName) {\r\n return $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n }\r\n }\r\n\r\n function replyService() {\r\n this.OnlineEducationReply = {};\r\n }\r\n})(window.angular);\r\n","(function () { \r\n angular.module('bizPartEngage').directive('bizDeactivateGoal', bizDeactivateGoalDirective);\r\n \r\n bizDeactivateGoalDirective.$inject = [\"bizCore\"];\r\n\r\n function bizDeactivateGoalDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n goal: '=',\r\n cancel: '&?',\r\n postInactivateAction: '&?',\r\n deleteMode: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/deactivateGoal.html'),\r\n bindToController: true,\r\n controller: bizDeactivateGoalController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizDeactivateGoalController.$inject = [\"modules.goals.service\"];\r\n\r\n return directive;\r\n\r\n function bizDeactivateGoalController(engagementGoalsService) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.Cancel = Cancel;\r\n vm.Inactivate = Inactivate;\r\n vm.SelectGoal = SelectGoal; \r\n vm.FilterGoals = FilterGoals;\r\n\r\n function Cancel() {\r\n if (vm.cancel) {\r\n vm.cancel();\r\n }\r\n }\r\n\r\n function SelectGoal(goal) {\r\n if (goal.selected) {\r\n goal.selected = false;\r\n } else {\r\n for (var i = 0; i < vm.MoveToGoalList.length; i++) {\r\n if (vm.MoveToGoalList[i].selected) {\r\n vm.MoveToGoalList[i].selected = false;\r\n }\r\n }\r\n goal.selected = true;\r\n }\r\n } \r\n\r\n function Inactivate() {\r\n\r\n var goalIdToMoveTo = -1;\r\n for (var i = 0; i < vm.MoveToGoalList.length; i++) {\r\n if (vm.MoveToGoalList[i].selected) {\r\n goalIdToMoveTo = vm.MoveToGoalList[i].Id;\r\n }\r\n }\r\n\r\n engagementGoalsService.InactivateGoal(vm.goal.Id, goalIdToMoveTo, vm.deleteMode).then(InactivateGoalCallback);\r\n\r\n function InactivateGoalCallback(response) {\r\n if (vm.postInactivateAction) {\r\n vm.postInactivateAction();\r\n }\r\n }\r\n }\r\n\r\n function FilterGoals() {\r\n return function (goal) {\r\n return goal.Id !== vm.goal.Id && goal.ParentGoalId > 0;\r\n }\r\n }\r\n\r\n function Init() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n vm.MoveToGoalList = BizPartCoreHelpers.getResponseValue(response, []);\r\n if (vm.goal.ParentGoalId <= 0) {\r\n vm.ChildGoals = vm.MoveToGoalList.GetItemsByValue('ParentGoalId', vm.goal.Id);\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizManagerGoals', bizManagerGoalsDirective);\r\n\r\n bizManagerGoalsDirective.$inject = [\"bizCore\"];\r\n\r\n function bizManagerGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/managerGoals.html'),\r\n bindToController: true,\r\n controller: bizManagerGoalsController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizManagerGoalsController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$mdToast\", \"$mdDialog\", \"bizCoreService\", \"core.unit.service\", \"$q\"];\r\n\r\n return directive;\r\n\r\n function bizManagerGoalsController(engagementGoalsService, $state, $rootScope, $mdToast, $mdDialog, bizCoreService, unitService, $q) {\r\n var vm = this;\r\n vm.Statuses = [{ Id: 1, Text: 'Positiv' }, { Id: 2, Text: 'Neutral' }, { Id: 3, Text: 'Negativ' }];\r\n vm.ManagerGoals = [];\r\n\r\n vm.GetGoals = GetGoals;\r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal;\r\n vm.OpenEdit = OpenEdit;\r\n\r\n function OpenEdit() {\r\n\r\n $q.all(\r\n [\r\n engagementGoalsService.GetGoals(false),\r\n unitService.GetUsersInUnit($rootScope.LoggedInUser.Units[0].Id)\r\n ]).then(LoadDataDone);\r\n\r\n function LoadDataDone(response) {\r\n var managerGoals = response[0].data;\r\n var usersInUnit = response[1].data;\r\n \r\n vm.ManagerGoals = [];\r\n for (var i = 0; i < managerGoals.length; i++) {\r\n if (managerGoals[i].ParentGoalId > 0) {\r\n vm.ManagerGoals.push(managerGoals[i]);\r\n }\r\n }\r\n\r\n vm.Users = [];\r\n for (var i = 0; i < usersInUnit.length; i++) {\r\n if (usersInUnit[i].Id != $rootScope.LoggedInUser.Id) {\r\n vm.Users.push(usersInUnit[i]);\r\n }\r\n }\r\n\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Modules/EngagementGoals/Views/Directives/mangagerGoalsEdit.html\",\r\n controller: EditDialogController,\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n locals: {\r\n Statuses: vm.Statuses,\r\n GoalSettings: vm.GoalSettings,\r\n ManagerGoals: vm.ManagerGoals,\r\n Users: vm.Users\r\n }\r\n }).then(EditClose);\r\n }\r\n\r\n function EditClose(data) {\r\n if (data) {\r\n vm.GoalSettings = data;\r\n }\r\n }\r\n\r\n EditDialogController.$inject = [\"$mdDialog\", \"bizCoreService\"];\r\n\r\n function EditDialogController($mdDialog, bizCoreService) {\r\n var vm = this;\r\n\r\n vm.Save = Save;\r\n vm.Cancel = Cancel;\r\n vm.AddGoal = AddGoal;\r\n vm.Remove = Remove;\r\n vm.GetStatusName = GetStatusName;\r\n vm.UserSelected = UserSelected;\r\n\r\n function UserSelected() {\r\n vm.UserGoals = [];\r\n\r\n if (vm.SelectedUser && vm.SelectedUser.Id > 0) {\r\n engagementGoalsService.GetGoals(false, null, null, vm.SelectedUser.Id).then(DataCallback);\r\n\r\n function DataCallback(response) {\r\n var userGoals = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n for (var i = 0; i < userGoals.length; i++) {\r\n if (userGoals[i].ParentGoalId > 0) {\r\n vm.UserGoals.push(userGoals[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function Save() {\r\n engagementGoalsService.SaveManagerGoals(vm.GoalSettings).then(SaveCallback);\r\n\r\n function SaveCallback(response) {\r\n var goalSettings = BizPartCoreHelpers.getResponseValue(response, []);\r\n $mdDialog.hide(vm.GoalSettings);\r\n }\r\n }\r\n\r\n function Cancel() {\r\n $mdDialog.hide();\r\n }\r\n\r\n function AddGoal(isManagerGoal) {\r\n var data = {\r\n Id: isManagerGoal ? vm.SelectedGoal.Id : vm.SelectedUserGoal.Id,\r\n Goal: isManagerGoal ? vm.SelectedGoal : vm.SelectedUserGoal,\r\n Status: vm.SelectedStatus.Id,\r\n IsManagerGoal: isManagerGoal ? true : false,\r\n ShowIcon: isManagerGoal ? true : false,\r\n Comment: ''\r\n }\r\n\r\n vm.GoalSettings.Goals.push(data);\r\n }\r\n\r\n function Remove(id, isManagerGoal) {\r\n if (id > 0) {\r\n for (var i = 0; i < vm.GoalSettings.Goals.length; i++) {\r\n if (id == vm.GoalSettings.Goals[i].Id && (isManagerGoal && vm.GoalSettings.Goals[i].IsManagerGoal || isManagerGoal == false && vm.GoalSettings.Goals[i].IsManagerGoal == false)) {\r\n vm.GoalSettings.Goals.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function GetStatusName(id) {\r\n if (id > 0) {\r\n return vm.Statuses[id - 1].Text;\r\n }\r\n\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n }\r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetManagerGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n vm.GoalSettings = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n if (!vm.GoalSettings.ManagerGoalOverrideHeader || vm.GoalSettings.ManagerGoalOverrideHeader.length == 0)\r\n vm.GoalSettings.ManagerGoalOverrideHeader = 'Företagsmål'\r\n\r\n if (!vm.GoalSettings.GoalOverrideHeader || vm.GoalSettings.GoalOverrideHeader.length == 0)\r\n vm.GoalSettings.GoalOverrideHeader = 'Individuella mål'\r\n }\r\n }\r\n\r\n function Init() {\r\n if (vm.GoalSettings === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizMyGoals', bizMyGoalsDirective); \r\n\r\n bizMyGoalsDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizMyGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n showActiveFilter: '@?',\r\n goalFilter: '@?',\r\n hideActivities: '@?',\r\n hideEdit: '@?',\r\n hideTasks: '@?',\r\n selectedGoal: '=?',\r\n Goals: '=?goals',\r\n editProgress: '@?',\r\n parentId: '=?',\r\n rootGoals: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myGoals.html'),\r\n bindToController: true,\r\n controller: bizMyGoalsController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizMyGoalsController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$mdToast\"];\r\n\r\n return directive;\r\n\r\n function bizMyGoalsController(engagementGoalsService, $state, $rootScope, $mdToast) {\r\n var vm = this;\r\n\r\n vm.ActiveStatus = [\r\n {\r\n Name: 'Aktiva',\r\n Active: true,\r\n Icon: \"fas fa-check-square\"\r\n },\r\n {\r\n Name: 'Inaktiva',\r\n Active: false,\r\n Icon: \"fas fa-times-square\"\r\n }\r\n ];\r\n\r\n vm.ProgressObjectTypes = {\r\n Goal: 200,\r\n Activity: 201,\r\n Task: 202, \r\n };\r\n\r\n vm.GetGoals = GetGoals;\r\n vm.FilterGoals = FilterGoals;\r\n vm.CompleteToDo = CompleteToDo;\r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal;\r\n vm.GotoActivity = GotoActivity;\r\n vm.IsExpired = IsExpired; \r\n vm.SaveProgress = SaveProgress;\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n }\r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n }\r\n\r\n function GotoActivity(activity) {\r\n $state.go(\"base.modules.goals.activity\", { id: activity.Id });\r\n }\r\n\r\n function FilterGoals() {\r\n return function (goal) {\r\n if (vm.rootGoals) {\r\n return goal.ParentGoalId <= 0;\r\n } else if (goal.ParentGoalId <= 0) { \r\n return false;\r\n } else if (vm.parentId > 0) {\r\n return vm.parentId === goal.ParentGoalId;\r\n } else if (vm.goalFilter && ~~vm.goalFilter > 0) {\r\n return ~~vm.goalFilter === goal.Id;\r\n } else {\r\n return vm.SelectedActiveStatus.Active === goal.IsActive;\r\n }\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n if (vm.parentId) { \r\n engagementGoalsService.GetChildGoals(vm.parentId).then(GetGoalsCallback);\r\n } else {\r\n engagementGoalsService.GetGoals(true).then(GetGoalsCallback); \r\n }\r\n \r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n for (var i = 0; i < goals.length; i++) {\r\n goals[i].ReportProgress = goals[i].ProgressSum;\r\n for (var j = 0; j < goals[i].Activities.length; j++) { \r\n var act = goals[i].Activities[j];\r\n act.ReportProgress = act.ProgressSum;\r\n\r\n for (var k = 0; k < act.ToDoList.length; k++) {\r\n var tsk = act.ToDoList[k];\r\n tsk.ReportProgress = tsk.ProgressSum;\r\n }\r\n }\r\n }\r\n vm.Goals = goals; \r\n }\r\n }\r\n\r\n function CompleteToDo(todo, act) {\r\n engagementGoalsService.CompleteTask(todo).then(CompleteToDoCallback);\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = act.ToDoList.indexOf(todo);\r\n act.ToDoList.splice(index, 1);\r\n }\r\n } \r\n\r\n function SaveProgress(object, objectType) {\r\n //Remove spaces to make it a valit integer.\r\n var rp = ~~object.ReportProgress.replace(/\\s/g, '');\r\n var pList = [];\r\n if (object.ProgressSum !== rp) {\r\n var diff = rp - object.ProgressSum;\r\n pList.push({\r\n LinkedObjectType: objectType,\r\n LinkedObjectId: object.Id,\r\n Value: diff,\r\n DateLocal: moment()\r\n });\r\n\r\n engagementGoalsService.CreateProgress(pList).then(CreateProgressCallback);\r\n }\r\n\r\n function CreateProgressCallback(response) {\r\n object.ProgressSum = ~~object.ReportProgress.replace(/\\s/g, '');\r\n\r\n object.Saved = true;\r\n\r\n $rootScope.$broadcast('GOALPROGRESSUPDATED');\r\n\r\n if($rootScope.mobile) {\r\n $mdToast.show({\r\n parent: $(\".bizpart-engage\"),\r\n template: \"

Sparat!

\",\r\n autoWrap: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.SelectedActiveStatus = vm.ActiveStatus[0];\r\n if(vm.Goals === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $rootScope.$on('GOAL_NEW_DATE_SELECTED', function () {\r\n vm.GetGoals();\r\n });\r\n\r\n $rootScope.$on('GOALACTIVITYCREATED', function (event, activity) { \r\n var goal = vm.Goals.GetItemByValue('Id', activity.GoalId);\r\n if (goal) {\r\n activity.ReportProgress = 0;\r\n goal.Activities.push(activity); \r\n } \r\n });\r\n\r\n $rootScope.$on('GOALCREATED', function (event, goal) {\r\n vm.Goals.push(goal);\r\n goal.ReportProgress = 0; \r\n });\r\n }\r\n } \r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizMyRootGoals', bizMyRootGoalsDirective);\r\n\r\n bizMyRootGoalsDirective.$inject = [\"bizCore\"];\r\n\r\n function bizMyRootGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: { \r\n Goals: '=?goals' \r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyRootGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myRootGoals.html'),\r\n bindToController: true,\r\n controller: bizMyRootGoalsDirectiveController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizMyRootGoalsDirectiveController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$filter\"];\r\n\r\n return directive;\r\n\r\n function bizMyRootGoalsDirectiveController(engagementGoalsService, $state, $rootScope, $filter) {\r\n var vm = this; \r\n\r\n vm.GetGoals = GetGoals; \r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal; \r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n } \r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetGoals(true).then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.Goals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n }\r\n }\r\n \r\n function Init() { \r\n if (vm.Goals === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $rootScope.$on('GOAL_NEW_DATE_SELECTED', function () {\r\n vm.GetGoals();\r\n });\r\n \r\n\r\n $rootScope.$on('GOALCREATED', function (event, goal) {\r\n if (goal.ParentGoalId <= 0) {\r\n vm.Goals.push(goal);\r\n }\r\n });\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizMyTasks', bizMyTasksDirective); \r\n\r\n bizMyTasksDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizMyTasksDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n activity: '=?',\r\n includeCompleted: '@?',\r\n showFilter: '@?',\r\n ignoreTaskId: '@?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyTasksDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myTasks.html'),\r\n controller: bizMyTasksController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n bizMyTasksController.$inject = [\"$scope\", \"modules.goals.service\", \"$state\"];\r\n\r\n return directive;\r\n\r\n function bizMyTasksController($scope, engagementGoalsService, $state) {\r\n var vm = this;\r\n vm.OrderBy = ['Status', 'Deadline'];\r\n vm.OrderDesc = false;\r\n\r\n vm.ChangeOrderBy = ChangeOrderBy;\r\n vm.SetCurrentFilterMode = SetCurrentFilterMode;\r\n\r\n function ChangeOrderBy(order, desc) {\r\n switch(order) {\r\n case 'Task':\r\n if(vm.OrderBy == 'Text' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'Text';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break;\r\n case 'Activity':\r\n if(vm.OrderBy == 'LinkedObject.Text' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'LinkedObject.Text';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break;\r\n case 'Goal':\r\n if(vm.OrderBy == 'LinkedObject.GoalName' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'LinkedObject.GoalName';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n case 'Deadline':\r\n if(vm.OrderBy == 'DateLocal' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'DateLocal';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n case 'Status':\r\n if(vm.OrderBy[0] == 'Status' && vm.OrderBy[1] == 'Deadline' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = ['Status', 'Deadline'];\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n }\r\n }\r\n\r\n vm.FilterMode = {\r\n All: { \r\n Match: function (task) { \r\n return ~~vm.ignoreTaskId !== task.Id;\r\n }\r\n },\r\n Upcoming: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && !IsExpired(task) && !task.IsCompleted;\r\n }\r\n },\r\n Expired: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && IsExpired(task);\r\n }\r\n },\r\n Completed: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && task.IsCompleted;\r\n }\r\n }\r\n };\r\n\r\n function SetCurrentFilterMode(mode) {\r\n vm.CurrentFilterMode = vm.FilterMode[mode];\r\n setLocalStorage('myTaskFilterMode', mode);\r\n }\r\n\r\n vm.CurrentFilterMode = vm.FilterMode.All;\r\n\r\n vm.GetTasks = GetTasks;\r\n vm.CompleteToDo = CompleteToDo;\r\n vm.Init = Init;\r\n vm.GotoTask = GotoTask;\r\n vm.IsExpired = IsExpired; \r\n vm.FilterTasks = FilterTasks;\r\n vm.GetTaskCount = GetTaskCount;\r\n vm.AddTaskStatus = AddTaskStatus;\r\n\r\n function FilterTasks() {\r\n return function (tsk) {\r\n return vm.CurrentFilterMode.Match(tsk); \r\n }\r\n }\r\n\r\n function GetTaskCount(filterMode) {\r\n var count = 0;\r\n if (!vm.tasks) {\r\n return count;\r\n }\r\n for (var i = 0; i < vm.tasks.length; i++) {\r\n if (filterMode.Match(vm.tasks[i])) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n function GotoTask(task) {\r\n $state.go(\"base.modules.goals.tasks\", { id: task.Id });\r\n }\r\n\r\n function GetTasks() {\r\n var inclCompleted = vm.includeCompleted === 'true';\r\n engagementGoalsService.GetTasks(inclCompleted).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n if (!vm.tasks) {\r\n var tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n vm.tasks = tasks;\r\n\r\n vm.AddTaskStatus(vm.tasks);\r\n\r\n console.log(vm.tasks);\r\n }\r\n }\r\n }\r\n\r\n function AddTaskStatus(tasks) {\r\n // 30 = Completed, 20 = Upcomming, 10 = Too late\r\n\r\n for(var i = 0; i < tasks.length; i++) {\r\n if(tasks[i].IsCompleted) {\r\n tasks[i].Status = 30;\r\n }\r\n else if(vm.IsExpired(tasks[i])) {\r\n tasks[i].Status = 10;\r\n }\r\n else if(!vm.IsExpired(tasks[i]) && !tasks[i].IsCompleted) {\r\n tasks[i].Status = 20;\r\n }\r\n }\r\n }\r\n\r\n function CompleteToDo(todo) {\r\n if (!todo.IsCompleted) {\r\n engagementGoalsService.CompleteTask(todo).then(CompleteToDoCallback);\r\n }\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = vm.tasks.indexOf(todo);\r\n if (vm.includeCompleted === 'true') {\r\n todo.IsCompleted = true;\r\n todo.Status = 30;\r\n } else {\r\n vm.tasks.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n } \r\n\r\n function Init() {\r\n var currentFilterMode = getLocalStorage('myTaskFilterMode');\r\n if(currentFilterMode) {\r\n vm.CurrentFilterMode = vm.FilterMode[currentFilterMode];\r\n }\r\n\r\n if (vm.activity && vm.activity.ToDoList) {\r\n vm.tasks = vm.activity.ToDoList;\r\n vm.AddTaskStatus(vm.tasks);\r\n } else {\r\n vm.GetTasks();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $scope.$watch(\"vm.activity\", function () {\r\n if (vm.activity && vm.activity.ToDoList) {\r\n vm.tasks = vm.activity.ToDoList;\r\n }\r\n });\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizOneGoalActivity', bizOneGoalActivityDirective);\r\n \r\n bizOneGoalActivityDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizOneGoalActivityDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n activity: '='\r\n },\r\n templateUrl: bizCoreProvider.getView('bizOneGoalActivityDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneActivity.html'),\r\n bindToController: true,\r\n controller: bizOneGoalActivityController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizOneGoalActivityController.$inject = [\"modules.goals.service\", \"$scope\", \"$q\", \"$mdToast\", \"$timeout\", \"bizValidationService\", \"$rootScope\", \"$mdDialog\", \"$state\"];\r\n\r\n return directive;\r\n\r\n function bizOneGoalActivityController(engagementGoalsService, $scope, $q, $mdToast, $timeout, bizValidationService, $rootScope, $mdDialog, $state) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.GetGoalTypes = GetGoalTypes;\r\n vm.GetGoals = GetGoals;\r\n vm.Save = Save;\r\n vm.SetActivityLoaded = SetActivityLoaded;\r\n\r\n vm.activityIsLoadedDefer = $q.defer();\r\n vm.activityIsLoaded = vm.activityIsLoadedDefer.promise;\r\n vm.Back = Back;\r\n vm.DeleteActivity = DeleteActivity;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetGoals() {\r\n var pGetGoals = engagementGoalsService.GetGoals();\r\n $q.all([pGetGoals, vm.activityIsLoaded]).then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(result) {\r\n var goals = BizPartCoreHelpers.getResponseValue(result[0], []); \r\n goals = goals.filter(g => g.ParentGoalId > 0);\r\n var activityGoal;\r\n\r\n for (var i = 0; i < goals.length; i++) {\r\n if (goals[i].Id == vm.activity.GoalId) { \r\n activityGoal = goals[i];\r\n } \r\n }\r\n\r\n if (activityGoal) {\r\n vm.SelectedGoal = activityGoal;\r\n }\r\n else if (goals.length) {\r\n //vm.SelectedGoal = goals[0];\r\n }\r\n \r\n vm.Goals = goals;\r\n }\r\n }\r\n\r\n function Save() {\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n \t\t return;\r\n\r\n vm.activity.DateLocal = moment(vm.activity.DateLocalDate);\r\n vm.activity.GoalId = vm.SelectedGoal.Id;\r\n vm.activity.GoalTypeId = vm.SelectedType ? vm.SelectedType.Id : 0;\r\n var saveData = {\r\n Activity: vm.activity,\r\n Comment: vm.NewComment\r\n };\r\n if (saveData.Activity.GoalValue && typeof saveData.Activity.GoalValue !== \"number\")\r\n saveData.Activity.GoalValue = ~~saveData.Activity.GoalValue.replace(/\\s/g, '');\r\n\r\n if (saveData.Activity.GoalValue && saveData.Activity.GoalValue <= 0) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområdets tal måste vara större än 0')\r\n .position('bottom right')\r\n );\r\n return;\r\n }\r\n\r\n engagementGoalsService.CreateUpdateActivity(saveData).then(SaveActivityCallback);\r\n\r\n function SaveActivityCallback(response) {\r\n var newCreated = vm.activity.Id <= 0;\r\n var activity = BizPartCoreHelpers.getResponseValue(response); \r\n vm.NewComment = undefined; \r\n if (newCreated) {\r\n vm.activity = {\r\n Id: 0,\r\n GoalId: activity.GoalId,\r\n GoalValue: activity.GoalValue,\r\n GoalTypeId: vm.SelectedType ? vm.SelectedType.Id : 0,\r\n DateLocalDate: moment(activity.DateLocal).format('YYYY-MM-DD'),\r\n };\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområde sparat, lägg till ännu fler om du vill!')\r\n .position('bottom right')\r\n ); \r\n \r\n $rootScope.$broadcast('GOALACTIVITYCREATED', activity);\r\n } else {\r\n vm.activity = activity;\r\n vm.activity.DateLocalDate = moment(vm.activity.DateLocal).format('YYYY-MM-DD');\r\n vm.EditMode = false;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområde sparat')\r\n .position('bottom right')\r\n ); \r\n } \r\n\r\n //$timeout(function () {\r\n // vm.Back();\r\n //}, 1000);\r\n } \r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService.GetGoalTypes().then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(response, []); \r\n\r\n $q.when(vm.activityIsLoaded).then(function () {\r\n if (vm.activity.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue('Id', vm.activity.GoalTypeId);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function DeleteActivity() {\r\n var confirm = $mdDialog.confirm()\r\n .title('Radera')\r\n .textContent('Är du säker på att du vill radera detta \"nyckelområde\"?')\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.DeleteActivity(vm.activity.Id).then(function (response) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n }); \r\n }, function () {\r\n \r\n });\r\n }\r\n\r\n function Init() {\r\n vm.GetGoalTypes();\r\n\r\n if (vm.activity) {\r\n var period = engagementGoalsService.GetSelectedPeriod();\r\n if (vm.activity.Id === 0) {\r\n vm.activity.Text = ''\r\n vm.EditMode = true;\r\n vm.activity.DateLocal = period.IsCurrentPeriod ? BizPartCoreHelpers.getDateNow() : period.EndDate;\r\n }\r\n vm.SetActivityLoaded();\r\n }\r\n\r\n vm.GetGoals();\r\n }\r\n\r\n function SetActivityLoaded() {\r\n vm.activity.DateLocalDate = moment(vm.activity.DateLocal).format('YYYY-MM-DD');\r\n vm.activityIsLoadedDefer.resolve('');\r\n vm.unbindActivityWatch();\r\n }\r\n\r\n $scope.$watch(\"vm.SelectedGoal\", function () {\r\n if (vm.SelectedGoal && ~~vm.activity.Id <= 0) { \r\n vm.activity.DateLocalDate = moment(vm.SelectedGoal.DateToLocal).format('YYYY-MM-DD');\r\n }\r\n });\r\n\r\n vm.unbindActivityWatch = $scope.$watch(\"vm.activity\", function () {\r\n if (vm.activity !== undefined) {\r\n vm.SetActivityLoaded();\r\n }\r\n });\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizOneGoal', bizOneGoalDirective); \r\n \r\n bizOneGoalDirective.$inject = [\"bizCore\"];\r\n\r\n function bizOneGoalDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n goalId: '=',\r\n isRoot: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizOneGoalDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneGoal.html'),\r\n bindToController: true,\r\n controller: bizOneGoalController,\r\n controllerAs: 'vm',\r\n };\r\n\r\n bizOneGoalController.$inject = [\"modules.goals.service\", \"$mdDialog\", \"$scope\", \"$mdToast\", \"$timeout\", \"bizValidationService\", \"$state\", \"$q\", \"$rootScope\", \"$filter\", \"bizMediabankService\"];\r\n\r\n function bizOneGoalController(engagementGoalsService, $mdDialog, $scope, $mdToast, $timeout, bizValidationService, $state, $q, $rootScope, $filter, bizMediabankService) {\r\n var vm = this;\r\n\r\n vm.DefaultNewProgressSteps = 5;\r\n vm.NewProgressSteps = 5;\r\n\r\n vm.EditDate = moment();\r\n\r\n vm.deleteMode = true;\r\n vm.UploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.Goal,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n };\r\n\r\n vm.labels = [\"Utfall\", \"Återstående\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75, title: {\r\n display: false,\r\n text: 'Utfallsrapportering'\r\n } };\r\n vm.data = [0, 100];\r\n \r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.Date = BizPartCoreHelpers.getDateNow();\r\n vm.Years = [\r\n {\r\n Name: moment(vm.Date).year() + '',\r\n Id: moment(vm.Date).year(),\r\n StartDate: moment(vm.Date).startOf('year'),\r\n EndDate: moment(vm.Date).endOf('year')\r\n },\r\n {\r\n Name: moment(vm.Date).add(1, 'years').year() + '',\r\n Id: moment(vm.Date).add(1, 'years').year(),\r\n StartDate: moment(vm.Date).add(1, 'years').startOf('year'),\r\n EndDate: moment(vm.Date).add(1, 'years').endOf('year')\r\n }\r\n ]; \r\n\r\n vm.SelectedYear = vm.Years[0]; \r\n\r\n vm.goalTypesLoadedDefer = $q.defer();\r\n vm.goalTypesLoaded = vm.goalTypesLoadedDefer.promise;\r\n vm.rootGoalsLoadedDefer = $q.defer();\r\n vm.rootGoalsLoaded = vm.rootGoalsLoadedDefer.promise;\r\n\r\n vm.EditMode = false;\r\n vm.FirstTimeCreate = false;\r\n vm.Save = Save;\r\n vm.LockGoal = LockGoal;\r\n vm.Init = Init;\r\n vm.ShowDeactivate = ShowDeactivate;\r\n vm.Back = Back;\r\n vm.IsExpired = IsExpired;\r\n vm.CompleteTask = CompleteTask;\r\n vm.IncreaseNewProgress = IncreaseNewProgress;\r\n vm.DecreaseNewProgress = DecreaseNewProgress; \r\n vm.FixSortingToDoList = FixSortingToDoList; \r\n vm.GoToActivity = GoToActivity;\r\n vm.GoToTask = GoToTask;\r\n vm.GetGoalTypes = GetGoalTypes; \r\n vm.GetRootGoals = GetRootGoals;\r\n vm.GetGoal = GetGoal;\r\n vm.SetProgressStep = SetProgressStep;\r\n vm.CreateChildGoalSuggestion = CreateChildGoalSuggestion;\r\n vm.RemoveChildGoalSuggestion = RemoveChildGoalSuggestion; \r\n vm.SelectImage = SelectImage;\r\n vm.SetEditMode = SetEditMode;\r\n vm.CancelEdit = CancelEdit;\r\n \r\n vm.lblFunction = lblFunction;\r\n\r\n function SelectImage() {\r\n bizMediabankService.ShowMediabankDialog(vm.Image, null, vm.UploadSettings).then(ShowMediabankDialogCallback);\r\n\r\n function ShowMediabankDialogCallback(file) { \r\n if (!file)\r\n return;\r\n vm.Image = file;\r\n }\r\n } \r\n\r\n function lblFunction(val, max) {\r\n return Math.round(val) + vm.goal.GoalType.Suffix;\r\n }\r\n\r\n function RemoveChildGoalSuggestion(index) {\r\n vm.ChildGoalSuggestions.splice(index, 1);\r\n }\r\n\r\n function CreateChildGoalSuggestion(split) {\r\n var suggestions = [];\r\n\r\n var monthsPerSplit = 12 / split; \r\n var goalValueReminder = vm.goal.GoalValue % split; \r\n\r\n for (var i = 0; i < split; i++) {\r\n var periodStart = moment(vm.SelectedYear.StartDate).startOf('month').add((i * monthsPerSplit), 'M');\r\n var periodEnd = moment(periodStart).add(monthsPerSplit - 1, 'M').endOf('month');\r\n var textSuffix = (split == 4 ? 'Q' : split === 3 ? 'T' : '') + (i + 1) + '';\r\n var goalValue = Math.floor(vm.goal.GoalValue / split);\r\n var endList = [];\r\n for (var j = 0; j < monthsPerSplit; j++) {\r\n var month = moment(periodEnd).add(-j, 'M');\r\n endList.push({\r\n Name: moment(month).format('DD MMMM'),\r\n Date: month\r\n });\r\n }\r\n suggestions.push({\r\n Text: vm.goal.Text + ' ' + textSuffix,\r\n DateFromLocal: moment(periodStart).format('YYYY-MM-DD'),\r\n SelectedToDate: endList[0],\r\n GoalValue: goalValue,\r\n EndList: endList\r\n });\r\n }\r\n\r\n console.log(suggestions);\r\n\r\n for (var i = 0; i < suggestions.length && goalValueReminder > 0; i++) {\r\n suggestions[i].GoalValue++;\r\n goalValueReminder--;\r\n }\r\n\r\n vm.ChildGoalSuggestions = suggestions;\r\n } \r\n\r\n function GoToActivity(id) {\r\n if (id > 0) {\r\n $state.go(\"base.modules.goals.activity\", { id: id });\r\n }\r\n }\r\n\r\n function GoToTask(id) {\r\n if (id > 0) {\r\n $state.go(\"base.modules.goals.onetask\", { id: id });\r\n }\r\n }\r\n\r\n function SetProgressStep() {\r\n vm.NewProgressSteps = vm.DefaultNewProgressSteps;\r\n if (vm.SelectedType.SystemName !== 'PERCENT') {\r\n if (vm.goal.GoalValue < 100) {\r\n vm.NewProgressSteps = 1;\r\n } else if (vm.goal.GoalValue > 1000) {\r\n vm.NewProgressSteps = vm.DefaultNewProgressSteps * 100;\r\n }\r\n } \r\n }\r\n\r\n function IncreaseNewProgress() {\r\n if (vm.Date > vm.SelectedPeriod.StartDate) {\r\n vm.EditMode = true;\r\n vm.SetProgressStep();\r\n var newValue = vm.NewProgress + 1;\r\n while (newValue % vm.NewProgressSteps != 0) {\r\n newValue++;\r\n }\r\n vm.NewProgress = newValue; \r\n \r\n vm.Dirty = true;\r\n }\r\n }\r\n\r\n function DecreaseNewProgress() {\r\n if (vm.Date > vm.SelectedPeriod.StartDate) {\r\n vm.EditMode = true;\r\n vm.SetProgressStep();\r\n var newValue = vm.NewProgress - 1;\r\n while (newValue % vm.NewProgressSteps != 0) {\r\n newValue--;\r\n }\r\n vm.NewProgress = newValue;\r\n\r\n vm.Dirty = true;\r\n } \r\n } \r\n\r\n function CompleteTask(task, act) {\r\n engagementGoalsService.CompleteTask(task).then(CompleteToDoCallback);\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = act.ToDoList.indexOf(task);\r\n act.ToDoList.splice(index, 1);\r\n }\r\n }\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n }\r\n\r\n function FixSortingToDoList(toDoList) {\r\n for(var i = 0; i < toDoList.length; i++) {\r\n var item = toDoList[i];\r\n\r\n if(vm.IsExpired(item)) {\r\n item.Status = 10;\r\n }\r\n else if(!item.IsCompleted) {\r\n item.Status = 20;\r\n }\r\n else if(item.IsCompleted) {\r\n item.Status = 30;\r\n }\r\n }\r\n }\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function ShowDeactivate() {\r\n var parentEl = angular.element(document.querySelector('#goal-progress'));\r\n $mdDialog.show({\r\n parent: parentEl,\r\n targetEvent: parentEl,\r\n templateUrl: siteRootPath + 'FrontEnd/Modules/EngagementGoals/Views/deactivateGoalPopup.html',\r\n controller: ShowDeactivateController,\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n locals: {\r\n goal: vm.goal,\r\n deleteMode: vm.deleteMode\r\n }\r\n }).then(ShowDeactivateCallback, function (response) { });\r\n\r\n function ShowDeactivateCallback() {\r\n if (vm.deleteMode) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n } else {\r\n engagementGoalsService.GetGoal(vm.goal.Id).then(function (response) {\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response);\r\n });\r\n }\r\n }\r\n\r\n ShowDeactivateController.$inject = [\"$mdDialog\"];\r\n\r\n function ShowDeactivateController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n\r\n function Close() {\r\n $mdDialog.hide();\r\n }\r\n }\r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService.GetGoalTypes().then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(response, []);\r\n vm.goalTypesLoadedDefer.resolve(''); \r\n }\r\n }\r\n\r\n function GetRootGoals() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.RootGoals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n vm.rootGoalsLoadedDefer.resolve('');\r\n }\r\n }\r\n\r\n function SetEditMode() {\r\n vm.PreEditGoal = angular.copy(vm.goal);\r\n vm.PreEditImage = angular.copy(vm.Image);\r\n vm.EditMode = true;\r\n }\r\n\r\n function CancelEdit() {\r\n vm.EditMode = false;\r\n vm.goal = vm.PreEditGoal;\r\n vm.Image = vm.PreEditImage;\r\n vm.NewProgress = vm.goal.ProgressSum;\r\n }\r\n\r\n function Save() { \r\n\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n return; \r\n \r\n vm.goal.ImageMediabankId = vm.Image ? vm.Image.Id : -1;\r\n vm.goal.GoalTypeId = vm.SelectedType.Id;\r\n vm.goal.ParentGoalId = vm.SelectedRootGoal ? vm.SelectedRootGoal.Id : -1;\r\n\r\n var saveData = {};\r\n if (vm.goal.Id <= 0 || !vm.goal.IsLocked) {\r\n saveData.Goal = vm.goal;\r\n }\r\n\r\n if (vm.ChildGoalSuggestions) {\r\n for (var i = 0; i < vm.ChildGoalSuggestions.length; i++) {\r\n vm.ChildGoalSuggestions[i].GoalTypeId = vm.goal.GoalTypeId;\r\n vm.ChildGoalSuggestions[i].IsNegative = vm.goal.IsNegative;\r\n vm.ChildGoalSuggestions[i].DateToLocal = vm.ChildGoalSuggestions[i].SelectedToDate.Date;\r\n }\r\n\r\n saveData.ChildGoals = vm.ChildGoalSuggestions;\r\n }\r\n\r\n if (vm.NewProgress) {\r\n var change = vm.NewProgress - vm.goal.ProgressSum;\r\n var progressDate = vm.NewProgressDate;\r\n if (moment(progressDate).isSame(new Date(), \"day\")) {\r\n progressDate = moment();\r\n }\r\n if (change != 0) {\r\n saveData.Progress = {\r\n Value: change,\r\n DateLocal: progressDate,\r\n LinkedObjectId: vm.goal.Id\r\n };\r\n }\r\n }\r\n\r\n if (vm.NewComment) {\r\n saveData.Comment = {\r\n Comment: vm.NewComment,\r\n ObjectId: vm.goal.Id\r\n };\r\n } \r\n\r\n if (!saveData.Goal && !saveData.Progress && !saveData.Comment) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Inget ändrat')\r\n .position('bottom right')\r\n );\r\n } else {\r\n //We need to trim spaces to make it a valit int.\r\n if (saveData.goal && typeof saveData.Goal.GoalValue !== \"number\")\r\n saveData.Goal.GoalValue = ~~saveData.Goal.GoalValue.replace(/\\s/g, '');\r\n\r\n // Added support for min/max values in bizValidation\r\n //if (saveData.goal && saveData.Goal.GoalValue <= 0) {\r\n // $mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('Målets tal måste vara större än 0')\r\n // .position('bottom right')\r\n // );\r\n // return;\r\n //}\r\n \r\n if (vm.isRoot && vm.goal.Id > 0 && ((vm.OriginalType && vm.OriginalType !== vm.goal.GoalTypeId)\r\n || (vm.OriginalIsNegative !== undefined && vm.OriginalIsNegative !== vm.goal.IsNegative))) {\r\n\r\n var confirm = $mdDialog.confirm()\r\n .title('Ändring')\r\n .textContent('Du har ändrat typ och/eller negativ-status. Samtliga kvartalsmål kommer också att uppdateras med den nya typen och/eller negativ-status.')\r\n .ok('Ok')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n CreateUpdateGoal(saveData);\r\n }, function () {\r\n\r\n });\r\n\r\n } else {\r\n CreateUpdateGoal(saveData);\r\n }\r\n\r\n function CreateUpdateGoal(saveData) {\r\n engagementGoalsService.CreateUpdateGoal(saveData).then(CreateUpdateGoalCallback);\r\n\r\n function CreateUpdateGoalCallback(response) {\r\n //var isCreated = vm.goal.Id <= 0;\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response);\r\n if (vm.goal.ImageUrl) {\r\n vm.Image = {\r\n FileUrl: vm.goal.ImageUrl\r\n }; \r\n }\r\n vm.NewComment = undefined;\r\n vm.OriginalType = vm.goal.GoalTypeId;\r\n vm.OriginalIsNegative = vm.goal.IsNegative;\r\n if (vm.FirstTimeCreate) {\r\n $rootScope.$broadcast('GOALCREATED', vm.goal);\r\n vm.goal = {\r\n DateFromLocal: vm.SelectedPeriod.StartDate.format('YYYY-MM-DD'),\r\n DateToLocal: vm.SelectedPeriod.EndDate.format('YYYY-MM-DD'),\r\n IsActive: true,\r\n Text: '',\r\n IsLocked: false,\r\n Id: 0\r\n };\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Mål skapat')\r\n .position('bottom right')\r\n );\r\n } else {\r\n vm.EditMode = false;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Mål uppdaterat')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n } \r\n } \r\n }\r\n\r\n function LockGoal(ev) {\r\n var confirm = $mdDialog.confirm()\r\n .title('Vill du låsa målet?')\r\n .textContent('Du kan inte redigera målet igen efter att det låsts')\r\n .ariaLabel('Vill du låsa målet?')\r\n .targetEvent(ev)\r\n .ok('Lås')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.LockGoal(vm.goal.Id).then(LockGoalCallback); \r\n }, function () {\r\n \r\n });\r\n \r\n function LockGoalCallback(response) {\r\n vm.goal.IsLocked = true;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('The goal is now locked')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function GenerateEditMonths() {\r\n var months = moment(vm.goal.DateToLocal).diff(vm.goal.DateFromLocal, 'months') + 1;\r\n\r\n vm.EditMonths = [];\r\n\r\n for(var i = 0; i < months; i++) {\r\n var date = moment(vm.goal.DateFromLocal).endOf('month');\r\n if(i > 0) {\r\n date = moment(vm.goal.DateFromLocal).add(i, 'months').endOf('month');\r\n }\r\n vm.EditMonths.push({\r\n Name: moment(date).format('DD MMMM'),\r\n Value: moment(date).format('YYYY-MM-DD HH:mm:ss')\r\n });\r\n }\r\n\r\n vm.SelectedNewMonth = vm.EditMonths[vm.EditMonths.length - 1];\r\n\r\n $rootScope.$watch(function() { return vm.SelectedNewMonth; }, function(newVal, oldVal) {\r\n if(!vm.isRoot && newVal) {\r\n vm.goal.DateToLocal = newVal.Value;\r\n }\r\n });\r\n }\r\n\r\n function GetGoal() {\r\n engagementGoalsService.GetGoal(vm.goalId).then(GetGoalCallback);\r\n\r\n function GetGoalCallback(response) {\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response); \r\n \r\n GenerateEditMonths();\r\n\r\n if (vm.goal.ImageUrl) {\r\n vm.Image = {\r\n FileUrl: vm.goal.ImageUrl\r\n }; \r\n }\r\n\r\n vm.isRoot = vm.goal.ParentGoalId <= 0;\r\n\r\n vm.OriginalType = vm.goal.GoalTypeId;\r\n vm.OriginalIsNegative = vm.goal.IsNegative;\r\n\r\n $q.when(vm.goalTypesLoaded).then(function () {\r\n if (vm.goal.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue('Id', vm.goal.GoalTypeId);\r\n }\r\n });\r\n\r\n $q.when(vm.rootGoalsLoaded).then(function () {\r\n if (vm.goal.ParentGoalId > 0) {\r\n vm.SelectedRootGoal = vm.RootGoals.GetItemByValue('Id', vm.goal.ParentGoalId);\r\n }\r\n });\r\n }\r\n } \r\n\r\n function Init() { \r\n vm.GetGoalTypes();\r\n vm.GetRootGoals();\r\n\r\n if (vm.goalId) {\r\n vm.GetGoal();\r\n } else {\r\n vm.goal = {\r\n DateFromLocal: vm.SelectedPeriod.StartDate.format('YYYY-MM-DD'),\r\n DateToLocal: vm.SelectedPeriod.EndDate.format('YYYY-MM-DD'),\r\n IsActive: true,\r\n Text: '',\r\n IsLocked: false,\r\n Id: 0\r\n };\r\n vm.EditMode = true;\r\n vm.FirstTimeCreate = true;\r\n }\r\n \r\n vm.NewProgressDate = BizPartCoreHelpers.getDateNow().format('YYYY-MM-DD');\r\n } \r\n\r\n $scope.$watch(\"vm.goal.ProgressSum\", function () {\r\n if (vm.goal) {\r\n vm.NewProgress = vm.goal.ProgressSum;\r\n\r\n var percent = vm.goal.ProgressSumInPercent;\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n vm.data = [Math.round(percent), Math.round(100 - percent)];\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.NewProgress\", function () {\r\n if (vm.goal && !vm.EditMode && vm.NewProgress !== vm.goal.ProgressSum) {\r\n vm.EditMode = true;\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.SelectedYear\", function () {\r\n if (vm.goal && vm.goal.Id <= 0 && !vm.SelectedRootGoal && vm.SelectedYear) {\r\n vm.goal.DateFromLocal = vm.SelectedYear.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedYear.EndDate.format('YYYY-MM-DD');\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.SelectedRootGoal\", function () {\r\n if (vm.goal && vm.goal.Id <= 0) {\r\n if (vm.SelectedRootGoal) {\r\n vm.goal.DateFromLocal = vm.SelectedPeriod.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedPeriod.EndDate.format('YYYY-MM-DD');\r\n vm.goal.IsNegative = vm.SelectedRootGoal.IsNegative;\r\n vm.SelectedType = vm.SelectedRootGoal.GoalType;\r\n } else {\r\n vm.goal.DateFromLocal = vm.SelectedYear.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedYear.EndDate.format('YYYY-MM-DD');\r\n } \r\n }\r\n }); \r\n\r\n vm.SelectedRootGoal\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n}());","(function () {\r\n angular\r\n .module('bizPartEngage')\r\n .directive('bizOneGoalTask', bizOneGoalTaskDirective);\r\n\r\n bizOneGoalTaskDirective.$inject = ['bizCore'];\r\n\r\n function bizOneGoalTaskDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n task: '=',\r\n },\r\n templateUrl: bizCoreProvider.getView(\r\n 'bizOneGoalTaskDirective',\r\n 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneTask.html'\r\n ),\r\n bindToController: true,\r\n controller: bizOneGoalTaskController,\r\n controllerAs: 'vm',\r\n };\r\n\r\n bizOneGoalTaskController.$inject = [\r\n 'modules.goals.service',\r\n '$q',\r\n '$scope',\r\n '$state',\r\n '$mdToast',\r\n 'bizValidationService',\r\n '$mdDialog',\r\n ];\r\n\r\n return directive;\r\n\r\n function bizOneGoalTaskController(\r\n engagementGoalsService,\r\n $q,\r\n $scope,\r\n $state,\r\n $mdToast,\r\n bizValidationService,\r\n $mdDialog\r\n ) {\r\n var vm = this;\r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.DateSettings = {\r\n min: moment(vm.SelectedPeriod.StartDate),\r\n max: moment(vm.SelectedPeriod.EndDate),\r\n };\r\n\r\n vm.EditMode = false;\r\n vm.taskIsLoadedDefer = $q.defer();\r\n vm.taskIsLoaded = vm.taskIsLoadedDefer.promise;\r\n\r\n vm.Settings = {\r\n display: 'bubble',\r\n touchUi: false,\r\n buttons: ['Ok', 'Cancel'],\r\n dateWheels: 'mmyy',\r\n max: moment().add(1, 'day'),\r\n };\r\n\r\n vm.Init = Init;\r\n vm.GetActivities = GetActivities;\r\n vm.Save = Save;\r\n vm.CancelEdit = CancelEdit;\r\n vm.SetTaskLoaded = SetTaskLoaded;\r\n vm.SetTaskDates = SetTaskDates;\r\n vm.CompleteTask = CompleteTask;\r\n vm.GetGoalTypes = GetGoalTypes;\r\n vm.DeleteTask = DeleteTask;\r\n vm.UncompleteTask = UncompleteTask;\r\n\r\n function CompleteTask() {\r\n engagementGoalsService\r\n .CompleteTask(vm.task)\r\n .then(CompleteTaskCallback);\r\n\r\n function CompleteTaskCallback(response) {\r\n vm.task.IsCompleted = true;\r\n $state.reload();\r\n //$mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('The task has been completed')\r\n // .position('bottom right')\r\n //);\r\n }\r\n }\r\n\r\n function UncompleteTask() {\r\n engagementGoalsService\r\n .UncompleteTask(vm.task.Id)\r\n .then(UncompleteTaskCallback);\r\n\r\n function UncompleteTaskCallback(response) {\r\n vm.task.IsCompleted = false;\r\n $state.reload();\r\n }\r\n }\r\n\r\n function CancelEdit() {\r\n if (~~vm.task.Id > 0) {\r\n vm.EditMode = false;\r\n } else {\r\n $state.go('base.modules.goals.tasks');\r\n }\r\n }\r\n\r\n function GetActivities() {\r\n engagementGoalsService\r\n .GetActivitiesByGoalDate()\r\n .then(GetActivitiesCallback);\r\n\r\n function GetActivitiesCallback(response) {\r\n var activities = BizPartCoreHelpers.getResponseValue(\r\n response,\r\n []\r\n );\r\n //for (var i = 0; i < activities.length; i++) {\r\n // //activities[i].Name = activities[i].GoalName + ': ' + activities[i].Text;\r\n //}\r\n vm.AllActivities = activities;\r\n\r\n //if (vm.AllActivities.length) {\r\n // vm.SelectedActivity = vm.AllActivities[0];\r\n //}\r\n\r\n $q.when(vm.taskIsLoaded).then(function () {\r\n var goalFilteredActivities = [];\r\n for (var i = 0; i < vm.AllActivities.length; i++) {\r\n if (\r\n vm.AllActivities[i].Id ===\r\n vm.task.LinkedObjectId\r\n ) {\r\n vm.SelectedActivity = vm.AllActivities[i];\r\n goalFilteredActivities.push(\r\n vm.AllActivities[i]\r\n );\r\n } else if (\r\n vm.AllActivities[i].GoalId === vm.task.GoalId\r\n ) {\r\n goalFilteredActivities.push(\r\n vm.AllActivities[i]\r\n );\r\n }\r\n }\r\n\r\n if (vm.task.GoalId) {\r\n vm.AllActivities = goalFilteredActivities;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function DeleteTask() {\r\n var confirm = $mdDialog\r\n .confirm()\r\n .title('Radera')\r\n .textContent(\r\n 'Är du säker på att du vill radera denna \"Att göra\"?'\r\n )\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(\r\n function () {\r\n engagementGoalsService\r\n .DeleteTask(vm.task.Id)\r\n .then(function (response) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n });\r\n },\r\n function () {}\r\n );\r\n }\r\n\r\n function Save() {\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n return;\r\n\r\n vm.task.DateLocal = vm.EditDate;\r\n vm.task.LinkedObjectId = vm.SelectedActivity.Id;\r\n vm.task.GoalTypeId = vm.SelectedType ? vm.SelectedType.Id : 0;\r\n\r\n var saveData = {\r\n Todo: vm.task,\r\n Comment: vm.NewComment,\r\n };\r\n\r\n if (\r\n saveData.Todo.GoalValue &&\r\n typeof saveData.Todo.GoalValue !== 'number'\r\n )\r\n saveData.Todo.GoalValue = ~~saveData.Todo.GoalValue.replace(\r\n /\\s/g,\r\n ''\r\n );\r\n\r\n engagementGoalsService\r\n .CreateUpdateTask(saveData)\r\n .then(CreateUpdateTaskCallback);\r\n\r\n function CreateUpdateTaskCallback(response) {\r\n // if(~~vm.task.Id <= 0) {\r\n\r\n // }\r\n\r\n window.history.back();\r\n\r\n // vm.NewComment = undefined;\r\n // vm.task = BizPartCoreHelpers.getResponseValue(response);\r\n // vm.SetTaskDates();\r\n // vm.EditMode = false;\r\n\r\n // $mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('The task has been saved')\r\n // .position('bottom right')\r\n // );\r\n }\r\n }\r\n\r\n function SetTaskDates() {\r\n if (vm.task.DateLocal) {\r\n vm.EditDate = moment(vm.task.DateLocal);\r\n }\r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService\r\n .GetGoalTypes()\r\n .then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(\r\n response,\r\n []\r\n );\r\n\r\n $q.when(vm.taskIsLoaded).then(function () {\r\n if (vm.task.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue(\r\n 'Id',\r\n vm.task.GoalTypeId\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetGoalTypes();\r\n if (vm.task && vm.task.Id === 'new') {\r\n vm.task = {\r\n Text: '',\r\n GoalId: vm.task.GoalId,\r\n LinkedObjectId: vm.task.ActivityId,\r\n };\r\n //vm.EditDate = engagementGoalsService.GetSelectedQuarter().Date,\r\n vm.EditMode = true;\r\n }\r\n vm.GetActivities();\r\n }\r\n\r\n function SetTaskLoaded() {\r\n vm.SetTaskDates();\r\n vm.taskIsLoadedDefer.resolve('');\r\n vm.unbindTaskWatch();\r\n }\r\n\r\n vm.unbindTaskWatch = $scope.$watch('vm.task', function () {\r\n if (vm.task !== undefined) {\r\n vm.SetTaskLoaded();\r\n }\r\n });\r\n\r\n //does not work :()\r\n //$scope.$watch(\"vm.SelectedActivity\", function () {\r\n // if (vm.SelectedActivity) {\r\n // vm.TaskDatePicker.settings.min = moment(vm.SelectedActivity.GoalFromDate);\r\n // vm.TaskDatePicker.settings.max = moment(vm.SelectedActivity.GoalToDate);\r\n // }\r\n //});\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('bizPartEngage').directive('bizGoalTaskStatus', bizGoalTaskStatusDirective);\r\n\r\n bizGoalTaskStatusDirective.$inject = [\"bizCore\"];\r\n\r\n function bizGoalTaskStatusDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n task: '=task'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizGoalTaskStatus', 'FrontEnd/Modules/EngagementGoals/Views/Directives/taskStatus.html'),\r\n bindToController: true,\r\n controller: bizGoalTaskStatusController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizGoalTaskStatusController.$inject = [];\r\n\r\n return directive;\r\n\r\n function bizGoalTaskStatusController() {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.IsExpired = IsExpired;\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n } \r\n \r\n\r\n function Init() {\r\n if (vm.task.IsCompleted) {\r\n vm.task.Status = 30;\r\n }\r\n else if (vm.IsExpired(vm.task)) {\r\n vm.task.Status = 10;\r\n }\r\n else if (!vm.IsExpired(vm.task) && !vm.task.IsCompleted) {\r\n vm.task.Status = 20;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init; \r\n }\r\n }\r\n\r\n}());","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.activitylist', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.activity', activityController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n activityController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n \r\n \r\n vm.$onInit = function () { \r\n \r\n }\r\n }\r\n\r\n function activityController(engagementGoalsService, $stateParams) {\r\n var vm = this; \r\n\r\n vm.activityId = ~~$stateParams.id;\r\n vm.goalId = ~~$stateParams.goalId;\r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.Date = BizPartCoreHelpers.getDateNow();\r\n\r\n vm.GetOneActivity = GetOneActivity;\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetOneActivity(id) { \r\n engagementGoalsService.GetOneActivity(id).then(GetOneActivityCallback);\r\n\r\n function GetOneActivityCallback(response) {\r\n vm.activity = BizPartCoreHelpers.getResponseValue(response); \r\n }\r\n }\r\n\r\n\r\n vm.$onInit = function () {\r\n if (vm.activityId > 0) {\r\n vm.GetOneActivity(vm.activityId);\r\n } else { \r\n vm.activity = {\r\n Id: 0,\r\n GoalId: vm.goalId\r\n };\r\n } \r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.calendar', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.calendar.service\", \"modules.goals.service\", \"$stateParams\", \"mobiEvent\"];\r\n\r\n function indexController(calendarService, engagementGoalsService, $stateParams, event) {\r\n var vm = this;\r\n\r\n vm.Tasks = [];\r\n vm.events = [];\r\n\r\n vm.GetTasks = GetTasks;\r\n\r\n function GetTasks() { \r\n engagementGoalsService.GetTasks(true, BizPartCoreHelpers.getDateNow().subtract(3, 'months'), BizPartCoreHelpers.getDateNow().add(3, 'months')).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n vm.Tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n vm.events = [];\r\n for (var i = 0; i < vm.Tasks.length; i++) {\r\n var task = vm.Tasks[i];\r\n var color = \"#65AEF2\";\r\n \r\n if(task.IsCompleted) {\r\n color = \"#3dd452\";\r\n }\r\n\r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.GetTasks();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.goals.calendar.service', calendarService);\r\n\r\n calendarService.$inject = [\"$http\"];\r\n\r\n function calendarService($http) {\r\n\r\n\r\n }\r\n\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.dashboard', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"bizUser\", \"mobiEvent\", \"$rootScope\", \"$filter\"];\r\n\r\n function indexController(engagementGoalsService, bizUser, event, $rootScope, $filter) {\r\n var vm = this;\r\n vm.Tasks = [];\r\n\r\n vm.labels = [\"Framsteg\", \"Kvar\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75 };\r\n vm.data = [0, 100];\r\n vm.UserProgressSum = {};\r\n vm.UserProgressSum.ProgressValue = 0;\r\n\r\n vm.events = [];\r\n\r\n vm.LoggedInUserId = bizUser.getLoggedInUser().Id; \r\n\r\n vm.Init = Init;\r\n\r\n vm.GetProgressSum = GetProgressSum;\r\n vm.GetTasks = GetTasks;\r\n vm.GoToNextPeriod = GoToNextPeriod;\r\n vm.GoToPreviousPeriod = GoToPreviousPeriod;\r\n vm.IsSelectedPeriodInCurrentYear = IsSelectedPeriodInCurrentYear;\r\n vm.GetGoals = GetGoals;\r\n\r\n function GoToNextPeriod() {\r\n engagementGoalsService.IncreaseSelectedPeriod();\r\n $rootScope.$broadcast('GOAL_NEW_DATE_SELECTED');\r\n vm.Init();\r\n }\r\n\r\n function GoToPreviousPeriod() {\r\n engagementGoalsService.DecreaseSelectedPeriod();\r\n $rootScope.$broadcast('GOAL_NEW_DATE_SELECTED');\r\n vm.Init();\r\n }\r\n\r\n function IsSelectedPeriodInCurrentYear() {\r\n var selected = engagementGoalsService.GetSelectedPeriod().StartDate;\r\n return BizPartCoreHelpers.getDateNow().year() == moment(selected).year();\r\n }\r\n \r\n\r\n function GetProgressSum() {\r\n \r\n engagementGoalsService.GetProgressSum(true).then(GetProgressSumCallback);\r\n\r\n function GetProgressSumCallback(response) {\r\n vm.ProgressSum = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(vm.ProgressSum);\r\n\r\n if (vm.ProgressSum.length > 0) {\r\n vm.UserProgressSum = vm.ProgressSum.GetItemByValue('UserId', vm.LoggedInUserId);\r\n var progressValue = vm.UserProgressSum.ProgressValue; \r\n if (progressValue > 100) {\r\n progressValue = 100;\r\n }\r\n vm.data = [Math.round(progressValue), Math.round(100 - progressValue)];\r\n } \r\n } \r\n }\r\n\r\n function GetTasks() {\r\n engagementGoalsService.GetTasks(true, moment().subtract(3, 'months'), moment().add(3, 'months')).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n vm.Tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n vm.events = [];\r\n for(var i = 0; i < vm.Tasks.length; i++) {\r\n var task = vm.Tasks[i];\r\n var color = \"#65AEF2\";\r\n \r\n if(task.IsCompleted) {\r\n color = \"#3dd452\";\r\n }\r\n\r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.NegativeGoals = $filter('filter')(goals, { IsNegative: true });\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.GetProgressSum();\r\n vm.GetTasks();\r\n vm.GetGoals();\r\n }\r\n \r\n vm.$onInit = function () {\r\n vm.Init();\r\n }\r\n\r\n $rootScope.$on('GOALPROGRESSUPDATED', function (event) { \r\n vm.GetProgressSum();\r\n });\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.engagementgoals', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.onegoal', oneGoalController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$filter\"];\r\n oneGoalController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService, $filter) {\r\n var vm = this; \r\n vm.RootGoals = []; \r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n\r\n vm.GetRootGoals = GetRootGoals;\r\n\r\n vm.lblFunction = lblFunction;\r\n\r\n function lblFunction(val, max, goal) {\r\n return Math.round(val) + goal.GoalType.Suffix;\r\n }\r\n\r\n function GetRootGoals() {\r\n engagementGoalsService.GetGoals(true).then(GetRootGoalsCallback);\r\n\r\n function GetRootGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.RootGoals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n }\r\n }\r\n\r\n vm.$onInit = function () { \r\n vm.GetRootGoals();\r\n }\r\n }\r\n\r\n function oneGoalController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n //vm.GetOneGoal = GetOneGoal;\r\n\r\n vm.goalId = ~~$stateParams.id; \r\n vm.newRoot = $stateParams.id === 'new-root'; \r\n\r\n //function GetOneGoal(id) {\r\n // engagementGoalsService.GetGoal(id).then(GetGoalCallback);\r\n\r\n // function GetGoalCallback(response) {\r\n // vm.goal = BizPartCoreHelpers.getResponseValue(response); \r\n // }\r\n //}\r\n\r\n vm.$onInit = function () {\r\n //if (vm.goalId > 0) {\r\n // vm.GetOneGoal(vm.goalId);\r\n //} else {\r\n // vm.goal = {\r\n // Id: 'new'\r\n // };\r\n //}\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.managersettings', indexController); \r\n\r\n indexController.$inject = [\"modules.goals.service\", \"base.service\", \"$mdToast\", \"$rootScope\", \"$mdDialog\"]; \r\n\r\n function indexController(engagementGoalsService, baseService, $mdToast, $rootScope, $mdDialog) {\r\n var vm = this; \r\n\r\n vm.ReportPeriodTypes = [\r\n {\r\n Name: 'Vecka',\r\n Id: 1\r\n },\r\n {\r\n Name: 'Månad',\r\n Id: 2\r\n }\r\n ];\r\n\r\n vm.DatePickerSettings = {\r\n min: BizPartCoreHelpers.getDateNow().startOf('year')\r\n };\r\n\r\n vm.DayList = [];\r\n\r\n vm.Init = Init; \r\n vm.GetMeetingInfo = GetMeetingInfo;\r\n vm.SavePeriodMode = SavePeriodMode;\r\n vm.SaveMeetingInfo = SaveMeetingInfo;\r\n vm.GetMeetings = GetMeetings;\r\n vm.SaveMeeting = SaveMeeting;\r\n vm.DeleteMeeting = DeleteMeeting;\r\n vm.MeetingHasPassed = MeetingHasPassed;\r\n\r\n function SavePeriodMode() {\r\n engagementGoalsService.SetPeriodMode(vm.PeriodMode, vm.SelectedUnit.Id).then(SetPeriodModeCallback);\r\n\r\n function SetPeriodModeCallback(response) {\r\n vm.OriginalPeriodMode = vm.PeriodMode;\r\n\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Period ändrad')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function SaveMeetingInfo() {\r\n\r\n engagementGoalsService.SetMeetingInfo(vm.MeetingInfo.PeriodType, vm.MeetingInfo.MeetingDay, vm.SelectedUnit.Id).then(SetMeetingInfoCallback);\r\n\r\n function SetMeetingInfoCallback(response) {\r\n vm.OriginalMeetingInfo = angular.copy(vm.MeetingInfo);\r\n\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Rapportinställningar ändrad')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function SaveMeeting() {\r\n \r\n engagementGoalsService.CreateUpdateMeeting({\r\n Date: vm.AddMeetingDate,\r\n UnitId: vm.SelectedUnit.Id\r\n }).then(CreateUpdateMeetingCallback);\r\n\r\n function CreateUpdateMeetingCallback(response) {\r\n var meeting = BizPartCoreHelpers.getResponseValue(response);\r\n vm.MeetingList.push(meeting);\r\n\r\n vm.ShowNewMeeting = false;\r\n vm.AddMeetingDate = undefined;\r\n }\r\n }\r\n\r\n function GetMeetingInfo() {\r\n engagementGoalsService.GetMeetingInfo().then(GetMeetingInfoCallback);\r\n\r\n function GetMeetingInfoCallback(response) {\r\n vm.MeetingInfo = BizPartCoreHelpers.getResponseValue(response);\r\n vm.OriginalMeetingInfo = angular.copy(vm.MeetingInfo);\r\n }\r\n }\r\n\r\n function GetMeetings() {\r\n engagementGoalsService.GetMeetings(vm.SelectedUnit.Id).then(GetMeetingsCallback);\r\n\r\n function GetMeetingsCallback(response) {\r\n vm.MeetingList = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function DeleteMeeting(meeting) { \r\n \r\n var confirm = $mdDialog.confirm()\r\n .title('Radera')\r\n .textContent('Är du säker på att du vill radera detta \"mötet\"?')\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.DeleteMeeting(meeting.Id).then(DeleteMeetingCallback);\r\n }, function () {\r\n\r\n });\r\n \r\n \r\n function DeleteMeetingCallback(response) {\r\n var index = vm.MeetingList.indexOf(meeting);\r\n vm.MeetingList.splice(index, 1);\r\n }\r\n }\r\n\r\n function MeetingHasPassed(meeting) { \r\n return BizPartCoreHelpers.getDateNow().startOf('day') > moment(meeting.Date).startOf('day'); \r\n }\r\n\r\n function Init() { \r\n vm.User = $rootScope.LoggedInUser;\r\n if (vm.User.Units.length > 0) {\r\n vm.SelectedUnit = vm.User.Units[0];\r\n }\r\n\r\n for (var i = 1; i < 8; i++) {\r\n vm.DayList.push({\r\n Name: moment.weekdays(i),\r\n Id: i\r\n });\r\n }\r\n\r\n vm.GetMeetingInfo();\r\n vm.PeriodModeList = engagementGoalsService.GetPeriodModes();\r\n vm.PeriodMode = vm.OriginalPeriodMode = baseService.GetFrontEndModuleSettingValue('Goals', 'PeriodMode');\r\n vm.GetMeetings(); \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n \r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.resultreport', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$q\", \"bizUser\", \"$stateParams\", \"$filter\", \"mobiEvent\", \"$mdToast\"];\r\n\r\n function indexController(goalService, $q, bizUser, $stateParams, $filter, event, $mdToast) {\r\n var vm = this\r\n\r\n vm.PeriodTypes = ['Week', 'Month']; \r\n vm.PeriodType = vm.PeriodTypes[0]\r\n vm.PeriodDayBreak = 5;\r\n\r\n vm.labels = [\"Framsteg\", \"Kvar\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75 };\r\n vm.data = [0, 100];\r\n vm.userData = [0, 100];\r\n vm.UserProgressSum = {};\r\n vm.UserProgressSum.ProgressValue = 0;\r\n vm.ToolTipDateFormat = \"DD MMM\";\r\n vm.RootGoals = [];\r\n vm.Goals = [];\r\n\r\n vm.CommentCount = 0;\r\n\r\n vm.UserId = ~~$stateParams.userid;\r\n if (vm.UserId <= 0) {\r\n vm.UserId = bizUser.getLoggedInUser().Id;\r\n } \r\n\r\n vm.PeriodCommentSettings = {\r\n NewCommentData: {\r\n PreventReplies: true\r\n }\r\n };\r\n\r\n vm.NextPeriodCommentSettings = {\r\n PreventReplies: true,\r\n HideDate: true\r\n };\r\n \r\n vm.CurrentDate = BizPartCoreHelpers.getDateNow();\r\n vm.SelectedPeriod = goalService.GetSelectedPeriod();\r\n\r\n //not used anymore?\r\n //vm.IsFirstWeekInQuarter = goalService.GetIsFirstWeekInQuarter(vm.CurrentDate);\r\n\r\n vm.PeriodLengthInDays = 7;\r\n\r\n vm.TasksInPeriod = [];\r\n vm.TasksInPreviousPeriod = [];\r\n\r\n vm.LoadTasks = LoadTasks; \r\n //vm.GetCurrentProgress = GetCurrentProgress;\r\n //vm.GetProgressPeriodCompare = GetProgressPeriodCompare;\r\n vm.GetTodoCount = GetTodoCount;\r\n //vm.PopulateProgressChart = PopulateProgressChart; \r\n //vm.GetUserProgressSum = GetUserProgressSum; \r\n //vm.IsExpired = IsExpired;\r\n vm.GetGoalAndActivityComments = GetGoalAndActivityComments;\r\n vm.GetGoals = GetGoals;\r\n vm.lblFunction = lblFunction; \r\n\r\n function lblFunction(val, max, goal) {\r\n return Math.round(val) + goal.GoalType.Suffix;\r\n }\r\n vm.GetGoalsForUsersInSameUnit = GetGoalsForUsersInSameUnit;\r\n\r\n function GetGoalsForUsersInSameUnit() {\r\n goalService.GetGoalsForUsersInSameUnit().then(GetDataCallback);\r\n\r\n function GetDataCallback(response) {\r\n vm.UsersInSameUnit = response.data;\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n goalService.GetGoals(true).then(GetGoalsCallback); \r\n \r\n function GetGoalsCallback(response) {\r\n var allGoals = response.data;\r\n vm.Goals = [];\r\n vm.RootGoals = [];\r\n \r\n for(var i = 0; i < allGoals.length; i++) {\r\n if(allGoals[i].ParentGoalId > 0) {\r\n vm.Goals.push(allGoals[i]);\r\n }\r\n else {\r\n vm.RootGoals.push(allGoals[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //function IsExpired(task) {\r\n // return !task.IsCompleted && moment(task.DateLocal) < moment();\r\n //} \r\n\r\n //function PopulateProgressChart() {\r\n // vm.ProgressChartOptions = {\r\n // maintainAspectRatio: false,\r\n // legend: {\r\n // display: true\r\n // },\r\n // scales: {\r\n // yAxes: [{\r\n // ticks: {\r\n // beginAtZero: true,\r\n // suggestedMax: 100\r\n // }\r\n // }]\r\n // },\r\n // layout: {\r\n // padding: {\r\n // left: 10\r\n // }\r\n // }\r\n // };\r\n \r\n // goalService.GetProgressByWeek(vm.UserId, vm.CurrentDate).then(GetProgressByWeekCallback); \r\n\r\n // function GetProgressByWeekCallback(response) {\r\n // var progressByWeek = BizPartCoreHelpers.getResponseValue(response); \r\n\r\n // vm.ProgressChartLabels = [];\r\n // vm.ProgressChartData = [];\r\n // vm.ProgressChartSeries = [];\r\n\r\n // var thisWeek = moment().week();\r\n // var thisYear = moment().year();\r\n \r\n // var data = []; \r\n // //starting point\r\n // vm.ProgressChartLabels.push('');\r\n // data.push(0);\r\n // for (var i = 0; i < progressByWeek.length; i++) {\r\n // vm.ProgressChartLabels.push('v' + progressByWeek[i].Week);\r\n // if (progressByWeek[i].Week <= thisWeek && progressByWeek[i].Year <= thisYear) {\r\n // data.push(progressByWeek[i].ProgressSumAggregated); \r\n // } \r\n // } \r\n\r\n // vm.ProgressChartSeries.push('Summering av dina inrapporterade målutfall per vecka.');\r\n // vm.ProgressChartData.push(data); \r\n // vm.ThisWeekData = progressByWeek.GetItemByValue('Week', moment().week()); \r\n // } \r\n //}\r\n\r\n function LoadTasks() { \r\n goalService.GetTasks(true, vm.PeriodStart, vm.PeriodEnd, vm.UserId).then(GetTasksCallback);\r\n goalService.GetTasks(false, vm.NextPeriodStart, vm.NextPeriodEnd, vm.UserId).then(GetTasksNextPeriodCallback);\r\n\r\n function GetTasksCallback(response) { \r\n vm.TasksInPeriod = BizPartCoreHelpers.getResponseValue(response);\r\n var completedTasks = 0;\r\n var notCompletedTasks = 0;\r\n vm.events = [];\r\n\r\n for (var i = 0; i < vm.TasksInPeriod.length; i++) {\r\n var task = vm.TasksInPeriod[i];\r\n var color = \"#65AEF2\";\r\n\r\n if (vm.TasksInPeriod[i].IsCompleted) {\r\n completedTasks++;\r\n color = \"#3dd452\";\r\n } else {\r\n notCompletedTasks++;\r\n }\r\n \r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n vm.CompletedTasksForUser = completedTasks;\r\n vm.NotCompletedTasksForUser = notCompletedTasks;\r\n } \r\n\r\n function GetTasksNextPeriodCallback(response) {\r\n vm.TasksInNextPeriod = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n //function GetProgressPeriodCompare() {\r\n // goalService.GetProgressSum(true, vm.CurrentDate, vm.PeriodStart, vm.PeriodEnd, vm.PreviousPeriodStart, vm.PreviousPeriodEnd).then(GetProgressForPeriodCompareCallback);\r\n\r\n // function GetProgressForPeriodCompareCallback(response) {\r\n // vm.ProgressForPeriodCompare = BizPartCoreHelpers.getResponseValue(response); \r\n // vm.UserProgressForPeriodCompare = vm.ProgressForPeriodCompare.GetItemByValue('UserId', vm.UserId); \r\n // }\r\n //}\r\n\r\n //function GetCurrentProgress() {\r\n // goalService.GetProgressSum(true).then(GetProgressSumForUserCallback);\r\n\r\n // function GetProgressSumForUserCallback(response) {\r\n // var unitProgress = BizPartCoreHelpers.getResponseValue(response); \r\n // vm.CurrentProgressPercent = unitProgress.GetItemByValue('UserId', vm.UserId);\r\n\r\n // var totalProgressSum = 0;\r\n // for (var i = 0; i < unitProgress.length; i++) {\r\n // totalProgressSum += unitProgress[i].ProgressValue;\r\n // }\r\n // vm.TotalProgressSum = unitProgress.length > 0 ? totalProgressSum / unitProgress.length : 0;\r\n\r\n // var totalProgress = vm.TotalProgressSum;\r\n // if (totalProgress > 100) {\r\n // totalProgress = 100;\r\n // }\r\n // vm.data = [Math.round(totalProgress), Math.round(100 - totalProgress)];\r\n // }\r\n //}\r\n\r\n function GetTodoCount() {\r\n $q.all([\r\n goalService.GetTodoCountForUsersInSameUnit(vm.PeriodStart, vm.PeriodEnd),\r\n goalService.GetTodoCountForUsersInSameUnit(vm.PreviousPeriodStart, vm.PreviousPeriodEnd)\r\n ]).then(GetTodoCountsCallback);\r\n\r\n function GetTodoCountsCallback(result) {\r\n var inPeriod = BizPartCoreHelpers.getResponseValue(result[0]);\r\n var prevPeriod = BizPartCoreHelpers.getResponseValue(result[1]);\r\n\r\n vm.TasksCompletedInPeriod = inPeriod.Completed;\r\n vm.TasksNotCompletedInPeriod = inPeriod.NotCompleted;\r\n\r\n var completedInPreviousPeriod = prevPeriod.Completed;\r\n var notCompletedInPreviousPeriod = prevPeriod.NotCompleted; \r\n\r\n vm.TasksCompletedInPreviousPeriod = completedInPreviousPeriod;\r\n vm.TasksNotCompletedInPreviousPeriod = notCompletedInPreviousPeriod;\r\n\r\n vm.TasksCompletedChange = vm.TasksCompletedInPeriod - completedInPreviousPeriod;\r\n vm.TaksNotCompletedChange = vm.TasksNotCompletedInPeriod - notCompletedInPreviousPeriod;\r\n\r\n vm.TasksCompletedChangePercent = completedInPreviousPeriod > 0 ? (vm.TasksCompletedChange / completedInPreviousPeriod) * 100 : 0;\r\n vm.TasksNotCompletedChangePercent = notCompletedInPreviousPeriod > 0 ? (vm.TaksNotCompletedChange / notCompletedInPreviousPeriod) * 100 : 0;\r\n }\r\n } \r\n \r\n //function GetUserProgressSum() {\r\n // goalService.GetProgressSum(true).then(GetProgressSumCallback);\r\n\r\n // function GetProgressSumCallback(response) {\r\n \r\n // var progressSum = BizPartCoreHelpers.getResponseValue(response);\r\n\r\n // if (progressSum.length > 0) {\r\n // vm.UserProgressSum = progressSum.GetItemByValue('UserId', vm.UserId);\r\n // var progressValue = vm.UserProgressSum.ProgressValue;\r\n // if (progressValue > 100) {\r\n // progressValue = 100;\r\n // }\r\n // vm.userData = [Math.round(progressValue), Math.round(100 - progressValue)];\r\n // }\r\n // }\r\n //}\r\n\r\n function GetGoalAndActivityComments() {\r\n goalService.GetGoalAndActivityComments(vm.PeriodStart, vm.PeriodEnd).then(GetGoalAndActivityCommentsCallback);\r\n\r\n function GetGoalAndActivityCommentsCallback(response) {\r\n vm.GoalAndActivityComments = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n } \r\n \r\n vm.$onInit = function () { \r\n\r\n goalService.GetMeetingInfo().then(function (response) {\r\n \r\n var meetingInfo = BizPartCoreHelpers.getResponseValue(response);\r\n\r\n if (meetingInfo.PeriodType === 1) {\r\n var periodEnd = BizPartCoreHelpers.getDateNow();\r\n while (periodEnd.isoWeekday() !== meetingInfo.MeetingDay) {\r\n periodEnd.add(1, 'days');\r\n }\r\n\r\n vm.PeriodEnd = moment(periodEnd).endOf('day');\r\n vm.PeriodStart = moment(vm.PeriodEnd).add(-6, 'days').startOf('day');\r\n\r\n vm.PreviousPeriodEnd = moment(vm.PeriodStart).add(-1, 'days').endOf('day');\r\n vm.PreviousPeriodStart = moment(vm.PreviousPeriodEnd).add(-6, 'days').startOf('day');\r\n\r\n vm.NextPeriodStart = moment(vm.PeriodEnd).add(1, 'days').startOf('day');\r\n vm.NextPeriodEnd = moment(vm.NextPeriodStart).add(6, 'days').endOf('day');\r\n } else {\r\n\r\n if (!meetingInfo.CurrentMeeting) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Inget möte finns inlagt. Kontakta din teamleader.')\r\n .position('bottom right')\r\n );\r\n } else {\r\n \r\n vm.PeriodStart = moment(meetingInfo.CurrentMeeting.PeriodStart); \r\n vm.PeriodEnd = moment(meetingInfo.CurrentMeeting.PeriodEnd);\r\n\r\n if (meetingInfo.PreviousMeeting && meetingInfo.PreviousMeeting.PeriodEnd) {\r\n vm.PreviousPeriodEnd = moment(meetingInfo.PreviousMeeting.PeriodEnd);\r\n } else {\r\n vm.PreviousPeriodEnd = moment(vm.PeriodStart).add(-1, 'days').endOf('day');\r\n }\r\n\r\n if (meetingInfo.PreviousMeeting && meetingInfo.PreviousMeeting.PeriodStart) {\r\n vm.PreviousPeriodStart = moment(meetingInfo.PreviousMeeting.PeriodStart);\r\n } else {\r\n vm.PreviousPeriodStart = moment(vm.PreviousPeriodEnd).add(-30, 'days').startOf('day');\r\n }\r\n\r\n if (meetingInfo.NextMeeting && meetingInfo.NextMeeting.PeriodStart) {\r\n vm.NextPeriodStart = moment(meetingInfo.NextMeeting.PeriodStart);\r\n } else {\r\n vm.NextPeriodStart = moment(vm.PeriodEnd).add(1, 'days').startOf('day');\r\n }\r\n\r\n if (meetingInfo.NextMeeting && meetingInfo.NextMeeting.PeriodEnd) {\r\n vm.NextPeriodEnd = moment(meetingInfo.NextMeeting.PeriodEnd);\r\n } else {\r\n vm.NextPeriodEnd = moment(vm.NextPeriodStart).add(30, 'days').endOf('day');\r\n }\r\n \r\n \r\n }\r\n }\r\n\r\n vm.LoadTasks();\r\n vm.GetTodoCount(); \r\n vm.GetGoalAndActivityComments(); \r\n });\r\n\r\n //vm.GetCurrentProgress();\r\n //vm.GetUserProgressSum();\r\n vm.GetGoals();\r\n vm.GetGoalsForUsersInSameUnit();\r\n \r\n //vm.GetProgressPeriodCompare();\r\n //vm.PopulateProgressChart(); \r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.tasks', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.onetask', oneTaskController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n oneTaskController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService) {\r\n var vm = this; \r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n\r\n vm.$onInit = function () {\r\n \r\n }\r\n }\r\n\r\n function oneTaskController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n\r\n vm.GetOneTask = GetOneTask;\r\n\r\n vm.taskId = ~~$stateParams.id;\r\n vm.goalId = ~~$stateParams.goalId;\r\n vm.activityId = ~~$stateParams.activityId;\r\n\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetOneTask(id) {\r\n engagementGoalsService.GetOneTask(id).then(GetOneTaskCallback);\r\n\r\n function GetOneTaskCallback(response) {\r\n vm.task = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n if (vm.taskId > 0) {\r\n vm.GetOneTask(vm.taskId);\r\n } else {\r\n vm.task = {\r\n Id: 'new',\r\n EditDate: engagementGoalsService.GetSelectedPeriod().Date,\r\n EditMode: true,\r\n GoalId: vm.goalId,\r\n ActivityId: vm.activityId\r\n };\r\n }\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.team', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"bizUser\"];\r\n\r\n function indexController(goalService, bizUser) {\r\n var vm = this\r\n vm.UserId = bizUser.getLoggedInUser().Id;\r\n vm.ExpandStatusStorageKey = 'TEAM_USERPROGRESS_EXPAND_STATUS_' + vm.UserId;\r\n vm.ExpandedUserProgress = [];\r\n\r\n vm.GetCurrentProgress = GetCurrentProgress;\r\n vm.GetGoalsForUsers = GetGoalsForUsers;\r\n vm.ToggleUserProgressExpanded = ToggleUserProgressExpanded;\r\n vm.StoreUserProgressExpandStatus = StoreUserProgressExpandStatus; \r\n vm.RetrieveUserProgressExpandStatus = RetrieveUserProgressExpandStatus;\r\n\r\n function GetCurrentProgress() {\r\n goalService.GetProgressSum(true).then(GetProgressSumForUserCallback);\r\n\r\n function GetProgressSumForUserCallback(response) {\r\n var prg = BizPartCoreHelpers.getResponseValue(response); \r\n for (var i = 0; i < prg.length; i++) {\r\n prg[i].Expanded = vm.ExpandedUserProgress.indexOf(prg[i].UserId) >= 0;\r\n } \r\n\r\n vm.UsersProgress = prg;\r\n }\r\n }\r\n\r\n function GetGoalsForUsers() {\r\n goalService.GetGoalsForUsersInSameUnit().then(GetGoalsForUsersInSameUnitCallback);\r\n\r\n function GetGoalsForUsersInSameUnitCallback(response) {\r\n vm.UserGoals = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function ToggleUserProgressExpanded(progressItem) {\r\n progressItem.Expanded = !progressItem.Expanded;\r\n if (progressItem.Expanded) {\r\n if (vm.ExpandedUserProgress.indexOf(progressItem.UserId) < 0) {\r\n vm.ExpandedUserProgress.push(progressItem.UserId);\r\n }\r\n } else {\r\n var index = vm.ExpandedUserProgress.indexOf(progressItem.UserId);\r\n if (index >= 0) {\r\n vm.ExpandedUserProgress.splice(index, 1);\r\n }\r\n }\r\n\r\n vm.StoreUserProgressExpandStatus();\r\n }\r\n\r\n function StoreUserProgressExpandStatus() {\r\n setLocalStorage(vm.ExpandStatusStorageKey, JSON.stringify(vm.ExpandedUserProgress));\r\n }\r\n\r\n function RetrieveUserProgressExpandStatus() {\r\n var data = getLocalStorage(vm.ExpandStatusStorageKey);\r\n if (data) {\r\n vm.ExpandedUserProgress = JSON.parse(data);\r\n }\r\n }\r\n\r\n vm.$onInit = function () { \r\n vm.RetrieveUserProgressExpandStatus();\r\n vm.GetCurrentProgress();\r\n vm.GetGoalsForUsers();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.event', indexController);\t\r\n\tangular.module('bizPartEngage').controller('modules.events', listController);\t\r\n\r\n\t//indexController.$inject = [\"modules.event.service\", \"bizContainerSettings\", \"$stateParams\", \"bizContainerModuleEventListService\"];\r\n\tindexController.$inject = [\"$stateParams\"];\r\n\tlistController.$inject = [\"$stateParams\"];\r\n\r\n\tfunction indexController($stateParams) {\r\n\t\tvar vm = this;\r\n\t\tvm.EventId = ~~$stateParams.id\r\n\t}\r\n\r\n\tfunction listController($stateParams) {\r\n\t\tvar vm = this;\r\n\t\tvm.EventFilter = $stateParams.filter;\r\n\t}\r\n\r\n\t//function indexController(eventService, bizContainerSettings, $stateParams, bizContainerModuleEventListService) {\r\n\t//\tvar vm = this;\r\n\r\n\t//\tvm.Event = {};\r\n\t//\tvm.GetEvent = GetEvent;\r\n\t//\tvm.EventId = ~~$stateParams.id;\r\n\t//\tvm.IsLoggedIn = false;\r\n\t//\tvm.IsInFuture = IsInFuture;\r\n\t//\tvm.IsToday = IsToday;\r\n\t//\tvm.ChangeStatus = ChangeStatus;\r\n\t//\tvm.IsAllowedToBook = IsAllowedToBook;\r\n\t//\tvm.IsAllowedToCancel = IsAllowedToCancel;\r\n\t//\tvm.Email = '';\r\n\t//\tvm.Cancel = '';\r\n\r\n\t//\tfunction GetEvent() {\r\n\t//\t\tvm.DataLoaded = false;\r\n\t//\t\teventService.GetOneEvent(vm.EventId).then(GetEventSuccess);\r\n\r\n\t//\t\tfunction GetEventSuccess(response) {\r\n\t//\t\t\tvm.DataLoaded = true;\r\n\t//\t\t\tvm.Event = response.data;\r\n\r\n\t//\t\t\tif (bizContainerSettings[\"CurrentUserId\"] > 0) {\r\n\t//\t\t\t\tvm.IsLoggedIn = true;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction IsAllowedToBook(event) {\r\n\t//\t\tif (!vm.DataLoaded) {\r\n\t//\t\t\treturn false;\r\n\t//\t\t}\r\n\t//\t\tif (event.ParticipantCount < event.MaxParticipants\r\n\t//\t\t\t&& (event.UserStatus == 4 || event.UserStatus == 0)\r\n\t//\t\t\t&& vm.IsInFuture(event.RSVPDateTimeUtc) == true) {\r\n\t//\t\t\treturn true;\r\n\t//\t\t}\r\n\r\n\t//\t\treturn false;\r\n\t//\t}\r\n\r\n\t//\tfunction IsAllowedToCancel(event) {\r\n\t//\t\tif (!vm.DataLoaded) {\r\n\t//\t\t\treturn false;\r\n\t//\t\t}\r\n\t//\t\tif (event.UserStatus == 3 && vm.IsInFuture(event.RSVPDateTimeUtc) == true) {\r\n\t//\t\t\treturn true;\r\n\t//\t\t}\r\n\t//\t\treturn false;\r\n\t//\t}\r\n\r\n\t//\tfunction IsToday(datetimeUtc) {\r\n\t//\t\tif (vm.DataLoaded) {\r\n\t//\t\t\tif (moment(datetimeUtc).isSame(moment.utc(), 'day')) {\r\n\t//\t\t\t\treturn true;\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn false;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction IsInFuture(datetimeUtc) {\r\n\t//\t\tif (vm.DataLoaded) {\r\n\t//\t\t\tif (moment(datetimeUtc).isAfter(moment.utc())) {\r\n\t//\t\t\t\treturn true;\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn false;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction ChangeStatus(event, newStatus) {\r\n\r\n\t//\t\tif (bizContainerSettings[\"CurrentUserId\"] > 0) {\r\n\t\t\t\t\r\n\t//\t\t}\r\n\t//\t\telse {\r\n\t//\t\t\tif (vm.Email != '' && vm.Email.indexOf('@')) { // TODO some kind of validation.\r\n\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\r\n\t//\t\tbizContainerModuleEventListService.UpdateParticipationStatus(event.Id, newStatus, vm.Email, vm.Comment).then(UpdateParticipationStatusSuccess);\r\n\t//\t}\r\n\r\n\t//\tfunction UpdateParticipationStatusSuccess(response) {\r\n\t//\t\tvar result = (response.data.d || response.data);\r\n\t//\t\tvm.GetEvent();\r\n\t//\t}\r\n\r\n\t//\tvm.$onInit = function () {\r\n\t//\t\tvm.GetEvent();\r\n\t//\t}\r\n\t//}\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.event.service', eventService);\r\n\r\n\teventService.$inject = [\"$http\"];\r\n\r\n\tfunction eventService($http) {\r\n\t\tthis.GetOneEvent = function (id) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/event/GetOneEventForUser?' + $.param({ eventId: id }));\r\n\t\t};\r\n\r\n\t\tthis.UpdateParticipationStatus = function (eventId, newStatus, email, comment) {\r\n\t\t\treturn $http.post(getServicePath() + 'UpdateParticipationStatus', {\r\n\t\t\t\tEventId: eventId,\r\n\t\t\t\tStatus: newStatus,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tComment: comment\r\n\t\t\t}, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n})(window.angular);\r\n","angular.module('bizFormly').controller('questionFreetextController', questionFreetextController);\r\nangular.module('bizFormly').controller('questionController', questionController);\r\nangular.module('bizFormly').controller('questionScaleController', questionScaleController);\r\nangular.module('bizFormly').controller('questionYesNoController', questionYesNoController);\r\n\r\nquestionFreetextController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionScaleController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionYesNoController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\", \"$timeout\"];\r\n\r\nfunction questionFreetextController($rootScope, $scope, bizCoreService) {\r\n var vm = this;\r\n}\r\n\r\nfunction questionController($rootScope, $scope, bizCoreService) {\r\n\r\n $scope.SetSelectedValues = function(){\r\n \t$scope.model[$scope.options.key] = $scope.options.data.options.GetItemsByValue('selected', true).GetValues('Id').join();\r\n }\r\n\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n\r\n}\r\n\r\nfunction questionScaleController($rootScope, $scope, bizCoreService) {\r\n var field = $scope.fields.GetItemByValue(\"key\", $scope.options.key);\r\n\r\n if (!field.data.options) {\r\n \tfield.data.options = [];\r\n }\r\n\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n}\r\n\r\nfunction questionYesNoController($rootScope, $scope, bizCoreService, $timeout) {\r\n var field = $scope.fields.GetItemByValue(\"key\", $scope.options.key);\r\n\r\n if (!field.data.options) {\r\n \tfield.data.options = [];\r\n\r\n \tfield.data.options.push({\r\n FormFieldId: field.Id, Name: \"\", Value: 'false', NameTranslations: [{\r\n FieldKey: field.key,\r\n CultureId: 1,\r\n Type: 'option',\r\n Value: \"Yes\"\r\n }, {\r\n FieldKey: field.key,\r\n CultureId: 2,\r\n Type: 'option',\r\n Value: \"Yes\"\r\n }]\r\n });\r\n \tfield.data.options.push({\r\n FormFieldId: field.Id, Name: \"\", Value: 'false', NameTranslations: [{\r\n FieldKey: field.key,\r\n CultureId: 1,\r\n Type: 'option',\r\n Value: \"No\"\r\n }, {\r\n FieldKey: field.key,\r\n CultureId: 2,\r\n Type: 'option',\r\n Value: \"No\"\r\n }]\r\n });\r\n }\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n}\r\n\r\n\r\nvar evt = document.createEvent(\"CustomEvent\");\r\nevt.initCustomEvent(\"FORMS_PLUGIN_QUESTIONS_INIT\", true, true, { Key: \"QUESTIONS\" });\r\nwindow.dispatchEvent(evt);","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.forums', forumsController);\r\n angular.module('bizPartEngage').controller('modules.forum', forumController);\r\n angular.module('bizPartEngage').controller('modules.forum.thread', forumThreadController);\r\n\r\n forumsController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$state\"];\r\n forumController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$stateParams\", \"$state\"];\r\n forumThreadController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$stateParams\", \"$mdDialog\", \"$translate\", \"bizUser\", \"bizCore\"];\r\n\r\n function forumsController($rootScope, forumService, $state) {\r\n var vm = this;\r\n vm.Forums = [];\r\n\r\n vm.GetForums = GetForums;\r\n vm.GoToForum = GoToForum;\r\n\r\n function GetForums() {\r\n forumService.GetForums().then(GetForumsSuccess);\r\n\r\n function GetForumsSuccess(response) {\r\n vm.Forums = response.data;\r\n }\r\n }\r\n\r\n function GoToForum(forum) {\r\n $state.go(\"base.modules.forum\", {id: forum.Id});\r\n }\r\n\r\n function Init() {\r\n vm.GetForums();\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n\r\n function forumController($rootScope, forumService, $stateParams, $state) {\r\n var vm = this;\r\n vm.ForumId = ~~$stateParams.id;\r\n vm.Forum = {\r\n Threads: []\r\n };\r\n\r\n vm.GetForum = GetForum;\r\n vm.GoToThread = GoToThread;\r\n\r\n function GetForum() {\r\n forumService.GetForum(vm.ForumId).then(GetForumSuccess);\r\n\r\n function GetForumSuccess(response) {\r\n vm.Forum = response.data;\r\n }\r\n }\r\n\r\n function GoToThread(thread) {\r\n $state.go(\"base.modules.forumthread\", {id: thread.Id});\r\n }\r\n\r\n function Init() {\r\n if(vm.ForumId > 0) {\r\n vm.GetForum();\r\n }\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n\r\n function forumThreadController($rootScope, forumService, $stateParams, $mdDialog, $translate, bizUserProvider, bizCoreProvider) {\r\n var vm = this;\r\n vm.ThreadId = ~~$stateParams.id;\r\n vm.Thread = {};\r\n vm.Post = {\r\n ForumThreadId: vm.ThreadId,\r\n UserId: bizUserProvider.getLoggedInUser().Id,\r\n Text: \"\"\r\n };\r\n\r\n vm.GetThread = GetThread;\r\n vm.SubmitPost = SubmitPost;\r\n vm.EditPost = EditPost;\r\n vm.DeletePost = DeletePost;\r\n vm.ThreadRead = ThreadRead;\r\n\r\n function GetThread() {\r\n if(vm.ThreadId > 0) {\r\n forumService.GetThread(vm.ThreadId).then(GetThreadSuccess);\r\n }\r\n\r\n function GetThreadSuccess(response) {\r\n vm.Thread = response.data;\r\n }\r\n }\r\n\r\n function SubmitPost(post) {\r\n forumService.SubmitPost(post).then(SubmitPostSuccess);\r\n\r\n function SubmitPostSuccess(response) {\r\n //Vi sätter tråden till läst när man postar i den. \r\n vm.ThreadRead();\r\n if(response.data.Success == true && ~~post.Id <= 0) {\r\n vm.Thread.ThreadEntrys.push(response.data.ExtraInfo);\r\n\r\n vm.Post = {\r\n ForumThreadId: vm.ThreadId,\r\n UserId: $rootScope.LoggedInUser.Id,\r\n Text: \"\"\r\n };\r\n }\r\n else if(~~post.Id > 0) {\r\n post.IsEditing = false;\r\n console.log('Saved post successfully!');\r\n }\r\n else {\r\n console.error(response.data.Message);\r\n }\r\n }\r\n }\r\n\r\n function EditPost(post) {\r\n post.IsEditing = true;\r\n }\r\n\r\n function DeletePost(post) {\r\n $translate('FORUM.ASKDELETEPOST').then(function (translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: deletePostController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n if(response) {\r\n forumService.DeletePost(post.Id).then(DeletePostSuccess);\r\n }\r\n });\r\n });\r\n\r\n function DeletePostSuccess(response) {\r\n if(response.data.Success) {\r\n vm.Thread.ThreadEntrys.splice(vm.Thread.ThreadEntrys.indexOf(post), 1);\r\n }\r\n }\r\n }\r\n\r\n deletePostController.$inject = [\"$mdDialog\"];\r\n\r\n function deletePostController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n vm.Ok = Ok;\r\n\r\n function Close() {\r\n $mdDialog.cancel();\r\n }\r\n\r\n function Ok() {\r\n $mdDialog.hide(true);\r\n }\r\n }\r\n\r\n function ThreadRead() {\r\n if (~~bizUserProvider.getLoggedInUser().Id > 0 && ~~vm.ThreadId > 0) {\r\n forumService.ThreadRead(vm.ThreadId);\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetThread();\r\n vm.ThreadRead();\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.forum.service', forumService);\r\n\r\n forumService.$inject = [\"$http\"];\r\n\r\n function forumService($http) {\r\n this.GetForums = function() {\r\n return $http.get(siteRootPath + \"api/forum/GetForums\");\r\n };\r\n\r\n this.GetForum = function(id) {\r\n return $http.get(siteRootPath + \"api/forum/GetForum?\" + $.param({id: id}));\r\n };\r\n\r\n this.GetThread = function(id) {\r\n return $http.get(siteRootPath + \"api/forum/GetThread?\" + $.param({ id: id }));\r\n };\r\n\r\n this.SubmitPost = function(post) {\r\n return $http.post(siteRootPath + \"api/forum/SubmitPost\", post);\r\n };\r\n\r\n this.DeletePost = function(id) {\r\n return $http.delete(siteRootPath + \"api/forum/DeletePost?\" + $.param({ id: id }));\r\n };\r\n\r\n this.ThreadRead = function(threadId) {\r\n return $http.get(siteRootPath + \"api/forum/ThreadRead?\" + $.param({ threadId: threadId }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.journey', journeyController);\r\n\r\n journeyController.$inject = [];\r\n\r\n function journeyController() {\r\n var vm = this;\r\n vm.IsJourneyLocked = IsPortalSettingTrue('IsJourneyLocked');\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.masterrun', masterrunController);\r\n\r\n masterrunController.$inject = [\"$filter\", \"bizUser\"];\r\n\r\n function masterrunController($filter, bizUser) {\r\n var vm = this;\r\n vm.MasterRunUrl = undefined;\r\n\r\n function Init() {\r\n if(isMobile.any()) {\r\n vm.MasterRunUrl = $filter('siteroot')(\"MasterRunMobile/index.html?session=\" + getBizPartAuthToken());\r\n }\r\n else {\r\n vm.MasterRunUrl = $filter('siteroot')(\"MasterRun/index.html?session=\" + getBizPartAuthToken());\r\n }\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.media', mediaController);\r\n angular.module('bizPartEngage').controller('modules.mediatags', mediatagsController);\r\n\r\n mediaController.$inject = [\"$rootScope\", \"modules.media.service\", \"$stateParams\", \"$state\", \"container\", \"$timeout\", \"$mdDialog\", \"MetadataService\",\r\n \"$filter\", \"bizCoreService\", \"$q\", \"$translate\", \"bizEngageService\", \"core.engage.service\", \"$scope\", \"$sce\"];\r\n mediatagsController.$inject = [\"modules.media.service\", \"$stateParams\", \"$state\", \"container\", \"$timeout\", \"$mdDialog\", \"MetadataService\", \"$filter\", \"bizCoreService\", \"$translate\", \"$rootScope\", \"$q\", \"bizEngageService\"];\r\n\r\n function mediaController($rootScope, mediaService, $stateParams, $state, container, $timeout, $mdDialog, MetadataService, $filter, bizCoreService,\r\n $q, $translate, bizEngageService, engageService, $scope, $sce) {\r\n var vm = this;\r\n vm.MediaFiles = [];\r\n vm.MediaFileTypes = [];\r\n vm.SelectedTypes = [];\r\n\r\n vm.playClicked = false;\r\n vm.VideoPlaying = false;\r\n vm.Extended = false;\r\n vm.LikedExtended = false;\r\n vm.SeenExtended = false;\r\n vm.showLatest = false;\r\n vm.showMostLiked = false;\r\n vm.showMostViewed = false;\r\n vm.showMostCommented = false;\r\n vm.showRelated = false;\r\n vm.useJourneyOrder = journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 3)?.Value || false;\r\n\r\n vm.EventSource = \"MEDIA\";\r\n\r\n vm.fileId = ~~$stateParams.id;\r\n\r\n\t\tif (!vm.fileId)\r\n\t\t\tvm.fileUrlRewrite = $stateParams.id;\r\n\r\n vm.OnInit = OnInit;\r\n vm.OnPlay = OnPlay;\r\n vm.OnEnded = OnEnded;\r\n vm.GetMediaFiles = GetMediaFiles;\r\n vm.GetMediaFileTypes = GetMediaFileTypes;\r\n vm.GetFileImage = GetFileImage;\r\n vm.ToggleMediaTypes = ToggleMediaTypes;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.GetShowingSettings = GetShowingSettings;\r\n vm.InitSlick = InitSlick;\r\n vm.GetOneMediaFile = GetOneMediaFile;\r\n vm.GetRelatedMediaFiles = GetRelatedMediaFiles;\r\n vm.FilterLiked = FilterLiked;\r\n vm.GetYoutubeEmbedUrl = GetYoutubeEmbedUrl;\r\n vm.FilterAlreadyVisibleFiles = FilterAlreadyVisibleFiles;\r\n vm.PauseVideo = PauseVideo;\r\n vm.PlayVideo = PlayVideo;\r\n vm.PlayYoutube = PlayYoutube\r\n vm.YoutubePlayer = YoutubePlayer;\r\n vm.player;\r\n vm.GetFileTypeTranslations = GetFileTypeTranslations;\r\n vm.NavigateToMediaFile = NavigateToMediaFile; \r\n\r\n function GetFileTypeTranslations(type) {\r\n if (!type)\r\n return;\r\n\r\n var value = type.FileType;\r\n var translation = type.NameOverrideTranslations.GetItemByValue('CultureId', $rootScope.LoggedInUser.CurrentCultureId);\r\n\r\n if (translation) {\r\n value = translation.Value;\r\n }\r\n \r\n return value;\r\n }\r\n \r\n function GetShowingSettings() {\r\n var settings = [];\r\n settings.push('showLatest');\r\n settings.push('showMostLiked');\r\n settings.push('showMostViewed');\r\n settings.push('showMostCommented');\r\n settings.push('showRelated');\r\n\r\n mediaService.GetGenericSettings(settings).then(LoadSettingsDone);\r\n\r\n function LoadSettingsDone(response) {\r\n console.log(\"LoadSettingsDone\", response);\r\n vm.showLatest = (response.data.GetItemByValue('Key', 'showLatest').Value == 'true' ? true : false);\r\n vm.showMostLiked = (response.data.GetItemByValue('Key', 'showMostLiked').Value == 'true' ? true : false);\r\n vm.showMostViewed = (response.data.GetItemByValue('Key', 'showMostViewed').Value == 'true' ? true : false);\r\n vm.showMostCommented = (response.data.GetItemByValue('Key', 'showMostCommented').Value == 'true' ? true : false);\r\n vm.showRelated = (response.data.GetItemByValue('Key', 'showRelated').Value == 'true' ? true : false);\r\n }\r\n }\r\n\r\n function PauseVideo() {\r\n \tvm.VideoPlaying = false;\r\n \tvar video = angular.element('#video-module-' + vm.MediaFile.Id);\r\n \tvideo[0].pause();\r\n }\r\n\r\n function PlayYoutube() { \r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tif (vm.player) {\r\n \t\tvar fn = function () { vm.player.playVideo(); }\r\n \t\tsetTimeout(fn, 1000);\r\n \t}\r\n }\r\n\r\n function PlayVideo() {\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tvar video = angular.element('#video-module-' + vm.MediaFile.Id);\r\n \tif (vm.VideoEnded) {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].pause();\r\n \t\t\tvideo[0].currentTime = '0';\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n \telse {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function YoutubePlayer(videoId) { \r\n \tvar id = \"youtube-\" + vm.MediaFile.Id;\r\n \tif (window.matchMedia(\"(min-width: 720px)\").matches) {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t} else {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\theight: '100%',\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n\r\n \t// Youtube player change event...\r\n function onPlayerStateChange(event) {\r\n \r\n \tif (event.data === -1) {\r\n \t\tvm.OnPlay();\r\n \t}\r\n \telse if (event.data === 0) {\r\n \t\tvm.VideoEnded = true;\r\n \t\tvm.OnEnded();\r\n \t}\r\n \telse if (event.data === 3) {\r\n \t\t// pause\r\n \t}\r\n }\r\n\r\n function FilterAlreadyVisibleFiles(file) {\r\n if (file == undefined || vm.MediaFile == undefined) {\r\n return false;\r\n }\r\n\r\n \t// remove other types?\r\n \tif (file.Type != vm.MediaFile.Type) {\r\n \t\treturn false;\r\n \t}\r\n\r\n \t// remove current viewed file\r\n \tif (file.Id == vm.MediaFile.Id) {\r\n \t\treturn false;\r\n \t}\r\n\r\n\t\t\t// remove related files\r\n \tif (vm.RelatedMediaFiles) {\r\n \t\tfor (var i = 0; i < vm.RelatedMediaFiles.length; i++) {\r\n \t\t\tif (file.Id == vm.RelatedMediaFiles[i].Id) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n \t\t\r\n \treturn true;\r\n }\r\n\r\n function FilterLiked(a)\r\n {\r\n if (a.LikeActions.length == 1)\r\n return a.LikeActions[0].Count;\r\n\r\n if (a.LikeActions.length > 1)\r\n return TotalLikeActions(a);\r\n\r\n return 0;\r\n }\r\n\r\n function OnInit(source) { \r\n \tbizCoreService.EventInit(vm.MediaFile.Id, 14, vm.EventSource);\r\n\r\n \tif (vm.MediaFile.Type == 1 && vm.VideoType == vm.VideoTypes.Youtube) {\r\n \t\tsetTimeout(function () {\r\n \t\t\tvm.YoutubePlayer(GetYoutubeId(vm.MediaFile.FileUrl));\r\n \t\t}, 0)\r\n \t}\r\n }\r\n\r\n function OnPlay() { \r\n \tvm.playClicked = true;\r\n \tbizCoreService.EventStart(vm.MediaFile.Id, 12, vm.EventSource);\r\n }\r\n\r\n function OnEnded() { \r\n \tbizCoreService.EventEnd(vm.MediaFile.Id, 13, vm.EventSource);\r\n }\r\n\r\n function GetFileImage(file)\r\n {\r\n switch(file.Type) {\r\n case 1:\r\n return file.Thumbnail;\r\n case 2:\r\n return file.FileUrl;\r\n default:\r\n return file.Thumbnail;\r\n }\r\n }\r\n\r\n function ToggleMediaTypes(typeId) {\r\n if (vm.SelectedTypes.indexOf(typeId) > -1)\r\n vm.SelectedTypes.splice(vm.SelectedTypes.lastIndexOf(typeId), 1)\r\n else\r\n vm.SelectedTypes.push(typeId);\r\n\r\n if (vm.SelectedTypes.length == 0) {\r\n for (var i = 0; i < vm.MediaFileTypes.length; i++) {\r\n vm.SelectedTypes.push(vm.MediaFileTypes[i].Id);\r\n }\r\n }\r\n\r\n vm.GetMediaFiles(vm.SelectedTypes, [], false, true);\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n \tif (!action.LikeActionPerformedByUser) {\r\n mediaService.AddLikeActionToMediaFile(item.Id, action.Action.Id).then(AddLikeActionToMediaFileSuccess);\r\n }\r\n\r\n \tfunction AddLikeActionToMediaFileSuccess(response) {\r\n \t action.LikeActionPerformedByUser = true;\r\n \t action.Count++;\r\n\r\n \t var totalCount = 0;\r\n \t var totalValue = 0;\r\n\r\n \t for (var i = 0; i < item.LikeActions.length; i++) {\r\n \t totalCount += item.LikeActions[i].Count;\r\n \t totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n \t }\r\n\r\n \t item.AverageLikeValue = totalValue / totalCount;\r\n \t}\r\n }\r\n\r\n function GetLikeActionsByValue(entry, positive) {\r\n var result = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n if ((positive && entry.LikeActions[i].Action.Value > 0) || (!positive && entry.LikeActions[i].Action.Value < 0)) {\r\n result += entry.LikeActions[i].Count;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function TotalLikeActions(entry) {\r\n var count = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n count += entry.LikeActions[i].Count;\r\n }\r\n return count;\r\n }\r\n\r\n function GetOneMediaFile(fileId, urlRewrite) {\r\n \tbizEngageService.GetObject(fileId > 0 ? fileId : urlRewrite, bizEngageService.Types.MediabankFile, true)\r\n\t\t\t\t.then(GetOneMediaFileSuccess);\r\n\r\n function GetOneMediaFileSuccess(response) {\r\n vm.MediaFile = response.data;\r\n \r\n if (vm.MediaFile.Tags && vm.showRelated) {\r\n var tagIds = [];\r\n for (var i = 0; i < vm.MediaFile.Tags.length; i++)\r\n {\r\n tagIds.push(vm.MediaFile.Tags[i].Id);\r\n }\r\n vm.GetRelatedMediaFiles(tagIds); \r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.MediaFile.Name,\r\n description: vm.MediaFile.Description,\r\n img: vm.MediaFile.Thumbnail\r\n });\r\n \r\n if (vm.MediaFile.Type == 1) {\r\n vm.VideoTypes = {\r\n Native: 1,\r\n Youtube: 2,\r\n Vimeo: 3\r\n };\r\n\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = vm.MediaFile.FileUrl.match(regExp);\r\n if (match) {\r\n vm.VideoType = vm.VideoTypes.Youtube;\r\n }\r\n else {\r\n vm.VideoType = vm.VideoTypes.Native;\r\n }\r\n }\r\n\r\n OnInit('GetOneMediaFileSuccess');\r\n }\r\n }\r\n\r\n function GetYoutubeEmbedUrl(url) {\r\n \treturn \"https://www.youtube.com/embed/\" + GetYoutubeId(url); // ?autoplay=1&controls=0\r\n }\r\n\r\n function GetYoutubeId(url) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = url.match(regExp);\r\n\r\n if (match && match[2].length == 11) {\r\n return match[2];\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n\r\n function InitSlick(overrideToShow) {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: overrideToShow || 4,\r\n slidesToScroll: overrideToShow || 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: vm.SlickOverrideResponsiveSlides || 2,\r\n slidesToScroll: vm.SlickOverrideResponsiveSlides || 2,\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function GetRelatedMediaFiles(tagIds) {\r\n mediaService.GetMediaFiles([], tagIds, true).then(GetRelatedMediaFilesSuccess);\r\n function GetRelatedMediaFilesSuccess(response) {\r\n vm.RelatedMediaFiles = response.data;\r\n vm.InitSlick();\r\n }\r\n }\r\n\r\n function GetMediaFiles() {\r\n \r\n if (vm.SelectedTypes.length) {\r\n mediaService.GetMediaFiles(vm.SelectedTypes, [], false, true, vm.useJourneyOrder).then(GetMediaFilesSuccess);\r\n }\r\n else {\r\n vm.MediaFiles = [];\r\n vm.DataLoaded = true;\r\n console.error('No mediabank file types selected to show here...');\r\n }\r\n\r\n function GetMediaFilesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.MediaFiles = response.data;\r\n vm.DataLoaded = true;\r\n vm.InitSlick(2);\r\n }\r\n }\r\n\r\n function GetMediaFileTypes() {\r\n mediaService.GetMediaFileTypes().then(GetMediaFileTypesSuccess);\r\n function GetMediaFileTypesSuccess(response) {\r\n vm.MediaFileTypes = response.data;\r\n for (var i = 0; i < vm.MediaFileTypes.length; i++) {\r\n vm.SelectedTypes.push(vm.MediaFileTypes[i].Id);\r\n }\r\n vm.GetMediaFiles([], [], false, true);\r\n \t}\r\n }\r\n\r\n function NavigateToMediaFile(file) {\r\n return $state.go(\"base.modules.mediafile\", { id: file.UrlRewrite || file.Id });\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['MEDIA.META.TITLE', 'MEDIA.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['MEDIA.META.TITLE'],\r\n description: translations['MEDIA.META.DESCRIPTION']\r\n })\r\n }); \r\n\r\n vm.GetShowingSettings();\r\n vm.GetMediaFileTypes();\r\n \tif (!vm.fileId && !vm.fileUrlRewrite) {\r\n \r\n //vm.InitSlick();\r\n }\r\n else\r\n vm.GetOneMediaFile(vm.fileId, vm.fileUrlRewrite);\r\n\r\n bizEngageService.GetMiniJourneySetting('MediabankFile').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }); \r\n\r\n //disabled until vm.VideoEnded works properly, probably something to do with mediaplayer-directive that is used, need to connect the on-played-method, but cant get it to work...\r\n //$scope.$on(\"$destroy\", function () { \r\n // if (vm.MediaFile && vm.MediaFile.Type == 1 && !vm.VideoEnded) { \r\n // engageService.HandleEngageObjectCancelled(vm.MediaFile.Id, 'MediabankFile');//fire and forget\r\n // }\r\n //});\r\n }\r\n\r\n function mediatagsController(mediaService, $stateParams, $state, container, $timeout, $mdDialog, MetadataService, $filter, bizCoreService, $translate, $rootScope, $q, bizEngageService) {\r\n var vm = this;\r\n\r\n vm.tagId = ~~$stateParams.tagId;\r\n vm.tagSystemName = $stateParams.tagSystemName;\r\n vm.fileId = $stateParams.fileId;\r\n vm.defaultFileTypes = $stateParams.fileTypes;\r\n vm.setFirstSelected = $stateParams.setFirstSelected;\r\n \r\n vm.EventSource = \"MEDIA\";\r\n\r\n vm.playClicked = false; // TODO: Same as vm.VideoPlaying\r\n vm.MediaFiles = [];\r\n vm.MediaFileTypes = [];\r\n if (!vm.defaultFileTypes) {\r\n \tvm.defaultFileTypes = [];\r\n }\r\n\r\n vm.OnInit = OnInit;\r\n vm.OnPlay = OnPlay;\r\n vm.OnEnded = OnEnded;\r\n vm.VideoPlaying = false;\r\n\r\n vm.SelectedFile = undefined;\r\n vm.GetMediaFiles = GetMediaFiles;\r\n vm.GetFileImage = GetFileImage;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.GetTag = GetTag;\r\n vm.InitSlick = InitSlick;\r\n vm.SetSelectedFile = SetSelectedFile;\r\n vm.GetMediaFileTypes = GetMediaFileTypes;\r\n vm.GetYoutubeEmbedUrl = GetYoutubeEmbedUrl;\r\n vm.FilterAlreadyVisibleFiles = FilterAlreadyVisibleFiles;\r\n vm.FilterByTag = FilterByTag;\r\n vm.NavigateToMediaFileForTag = NavigateToMediaFileForTag;\r\n vm.PauseVideo = PauseVideo;\r\n vm.PlayVideo = PlayVideo;\r\n vm.PlayYoutube = PlayYoutube\r\n vm.YoutubePlayer = YoutubePlayer;\r\n vm.player;\r\n vm.GetFileTypeTranslations = GetFileTypeTranslations;\r\n\r\n function GetFileTypeTranslations(type) {\r\n if (!type.FileType)\r\n return;\r\n\r\n var value = type.FileType;\r\n var translation = type.NameOverrideTranslations.GetItemByValue('CultureId', $rootScope.LoggedInUser.CurrentCultureId);\r\n\r\n if (translation) {\r\n value = translation.Value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function PauseVideo() {\r\n \tvm.VideoPlaying = false;\r\n \tvar video = angular.element('#video-module-' + vm.SelectedFile.Id);\r\n \tvideo[0].pause();\r\n }\r\n\r\n function PlayYoutube() {\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tif (vm.player) {\r\n \t\tvar fn = function () { vm.player.playVideo(); }\r\n \t\tsetTimeout(fn, 1000);\r\n \t}\r\n }\r\n\r\n function PlayVideo() { \t\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tvar video = angular.element('#video-module-' + vm.SelectedFile.Id);\r\n \tif (vm.VideoEnded) {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].pause();\r\n \t\t\tvideo[0].currentTime = '0';\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n \telse {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function YoutubePlayer(videoId) { \r\n \tvar id = \"youtube-\" + vm.SelectedFile.Id;\r\n \tif (window.matchMedia(\"(min-width: 720px)\").matches) {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t} else {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\theight: '100%',\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n\r\n \t// Youtube player change event...\r\n function onPlayerStateChange(event) {\r\n \tif (event.data === -1) {\r\n \t\tvm.OnPlay();\r\n \t}\r\n \telse if (event.data === 0) {\r\n \t\tvm.VideoEnded = true;\r\n \t\tvm.OnEnded();\r\n \t}\r\n \telse if (event.data === 3) {\r\n \t\t// pause\r\n \t}\r\n }\r\n\r\n function FilterByTag(file) {\r\n if (vm.tagId > 0 && file.Tags.length > 0) {\r\n \t\tfor (var i = 0; i < file.Tags.length; i++) {\r\n \t\t\tif (file.Tags.length == 0) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\tif (file.Tags[i].Id == vm.tagId) {\r\n // if (vm.tagId == 9 && file.Type != 1) {\r\n \t\t\t\t//\treturn false;\r\n \t\t\t\t//}\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \treturn false;\r\n }\r\n\r\n function FilterAlreadyVisibleFiles(file) {\r\n \t// remove other types?\r\n \tif (file.Type != vm.SelectedFile.Type) {\r\n \t\treturn false;\r\n \t}\r\n\r\n \t// remove current viewed file\r\n \tif (file.Id == vm.SelectedFile.Id) {\r\n \t\treturn false;\r\n \t}\r\n\r\n\t\t\t// remove files with selected tagId\r\n \tif (vm.tagId > 0 && file.Tags.length > 0) {\r\n \t\tfor (var i = 0; i < file.Tags.length; i++) {\r\n \t\t\tif (file.Tags[i].Id == vm.tagId) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \treturn true;\r\n }\r\n\r\n function OnInit() {\r\n \tif (vm.SelectedFile) {\r\n \t\tbizCoreService.EventInit(vm.SelectedFile.Id, 14, vm.EventSource);\r\n\r\n \t\tif (vm.SelectedFile.Type == 1 && vm.VideoType == vm.VideoTypes.Youtube) {\r\n \t\t\tsetTimeout(function () {\r\n \t\t\t\tvm.YoutubePlayer(GetYoutubeId(vm.SelectedFile.FileUrl));\r\n \t\t\t}, 0)\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function OnPlay() {\r\n \tvm.playClicked = true;\r\n \tbizCoreService.EventStart(vm.SelectedFile.Id, 12, vm.EventSource);\r\n }\r\n\r\n function OnEnded() { \r\n \tbizCoreService.EventEnd(vm.SelectedFile.Id, 13, vm.EventSource);\r\n }\r\n\r\n function GetYoutubeEmbedUrl(url) {\r\n \treturn \"https://www.youtube.com/embed/\" + GetYoutubeId(url) + \"?rel=0\"; // + '?autoplay=1' // &controls=0\r\n }\r\n\r\n function GetYoutubeId(url) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = url.match(regExp);\r\n\r\n if (match && match[2].length == 11) {\r\n return match[2];\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n\r\n function GetFileImage(file) {\r\n switch (file.Type) {\r\n case 1:\r\n return file.Thumbnail;\r\n break;\r\n case 2:\r\n return file.FileUrl;\r\n break;\r\n case 3:\r\n break;\r\n }\r\n }\r\n\r\n function SetSelectedFile(file) {\r\n \tvm.playClicked = false;\r\n\r\n \tif (!file && vm.fileId) {\r\n\r\n \t\tvar idMatchIndex = -1;\r\n \t\tvar urlRewriteMatchIndex = -1;\r\n \t\tvar isNumeric = ~~vm.fileId;\t\t\t\t\r\n\r\n \t\tfor (var i = 0; i < vm.MediaFiles.length; i++) {\r\n \t\t\tvar urlRewrite = vm.MediaFiles[i].UrlRewrite;\r\n \t\t\tif (urlRewrite) {\r\n \t\t\t\tif (urlRewrite.toLowerCase() == vm.fileId.toLowerCase()) {\r\n \t\t\t\t\turlRewriteMatchIndex = i;\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\tif (isNumeric) {\r\n \t\t\t\tif (~~vm.fileId == vm.MediaFiles[i].Id) {\r\n \t\t\t\t\tidMatchIndex = i;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (urlRewriteMatchIndex >= 0) {\r\n \t\t\tfile = vm.MediaFiles[urlRewriteMatchIndex];\r\n \t\t} else if (idMatchIndex >= 0) {\r\n \t\t\tfile = vm.MediaFiles[idMatchIndex];\r\n \t\t}\r\n \t}\r\n\r\n \tif (!file && vm.SelectedTag && vm.setFirstSelected)\r\n {\r\n for (var i = 0; i < vm.MediaFiles.length; i++) {\r\n if (FilterByTag(vm.MediaFiles[i]) == true) {\r\n vm.SelectedFile = vm.MediaFiles[i];\r\n break;\r\n }\r\n }\r\n }\r\n else if (file)\r\n {\r\n \tvm.SelectedFile = file;\r\n }\r\n\r\n if (vm.SelectedFile && vm.SelectedFile.Type == 1) {\r\n vm.VideoTypes = {\r\n Native: 1,\r\n Youtube: 2,\r\n Vimeo: 3\r\n };\r\n\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = vm.SelectedFile.FileUrl.match(regExp);\r\n if (match) {\r\n vm.VideoType = vm.VideoTypes.Youtube;\r\n }\r\n else {\r\n vm.VideoType = vm.VideoTypes.Native;\r\n }\r\n }\r\n\r\n OnInit();\r\n\r\n }\r\n\r\n function NavigateToMediaFileForTag(file, state) {\r\n \tvar fileId = file.UrlRewrite;\r\n \tif (!fileId) {\r\n \t\tfileId = file.Id;\r\n \t}\r\n\r\n \tif (!state) {\r\n \t\tstate = \"base.modules.mediatagsfileid\";\r\n\t\t\t}\r\n \treturn $state.go(state, { tagSystemName: vm.tagSystemName, fileId: fileId });\r\n }\r\n\r\n vm.GetMediaFileUrl = GetMediaFileUrl;\r\n\r\n function GetMediaFileUrl(file, state) {\r\n var fileId = file.UrlRewrite;\r\n if (!fileId) {\r\n fileId = file.Id;\r\n }\r\n\r\n if (!state) {\r\n state = \"base.modules.mediatagsfileid\";\r\n }\r\n return $state.href(state, { tagSystemName: vm.tagSystemName, fileId: fileId });\r\n }\r\n\r\n function GetMediaFileTypes() {\r\n mediaService.GetMediaFileTypes().then(GetMediaFileTypesSuccess);\r\n function GetMediaFileTypesSuccess(response) {\r\n vm.MediaFileTypes = response.data;\r\n vm.GetMediaFiles();\r\n }\r\n }\r\n\r\n function InitSlick() {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: 4,\r\n slidesToScroll: 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n \tif (!action.LikeActionPerformedByUser) {\r\n mediaService.AddLikeActionToMediaFile(item.Id, action.Action.Id).then(AddLikeActionToMediaFileSuccess);\r\n }\r\n\r\n \tfunction AddLikeActionToMediaFileSuccess(response) {\r\n \t action.LikeActionPerformedByUser = true; // changed from item\r\n \t action.Count++;\r\n\r\n \t var totalCount = 0;\r\n \t var totalValue = 0;\r\n\r\n \t for (var i = 0; i < item.LikeActions.length; i++) {\r\n \t totalCount += item.LikeActions[i].Count;\r\n \t totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n \t }\r\n\r\n \t item.AverageLikeValue = totalValue / totalCount;\r\n }\r\n }\r\n\r\n function GetTag() {\r\n var defer = $q.defer();\r\n \tif (vm.tagSystemName) {\r\n \t\tmediaService.GetTagBySystemName(vm.tagSystemName).then(GetTagSuccess); \t\t\r\n \t} else {\r\n \t\tmediaService.GetTag(vm.tagId).then(GetTagSuccess);\r\n \t}\r\n \r\n function GetTagSuccess(response) { \r\n vm.SelectedTag = vm.tagSystemName ? response.data : response.data[0];\r\n if (vm.SelectedTag != null) {\r\n vm.tagId = vm.SelectedTag.Id;\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.SelectedTag.Name,\r\n description: vm.SelectedTag.Description\r\n });\r\n }\r\n\r\n if (response.data == null) {\r\n defer.resolve(false);\r\n }\r\n else {\r\n defer.resolve(response);\r\n }\r\n \r\n vm.SetSelectedFile();\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function GetMediaFiles() { \t\r\n var tagIds = vm.tagId ? [vm.tagId] : undefined;\r\n mediaService.GetMediaFiles(vm.MediaFileTypes.GetValues('Id'), tagIds, false).then(GetMediaFilesSuccess);\r\n function GetMediaFilesSuccess(response) {\r\n vm.MediaFiles = response.data;\r\n\r\n vm.SetSelectedFile();\r\n vm.InitSlick();\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['MEDIA.META.TITLE', 'MEDIA.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['MEDIA.META.TITLE'],\r\n description: translations['MEDIA.META.DESCRIPTION']\r\n })\r\n });\r\n\r\n GetTag().then(function (response) {\r\n vm.GetMediaFileTypes();\r\n })\r\n\r\n bizEngageService.GetMiniJourneySetting('MediabankFile').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }); \r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizModuleVideoList', bizModuleVideoListDirective);\r\n\r\n bizModuleVideoListDirective.$inject = [];\r\n\r\n function bizModuleVideoListDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: function(element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return siteRootPath + \"FrontEnd/Modules/Media/Views/video-list.html\"\r\n }\r\n },\r\n controller: bizModuleVideoListController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n };\r\n\r\n bizModuleVideoListController.$inject = [\"$rootScope\", \"modules.media.service\", \"$timeout\", \"$sce\"];\r\n\r\n function bizModuleVideoListController($rootScope, mediaService, $timeout, $sce) {\r\n var vm = this;\r\n vm.Videos = [];\r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n \r\n if(vm.settings.Filter == 'newest') {\r\n mediaService.GetMediaFiles([1], null, null, null).then(GetVideosSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n mediaService.GetMediaFiles([1], $rootScope.FavoriteTagIds, null, null, true).then(GetVideosSuccess);\r\n }\r\n\r\n function GetVideosSuccess(response) {\r\n vm.Videos = response.data;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.media.service', mediaService);\r\n\r\n mediaService.$inject = [\"$http\", \"$rootScope\"];\r\n\r\n function mediaService($http, $rootScope) {\r\n\r\n this.GetMediaFiles = function (fileTypes, tagIds, getRelatedFiles, includeViews, journeyOrder) {\r\n return $http.post(siteRootPath + \"api/MediabankUser/GetMediaBankFilesForUser\",\r\n { FileTypes: fileTypes, TagIds: tagIds, GetRelatedFiles: getRelatedFiles, IncludeViews: includeViews, JourneyOrder: journeyOrder || false });\r\n };\r\n\r\n this.GetGenericSetting = function (key) {\r\n return $http.get(siteRootPath + \"api/mediabankuser/GetGenericSetting?\" + $.param({ key: key }));\r\n };\r\n\r\n this.GetGenericSettings = function (keys) {\r\n return $http.get(siteRootPath + \"api/genericsetting/GetGenericSettings?\" + $.param({ type: 'MEDIABANK', keys: keys }));\r\n };\r\n\r\n this.GetMediaFileTypes = function () {\r\n return $http.get(siteRootPath + \"api/mediabankuser/GetMediaFileTypes\");\r\n };\r\n\r\n this.GetTag = function (id) {\r\n return $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n }\r\n this.GetTagBySystemName = function (systemName) {\r\n \treturn $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n }\r\n\r\n this.AddLikeActionToMediaFile = function (entryId, actionId) {\r\n return $http.post(siteRootPath + 'api/mediabankuser/AddLikeActionToMediaFile', { objectId: entryId, actionId: actionId }, { ignoreLoadingBar: true });\r\n } \r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').controller('modules.missions', missionsController);\r\n\tangular.module('bizPartEngage').controller('modules.missions.view', missionsViewController);\r\n\tangular.module('bizPartEngage').controller('modules.missions.users', missionsUsersController);\r\n\r\n\tmissionsController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$interval\", \"$translate\", \"MetadataService\"];\r\n\tmissionsViewController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$translate\", \"MetadataService\"];\r\n\tmissionsUsersController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$translate\", \"MetadataService\"];\r\n\r\n\tfunction missionsController(missionsService, $stateParams, $interval, $translate, MetadataService) {\r\n \tvar vm = this;\r\n }\r\n\r\n\tfunction missionsViewController(missionsService, $stateParams, $translate, MetadataService) {\r\n \tvar vm = this;\r\n \tvm.Mission = {};\r\n \tvm.MissionId = ~~$stateParams.id;\r\n \tvm.GetMission = GetMission;\r\n \tvm.GetRuleUrl = GetRuleUrl;\r\n\r\n \tfunction GetRuleUrl(rule) {\r\n\t\t\tvar url = rule.Value.Url.Value;\r\n \t\tif (rule.Value.CompleteId && url != null && url.indexOf(\"#OBJECTID#\") > -1)\r\n\t\t\t\turl = url.replace(\"#OBJECTID#\", rule.Value.CompleteId.Value.Id);\r\n\t\t\t\t\r\n\t\t\tif (rule.Value.CompleteId && url != null && url.indexOf(\"#URLREWRITE#\") > -1)\r\n \t\t\turl = url.replace(\"#URLREWRITE#\", rule.Value.CompleteId.Value.UrlRewrite);\r\n\r\n \t\treturn url;\r\n \t}\r\n\r\n \tfunction GetMission(missionId) {\r\n\t\t\tmissionsService.GetMission(missionId).then(getMissionCallBack);\r\n\r\n \t\tfunction getMissionCallBack(response) {\r\n \t\t\t var mission = response.data;\r\n \t\t\t for (var i = 0; i < mission.Rules.length; i++) {\r\n \t\t\t \tmission.Rules[i].Value = JSON.parse(mission.Rules[i].Value);\r\n \t\t\t}\r\n \t\t\tvm.Mission = mission;\r\n \t\t}\r\n \t}\r\n\r\n \tangular.element(document).ready(function () {\r\n \t vm.GetMission(vm.MissionId);\r\n\r\n \t $translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n \t MetadataService.setMetaTags({\r\n \t title: translations['MISSIONS.META.TITLE'],\r\n \t description: translations['MISSIONS.META.DESCRIPTION']\r\n \t })\r\n \t });\r\n \t});\r\n }\r\n\r\n\tfunction missionsUsersController(missionsService, $stateParams, $translate, MetadataService) {\r\n \tvar vm = this;\r\n \tvm.Users = [];\r\n \tvm.MissionId = ~~$stateParams.id;\r\n \tvm.GetUsers = GetUsers;\r\n \tvm.Back = Back;\r\n\r\n \tfunction GetUsers() {\r\n\t\t\tmissionsService.GetUsers(vm.MissionId).then(function (response) {\r\n \t\t\tvm.Users = response.data;\r\n \t\t});\r\n \t}\r\n\r\n \tfunction Back() {\r\n \t\twindow.history.back();\r\n \t}\r\n\r\n \tangular.element(document).ready(function () {\r\n \t vm.GetUsers();\r\n\r\n \t $translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n \t MetadataService.setMetaTags({\r\n \t title: translations['MISSIONS.META.TITLE'],\r\n \t description: translations['MISSIONS.META.DESCRIPTION']\r\n \t })\r\n \t });\r\n \t});\r\n }\r\n})(window.angular);\r\n","(function () {\r\n\tangular.module('bizPartEngage').controller('modules.missionsList', missionListController);\r\n\tangular.module('bizPartEngage').directive('bizMission', bizMissionDirective);\r\n\tangular.module('bizPartEngage').directive('bizMissionRule', bizMissionRuleDirective);\r\n\tangular.module('bizPartEngage').directive('missionUser', missionUserDirective);\r\n\tangular.module('bizPartEngage').directive('bizMissionList', missionListDirective);\r\n\r\n\tbizMissionDirective.$inject = [\"$interval\", \"bizCore\"];\r\n\tbizMissionRuleDirective.$inject = [\"$compile\"];\r\n\tmissionListDirective.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizMissionDirective($interval, bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\ttransclude: true,\r\n\t\t\tscope: {\r\n\t\t\t\tmission: \"=\"\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('bizMissionDirective', 'FrontEnd/Modules/Missions/views/directives/bizMission.html'),\r\n\t\t\tlink: bizMissionLinkFunction,\r\n\t\t\tcontroller: bizMissionController,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\r\n\t\tbizMissionController.$inject = [\"$scope\"];\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction bizMissionLinkFunction(scope, element) {\r\n\t\t}\r\n\r\n\t\tfunction bizMissionController($scope) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.GetNextRule = GetNextRule;\r\n\t\t\tvm.CalculateTimeStats = CalculateTimeStats;\r\n\t\t\tvm.CalculateCompletedPercent = CalculateCompletedPercent;\r\n\r\n\t\t\tfunction GetNextRule () {\r\n\t\t\t\tif (vm.NextRule)\r\n\t\t\t\t\treturn vm.NextRule\r\n\r\n\t\t\t\tif (vm.mission != undefined && vm.mission.Rules != undefined) {\r\n\t\t\t\t\tfor (var i = 0; i < vm.mission.Rules.length; i++) {\r\n\t\t\t\t\t\tif (~~vm.mission.Rules[i].PercentageComplete < 100) {\r\n\t\t\t\t\t\t\trule = vm.mission.Rules[i];\r\n\t\t\t\t\t\t\tvm.NextRule = rule;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn vm.NextRule;\r\n\t\t\t};\r\n\r\n\t\t\tfunction CalculateTimeStats() {\r\n\t\t\t\tvm.Now = moment();\r\n\t\t\t\tvm.EndDate = moment(vm.mission.EndDate);\r\n\t\t\t\tvm.DaysLeft = vm.EndDate.diff(vm.Now, 'days');\r\n\r\n\t\t\t\tif (vm.DaysLeft <= 0)\r\n\t\t\t\t\tvm.DaysLeft = 0;\r\n\r\n\t\t\t\tvm.HoursLeft = vm.EndDate.diff(vm.Now.add(vm.DaysLeft, 'days'), 'hours');\r\n\r\n\t\t\t\tif (vm.HoursLeft <= 0)\r\n\t\t\t\t\tvm.HoursLeft = 0;\r\n\r\n\t\t\t\tvm.MinutesLeft = vm.EndDate.diff(vm.Now.add(vm.HoursLeft, 'hours'), 'minutes');\r\n\r\n\t\t\t\tif (vm.MinutesLeft <= 0)\r\n\t\t\t\t\tvm.MinutesLeft = 0;\r\n\t\t\t};\r\n\r\n\t\t\tfunction CalculateCompletedPercent() {\r\n\t\t\t\tvm.CompletedPercentage = 0;\r\n\t\t\t\tvar totalPercentage = 0;\r\n\t\t\t\tvar amountOfRules = 0;\r\n\t\t\t\tif (vm.mission.Rules != undefined) {\r\n\t\t\t\t\tfor (var i = 0; i < vm.mission.Rules.length; i++) {\r\n\t\t\t\t\t\ttotalPercentage += vm.mission.Rules[i].PercentageComplete;\r\n\t\t\t\t\t\tamountOfRules++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (totalPercentage > 0 && amountOfRules > 0)\r\n\t\t\t\t\t\tvm.CompletedPercentage = totalPercentage / amountOfRules;\r\n\r\n\t\t\t\t\tvm.CompletedPercentage = ~~vm.CompletedPercentage;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t$interval(vm.CalculateTimeStats, 10000);\r\n\r\n\t\t\t$scope.$watch(function () { return vm.mission; }, function () {\r\n\t\t\t\tvm.CalculateCompletedPercent();\r\n\t\t\t\tvm.CalculateTimeStats();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bizMissionRuleDirective($compile) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {\r\n\t\t\t\trule: \"=\",\r\n\t\t\t\tmission: \"=\"\r\n\t\t\t},\r\n\t\t\tlink: linkFunction\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction linkFunction(scope, element) {\r\n\t\t\tscope.TemplateUrl = \"\";\r\n\r\n\t\t\tscope.KnobData =\r\n {\r\n \tvalue: scope.rule.PercentageComplete,\r\n \toptions: {\r\n\t\t\t\t\tfgColor: scope.mission.Settings.SecondaryColor,\r\n\t\t\t\t\tbgColor: \"#FFF\",\r\n \t\tinputColor: '#000000',\r\n \t\tangleOffset: -125,\r\n \t\tangleArc: 250,\r\n \t\treadOnly: true,\r\n \t\twidth: 100,\r\n \t\tdisplayInput: false\r\n \t}\r\n };\r\n\r\n\t\t\tswitch (scope.rule.Class) {\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tscope.TemplateUrl = siteRootPath + \"FrontEnd/Modules/Missions/views/directives/bizMissionRules/GenericTemplate.html\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tangular.element(element).append($compile(\"
\")(scope));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction missionUserDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tuser: \"=\"\r\n\t\t\t},\r\n\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Modules/Missions/views/directives/bizMissionUser.html\",\r\n\t\t\tlink: linkFunction\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction linkFunction(scope) {\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tfunction missionListDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.missions', 'FrontEnd/Modules/Missions/views/directives/bizMissionList.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.missions', 'modules.missionsList'),\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tmissionListController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$interval\", \"$translate\", \"MetadataService\"];\r\n\r\n\tfunction missionListController(missionsService, $stateParams, $interval, $translate, MetadataService) {\r\n\t\tvar vm = this;\r\n\tvm.Missions = [];\r\n\t\r\n\tvm.GetDate = GetDate;\r\n\tvm.GetMissions = GetMissions;\r\n\tvm.CalculateTimeStats = CalculateTimeStats;\r\n\tvm.CalculateCompletedPercent = CalculateCompletedPercent;\r\n\tvm.CalculateTimeStatsForAllMissions = CalculateTimeStatsForAllMissions;\r\n\r\n\tfunction GetDate (date) {\r\n\t\treturn moment(date).format('YYYY-MM-DD');\r\n\t}\r\n\r\n\tfunction GetMissions() {\r\n\t\tmissionsService.GetMissionsForUser().then(function (response) {\r\n\t\t\tvm.Missions = response.data || [];\r\n\t\t\tfor (var i = 0; i < vm.Missions.length; i++) {\r\n\t\t\t\tvm.CalculateCompletedPercent(vm.Missions[i]);\r\n\t\t\t\tvm.CalculateTimeStats(vm.Missions[i]);\r\n\t\t\t}\r\n\t\t\tconsole.log(vm.Missions);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction CalculateTimeStatsForAllMissions () {\r\n\t\tfor (var i = 0; i < vm.Missions.length; i++) {\r\n\t\t\tvm.CalculateTimeStats(vm.Missions[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction CalculateCompletedPercent(mission) {\r\n\t\tmission.CompletedPercentage = 0;\r\n\t\tvar totalPercentage = 0;\r\n\t\tvar amountOfRules = 0;\r\n\t\tif (mission.Rules != undefined) {\r\n\t\t\tfor (var i = 0; i < mission.Rules.length; i++) {\r\n\t\t\t\ttotalPercentage += mission.Rules[i].PercentageComplete;\r\n\t\t\t\tamountOfRules++;\r\n\t\t\t}\r\n\r\n\t\t\tif (totalPercentage > 0 && amountOfRules > 0)\r\n\t\t\t\tmission.CompletedPercentage = totalPercentage / amountOfRules;\r\n\r\n\t\t\t\tmission.CompletedPercentage = ~~mission.CompletedPercentage;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction CalculateTimeStats(mission) {\r\n\t\t\tvar now = moment();\r\n\t\t\tvar endDate = moment(mission.EndDate);\r\n\t\t\tmission.DaysLeft = endDate.diff(now, 'days');\r\n\r\n\t\t\tif (mission.DaysLeft <= 0)\r\n\t\t\t\tmission.DaysLeft = 0;\r\n\r\n\t\t\tmission.HoursLeft = endDate.diff(now.add(mission.DaysLeft, 'days'), 'hours');\r\n\r\n\t\t\tif (mission.HoursLeft <= 0)\r\n\t\t\t\tmission.HoursLeft = 0;\r\n\r\n\t\t\tmission.MinutesLeft = endDate.diff(now.add(mission.HoursLeft, 'hours'), 'minutes');\r\n\r\n\t\t\tif (mission.MinutesLeft <= 0)\r\n\t\t\t\tmission.MinutesLeft = 0;\r\n\t\t};\r\n\r\n\t\t$interval(vm.CalculateTimeStatsForAllMissions, 10000);\r\n\r\n\t\tangular.element(document).ready(function () {\r\n\t\t\tvm.GetMissions();\r\n\r\n\t\t\t$translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n\t\t\t\tMetadataService.setMetaTags({\r\n\t\t\t\t\ttitle: translations['MISSIONS.META.TITLE'],\r\n\t\t\t\t\tdescription: translations['MISSIONS.META.DESCRIPTION']\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}());","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.missions.service', missionsService);\r\n\r\n missionsService.$inject = [\"$http\"];\r\n\r\n function missionsService($http) {\r\n \tthis.GetMissionsForUser = function () {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetMissionsForUser');\r\n \t};\r\n\r\n \tthis.GetMission = function (id) {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetMission?' + $.param({id: id}));\r\n \t};\r\n\r\n \tthis.GetUsers = function (id) {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetUsersWhoHaveCompletedMission', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tmissionId: id\r\n\t\t\t\t}\r\n \t\t});\r\n \t};\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.search', indexController);\r\n\r\n indexController.$inject = [\"$stateParams\", \"bizCoreService\", \"$state\"];\r\n\r\n function indexController($stateParams, bizCoreService, $state) {\r\n\t\tvar vm = this;\r\n\t\tvm.ReferrerType = 'SearchPage';\r\n\t\tvm.ReferrerId = 0;\r\n\t\tvm.PageSize = 10;//setting\r\n\t\tvm.PageIndex = 0;\r\n\t\tvm.ResultCount = 0;\r\n\t\tvm.HitsIncement = 4;\r\n\r\n\t\tvm.SelectedIndex = 1;\r\n\r\n\t\tvm.OrderList = [/*{ Id: 0, Name: \"Relevans\" },*/ { Id: 2, Name: \"Från A-Ö\" }, { Id: 1, Name: \"Senaste\" }];\r\n\t\tvm.ShowAllIndex = { Index: 1, SearchIndexExternalName: \"Alla resultat\" };\r\n\r\n vm.SearchQuery = ($stateParams.query !== undefined ? decodeURIComponent($stateParams.query) : '');\r\n\r\n\t\tvm.Search = Search;\r\n\t\tvm.GoToResult = GoToResult;\r\n\t\tvm.GetResultHref = GetResultHref;\r\n\t\tvm.OnKeyPress = OnKeyPress;\r\n\t\tvm.SelectIndex = SelectIndex;\r\n\r\n\t\tvm.GetItemPreview = GetItemPreview;\r\n\t\tvm.GetStateUrl = GetStateUrl;\r\n\t\tvm.ShowCategory = ShowCategory;\r\n\t\tvm.ChangeSorting = ChangeSorting;\r\n\r\n vm.GetDate = GetDate;\r\n vm.HasValidDate = HasValidDate;\r\n\r\n function HasValidDate(date) {\r\n return !moment(date).isSameOrBefore('0001-01-01');\r\n }\r\n\r\n\t\tfunction GetDate(date) {\r\n\t\t return moment(date).format('YYYY-MM-DD');\r\n\t\t}\r\n\r\n\t\tfunction OnKeyPress($event) {\r\n\t\t\tif ($event.keyCode == 13) {\r\n\t\t\t\tvm.Search();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//function ChangeSorting(sortType) {\r\n\t\t//\tvm.SortBy = sortType.Id;\r\n\t\t//\tvm.Search();\r\n\t //}\r\n\t\tfunction ChangeSorting(Id) {\r\n\t\t vm.SortBy = Id;\r\n\t\t vm.Search();\r\n\t\t}\r\n\r\n\t\tfunction Search() {\t\t \r\n\t\t\tif (!vm.SearchQuery) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.SearchIndexList) {\r\n\t\t\t vm.SearchIndexList = [\r\n { Index: 2, TotalHits: vm.HitsIncement },\r\n { Index: 3, TotalHits: vm.HitsIncement },\r\n { Index: 4, TotalHits: vm.HitsIncement },\r\n\t\t\t { Index: 5, TotalHits: vm.HitsIncement },\r\n\t\t\t\t{ Index: 6, TotalHits: vm.HitsIncement },\r\n\t\t\t\t{ Index: 7, TotalHits: vm.HitsIncement }];\r\n }\r\n\t\t\t\r\n\t\t\tvm.PageIndex = 0;\r\n\t\t\tvar maxHits = (vm.PageIndex + 1) * vm.PageSize;\r\n\r\n\t\t\tbizCoreService.Search(vm.SearchQuery, maxHits, vm.ReferrerType, vm.ReferrerId, vm.IndexList, vm.SearchIndexList, vm.SortBy).then(SearchCallback);\r\n\r\n\t\t\tfunction SearchCallback(response) {\r\n\t\t\t\tif (!vm.IndexesToShow) {\r\n\t\t\t\t\tvm.IndexesToShow = response.data.IndexToShowList;\r\n\t\t\t\t\tfor (var i = 0; i < vm.IndexesToShow.length; i++) {\r\n\t\t\t\t\t\tvm.IndexesToShow[i].TotalHits = vm.HitsIncement;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//vm.IndexesToShow.unshift({ Index: 1, SearchIndexExternalName: \"Alla resultat\" });\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t\tvm.ResultItems = response.data.ResultItems;\r\n\t\t\t\tvm.SearchedQuery = vm.SearchQuery;\t\t\t\t\r\n\t\t\t\tvm.ResultCount = response.data.TotalHits;\r\n\r\n\t\t\t\tHandleResults(vm.ResultItems);\r\n\r\n\t\t\t\tfunction HandleResults(results) {\r\n\t\t\t\t\tif (!results)\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\tresults[i].StateUrl = vm.GetStateUrl(results[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction GoToResult(item) {\r\n\t\t\tbizCoreService.LogSearch(item);\t\t\t\r\n\t\t}\r\n\r\n\t\tfunction GetResultHref(item) {\r\n\t\t\treturn $state.href(item.State, JSON.parse(item.StateParameters));\t\t\t\r\n\t\t}\r\n\r\n\t\tfunction GetStateUrl(item) {\r\n var url = decodeURI($state.href(item.State, JSON.parse(item.StateParameters), { absolute: false }));\r\n\t\t\tif (url.indexOf(\"#!\") == 0) {\r\n\t\t\t\turl = url.substring(2);\r\n }\r\n if (url.indexOf(\"/\") == 0 && url.indexOf(siteRootPath) == -1) {\r\n url = url.replace(\"/\", siteRootPath);\r\n\t\t\t}\t\t\t\r\n\t\t\treturn url;\r\n\t\t}\r\n\r\n\t\tfunction GetItemPreview(item) {\r\n\t\t\t\r\n\t\t\tvar preview = item.ItemPreview;\t\t\t\r\n\t\t\treturn preview || '';\r\n\t\t}\r\n\r\n\t\tfunction SelectIndex(index) {\r\n\t\t if (vm.SelectedIndex) {\r\n\t\t vm.SelectedIndex == index ? vm.SelectedIndex = undefined : vm.SelectedIndex = index;\r\n\t\t }\r\n\t\t else\r\n\t\t vm.SelectedIndex = index;\r\n\t\t \r\n\t\t}\r\n\r\n\t\tfunction ShowCategory(category) {\t\t\t\r\n\t\t\tif (vm.ResultItems.GetItemsByValue('Index', category.Index).length > 0) {\r\n\t\t if (vm.SelectedIndex){\r\n\t\t if (vm.SelectedIndex != 1 && vm.SelectedIndex == category.Index)\r\n\t\t return true;\r\n\t\t else if (vm.SelectedIndex == 1)\r\n\t\t return true;\r\n\r\n\t\t return false;\r\n\t\t }\r\n\t\t else if(!vm.SelectedIndex)\r\n\t\t {\r\n\t\t return true;\r\n\t\t }\r\n\t\t }\r\n\t\t else\r\n\t\t return false;\t\t \r\n\t\t}\r\n\r\n\t\tfunction Init() {\r\n\t\t\tif (vm.SearchQuery) {\r\n\t\t\t\tvm.Search();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.$onInit = Init;\r\n\t}\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.speedquiz.list', speedquizListController);\r\n angular.module('bizPartEngage').controller('modules.speedquiz.play', speedquizPlayController)\r\n angular.module('bizPartEngage').controller('modules.speedquiz.highscore', speedquizHighscoreController)\r\n\r\n speedquizListController.$inject = [\"$state\", \"$stateParams\", \"modules.speedquiz.service\", \"$filter\"];\r\n speedquizPlayController.$inject = [\"$stateParams\", \"bizUser\", \"$filter\", \"modules.speedquiz.service\", \"$scope\", \"$window\", \"$q\"];\r\n speedquizHighscoreController.$inject = [\"$stateParams\", \"modules.speedquiz.service\"];\r\n\r\n function speedquizListController($state, $stateParams, speedquizService, $filter) {\r\n var vm = this;\r\n vm.PluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.SpeedquizName = $stateParams.urlRewrite;//not actually used, just for show.\r\n vm.Speedquizes = [];\r\n\r\n vm.PlaySpeedquiz = PlaySpeedquiz;\r\n vm.GoToHighscore = GoToHighscore;\r\n\r\n function GoToHighscore(speedquiz) {\r\n $state.go('base.modules.speedquizhighscore', {pluginInstanceId: speedquiz.PluginInstanceId, name: speedquiz.Name});\r\n }\r\n\r\n function PlaySpeedquiz(speedquiz) {\r\n var state = 'base.modules.speedquizplay';\r\n if (vm.PluginInstanceId === speedquiz.PluginInstanceId) {\r\n state = 'base.modules.speedquizplayfromone';\r\n }\r\n $state.go(state, { id: speedquiz.UrlRewrite || speedquiz.Id, pluginInstanceId: speedquiz.PluginInstanceId });\r\n }\r\n\r\n function GetSpeedquizes() {\r\n speedquizService.GetSpeedquizInstancesForLoggedInUser().then(GetSpeedquizesSuccess);\r\n \r\n function GetSpeedquizesSuccess(response) {\r\n if (vm.PluginInstanceId) {\r\n vm.Speedquizes = $filter('filter')(response.data, { PluginInstanceId: vm.PluginInstanceId }); \r\n } else {\r\n vm.Speedquizes = response.data;\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n GetSpeedquizes();\r\n speedquizService.HasGuiOverrides();//caches result in session storage, which will decrease delay in start when the quiz actually launches\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function speedquizPlayController($stateParams, user, $filter, speedquizService, $scope, $window, $q) {\r\n var vm = this;\r\n if (~~$stateParams.id > 0) {\r\n vm.SpeedquizId = ~~$stateParams.id;\r\n } else {\r\n vm.SpeedquizUrlRewrite = $stateParams.id\r\n }\r\n vm.FromOneQuiz = $stateParams.fromOneQuiz === true;\r\n vm.SpeedquizId = ~~$stateParams.id > 0 ? ~~$stateParams.id : 0;\r\n vm.pluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.userSession = user.getLoggedInUser().Token; \r\n vm.hasCustomerGuiOverrides = false;\r\n\r\n vm.ShowGame = false;\r\n vm.IsLoading = true;\r\n\r\n vm.GetIframeUrl = GetIframeUrl;\r\n\r\n const postMessageReceived = (event) => {\r\n console.log(\"message received\", event); \r\n if (event.origin === $window.location.origin && event.data === 'ISLOADED') {\r\n vm.IsLoading = false;\r\n $scope.$digest();\r\n } \r\n };\r\n\r\n function GetIframeUrl() { \r\n var url = \"/Speedquiz/index.html?quizId=\" + vm.SpeedquizId + \"&siteRootPath=\" + siteRootPath + \"&UserSession=\" + vm.userSession + \"&lang=\" + cultureCode.substring(0, 2); \r\n if (vm.hasCustomerGuiOverrides) {\r\n url = url + '&customer=' + portalAlias;\r\n } \r\n\r\n return $filter('siteroot')(url);\r\n }\r\n \r\n \r\n function Init() {\r\n\r\n $window.addEventListener('message', postMessageReceived);\r\n\r\n var pList = [speedquizService.HasGuiOverrides()];\r\n if (vm.SpeedquizUrlRewrite) { \r\n pList.push(speedquizService.GetSpeedquizIdByUrlRewrite(vm.SpeedquizUrlRewrite));\r\n }\r\n\r\n $q.all(pList).then(Callback);\r\n\r\n function Callback(result) { \r\n vm.hasCustomerGuiOverrides = result[0];\r\n if (vm.SpeedquizUrlRewrite) {\r\n vm.SpeedquizId = ~~result[1].data; \r\n }\r\n vm.ShowGame = true;\r\n }\r\n \r\n //speedquizService.HasGuiOverrides().then(function (response) { \r\n // vm.hasCustomerGuiOverrides = response; \r\n // vm.ShowGame = true; \r\n //});\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n $scope.$on(\"$destroy\", () => {\r\n $window.postMessage('QUIZCLEANUP', $window.location.origin);\r\n $window.removeEventListener('message', postMessageReceived);\r\n });\r\n }\r\n\r\n function speedquizHighscoreController($stateParams, speedquizService) {\r\n var vm = this;\r\n vm.pluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.speedquizName = $stateParams.name;\r\n vm.Highscore = [];\r\n\r\n vm.GetHighscore = GetHighscore;\r\n vm.GoBack = GoBack;\r\n\r\n function GoBack() {\r\n window.history.back();\r\n }\r\n\r\n function GetHighscore() {\r\n speedquizService.GetHighscore(vm.pluginInstanceId, 10).then(GetHighscoreSuccess);\r\n\r\n function GetHighscoreSuccess(response) {\r\n vm.Highscore = response.data.ScoreItems;\r\n }\r\n }\r\n\r\n \r\n function Init() {\r\n vm.GetHighscore();\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').service('modules.speedquiz.service', speedquizService);\r\n\r\n speedquizService.$inject = [\"$http\", \"$q\"];\r\n\r\n function speedquizService($http, $q) { \r\n\r\n this.GetSpeedquizInstancesForLoggedInUser = function() {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizInstancesForLoggedInUser\");\r\n };\r\n\r\n this.GetHighscore = function(pluginInstanceId, max) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetHighscore?\" + $.param({id: pluginInstanceId, max:max}));\r\n };\r\n\r\n this.GetSpeedquizIdByUrlRewrite = function (urlRewrite) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizIdByUrlRewrite?\" + $.param({ urlRewrite: urlRewrite }));\r\n };\r\n\r\n this.GetSpeedquizInstance = function (quizId) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizInstance?\" + $.param(\r\n {\r\n id: quizId,\r\n assemblyName: 'BizPartEngage.Speedquiz.dll',\r\n className: 'BizPartEngage.Speedquiz.Plugins.SpeedquizGeneralPlugin',\r\n objectId: -1\r\n }\r\n ));\r\n };\r\n\r\n this.Answer = function (answer) {\r\n return $http.post(siteRootPath + \"api/speedquiz/Answer\", answer, { headers: { IgnoreLoader: true }});\r\n }\r\n\r\n this.Submit = function (score) {\r\n return $http.post(siteRootPath + \"api/speedquiz/SubmitScore\", score, { headers: { IgnoreLoader: true } });\r\n }\r\n\r\n this.HasGuiOverrides = function () {\r\n var defer = $q.defer();\r\n \r\n var v = getSessionStorage('SPEEDQUIZ_HAS_GUI_OVERRIDES'); \r\n if (v === undefined || v === null) { \r\n $http.get(siteRootPath + \"api/speedquiz/HasCustomerGuiOverrides\").then(WSCallback);\r\n } else { \r\n defer.resolve(v === 'true'); \r\n }\r\n\r\n return defer.promise;\r\n\r\n function WSCallback(response) {\r\n setSessionStorage('SPEEDQUIZ_HAS_GUI_OVERRIDES', response.data); \r\n defer.resolve(response.data);\r\n }\r\n };\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').config(configCoreFunction);\r\n configCoreFunction.$inject = [\"$stateProvider\", \"bizUserProvider\", \"bizCoreProvider\", \"$translatePartialLoaderProvider\", \"bizPortalProvider\"];\r\n function configCoreFunction($stateProvider, bizUserProvider, bizCoreProvider, $translatePartialLoaderProvider, portalProvider) {\r\n\r\n\t\t$stateProvider\r\n .state('base.modules', {\r\n \ttemplate: '
'\r\n\t\t})\r\n\t\t.state('base.modules.blog', {\r\n \turl: \"/modules/blogs\",\r\n \ttemplateUrl: bizCoreProvider.getView('base.modules.blog', 'FrontEnd/Modules/Blog/Views/Index.html'), \r\n controller: bizCoreProvider.getController('base.modules.blogs', 'modules.blogs.list'),\r\n \tcontrollerAs: \"vm\",\r\n \tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); }\r\n \t}\r\n })\r\n .state('base.modules.blogtitle', {\r\n\t\t\turl: \"/blog/:title\",\r\n\t\t\tparams: {title: null},\r\n templateUrl: bizCoreProvider.getView('base.modules.blogtitle', 'FrontEnd/Modules/Blog/Views/view.html'), \r\n controller: bizCoreProvider.getController('modules.blogs.show', 'modules.blogs.show'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.blog\"\r\n\t\t\t}\r\n }).state('base.modules.blogtag', {\r\n \turl: \"/blogtags/:tagSystemName\",\r\n params: { id: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.blogtag', 'FrontEnd/Modules/Blog/Views/Index.html'), \r\n controller: bizCoreProvider.getController('base.modules.blogtag', 'modules.blogs.showbytag'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.blog\"\r\n }\r\n })\r\n \t.state('base.modules.missions', {\r\n \t\turl: \"/modules/missions\",\r\n template: '', \r\n controller: 'modules.missions',\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tdata: {\r\n \t\t\trule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); }\r\n \t\t}\r\n \t})\r\n \t.state('base.modules.missionsview', {\r\n \t\turl: \"/modules/missions/:id\",\r\n templateUrl: bizCoreProvider.getView('base.modules.missionsview', 'FrontEnd/Modules/Missions/Views/view.html'), \r\n controller: bizCoreProvider.getController('base.modules.missionsview', 'modules.missions.view'),\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.missions\"\r\n \t\t}\r\n \t})\r\n .state('base.modules.missionsusers', {\r\n \turl: \"/modules/missions/:id/users\",\r\n templateUrl: bizCoreProvider.getView('base.modules.missionsusers', 'FrontEnd/Modules/Missions/Views/users.html'), \r\n controller: bizCoreProvider.getController('base.modules.missionsusers', 'modules.missions.users'),\r\n \tcontrollerAs: \"vm\",\r\n \tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.missions\"\r\n \t}\r\n })\r\n\t\t.state('base.modules.educations', {\r\n\t\t\turl: \"/modules/educations\",\r\n templateUrl: bizCoreProvider.getView('base.modules.educations', 'FrontEnd/Modules/Education/Views/index.html'),\r\n controller: 'modules.educations',\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n }).state('base.modules.educationtag', {\r\n url: \"/educationtags/:tagSystemName\",\r\n params: { id: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.educationtag', 'FrontEnd/Modules/Education/Views/Index.html'),\r\n controller: bizCoreProvider.getController('base.modules.educationtag', 'modules.educations'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.educations\"\r\n }\r\n })\r\n\t\t.state('base.modules.html5education', {\r\n\t\t\turl: \"/modules/education/html5/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.html5education', 'FrontEnd/Modules/Education/Views/html5education.html'), \r\n controller: bizCoreProvider.getController('base.modules.html5education', 'modules.educations.html5'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.educations\"\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.cms', {\r\n\t\t\turl: \"/page/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.cms', 'FrontEnd/Modules/CMS/Views/page.html'), \r\n controller: bizCoreProvider.getController('base.modules.cms', 'modules.cms.page'),\r\n controllerAs: \"vm\",\r\n params: {\r\n params: null //optional params that can be used in modules that might be on the page\r\n },\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('CMS', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forums', {\r\n\t\t\turl: \"/modules/forums\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forums', 'FrontEnd/Modules/Forum/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.forums', 'modules.forums'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forum', {\r\n\t\t\turl: \"/modules/forum/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forum', 'FrontEnd/Modules/Forum/Views/viewforum.html'), \r\n controller: bizCoreProvider.getController('base.modules.forum', 'modules.forum'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.forums\"\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forumthread', {\r\n\t\t\turl: \"/modules/forum-thread/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forumthread', 'FrontEnd/Modules/Forum/Views/viewforumthread.html'), \r\n controller: bizCoreProvider.getController('base.modules.forumthread', 'modules.forum.thread'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.forums\"\r\n\t\t\t}\r\n\t\t}).state('base.modules.dictionary', {\r\n\t\t\turl: \"/modules/dictionary\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.dictionary', 'FrontEnd/Modules/Dictionary/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.dictionary', 'modules.dictionary'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('DICTIONARY', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.dictionaryitem', {\r\n\t\t\turl: \"/modules/dictionary/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.dictionary', 'FrontEnd/Modules/Dictionary/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.dictionary', 'modules.dictionary'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('DICTIONARY', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.events', {\r\n\t\t\turl: \"/modules/events\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.events', 'FrontEnd/Modules/Event/Views/list-react.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.events', 'modules.events'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.eventsfilter', {\r\n\t\t\turl: \"/modules/events/:filter\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.events', 'FrontEnd/Modules/Event/Views/list-react.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.events', 'modules.events'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.event', {\r\n\t\t\turl: \"/modules/event/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.event', 'FrontEnd/Modules/Event/Views/index-react.html'),\r\n controller: bizCoreProvider.getController('base.modules.event', 'modules.event'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.media', {\r\n\t\t url: \"/modules/media/\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.media', 'FrontEnd/Modules/Media/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.media', 'modules.media'),\r\n\t\t controllerAs: \"vm\",\r\n\t\t data: {\r\n\t\t rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t }\r\n\t\t}).state('base.modules.mediafile', {\r\n\t\t url: \"/modules/media/:id\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.mediafile', 'FrontEnd/Modules/Media/Views/viewfile.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediafile', 'modules.media'),\r\n\t\t controllerAs: \"vm\",\r\n\t\t data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t }\r\n\t\t}).state('base.modules.mediatagsfileid', {\r\n\t\t\turl: \"/mediatags/:tagSystemName/:fileId\",\r\n templateUrl: bizCoreProvider.getView('base.modules.mediatags', 'FrontEnd/Modules/Media/Views/viewtags.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediatags', 'modules.mediatags'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t\t}\r\n\t\t}).state('base.modules.mediatags', {\r\n\t\t\turl: \"/mediatags/:tagSystemName\",\r\n templateUrl: bizCoreProvider.getView('base.modules.mediatags', 'FrontEnd/Modules/Media/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediatags', 'modules.mediatags'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t\t}\t\t\r\n\t\t}).state('base.modules.search', {\r\n\t\t url: \"/modules/search/?:query\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.search', 'FrontEnd/Modules/Search/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.search', 'modules.search'),\r\n\t\t controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn() || portalProvider.IsPortalPublic(); }\r\n\t\t }\r\n\t\t}).state('base.modules.masterrun', {\r\n\t\t\turl: \"/modules/masterrun\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.masterrun', 'FrontEnd/Modules/MasterRun/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.masterrun', 'modules.masterrun'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('MASTER_RUN', bizUserProvider.AccessTypeRight.Read); }\r\n } \r\n }).state('base.modules.journey', {\r\n\t\t\turl: \"/modules/journey\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.journey', 'FrontEnd/Modules/Journey/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.journey', 'modules.journey'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return true; return bizUserProvider.HasModuleAccess('ENGAGEMENT_GOAL', bizUserProvider.AccessTypeRight.Read); } // todo\r\n\t\t\t}\r\n }) \r\n\t\t.state('base.modules.speedquiz', {\r\n url: \"/modules/speedquiz\",\r\n params: { urlRewrite: null, pluginInstanceId: null },\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz', 'FrontEnd/Modules/SpeedQuiz/Views/list.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.list\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n })\r\n .state('base.modules.speedquizone', {\r\n url: \"/modules/speedquiz/:urlRewrite/:pluginInstanceId\",\r\n params: { urlRewrite: null, pluginInstanceId: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.speedquiz', 'FrontEnd/Modules/SpeedQuiz/Views/list.html'),\r\n controller: \"modules.speedquiz.list\",\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n }\r\n })\r\n\t\t.state('base.modules.speedquizplay', {\r\n\t\t\turl: \"/modules/speedquiz/play/:id/:pluginInstanceId\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.play', 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.play\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n })\r\n\t\t.state('base.modules.speedquizplayfromone', {\r\n\t\t\turl: \"/modules/speedquiz/play-one/:id/:pluginInstanceId\",\r\n\t\t\tparams: {\r\n\t\t\t\tfromOneQuiz: true\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.play', 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.play\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.speedquizhighscore', {\r\n\t\t\turl: \"/modules/speedquiz/highscore/:pluginInstanceId/:name\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.highscore', 'FrontEnd/Modules/SpeedQuiz/Views/highscore.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.highscore\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n }).state('base.modules.campaign', {\r\n\t\t\turl: \"modules/campaign/:urlRewrite?referer\",\r\n\t\t\tcontroller: \"modules.campaign\",\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t})\r\n\t\t.state('base.modules.campaign.page', {\r\n\t\t\turl: \"/:pageUrlRewrite\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.campaign', 'FrontEnd/Modules/Campaign/Views/default.html'),\r\n\t\t\tcontroller: \"modules.campaign.page\",\r\n\t\t\tcontrollerAs: \"vm\"\t\t\r\n })\r\n .state('base.modules.certifications', {\r\n url: \"/modules/certifications\",\r\n templateUrl: bizCoreProvider.getView('base.modules.certifications', 'FrontEnd/Modules/Certifications/Views/default.html'),\r\n controller: 'modules.certifications',\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('CERTIFICATIONS', bizUserProvider.AccessTypeRight.Read); }\r\n }\r\n })\r\n .state('base.modules.engageobjectredirect', {\r\n url: \"/modules/eor/:type/:id\",\r\n controller: EngageObjectRedirectController,\r\n controllerAs: \"vm\" \r\n });\r\n\r\n EngageObjectRedirectController.$inject = [\"$stateParams\", \"core.engage.service\"];\r\n function EngageObjectRedirectController($stateParams, coreEngageService) { \r\n vm = this;\r\n vm.EngageObjectType = $stateParams.type;\r\n vm.EngageObjectId = $stateParams.id;\r\n coreEngageService.RedirectToEngageObject(vm.EngageObjectType, vm.EngageObjectId);\r\n }\t\t\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage', [\r\n 'ng',\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngSanitize',\r\n 'ui.router',\r\n 'bizPart',\r\n 'ngMaterial',\r\n 'ui.bootstrap',\r\n 'ngMessages',\r\n 'sticky',\r\n 'multi-transclude',\r\n 'ui.knob',\r\n 'pascalprecht.translate',\r\n 'SignalR',\r\n 'BizContainer',\r\n 'BizContainerHelper',\r\n '720kb.socialshare',\r\n 'ngclipboard',\r\n 'matchMedia',\r\n 'oc.lazyLoad',\r\n 'bizWelcomeGuide',\r\n 'bizReactWrapper'\r\n ]);\r\n\r\n angular.module('bizPartEngage').constant('genericPosition', {\r\n TOP: 1,\r\n LEFT: 2,\r\n RIGHT: 3,\r\n BOTTOM: 4,\r\n CENTER: 5,\r\n });\r\n\r\n angular.module('bizPartEngage').provider('bizLevel', levelProvider);\r\n angular.module('bizPartEngage').provider('bizPortal', portalProvider);\r\n\r\n angular.module('bizPartEngage').provider('bizCore', coreProvider);\r\n angular.module('bizPartEngage').provider('bizUser', userProvider);\r\n\r\n angular.module('bizPartEngage').config(configFunction);\r\n angular.module('bizPartEngage').run(runFunction);\r\n angular\r\n .module('bizPartEngage')\r\n .factory('loadingInterceptor', loadingInterceptorFunction);\r\n\r\n configFunction.$inject = [\r\n '$stateProvider',\r\n '$urlRouterProvider',\r\n '$httpProvider',\r\n 'bizCoreProvider',\r\n '$translateProvider',\r\n '$translatePartialLoaderProvider',\r\n '$locationProvider',\r\n 'bizPortalProvider',\r\n 'bizUserProvider',\r\n '$ocLazyLoadProvider',\r\n ];\r\n runFunction.$inject = [\r\n '$rootScope',\r\n '$http',\r\n '$q',\r\n 'base.service',\r\n 'bizUser',\r\n '$state',\r\n 'core.users.service',\r\n 'bizLevel',\r\n '$translate',\r\n 'bizNotificationService',\r\n 'SignalRFactory',\r\n '$transitions',\r\n 'bizContainerSettings',\r\n '$location',\r\n '$window',\r\n '$translatePartialLoader',\r\n 'core.session.service',\r\n 'bizPortal',\r\n 'genericPosition',\r\n 'bizLoaderService',\r\n '$locale',\r\n 'bizPushNotificationService',\r\n 'bizJourneyService'\r\n ];\r\n loadingInterceptorFunction.$inject = ['$q'];\r\n userProvider.$inject = ['bizPortalProvider', '$translateProvider'];\r\n\r\n function coreProvider() {\r\n var lastUpdate = moment();\r\n\r\n function GetView(stateName, fallback) {\r\n //Adding to make sure we get a new version of the HTML every hour...\r\n if (moment.duration(moment().diff(lastUpdate)).asHours() > 1) {\r\n lastUpdate = moment();\r\n }\r\n\r\n var override = viewOverrides.GetItemByValue('State', stateName);\r\n var themeOverride = portalTheme.Views.GetItemByValue(\r\n 'State',\r\n stateName\r\n );\r\n\r\n if (override) {\r\n return siteRootPath + override.ViewUrl;\r\n } else if (themeOverride) {\r\n return siteRootPath + themeOverride.ViewUrl;\r\n } else {\r\n return siteRootPath + fallback;\r\n }\r\n }\r\n\r\n function GetController(stateName, fallback) {\r\n var override = viewOverrides.GetItemByValue('State', stateName);\r\n\r\n if (override && override.Controller) {\r\n return override.Controller;\r\n } else {\r\n return fallback;\r\n }\r\n }\r\n\r\n function SetViewOverrides(overrides) {\r\n viewOverrides = overrides;\r\n }\r\n\r\n return {\r\n getView: GetView,\r\n getController: GetController,\r\n setViewOverrides: SetViewOverrides,\r\n $get: function () {\r\n return {\r\n getViewOverrides: function () {\r\n return viewOverrides;\r\n },\r\n getView: GetView,\r\n getController: GetController,\r\n setViewOverrides: SetViewOverrides,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function userProvider(portalProvider, $translate) {\r\n if (userData.Token == null) userData.Token = getBizPartAuthToken();\r\n\r\n var LoggedInUser = userData;\r\n var AccessTypeRight = {\r\n Read: 10,\r\n Write: 20,\r\n WriteExtended: 30,\r\n Admin: 40,\r\n };\r\n\r\n function SetLoggedInUser(user) {\r\n LoggedInUser = user;\r\n }\r\n\r\n function HasWriteOrHigherAccess(accessTypeModuleKey) {\r\n var hasAccess = IsAdministrator();\r\n\r\n if (!hasAccess) {\r\n if (accessTypeModuleKey) {\r\n hasAccess = HasModuleAccess(\r\n accessTypeModuleKey,\r\n AccessTypeRight.Write\r\n );\r\n } else {\r\n try {\r\n for (var i = 0; i < LoggedInUser.Roles.length; i++) {\r\n if (hasAccess) {\r\n break;\r\n }\r\n if (LoggedInUser.Roles[i].AccessTypeAccesses) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.Roles[i].AccessTypeAccesses\r\n .length;\r\n a++\r\n ) {\r\n if (\r\n LoggedInUser.Roles[i]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeRight >=\r\n AccessTypeRight.Write &&\r\n LoggedInUser.Roles[i]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey !==\r\n 'ENGAGEMENT_GOAL'\r\n ) {\r\n hasAccess = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n hasAccess = false;\r\n }\r\n }\r\n }\r\n\r\n return hasAccess;\r\n }\r\n\r\n function HasModuleAccess(accessTypeModuleKey, accessTypeAccess, ignorePortalPublic) {\r\n if (\r\n (portalProvider.IsPortalPublic() && accessTypeAccess == 10 && !ignorePortalPublic) ||\r\n IsAdministrator()\r\n )\r\n return true;\r\n if (LoggedInUser.Roles) {\r\n try {\r\n //Checking user roles...\r\n for (var i = 0; i < LoggedInUser.Roles.length; i++) {\r\n if (LoggedInUser.Roles[i].AccessTypeAccesses) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.Roles[i].AccessTypeAccesses.length;\r\n a++\r\n ) {\r\n var correctModule =\r\n LoggedInUser.Roles[i].AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey ==\r\n accessTypeModuleKey;\r\n if (\r\n correctModule &&\r\n ~~LoggedInUser.Roles[i].AccessTypeAccesses[\r\n a\r\n ].AccessTypeRight >= ~~accessTypeAccess\r\n )\r\n return true;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n\r\n if (LoggedInUser.AllUnits) {\r\n try {\r\n //Checking user unit roles...\r\n for (var i = 0; i < LoggedInUser.AllUnits.length; i++) {\r\n for (\r\n var r = 0;\r\n r < LoggedInUser.AllUnits[i].Roles.length;\r\n r++\r\n ) {\r\n if (\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses\r\n ) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses.length;\r\n a++\r\n ) {\r\n var correctModule =\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey ==\r\n accessTypeModuleKey;\r\n if (\r\n correctModule &&\r\n ~~LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeRight >=\r\n ~~accessTypeAccess\r\n )\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n //console.warn('No access to: ', { accessTypeModuleKey: accessTypeModuleKey, accessTypeAccess: accessTypeAccess });\r\n return false;\r\n }\r\n\r\n function IsAdministrator() {\r\n const adminRoleSystemNames = ['ADMINISTRATOR', 'PortalAdmin', 'HostAdmin'];\r\n return LoggedInUser.Roles ? LoggedInUser.Roles.some(role => adminRoleSystemNames.includes(role.SystemName)) : false;\r\n }\r\n\r\n function IsLoggedIn() {\r\n return ~~LoggedInUser.Id > 0;\r\n }\r\n\r\n return {\r\n AccessTypeRight: AccessTypeRight,\r\n HasModuleAccess: HasModuleAccess,\r\n IsAdministrator: IsAdministrator,\r\n HasWriteOrHigherAccess: HasWriteOrHigherAccess,\r\n IsLoggedIn: IsLoggedIn,\r\n SetLoggedInUser: SetLoggedInUser,\r\n $get: function () {\r\n return {\r\n setLoggedInUser: function (user) {\r\n LoggedInUser.Initials = IsLoggedIn() ? `${user.FirstName.slice(0, 1)}${user.LastName.slice(0, 1)}` : '';\r\n moment.locale(cultureCode.substring(0, 2));\r\n\r\n console.log('CULTURE: ' + cultureCode);\r\n },\r\n getLoggedInUser: function () {\r\n return LoggedInUser;\r\n },\r\n AccessTypeRight: AccessTypeRight,\r\n HasModuleAccess: HasModuleAccess,\r\n IsAdministrator: IsAdministrator,\r\n HasWriteOrHigherAccess: HasWriteOrHigherAccess,\r\n IsLoggedIn: IsLoggedIn,\r\n SetLoggedInUser: SetLoggedInUser,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function levelProvider() {\r\n var translate;\r\n function getExperienceTypeLabel(key) {\r\n switch (~~key) {\r\n case 1:\r\n return translate('CORE.LOGIN');\r\n case 2:\r\n return translate('CORE.LOGINXDAYSWEEK');\r\n case 3:\r\n return translate('CORE.LOGINXDAYSMONTH');\r\n case 16:\r\n return translate('CORE.UNIQUEPAGEVISITS');\r\n case 18:\r\n return translate('CORE.EXPERIENCEGAINPERWEEKINUNIT');\r\n case 22:\r\n return translate('CORE.HTML5EDUCATION');\r\n }\r\n }\r\n\r\n function setTranslateProvider(t) {\r\n translate = t;\r\n }\r\n\r\n return {\r\n getExperienceTypeLabel: getExperienceTypeLabel,\r\n setTranslateProvider: setTranslateProvider,\r\n $get: function () {\r\n return {\r\n getExperienceTypeLabel: getExperienceTypeLabel,\r\n setTranslateProvider: setTranslateProvider,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function portalProvider() {\r\n var PublicPortal = false;\r\n\r\n function IsPortalPublic() {\r\n return PublicPortal;\r\n }\r\n\r\n function SetPublicPortal(val) {\r\n PublicPortal = val;\r\n }\r\n\r\n return {\r\n IsPortalPublic: IsPortalPublic,\r\n SetPublicPortal: SetPublicPortal,\r\n $get: function () {\r\n return {\r\n IsPortalPublic: IsPortalPublic,\r\n SetPublicPortal: SetPublicPortal,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function configFunction(\r\n $stateProvider,\r\n $urlRouterProvider,\r\n $httpProvider,\r\n bizCoreProvider,\r\n $translateProvider,\r\n $translatePartialLoaderProvider,\r\n $locationProvider,\r\n portalProvider,\r\n userProvider,\r\n $ocLazyLoadProvider\r\n ) {\r\n $urlRouterProvider.otherwise('/');\r\n $locationProvider.html5Mode(true);\r\n //$locationProvider.hashPrefix('!');\r\n\r\n $ocLazyLoadProvider.config({\r\n modules: GetLazyLoadModules(),\r\n });\r\n\r\n $stateProvider\r\n .state('base', {\r\n templateUrl: bizCoreProvider.getView(\r\n 'base',\r\n 'FrontEnd/views/base.html'\r\n ),\r\n controller: bizCoreProvider.getController('base', 'base'),\r\n controllerAs: 'vm',\r\n })\r\n .state('noaccess', {\r\n url: '/noaccess',\r\n templateUrl: bizCoreProvider.getView(\r\n 'noaccess',\r\n 'FrontEnd/views/noaccess.html'\r\n ),\r\n controller: bizCoreProvider.getController(\r\n 'noaccess',\r\n 'base.noaccess'\r\n ),\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n },\r\n })\r\n .state('login', {\r\n url: '/login',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.login',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html'\r\n ),\r\n controller: 'core.login',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n },\r\n })\r\n .state('logout', {\r\n url: '/logout',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.logout',\r\n 'FrontEnd/Core/Views/logout.html'\r\n ),\r\n controller: 'core.logout',\r\n controllerAs: 'vm' \r\n })\r\n .state('activateaccount', {\r\n url: '/activateaccount/:guid',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.login',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html'\r\n ),\r\n controller: 'core.login',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n },\r\n })\r\n .state('forgotpassword', {\r\n url: '/forgotpassword',\r\n templateUrl: bizCoreProvider.getView(\r\n 'core.forgotpassword',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html'\r\n ),\r\n controller: 'core.forgotpassword',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n },\r\n })\r\n .state('changepassword', {\r\n url: '/forgotpassword/:guid',\r\n templateUrl: bizCoreProvider.getView(\r\n 'core.forgotpassword',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html'\r\n ),\r\n controller: 'core.changepassword',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('base.home', {\r\n url: '/',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.home',\r\n 'FrontEnd/views/home.html'\r\n ),\r\n controller: bizCoreProvider.getController(\r\n 'base.home',\r\n 'base.home'\r\n ),\r\n controllerAs: 'vm',\r\n })\r\n .state('cleanbase', {\r\n templateUrl: bizCoreProvider.getView(\r\n 'cleanbase',\r\n 'FrontEnd/views/cleanbase.html'\r\n ),\r\n controller: bizCoreProvider.getController('base', 'base'),\r\n controllerAs: 'vm',\r\n });\r\n\r\n $httpProvider.interceptors.push('loadingInterceptor');\r\n $httpProvider.useApplyAsync(true);\r\n\r\n $translatePartialLoaderProvider.addPart('_combined');\r\n $translateProvider.useLoader('$translatePartialLoader', {\r\n urlTemplate: siteRootPath + 'FrontEnd/i18n/{part}/{lang}.json?v=' + bizPartVersion\r\n });\r\n\r\n var culture = cultureCode.substring(0, 2);\r\n\r\n $translateProvider.preferredLanguage(culture);\r\n $translateProvider.fallbackLanguage('en');\r\n\r\n $translateProvider.forceAsyncReload(true);\r\n $translateProvider.useLoaderCache(true);\r\n moment.locale(culture);\r\n $translateProvider.useSanitizeValueStrategy('sce');\r\n\r\n portalProvider.SetPublicPortal(IsPortalSettingTrue('IsPortalPublic'));\r\n\r\n $translateProvider.preferredLanguage(culture);\r\n $translateProvider.forceAsyncReload(true);\r\n $translateProvider.useLoaderCache(true);\r\n $translateProvider.fallbackLanguage('sv');\r\n $translateProvider.useSanitizeValueStrategy('sce');\r\n }\r\n\r\n function runFunction(\r\n $rootScope,\r\n $http,\r\n $q,\r\n baseService,\r\n bizUser,\r\n $state,\r\n userService,\r\n levelProvider,\r\n $translate,\r\n bizNotificationService,\r\n SignalRFactory,\r\n $transitions,\r\n bizContainerSettings,\r\n $location,\r\n $window,\r\n $translatePartialLoader,\r\n sessionService,\r\n portalProvider,\r\n genericPosition,\r\n bizLoaderService,\r\n $locale,\r\n bizPushNotificationService,\r\n bizJourneyService\r\n ) {\r\n var initializationDefer = $q.defer();\r\n $rootScope.CultureDefer = $q.defer();\r\n $rootScope.Initialized = initializationDefer.promise;\r\n $rootScope.CultureInitialized = $rootScope.CultureDefer.promise;\r\n\r\n $rootScope.$on('$translatePartialLoaderStructureChanged', function () {\r\n $translate.refresh();\r\n });\r\n\r\n $rootScope.RequestFullPageLoader =\r\n bizLoaderService.RequestFullPageLoader;\r\n\r\n levelProvider.setTranslateProvider($translate);\r\n\r\n $rootScope.AuthToken = getBizPartAuthToken();\r\n if (typeof isTestMode === 'undefined' || !isTestMode) {\r\n $http.defaults.headers.common['Auth-Token'] = $rootScope.AuthToken;\r\n }\r\n\r\n $http.defaults.headers.common['PortalId'] = portalId;\r\n $http.defaults.headers.common['Cache-Control'] =\r\n 'max-age=1800, private';\r\n $http.defaults.headers.common['Pragma'] = undefined;\r\n $rootScope.logo = portalSettings['logo'];\r\n $rootScope.poweredby = portalSettings['poweredby'];\r\n $rootScope.QueryParams = $location.search();\r\n $rootScope.menuSettings = menuSettings;\r\n $rootScope.genericpositions = genericPosition;\r\n $rootScope.maxWidth = portalSettings['maxWidth'];\r\n\r\n $rootScope.GetFullscreenCalc = GetFullscreenCalc;\r\n $rootScope.getFullscreenWidth = getFullscreenWidth;\r\n $rootScope.scrollWidth = GetScrollWidth;\r\n\r\n $rootScope.DisableMainMenuSticky = !$rootScope.menuSettings.IsSticky;\r\n $rootScope.Theme = portalTheme;\r\n $rootScope.UnitSettings = GetUnitSettings();\r\n $rootScope.IsInIframe = window.location !== window.parent.location;\r\n $rootScope.HasWebpSupport = false;\r\n $rootScope.PasswordRegex = new RegExp(portalSettings['PasswordRegEx']);\r\n $rootScope.PasswordMinLen = 8;\r\n\r\n function GetUnitSettings() {\r\n // console.log('GetUnitSettings');\r\n var unitcookie = getCookie('UnitSettings');\r\n \r\n if(unitcookie === null || unitcookie === '')\r\n return null;\r\n \r\n return JSON.parse(unitcookie);\r\n }\r\n\r\n $rootScope.GetUnitSettingsImage = function () {\r\n if (!$rootScope.UnitSettings) {\r\n return;\r\n }\r\n\r\n var image = $rootScope.UnitSettings.Image;\r\n\r\n var isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (isDarkMode && $rootScope.UnitSettings.ImageDarkMode && $rootScope.UnitSettings.ImageDarkMode.length > 0) {\r\n image = $rootScope.UnitSettings.ImageDarkMode;\r\n }\r\n\r\n return image;\r\n }\r\n\r\n $rootScope.RandomBetween = function (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n };\r\n\r\n $rootScope.GetPreloadedPortalSetting = function (key) {\r\n return portalSettings[key];\r\n }\r\n\r\n $rootScope.HasAcceptedCookieOfType = function (type) {\r\n if (!type) return false;\r\n\r\n if (typeof CustomCheckCookieConsentFn === 'function') {\r\n return CustomCheckCookieConsentFn(type);\r\n }\r\n else {\r\n return getLocalStorage('HasAcceptedCookies') === 'true';\r\n }\r\n }\r\n\r\n $rootScope.MiniSettings = {\r\n Header: {\r\n KeepBgClass: false,\r\n PreventHideOnScroll: false\r\n },\r\n Startpage: {\r\n DisableLoadData: false,\r\n },\r\n Login: {\r\n LoginAdminUrl: siteRootPath + \"admin\",\r\n ShowLogo: false,\r\n ShowPortalName: true,\r\n AlreadyVerifiedRedirectUrl: \"login\"\r\n },\r\n Profile: {\r\n ShowMenu: true,\r\n ShowProfileImage: true,\r\n ShowUserType: true,\r\n ShowMobile: false,\r\n ShowMiddleName: false,\r\n ShowGender: false,\r\n ShowCountry: false,\r\n ShowComment: false,\r\n ShowHiddenInPublicLists: false,\r\n DisableFirstName: false,\r\n DisableLastName: false,\r\n DisableMiddleName: false,\r\n DisableEmail: false,\r\n ShowUnregister: true,\r\n ShowWelcomeLink: true,\r\n CustomHeaderPhrase: undefined,\r\n ShowCustomSettings: false,\r\n DisableCustomSettings: false,\r\n ShowMyRelatedUsers: false,\r\n AutoExpandRelatedUserSystemNamesOnClean: [],\r\n AdditionalProfileSubMenuItems: [],\r\n CustomGenderFilterFn: undefined,\r\n HideHiddenInPublicLists: false\r\n },\r\n LikeActions: {\r\n HideCurrentRating: false,\r\n ForRolesOnly: []\r\n },\r\n Register: {\r\n HideUserName: false\r\n },\r\n CompleteRegistration: {\r\n ShowMiddleName: false\r\n },\r\n Logout: {\r\n CustomLogoutFn: undefined\r\n }\r\n };\r\n\r\n $rootScope.GetMiniSetting = function (module, key) {\r\n return $rootScope.MiniSettings[module][key];\r\n }\r\n\r\n check_webp_feature('lossy', function (feature, res) {\r\n //console.log(feature, res);\r\n if (res === false) {\r\n $rootScope.HasWebpSupport = false;\r\n hasWebpSupport = false;\r\n }\r\n });\r\n\r\n function getFullscreenWidth() {\r\n if ($(document).height() > $(window).height()) {\r\n return 'calc(100vw - ' + GetScrollWidth() + 'px)';\r\n } else {\r\n return '100vw';\r\n }\r\n }\r\n\r\n function GetFullscreenCalc() {\r\n if (portalSettings.maxWidth.length > 0) {\r\n return 'calc(-100vw / 2 + ' + portalSettings.maxWidth + ' / 2)';\r\n } else {\r\n return 'calc(-100vw / 2 + 100% / 2)';\r\n }\r\n }\r\n\r\n function GetScrollWidth() {\r\n // Got 11px when the container-page was using the setting: Content align: center, changed to left...\r\n // normaly 17px for windows, 0px on OS X depending on settings.\r\n var scrollWidth = window.innerWidth - $(document).width();\r\n\r\n //console.log('scrollWidth', scrollWidth);\r\n\r\n // This is some scaling issue?\r\n if (scrollWidth == 16) {\r\n scrollWidth = 17;\r\n }\r\n\r\n if (scrollWidth > 17 || scrollWidth < 0) scrollWidth = 17;\r\n\r\n return scrollWidth;\r\n }\r\n\r\n $rootScope.$on('$locationChangeSuccess', function (newValue) {\r\n $rootScope.QueryParams = $location.search();\r\n $rootScope.ExpandMainMenu = false;\r\n\r\n if (!$rootScope.PreventScrollTopOnce) $window.scrollTo(0, 0);\r\n\r\n $rootScope.PreventScrollTopOnce = false;\r\n });\r\n\r\n $q.all([baseService.GetLoggedInUser()]).then(LoadDataDone);\r\n\r\n function LoadDataDone(response) {\r\n bizUser.setLoggedInUser(response[0].data);\r\n $rootScope.LoggedInUser = bizUser.getLoggedInUser();\r\n $rootScope.LoggedInUser.CurrentCultureId = currentCultureId;\r\n $rootScope.LoggedInUser.CurrentCulture = cultureCode;\r\n $rootScope.IsLoggedIn = bizUser.IsLoggedIn();\r\n $rootScope.Logout = userService.Logout;\r\n $rootScope.HasModuleAccess = bizUser.HasModuleAccess;\r\n $rootScope.AccessTypeRight = bizUser.AccessTypeRight;\r\n $rootScope.HasWriteOrHigherAccess = bizUser.HasWriteOrHigherAccess;\r\n $rootScope.IsAdministrator = bizUser.IsAdministrator;\r\n bizContainerSettings.CurrentUserId = $rootScope.LoggedInUser.Id;\r\n bizContainerSettings.CurrentUserCurrency =\r\n $rootScope.LoggedInUser.DefaultVirtualCurrencyValue;\r\n $rootScope.ShowXP =\r\n IsPortalSettingTrue('IsLevelSystemEnabled') && bizUser.HasModuleAccess(\r\n 'LEVEL_SYSTEM',\r\n bizUser.AccessTypeRight.Read\r\n );\r\n $rootScope.ShowCurrency = true; //for use later, when currency is actually implemented\r\n bizContainerSettings.CurrentUserId = $rootScope.LoggedInUser.Id;\r\n\r\n if (cultureCode === 'sv-SE') {\r\n $locale.NUMBER_FORMATS.GROUP_SEP = ' ';\r\n }\r\n\r\n initializationDefer.resolve(true);\r\n console.log(\"angularjs initialized complete\")\r\n document.dispatchEvent(new CustomEvent(\"BizpartfrontendInitialized\"));\r\n\r\n if (bizUser.IsLoggedIn()) {\r\n sessionService.Initialize(sessionTimeoutInSeconds);\r\n sessionService.Start();\r\n if (IsPortalSettingTrue('IsPushNotificationsEnabled')) {\r\n bizPushNotificationService.Initialize();\r\n } \r\n }\r\n\r\n if (portalProvider.IsPortalPublic() || bizUser.IsLoggedIn()) {\r\n baseService\r\n .GetMenuItemsForLoggedInUser()\r\n .then(function (response) {\r\n $rootScope.MenuItems = response.data;\r\n });\r\n }\r\n\r\n $rootScope.SendHubMessageToServer(\r\n 'USER_NOTIFICATION',\r\n 'SEND_UNREAD_NOTIFICATIONS'\r\n );\r\n\r\n createFallbackFavicon($rootScope.Theme.PrimaryColor, $rootScope.Theme.PrimaryTextColor);\r\n\r\n if (navigator.connection) {\r\n navigator.connection.addEventListener('change', updateConnectionStatus);\r\n updateConnectionStatus();\r\n }\r\n }\r\n\r\n\r\n // JOURNEY\r\n var journeysDefer = $q.defer();\r\n $rootScope.JourneysInitialized = journeysDefer.promise;\r\n if (IsPortalSettingTrue('IsJourneyEnabled') && bizUser.IsLoggedIn()) {\r\n bizJourneyService.GetEngageJourneys().then((response) => {\r\n journeysDefer.resolve('');\r\n $rootScope.Journeys = response.data;\r\n });\r\n } else {\r\n journeysDefer.resolve('');\r\n $rootScope.Journeys = [];\r\n }\r\n $rootScope.$on('engageobject.finished', HandleEngageObjectFinished);\r\n\r\n $rootScope.GetNextJourneyItem = function(firstIfAllComplete) {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n var currentJourneyIsDone = false;\r\n var firstObject;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney || currentJourneyIsDone) {\r\n var currentJourney = $rootScope.Journeys[i];\r\n for (var j = 0; j < currentJourney.EngageObjects.length; j++) {\r\n if (!firstObject) firstObject = currentJourney.EngageObjects[i];\r\n\r\n if (currentJourney.EngageObjects[j].Status !== 3) {\r\n defer.resolve(currentJourney.EngageObjects[j]);\r\n return;\r\n }\r\n }\r\n currentJourneyIsDone = true;\r\n }\r\n }\r\n if (firstIfAllComplete && firstObject) {\r\n defer.resolve(firstObject);\r\n return;\r\n }\r\n } \r\n defer.resolve(null); \r\n });\r\n return defer.promise;\r\n };\r\n\r\n $rootScope.IsJourneyStarted = function () {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n var currentJourney = $rootScope.Journeys[i];\r\n for (var j = 0; j < currentJourney.EngageObjects.length; j++) {\r\n if (currentJourney.EngageObjects[j].Status === 3) {\r\n defer.resolve(true);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n defer.resolve(false);\r\n });\r\n return defer.promise;\r\n }\r\n\r\n $rootScope.SetCurrentJourney = function (id, gotoNextObject, gotoFirstIfDone) {\r\n if ($rootScope.Journeys && $rootScope.Journeys.length) {\r\n bizJourneyService.SetCurrentJourney(id).then(() => {\r\n var currentJourney;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n $rootScope.Journeys[i].IsCurrentJourney = $rootScope.Journeys[i].Id === id;\r\n $rootScope.$broadcast(\"CURRENT_JOURNEY_CHANGED\", id);\r\n\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n currentJourney = $rootScope.Journeys[i];\r\n }\r\n }\r\n\r\n if (gotoNextObject && currentJourney) {\r\n var nextObject;\r\n for (var i = 0; i < currentJourney.EngageObjects.length; i++) {\r\n if (!nextObject && currentJourney.EngageObjects[i].Status !== 3) {\r\n nextObject = currentJourney.EngageObjects[i];\r\n }\r\n }\r\n\r\n if (gotoFirstIfDone && !nextObject && currentJourney.EngageObjects.length > 0) {\r\n nextObject = currentJourney.EngageObjects[0];\r\n }\r\n\r\n if (nextObject) {\r\n bizJourneyService.GoToEngageItem(nextObject);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n $rootScope.GetAllJourneysTotalProgress = function () {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n var objectCount = 0;\r\n var objectDoneCount = 0;\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) { \r\n for (var j = 0; j < $rootScope.Journeys[i].EngageObjects.length; j++) {\r\n objectCount++;\r\n if ($rootScope.Journeys[i].EngageObjects[j].Status === 3) {\r\n objectDoneCount++;\r\n }\r\n }\r\n }\r\n }\r\n var p = 0;\r\n if (objectCount > 0) {\r\n p = (objectDoneCount * 100) / objectCount;\r\n }\r\n defer.resolve(p);\r\n });\r\n return defer.promise;\r\n }\r\n\r\n function HandleEngageObjectFinished(event, args) {\r\n if (args.status === 3 && $rootScope.Journeys) {\r\n var updatedObjectType = args.objectType;\r\n var updatedObjectId = args.objectId;\r\n var updatedToStatus = args.status;\r\n var anyUpdated = false;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n var updateJourneyProgress = false;\r\n var journey = $rootScope.Journeys[i];\r\n if (journey.EngageObjects.length) {\r\n var finishedCount = 0;\r\n for (var j = 0; j < journey.EngageObjects.length; j++) {\r\n var eo = journey.EngageObjects[j];\r\n if (eo.Id === updatedObjectId\r\n && eo.EngageObjectType === updatedObjectType\r\n && eo.Status !== updatedToStatus) {\r\n eo.Status = updatedToStatus;\r\n updateJourneyProgress = true;\r\n anyUpdated = true;\r\n }\r\n if (eo.Status === 3) {\r\n finishedCount++;\r\n }\r\n }\r\n if (updateJourneyProgress) {\r\n journey.TotalProgress = ((finishedCount * 100) / journey.EngageObjects.length);\r\n }\r\n }\r\n }\r\n\r\n if (anyUpdated) {\r\n $rootScope.$broadcast('JOURNEY_OBJECT_UPDATED');\r\n }\r\n }\r\n }\r\n\r\n\r\n //CONTAINER CONFIG\r\n bizContainerSettings.PortalCustomerName = '';\r\n bizContainerSettings.PortalVersion = 1;\r\n bizContainerSettings.PortalDefaultCulture = 1;\r\n bizContainerSettings.UseApiController = true;\r\n bizContainerSettings.UseEngageCore = true;\r\n\r\n if (portalSettings['GoogleAnalyticsId'] && $rootScope.HasAcceptedCookieOfType('statistics')) {\r\n\r\n $rootScope.GoogleAnalyticCustomTrackers = [];\r\n if (portalSettings['GoogleAnalyticsId'].indexOf(';') > 0) {\r\n var items = portalSettings['GoogleAnalyticsId'].split(';');\r\n $window.ga('create', items[0], 'auto');\r\n\r\n for (var i = 1; i < items.length; i++) {\r\n $rootScope.GoogleAnalyticCustomTrackers.push({\r\n Id: items[i],\r\n Name: 'customTracker_' + i,\r\n });\r\n }\r\n\r\n for (\r\n var i = 0;\r\n i < $rootScope.GoogleAnalyticCustomTrackers.length;\r\n i++\r\n ) {\r\n var id = $rootScope.GoogleAnalyticCustomTrackers[i].Id;\r\n var name = $rootScope.GoogleAnalyticCustomTrackers[i].Name;\r\n $window.ga('create', id, 'auto', name);\r\n }\r\n } else {\r\n $window.ga('create', portalSettings['GoogleAnalyticsId'], 'auto');\r\n }\r\n } \r\n\r\n $transitions.onSuccess({}, function ($transition) {\r\n $rootScope.PreviousState = $transition.$from();\r\n $rootScope.CurrentState = $transition.$to();\r\n $rootScope.CurrentStateClass = $rootScope.CurrentState.name.replace(\r\n /\\./g,\r\n '-'\r\n );\r\n\r\n if ($rootScope.HasAcceptedCookieOfType('statistics')) {\r\n if (portalSettings['GoogleAnalyticsId']) {\r\n $window.ga('send', 'pageview', $location.path());\r\n }\r\n\r\n if ($rootScope.GoogleAnalyticCustomTrackers) {\r\n for (\r\n var i = 0;\r\n i < $rootScope.GoogleAnalyticCustomTrackers.length;\r\n i++\r\n ) {\r\n var name = $rootScope.GoogleAnalyticCustomTrackers[i].Name;\r\n $window.ga(name + '.send', 'pageview', $location.path());\r\n }\r\n }\r\n\r\n if (portalSettings['GoogleTagManagerId']) {\r\n\r\n if ($rootScope.LoggedInUser && $rootScope.LoggedInUser.Id > 0 && !$rootScope.GATHasSetUserId) {\r\n $window.dataLayer.push({\r\n userId: $rootScope.LoggedInUser.Id\r\n });\r\n $rootScope.GATHasSetUserId = true;\r\n }\r\n\r\n $window.dataLayer.push({\r\n event: 'pageView',\r\n attributes: {\r\n route: $location.path(),\r\n },\r\n });\r\n }\r\n }\r\n\r\n var path = window.location.pathname;\r\n if (bizUser.IsLoggedIn()) {\r\n userService.AddUserActivity(\r\n path + '#/admin' + $transition.$to().url,\r\n path + '#/admin' + $transition.$from().url,\r\n 'PAGEVISITS'\r\n );\r\n }\r\n\r\n if (portalSettings.maxWidth.length > 0) {\r\n setTimeout(function () {\r\n $('#base-home').css('max-width', portalSettings.maxWidth);\r\n $('#base-home').css('width', '100%');\r\n $('#base-home').css('margin', 'auto');\r\n }, 0);\r\n }\r\n\r\n $rootScope.LastPageLoadTime = moment();\r\n\r\n sessionService.Refresh();\r\n });\r\n\r\n $transitions.onStart({}, function ($transition) {\r\n var to = $transition.$to();\r\n\r\n function EvaluateAccessRule(to, noAccessState = 'noaccess') {\r\n if (to.data && angular.isFunction(to.data.rule)) {\r\n var result = to.data.rule();\r\n if (!result) {\r\n $transition.abort();\r\n $state.go(noAccessState);\r\n }\r\n }\r\n }\r\n\r\n if (IsPortalSettingTrue('IsPortalPublic')) {\r\n EvaluateAccessRule(to, 'base.home');\r\n\r\n return;\r\n }\r\n\r\n if (!bizUser.IsLoggedIn() && (!to.data || !to.data.isPublic)) {\r\n $transition.abort();\r\n $state.go('login');\r\n return;\r\n } else if (\r\n bizUser.IsLoggedIn() &&\r\n to.data &&\r\n to.data.onlyLoggedOut\r\n ) {\r\n $transition.abort();\r\n $state.go('base');\r\n return;\r\n }\r\n\r\n if (baseService.RedirectUrls && baseService.RedirectUrls[to.name]) {\r\n $transition.abort();\r\n $state.go(baseService.RedirectUrls[to.name]);\r\n return;\r\n }\r\n\r\n if (\r\n to.self.data &&\r\n to.self.data.translateParts &&\r\n to.self.data.translateParts.length\r\n ) {\r\n for (var i = 0; i < to.self.data.translateParts.length; i++) {\r\n $translatePartialLoader.addPart(\r\n to.self.data.translateParts[i]\r\n );\r\n }\r\n }\r\n\r\n EvaluateAccessRule(to);\r\n });\r\n\r\n //SIGNALR NOTIFICATIONS!\r\n $rootScope.MsgQueue = [];\r\n\r\n $rootScope.$on('SHOW_CUSTOM_NOTIFICATION', function (event, message) {\r\n bizNotificationService.AddCustomNotification(message);\r\n });\r\n\r\n $rootScope.$on('ConnectionState.Connected', function (event, args) {\r\n SendMessageQueue();\r\n });\r\n\r\n $rootScope.$on('SignalR.serverMessage', function (event, args) {\r\n console.info(\r\n 'Received SignalR.serverMessage with hub server name ' +\r\n args.HubServerName +\r\n ' and hub key ' +\r\n args.HubKey\r\n );\r\n\r\n if (args.HubServerName == 'HubGeneric') {\r\n $rootScope.$broadcast('HUB_' + args.HubKey, args);\r\n } else {\r\n $rootScope.$broadcast('HUB_' + args.HubServerName, args);\r\n }\r\n }); \r\n\r\n $rootScope.$on('HUB_HubNotification', function (event, args) {\r\n var content = JSON.parse(args.Content);\r\n if (content.Key == 'CUSTOM') {\r\n bizNotificationService.AddCustomNotification(content.Message);\r\n } else {\r\n bizNotificationService.AddInformationNotification(\r\n content.Subject,\r\n content.Message\r\n );\r\n }\r\n }); \r\n\r\n $rootScope.SendHubMessageToServer = SendHubMessageToServer;\r\n window.addEventListener(\r\n 'HubClientSendServerMsg',\r\n HubClientSendServerMessage,\r\n false\r\n );\r\n\r\n function SendHubMessageToServer(hubKey, content, hubServerName) {\r\n var serverMsg = {\r\n HubServerName: hubServerName || 'HubGeneric',\r\n HubKey: hubKey,\r\n Content: content,\r\n };\r\n\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent('HubClientSendServerMsg', true, true, {\r\n d: serverMsg,\r\n });\r\n window.dispatchEvent(evt);\r\n }\r\n\r\n function HubClientSendServerMessage(data) {\r\n var result = data.detail.d;\r\n if (result) {\r\n $rootScope.MsgQueue.push(result);\r\n SendMessageQueue();\r\n }\r\n }\r\n\r\n function SendMessageQueue() {\r\n if (SignalRFactory.IsHubconnected) {\r\n while ($rootScope.MsgQueue.length > 0) {\r\n var msg = $rootScope.MsgQueue.splice(0, 1);\r\n SignalRFactory.send(JSON.stringify(msg[0]));\r\n }\r\n }\r\n }\r\n\r\n SignalRFactory.connect();\r\n }\r\n\r\n //TODO: Add so when we get 401 error we give info to user...\r\n function loadingInterceptorFunction($q) {\r\n function isUrlForTemplateCache(url) {\r\n var urlLC = url.toLowerCase();\r\n for (var i = 0; i < htmlTemplateCachePaths.length; i++) {\r\n if (urlLC.indexOf(htmlTemplateCachePaths[i]) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n return {\r\n request: function (request) {\r\n var htmlIndex = request.url.indexOf('.html');\r\n if (\r\n htmlIndex > 0 &&\r\n htmlIndex == request.url.length - 5 &&\r\n isUrlForTemplateCache(request.url) == false\r\n ) {\r\n request.url = request.url + '?v=' + bizPartVersion;\r\n }\r\n\r\n //request.headers.RequestKey = \"TESTING\";\r\n\r\n return request;\r\n },\r\n response: function (response) {\r\n if (\r\n debugTimes.enabled == true &&\r\n response.headers('Server-Timing')\r\n ) {\r\n var regExp = /([\\d]{1,})/gim;\r\n var match = regExp.exec(response.headers('Server-Timing'));\r\n if (match != null && match.length > 0) {\r\n var totalTime = 0;\r\n for (var i = 0; i < match.length; i++) {\r\n totalTime += ~~match[i];\r\n }\r\n\r\n if (totalTime > debugTimes.threshold) {\r\n console.error(\r\n 'Function took ' +\r\n totalTime +\r\n 'ms to execute in the backend. Method: ' +\r\n response.config.url\r\n );\r\n }\r\n }\r\n }\r\n\r\n return response || $q.when(response);\r\n },\r\n responseError: function (rejection) {\r\n //Send error report...\r\n // if(rejection.code == 500) {\r\n\r\n // }\r\n return $q.reject(rejection);\r\n },\r\n };\r\n }\r\n\r\n function OnLoad () {\r\n var token = getParameterByNameFromUrl('token', location.href);\r\n if (!token) {\r\n token = getBizPartAuthToken();\r\n }\r\n\r\n var prConfigs = $.Deferred();\r\n $.ajax({\r\n url: siteRootPath + 'api/frontend/GetFrontEndConfigurations',\r\n dataType: 'json',\r\n method: 'GET',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(function (configs) {\r\n viewOverrides = configs.ViewOverrides;\r\n\r\n urlReMapper = configs.UrlReMapper;\r\n notificationSettings = configs.NotificationSettings;\r\n menuSettings = configs.MenuSettings;\r\n mascot = configs.Mascot;\r\n journeySettings = configs.JourneySettings;\r\n prConfigs.resolve();\r\n });\r\n\r\n var prUser = $.Deferred();\r\n\r\n initialUrl = getParameterByNameFromUrl('url', location.href);\r\n var lang = getParameterByNameFromUrl('lang', location.href);\r\n var queryString = '';\r\n\r\n if (lang) {\r\n queryString = '?lang=' + lang;\r\n }\r\n\r\n $.ajax({\r\n url: siteRootPath + 'api/User/GetLoggedInUserSession' + queryString,\r\n dataType: 'json',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(\r\n function (userSession) {\r\n if (userSession.Token && userSession.Token != '') {\r\n setBizPartAuthToken(userSession.Token, userSession.Id);\r\n }\r\n userData = userSession.User;\r\n cultureCode = userSession.CultureCode;\r\n currentCultureId = userSession.CultureId;\r\n sessionTimeoutInSeconds = userSession.SessionTimeInMinutes * 60;\r\n prUser.resolve();\r\n },\r\n function () {\r\n prUser.resolve();\r\n }\r\n );\r\n\r\n var prFavorites = $.Deferred();\r\n $.when(prUser).then(function () {\r\n if (IsPortalSettingTrue('IsFavoritesEnabled') && userData.Id > 0) {\r\n $.ajax({\r\n url: siteRootPath + 'api/favorites/GetFavorites?deepload=false',\r\n dataType: 'json',\r\n method: 'GET',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(\r\n function (favorites) {\r\n favoriteObjects = favorites;\r\n prFavorites.resolve();\r\n },\r\n function () {\r\n prFavorites.resolve();\r\n }\r\n );\r\n } else {\r\n prFavorites.resolve();\r\n }\r\n });\r\n \r\n\r\n $.when(prConfigs, prUser, prFavorites).then(function () {\r\n angular.bootstrap(document, ['bizPartEngage'], { strictDi: false }); //set to true to debug minification errors un-minified\r\n });\r\n };\r\n\r\n window.addEventListener(\"load\", OnLoad);\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('base', baseController);\r\n\tangular.module('bizPartEngage').controller('base.noaccess', baseNoaccessController);\r\n\tangular.module('bizPartEngage').controller('base.home', baseHomeController);\r\n\r\n\tbaseController.$inject = [\"$rootScope\", \"$interval\", \"$timeout\", \"$q\", \"base.service\", \"$state\", \"bizUser\", \"$translate\", \"fireworks\", \r\n\t\t\"$mdDialog\", \"pageTitleNotification\", \"core.level.serivce\", \"bizSocialShareService\", \"screenSize\", \"bizCoreService\", \r\n \"$stateParams\", \"bizHideComponentService\", \"bizCore\", \"core.services.favorite\", \"bizJourneyService\"];\r\n\tbaseNoaccessController.$inject = [];\r\n\tbaseHomeController.$inject = [\"$rootScope\", \"modules.cms.service\", \"$stateParams\", \"container\", \"bizContainerService\",\r\n\t\t\"bizContainerUrls\", \"bizContainerSettings\", \"MetadataService\", \"$filter\", \"$compile\", \"bizCoreService\", \"bizJourneyService\", \"$q\"];\r\n\r\n\tfunction baseController($rootScope, $interval, $timeout, $q, baseService, $state, bizUser, $translate, fireworks, \r\n\t\t$mdDialog, pageTitleNotification, levelService, bizSocialShareService, screenSize, bizCoreService, $stateParams, \r\n bizHideComponentService, bizCoreProvider, favoriteService, bizJourneyService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.Initialize = Initialize;\r\n\t\tvm.SetLanguage = SetLanguage;\r\n\t\tvm.GetExperienceValueFromLastCheck = GetExperienceValueFromLastCheck;\r\n\t\tvm.CheckForLevelUp = CheckForLevelUp;\r\n\t\tvm.StopAnimateExperience = StopAnimateExperience;\r\n\t\tvm.GainExperienceInterval = GainExperienceInterval;\r\n vm.ShowDialog = ShowDialog;\r\n vm.ShowWelcomeGuide = ShowWelcomeGuide;\r\n\t\tvm.DialogQueue = [];\r\n\r\n\t\t$rootScope.Navigate = Navigate;\r\n\t\t$rootScope.FocusElement = FocusElement;\r\n\r\n\t\t$rootScope.desktop = screenSize.is('md, lg');\r\n\t\t$rootScope.mobile = screenSize.is('xs, sm');\r\n\t\t \r\n\t\t$rootScope.desktop = screenSize.on('md, lg', function(match){\r\n\t\t\t$rootScope.desktop = match;\r\n\t\t});\r\n\t\t$rootScope.mobile = screenSize.on('xs, sm', function(match){\r\n\t\t\t$rootScope.mobile = match;\r\n\t\t});\r\n\r\n\t\t$rootScope.HasAcceptedCookies = null;\r\n\r\n\t\tfunction getLocalStorageKeyForWelcomeGuide() {\r\n\t\t\tvar user = bizUser.getLoggedInUser();\r\n\t\t\treturn `HasShownWelcomeGuide_${user?.Id ?? -1}`;\r\n\t\t}\r\n\r\n\t\tfunction Initialize() {\r\n\t\t\tbizHideComponentService.Hide($stateParams.hide);\r\n \r\n if ($stateParams.extmode) { \r\n $rootScope.ExtMode = true;\r\n }\r\n\r\n\t\t\tvm.SetLanguage(bizUser);\r\n\t\t\tif (IsPortalSettingTrue('IsLevelSystemEnabled') && bizUser.IsLoggedIn()) {\r\n\t\t\t\tvm.GetExperienceValueFromLastCheck();\r\n\t\t\t}\r\n\t\t\tif ($rootScope.QueryParams && $rootScope.QueryParams['s']) {\r\n\t\t\t\tbizSocialShareService.AddSocialShareClick({\r\n\t\t\t\t\tSocialShareTrackingId: $rootScope.QueryParams['s']\r\n\t\t\t\t});\r\n } \r\n\r\n\t\t\tbaseService.GetCultures().then(GetCulturesSuccess);\r\n\t\t\tfunction GetCulturesSuccess(response) {\r\n\t\t\t\t$rootScope.Cultures = response.data;\r\n\t\t\t\tfor (var i = 0; i < $rootScope.Cultures.length; i++)\r\n\t\t\t\t\t$rootScope.Cultures[i].QueryString = \"?lang\" + '=' + $rootScope.Cultures[i].CultureCode.substring(0, 2);\r\n\t\t\t}\r\n\r\n if (bizUser.IsLoggedIn()) {\r\n bizCoreService.GetUserSetting(\"HasAcceptedCookies\").then(function (response) {\r\n if (response.data === \"true\") {\r\n $rootScope.HasAcceptedCookies = true;\r\n }\r\n else if (response.data === \"false\") {\r\n $rootScope.HasAcceptedCookies = false;\r\n }\r\n });\r\n }\r\n\r\n\t\t\tif ($rootScope.HasAcceptedCookies == null) {\r\n\t\t\t\t$rootScope.HasAcceptedCookies = getLocalStorage(\"HasAcceptedCookies\");\r\n\t\t\t}\t\t\t\r\n\r\n\t\t\tif (bizUser.IsLoggedIn() && !getLocalStorage(getLocalStorageKeyForWelcomeGuide())) {\r\n var welcomeGuideLayoutComponentType = 6;\r\n\r\n $q.all([\r\n baseService.HasLayoutComponent(welcomeGuideLayoutComponentType),\r\n bizCoreService.GetUserSetting(\"HasShownWelcomeGuide\")\r\n ]).then(function (result) {\r\n var hasWelcomeGuide = result[0].data;\r\n var hasShownWelcomeGuide = result[1].data === \"true\";\r\n\r\n if (hasWelcomeGuide && hasShownWelcomeGuide) {\r\n\t\t\t\t\t\tsetLocalStorage(getLocalStorageKeyForWelcomeGuide(), true);\r\n } else if (hasWelcomeGuide && !hasShownWelcomeGuide) {\r\n vm.ShowWelcomeGuide();\r\n }\r\n });\r\n } else {\r\n const previewWelcomeGuidePages = getSessionStorage('previewWelcomeGuide'); \r\n if (previewWelcomeGuidePages) {\r\n deleteSessionStorage('previewWelcomeGuide');\r\n }\r\n \r\n var isPreview = getParameterByNameFromUrl('wgpreview', location.href); \r\n if (previewWelcomeGuidePages && isPreview === 'true') {\r\n vm.ShowWelcomeGuide(JSON.parse(previewWelcomeGuidePages));\r\n } \r\n }\r\n\r\n\t\t\tHandleFavorites(favoriteObjects);\r\n\t\t}\r\n\r\n\t\tfunction Navigate(state, params) {\r\n\t\t\tif(params) {\r\n\t\t\t\t$state.go(state, params);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$state.go(state);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction FocusElement(elementId, shouldFocus) {\r\n\t\t\tif(shouldFocus === undefined || shouldFocus === true) {\r\n\t\t\t\tsetTimeout(function(eId) {\r\n\t\t\t\t\tdocument.getElementById(eId).focus()\r\n\t\t\t\t}, 0 , elementId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction SetLanguage(user) {\r\n\t\t\t$translate.use(cultureCode.substring(0, 2)).then(function () {\r\n\t\t\t\t$rootScope.CultureDefer.resolve();\r\n\t\t\t\tmoment.locale(cultureCode.substring(0, 2));\r\n\t\t\t});\r\n\r\n\t\t\t$translate.refresh();\r\n\r\n\t\t\t$rootScope.$broadcast('PORTAL_CULTURE_CHANGE');\r\n\t\t}\r\n\r\n\t\tfunction GetExperienceValueFromLastCheck() {\r\n\t\t\tlevelService.GetExperienceValueFromLastCheck().then(GetExperienceValueFromLastCheckSuccess);\r\n\r\n\t\t\tfunction GetExperienceValueFromLastCheckSuccess(response) {\r\n\t\t\t\tif (~~response.data > 0) {\r\n\t\t\t\t\t//We have gained xp.. \r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.CheckForLevelUp();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction CheckForLevelUp() {\r\n\t\t\tlevelService.CheckForLevelUp().then(CheckForLevelUpSuccess);\r\n\r\n\t\t\tfunction CheckForLevelUpSuccess(response) {\r\n\r\n\t\t\t\tif (response && response.data.length == 1 && response.data[0].RequiredExp == 0) {\r\n\t\t\t\t\t// First login, do not show fireworks, level up..?\r\n\t\t\t\t}\r\n\t\t\t\telse if (response && response.data.length == 1 && response.data[0].RequiredExp > 0) {\r\n\t\t\t\t\tlevelUp(response.data[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse if (response && response.data.length > 1) {\r\n\t\t\t\t\t//Need to handle level up on more then 1 different experience types...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.Initialize();\r\n\r\n\t\t$rootScope.$on('HUB_VIRTUAL_CURRENCY_UPDATE_DEFAULT', virtualcurrencyUpdateDefault);\r\n\t\t$rootScope.$on('HUB_EXPERIENCE_UPDATE_DEFAULT', experienceUpdateDefault);\r\n\t\t$rootScope.$on('HUB_EXPERIENCE_GAIN', experienceGain);\r\n\t\t$rootScope.$on('HUB_LEVEL_GAIN', levelGain);\r\n $rootScope.$on('HUB_NEW_CERTIFICATE', newCertificate);\r\n\r\n $rootScope.$on('HUB_EngageObjectFinished', function (event, args) {\r\n var params = JSON.parse(args.Content);\r\n $rootScope.$broadcast('engageobject.finished', params);\r\n });\r\n\r\n $rootScope.$on('HUB_SESSION_TIMER_REFRESH', BizPart.Client.Core.SessionTimer.Refresh);\r\n\r\n\t\t$rootScope.$on('CONTAINER_BUTTON_PRESSED', SetShown);\r\n\t\t\r\n $rootScope.$on('favorites.change', FavoritesChange); \r\n\r\n\t\tfunction FavoritesChange(e, favorites) {\r\n\t\t\tHandleFavorites(favorites);\r\n\t\t}\r\n\r\n\t\tfunction HandleFavorites(favorites) {\r\n\t\t\t$rootScope.FavoriteTagIds = [];\r\n\r\n\t\t\tfor(var i = 0; i < favorites.length; i++) {\r\n\t\t\t\tif(favorites[i].ObjectType == 103) {\r\n\t\t\t\t\t$rootScope.FavoriteTagIds.push(favorites[i].ObjectId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//console.log('Favorite tag ids: ', $rootScope.FavoriteTagIds);\r\n\t\t}\r\n\r\n\t\tfunction StopAnimateExperience() {\r\n\t\t\t$rootScope.AnimateExperience = false;\r\n }\r\n\r\n function ShowWelcomeGuide(previewPages) {\r\n\r\n if ($rootScope.ExtMode) {\r\n $rootScope.$broadcast('WELCOMEGUIDE.SHOW');\r\n return;\r\n }\r\n\r\n if (previewPages) {\r\n ShowWindow(false, previewPages);\r\n } else {\r\n bizCoreService.GetWelcomeGuide().then(function (response) {\r\n if (response.data && response.data !== \"\" && response.data !== null) {\r\n\t\t\t\t\t\tconst data = JSON.parse(response.data);\r\n\r\n\t\t\t\t\t\tif ((data.useAdvanced === undefined || data.useAdvanced === true) || data.useAdvanced === false && data.pages !== null)\r\n\t\t\t\t\t\t\tShowWindow(data.useAdvanced, data.pages, data.redirect);\r\n }\r\n });\r\n } \r\n\r\n function ShowWindow(showAdvanced, pages, redirect) {\r\n if (showAdvanced === undefined) {\r\n showAdvanced = true;//backwards compatibility, if setting is missing\r\n }\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Views/Dialogs/welcome-guide.html\",\r\n clickOutsideToClose: false,\r\n escapeToClose: false,\r\n controller: welcomeGuideController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n showAdvanced: showAdvanced,\r\n\t\t\t\t\t\tpages: pages,\r\n\t\t\t\t\t\tredirect: redirect\r\n },\r\n bindToController: true\r\n }).then(SetShown, SetShown);\r\n\r\n welcomeGuideController.$inject = [\"$mdDialog\"];\r\n function welcomeGuideController($mdDialog) {\r\n var vm = this;\r\n }\r\n\r\n\t\t\t\t$rootScope.$on('WELCOMEGUIDE.COMPLETED', function (e, data) {\r\n\t\t\t\t\t$mdDialog.hide(data);\r\n\t\t\t\t\tif (data.Redirect) {\r\n\t\t\t\t\t\tNavigate(data.Redirect);\r\n\t\t\t\t\t}\r\n });\r\n }\r\n\t\t}\r\n\t\t\r\n\t\tfunction SetShown(data) {\r\n\t\t\tsetLocalStorage(getLocalStorageKeyForWelcomeGuide(), true);\t\t\t\r\n\t\t\tif ($rootScope.IsLoggedIn) {\r\n\t\t\t\tif (!isSimulating) {\r\n\t\t\t\t\tbizCoreService.UpdateUserSetting(\"HasShownWelcomeGuide\", true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n if (data && data.SelectedJourney && data.SelectedJourney.Id) {\r\n $rootScope.SetCurrentJourney(data.SelectedJourney.Id);\r\n if (data.SelectedJourney.EngageObjects && data.SelectedJourney.EngageObjects.length > 0) {\r\n bizJourneyService.GoToEngageItem(data.SelectedJourney.EngageObjects[0]);\r\n } \r\n }\r\n\t\t} \r\n\r\n\t\tfunction ShowDialog(config, onshow, onclose) {\r\n\t\t\tif (vm.ShowingDialog) {\r\n\t\t\t\tvm.DialogQueue.push({ config: config, onshow: onshow, onclose: onclose });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.ShowingDialog = true;\r\n\r\n\t\t\tif (!onclose)\r\n\t\t\t\tonclose = function () { };\r\n\r\n\t\t\tif (onshow)\r\n\t\t\t\tonshow();\r\n\r\n\t\t\tvar dialogPromise = $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n\t\t\t\tcontroller: dialogController,\r\n\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\tlocals: config,\r\n\t\t\t\tbindToController: true\r\n\t\t\t});\r\n\r\n\t\t\tdialogPromise.then(onclose, onclose);\r\n\t\t\tdialogPromise.then(function () {\r\n\t\t\t\tvm.ShowingDialog = false;\r\n\t\t\t\tif (vm.DialogQueue.length) {\r\n\t\t\t\t\tvar d = vm.DialogQueue.splice(vm.DialogQueue.length - 1, 1)[0];\r\n\t\t\t\t\tvm.ShowDialog(d.config, d.onshow, d.onclose);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tdialogController.$inject = [\"$mdDialog\"];\r\n\r\n\t\t\tfunction dialogController($mdDialog) {\r\n\t\t\t\tvar vm = this;\r\n\r\n\t\t\t\tvm.Close = Close;\r\n\r\n\t\t\t\tfunction Close() {\r\n\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction newCertificate(event, args) {\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\t\t\tconsole.log(content);\r\n\r\n\t\t\tif (document.hasFocus()) {\r\n\t\t\t\tshowNewCert(content);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpageTitleNotification.On(\"New certification!\");\r\n\t\t\t\t$(window).on('focus', (function () {\r\n\t\t\t\t\tpageTitleNotification.Off();\r\n\t\t\t\t\tshowNewCert(content);\r\n\r\n\t\t\t\t\t$(window).off('focus');\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction showNewCert(certContent) {\r\n\t\t\tvm.ShowDialog({\r\n\t\t\t\tText: 'Grattis! Du har klarat av #NAME#'.replace(\"#NAME#\", certContent.Name),\r\n\t\t\t\tHideButtons: true,\r\n\t\t\t\tCustomContentTemplateUrl: siteRootPath + \"FrontEnd/Modules/Certifications/Views/new-certification-dialog.html\",\r\n\t\t\t\tAuthToken: $rootScope.AuthToken,\r\n\t\t\t\tCert: certContent\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction virtualcurrencyUpdateDefault(event, args) {\r\n\t\t\t$rootScope.LoggedInUser.DefaultVirtualCurrencyValue = ~~args.Content;\r\n\t\t\t$rootScope.$digest();\r\n\t\t}\r\n\r\n\t\tfunction experienceUpdateDefault(event, args) {\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints = ~~args.Content;\r\n\t\t\t$rootScope.$digest();\r\n\t\t}\r\n\t\tfunction ShowEngagementTip() {\r\n\t\t\t// vm.ShowDialog({\r\n\t\t\t// \tCustomContentTemplateUrl: siteRootPath + \"FrontEnd/Views/Dialogs/engagement-tip.html\",\r\n\t\t\t\t\r\n\t\t\t// });\r\n\t\t}\r\n\r\n\t\tShowEngagementTip();\r\n\r\n function experienceGain(event, args) {\r\n if (!$rootScope.ShowXP) { \r\n return;\r\n }\r\n\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePointsStart = angular.copy($rootScope.LoggedInUser.DefaultExperiencePoints);\r\n\r\n\t\t\t$rootScope.AnimateExperience = true;\r\n\r\n\t\t\t$timeout(vm.StopAnimateExperience, 2500);\r\n\r\n\t\t\tvm.pointsEarned = content.TotalExperiencePoints;\r\n\t\t\tvm.ExpInterval = $interval(vm.GainExperienceInterval, 50, 0, true, (vm.pointsEarned / 50));\r\n\t\t\tvm.countedPoints = 0;\r\n\t\t}\r\n\r\n\t\tfunction GainExperienceInterval(amount) {\r\n\t\t\tvm.countedPoints += amount;\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints += amount;\r\n\r\n\t\t\tif (vm.countedPoints >= vm.pointsEarned) {\r\n\t\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints = $rootScope.LoggedInUser.DefaultExperiencePointsStart + vm.pointsEarned;\r\n\t\t\t\t$interval.cancel(vm.ExpInterval);\r\n\t\t\t}\r\n\t\t}\r\n\r\n function levelGain(event, args) {\r\n if (!$rootScope.ShowXP) {\r\n return;\r\n }\r\n\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\t\t\tconsole.log(content);\r\n\t\t\t$rootScope.LoggedInUser.DefaultLevel = content;\r\n\t\t\tif (document.hasFocus()) {\r\n\t\t\t\tlevelUp(content);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpageTitleNotification.On(\"Level up!\");\r\n\t\t\t\t$(window).on('focus', (function () {\r\n\t\t\t\t\tpageTitleNotification.Off();\r\n\t\t\t\t\tlevelUp(content);\r\n\r\n\t\t\t\t\t$(window).off('focus');\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction levelUp(levelContent) {\r\n\t\t\t$translate('CORE.LEVELUPDIALOG').then(function (translation) {\r\n\t\t\t\tvar textToShow = translation.$$unwrapTrustedValue().replace(\"#LEVEL#\", levelContent.Name);\r\n\r\n\t\t\t\tvm.ShowDialog({\r\n\t\t\t\t\tText: textToShow,\r\n\t\t\t\t\tHideButtons: true\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\tfireworks.show();\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\tfireworks.hide();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tfunction baseNoaccessController() {\r\n\t\tvar vm = this;\r\n\t}\r\n\r\n\tfunction baseHomeController($rootScope, cmsService, $stateParams, container, bizContainerService, bizContainerUrls, bizContainerSettings, \r\n MetadataService, $filter, $compile, bizCoreService, bizJourneyService, $q) {\r\n\t\tvar vm = this;\r\n\t\tvm.PageIdentifier = portalSettings['StartPageId'];\r\n\t\tvm.Journeys = [];\r\n vm.JourneyItemsPerRow = 0;\r\n\r\n var isStartPageDataLoaded = $q.defer();\r\n var isStartPageDataLoadedPromise = isStartPageDataLoaded.promise;\r\n\t\t\r\n\t\t// if (~~vm.PageIdentifier <= 0)\r\n\t\t// \tvm.PageIdentifier = 1;\r\n\r\n vm.GetCMSPage = GetCMSPage;\r\n vm.GoToNextJourneyItem = GoToNextJourneyItem;\r\n\r\n bizContainerSettings.ContainerRefererType = \"CMS\";\r\n\r\n function GoToNextJourneyItem() {\r\n $rootScope.GetNextJourneyItem(true).then(function (eo) {\r\n if(eo) \r\n bizJourneyService.GoToEngageItem(eo);\r\n }); \r\n } \r\n\r\n\t\tfunction GetCMSPage() {\r\n\t\t\tcmsService.GetCMSPageById(vm.PageIdentifier).then(GetCmsPageSuccess);\r\n\r\n\t\t\tfunction GetCmsPageSuccess(response) {\r\n\t\t\t\tvm.Page = response.data;\r\n\t\t\t\tvm.Page.Container = new container(vm.Page.Container);\r\n\r\n\t\t\t\tvar imageModules = vm.Page.Container.getModules(\"IMAGE\");\r\n\t\t\t\tvar imageUrl = ogDefaultImage;\r\n\t\t\t\tif ((!imageUrl || imageUrl == \"\") && imageModules.length > 0) {\r\n\t\t\t\t\timageUrl = imageModules[0].Content.ImageUrl;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tMetadataService.setMetaTags({\r\n\t\t\t\t\ttitle: vm.Page.Title,\r\n\t\t\t\t\tdescription: vm.Page.Description,\r\n\t\t\t\t\tkeywords: vm.Page.Keywords,\r\n\t\t\t\t\timg: imageUrl\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.GetItemWidth = GetItemWidth;\r\n\r\n function GetItemWidth() {\r\n return 100 / vm.JourneyItemsPerRow;\r\n }\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t\r\n\t\t\tfunction getStartpageDataSuccess(response) {\r\n\t\t\t\tif (response.data && response.data !== \"\" && response.data !== null) {\r\n vm.StartPageData = JSON.parse(response.data);\r\n console.log(\"startpage data\", vm.StartPageData);\r\n\r\n vm.StartPageData.MainBanner.Color = 'light';\r\n isStartPageDataLoaded.resolve('');\r\n\t\t\t\t}\r\n else { \r\n\t\t\t\t\t//This is the default settings for a new portal...\r\n\t\t\t\t\tvm.StartPageData = {\r\n\t\t\t\t\t\tMainBanner: {\r\n\t\t\t\t\t\t\tShow: true,\r\n\t\t\t\t\t\t\tImage: { FileUrl: \"\" },\r\n\t\t\t\t\t\t\tButtonLink: \"\",\r\n ButtonType: \"btn\",\r\n Fullscreen: true,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: \"Lorem ipsum dolor sit amet\"\r\n }\r\n ],\r\n TextTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: \"Donec nec enim commodo, lobortis risus sollicitudin, luctus augue. Ut ultricies placerat diam, vitae suscipit turpis volutpat a. Nulla facilisi. Phasellus varius blandit convallis.\"\r\n }\r\n ],\r\n SelectedColor: {\r\n Value: \"dark\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tBlogModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n\t\t\t\t\t\t\tFilter: \"newest\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"btn\",\r\n Limit: 4,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Blogg\" : \"Blog\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tEducationModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n Filter: \"newest\",\r\n\t\t\t\t\t\t\tHeader: \"Our educations\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"link\",\r\n Limit: 4,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Här finns våra online-utbildningar\" : \"Our educations\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tVideoModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n Filter: \"newest\",\r\n\t\t\t\t\t\t\tHeader: \"Our videos\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"link\",\r\n Limit: 3,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Våra filmer\" : \"Our videos\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tJourney: {\r\n\t\t\t\t\t\t\tShow: false,\r\n\t\t\t\t\t\t\tJourneyItemsPerRow: 10,\r\n\t\t\t\t\t\t\tView: \"full\",\r\n\t\t\t\t\t\t\tShowTags: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tEvent: {\r\n\t\t\t\t\t\t\tShow: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.JourneyItemsPerRow = ~~vm.StartPageData.Journey.ItemsPerRow;\r\n\r\n\t\t\t\tif (vm.JourneyItemsPerRow <= 0)\r\n\t\t\t\t\tvm.JourneyItemsPerRow = 10;\r\n\r\n if (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'mini') {\r\n vm.miniSettings = {\r\n ItemCount: ~~vm.JourneyItemsPerRow > 0 ? ~~vm.JourneyItemsPerRow : 5,\r\n ShowTags: vm.StartPageData.Journey.ShowTags === true\r\n };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'hero') {\r\n\t\t\t\t\tif (vm.JourneyItemsPerRow < 3)\r\n\t\t\t\t\t\tvm.JourneyItemsPerRow = 3;\r\n\t\t\t\t\tif (vm.JourneyItemsPerRow > 4)\r\n\t\t\t\t\t\tvm.JourneyItemsPerRow = 4;\r\n\t\t\t\t}\r\n\r\n $rootScope.IsJourneyStarted().then((isStarted) => {\r\n if (isStarted) {\r\n vm.StartPageData.MainBanner.JourneyButtonTextTranslations = vm.StartPageData.MainBanner.ButtonTextSecondaryTranslations;\r\n } else {\r\n vm.StartPageData.MainBanner.JourneyButtonTextTranslations = vm.StartPageData.MainBanner.ButtonTextTranslations;\r\n }\r\n });\r\n\r\n isStartPageDataLoaded.resolve('');\r\n\t\t\t}\r\n\r\n\t\t\tif (~~vm.PageIdentifier > 0) {\r\n\t\t\t\tvm.GetCMSPage();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//Get the standard startpage\r\n //bizCoreService.GetPortalsetting(\"STARTPAGE_DATA\").then(getStartpageDataSuccess);\r\n\r\n\t\t\t\tif ($rootScope.MiniSettings.Startpage.DisableLoadData === false) {\r\n\t\t\t\t\tbizCoreService.GetStartPageData().then(getStartpageDataSuccess);\r\n }\r\n }\r\n\r\n var pList = [\r\n isStartPageDataLoadedPromise,\r\n $rootScope.JourneysInitialized\r\n ];\r\n\r\n $q.all(pList).then(() => {\r\n var journeys = [];\r\n if ($rootScope.Journeys) {\r\n \r\n\t\t\t\t\tvar maxItems = vm.JourneyItemsPerRow;\r\n\t\t\t\t\tif (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'hero' && vm.JourneyItemsPerRow > 4) {\r\n maxItems = 4; \r\n }\r\n\r\n for (var i = 0; i < $rootScope.Journeys.length && i < maxItems; i++) {\r\n journeys.push($rootScope.Journeys[i]); \r\n }\r\n }\r\n vm.TotalJourneyCount = $rootScope.Journeys.length;\r\n vm.Journeys = journeys;\r\n });\t\t\t\r\n\t\t}\r\n\t}\r\n})(window.angular);","(function(angular) {\r\n\tangular.module('bizPartEngage').directive('compareTo', compareToDirective);\r\n\tangular.module('bizPartEngage').directive('bizGo', bizGoDirective);\r\n\tangular.module('bizPartEngage').directive('bizHideComponent', bizHideComponentDirective);\r\n\tangular.module('bizPartEngage').service('bizHideComponentService', bizHideComponentService);\r\n\tangular.module('bizPartEngage').service('bizPhraseLogService', bizPhraseLogService);\r\n\r\n\tbizHideComponentDirective.$inject = [\"bizHideComponentService\"];\r\n\tbizHideComponentService.$inject = [\"$q\"];\r\n\r\n\tbizPhraseFilter.$inject = [\"$translate\", \"$rootScope\"]\r\n\tbizPhraseDirective.$inject = [\"$rootScope\", \"$translate\", \"$filter\", \"$compile\", \"$timeout\", \"bizPhraseLogService\"];\r\n\r\n\tbizPhraseLogService.$inject = [\"bizCoreService\", \"$q\", \"$http\"];\r\n\r\n\tfunction bizPhraseLogService(bizCoreService, $q, $http) {\r\n\t this.Phrases = [];\r\n\r\n\t this.IsEnabled = function () {\r\n\t if (this.Promise)\r\n\t return this.Promise;\r\n\r\n\t var defer = $q.defer();\r\n\t this.Promise = defer.promise;\r\n\r\n\t bizCoreService.Admin.GetGenericSetting('CULTURE', 'bizPhraseLoggingEnabled', 0).then(function (response) {\r\n\t defer.resolve(response.data);\r\n\t });\r\n\r\n\t return this.Promise;\r\n\t };\r\n\r\n\t this.LogPhrase = function (key, value, culture) {\r\n\t this.IsEnabled().then(function (data) {\r\n\t if (!data || data.Value.toLowerCase() == 'false')\r\n\t return;\r\n\r\n\t $http.get(siteRootPath + \"api/culture/LogBizPhrase\", { params: { key: key, value: value, culture: culture } });\r\n\t })\r\n\t }\r\n\t}\r\n\r\n\tfunction bizHideComponentDirective(bizHideComponentService) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: linkFunction\r\n\t\t}\r\n\r\n\t\tfunction linkFunction(scope, elem, attrs) {\r\n\t\t\tbizHideComponentService.Hiding().then(function (components) {\r\n\t\t\t\tif (!components[attrs.bizHideComponent])\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\telem.remove();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizHideComponentService($q) {\r\n\t\tvar hiddenComponents = {};\r\n\t\tvar initializing = $q.defer();\r\n\r\n\t\treturn {\r\n\t\t\tHide: Hide,\r\n\t\t\tHiding: Hiding\r\n\t\t};\r\n\r\n\t\tfunction Hide(components) {\r\n\t\t\tif (!components) {\r\n\t\t\t\tcomponents = getLocalStorage(\"bizHideComponents\");\r\n\r\n\t\t\t\tif (!components)\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tsetLocalStorage(\"bizHideComponents\", components);\r\n\r\n\t\t\tcomponents = components.split(\",\");\r\n\t\t\tfor (var i = 0; i < components.length; i++) {\r\n\t\t\t\thiddenComponents[components[i]] = true;\r\n\t\t\t}\r\n\r\n\t\t\tinitializing.resolve(hiddenComponents);\r\n\t\t}\r\n\r\n\t\tfunction Hiding() {\r\n\t\t\treturn initializing.promise;\r\n\t\t}\r\n\t}\r\n\r\n function compareToDirective() {\r\n var directive = {\r\n require: \"ngModel\",\r\n scope: {\r\n otherModelValue: \"=compareTo\"\r\n },\r\n link: compareToLink\r\n }\r\n\r\n function compareToLink(scope, element, attributes, ngModel) {\r\n ngModel.$validators.compareTo = function (modelValue) {\r\n return modelValue == scope.otherModelValue;\r\n };\r\n\r\n scope.$watch(\"otherModelValue\", function () {\r\n ngModel.$validate();\r\n });\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizPhraseDirective($rootScope, $translate, $filter, $compile, $timeout, bizPhraseLogService) {\r\n \tvar directive = {\r\n \t\trestrict: \"A\",\r\n\t\t\tlink: linkFunction\r\n \t};\r\n\r\n \tfunction linkFunction(scope, element, attrs) {\r\n \t\t$rootScope.CultureInitialized.then(function () {\r\n \t\t $translate(attrs.bizPhrase).then(function (translation) {\r\n \t\t element.text(translation);\r\n\r\n \t\t if (!bizPhraseLogService.Phrases.GetItemByValue('Key', attrs.bizPhrase))\r\n \t\t bizPhraseLogService.LogPhrase(attrs.bizPhrase, translation.toString(), $translate.use());\r\n \t\t bizPhraseLogService.Phrases.push({ Key: attrs.bizPhrase });\r\n\r\n \t\t }, function () {\r\n \t\t if (!bizPhraseLogService.Phrases.GetItemByValue('Key', attrs.bizPhrase)) {\r\n \t\t bizPhraseLogService.LogPhrase(attrs.bizPhrase, \"\", $translate.use());\r\n \t\t bizPhraseLogService.Phrases.push({ Key: attrs.bizPhrase });\r\n \t\t }\r\n \t\t\t\tconsole.warn(String.format(\"bizPhrase | Phrase not found for current culture ({0}): {1}\", $translate.use(), attrs.bizPhrase));\r\n \t\t\t});\r\n \t\t});\r\n \t}\r\n\r\n \treturn directive;\r\n }\r\n\r\n function bizPhraseFilter($translate, $rootScope) {\r\n \tvar phrases = {};\r\n \tvar promises = {};\r\n \treturn function (key) {\r\n \t\tif (phrases[key])\r\n \t\t\treturn phrases[key];\r\n\r\n \t\tif (promises[key])\r\n \t\t\treturn;\r\n\r\n \t\tpromises[key] = true;\r\n\r\n \t\t$rootScope.CultureInitialized.then(function () {\r\n \t\t\t$translate(key).then(function (translation) {\r\n \t\t\t\tphrases[key] = translation.toString();\r\n \t\t\t}, function (key) {\r\n \t\t\t\tphrases[key] = undefined;\r\n \t\t\t\tconsole.warn(String.format(\"bizPhrase | Phrase not found for current culture ({0}): {1}\", $translate.use(), key));\r\n \t\t\t});\r\n \t\t});\r\n \t}\r\n }\r\n\r\n\tfunction bizGoDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: bizGoLink\r\n\t\t};\r\n\r\n\t\tfunction bizGoLink(scope, element, attrs) {\r\n\t\t\tvar path = \"\";\r\n\r\n\t\t\tattrs.$observe('bizGo', function (val) {\r\n\t\t\t\tpath = val;\r\n\t\t\t});\r\n\r\n\t\t\telement.bind('click', function () {\r\n\t\t\t\tif (path && path != \"\") {\r\n\t\t\t\t\twindow.location.href = path;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').filter('hoursto', function () {\r\n return function (time, isutc) {\r\n if (time) {\r\n var from = moment();\r\n if (isutc) {\r\n var date = new Date();\r\n from = from.add(date.getTimezoneOffset(), 'minutes');\r\n }\r\n var to = moment(time);\r\n var duration = moment.duration(to.diff(from));\r\n return Math.floor(duration.asHours()) + 'H ' + duration.minutes() + 'M';\r\n }\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('date', function () {\r\n return function (value, format) {\r\n if (value)\r\n return moment(value).format(format || 'L');\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('time', function () {\r\n return function (value) {\r\n if (value)\r\n return moment(value).format('LT');\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('timeSince', timeSince);\r\n\r\n timeSince.$inject = [\"$translate\"];\r\n\r\n function timeSince($translate) {\r\n return function(time) {\r\n var justNow = $translate.instant(\"CORE.JUST_NOW\");\r\n return moment(time).fromNowOrNow(undefined, justNow.toString());\r\n }\r\n }\r\n\r\n angular.module('bizPartEngage').filter('datetime', function () {\r\n return function (value, isutc) {\r\n if (value) {\r\n if (isutc) {\r\n var m = moment(value);\r\n return m.subtract(m.utcOffset(), 'm').format('L LT');\r\n }\r\n return moment(value).format('L LT');\r\n }\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('xptype', xptypeFilter);\r\n\r\n xptypeFilter.$inject = [\"bizLevel\"];\r\n\r\n function xptypeFilter(levelProvider) {\r\n \tvar cache = {};\r\n\r\n function xptypeFilterFunction(value) {\r\n \tif (cache[value]) {\r\n return cache[value];\r\n \t}\r\n \telse {\r\n \t\tcache[value] = \"Loading translation...\";\r\n \t\tlevelProvider.getExperienceTypeLabel(value).then(function (val) {\r\n cache[value] = val;\r\n \t\t}, function (err) {\r\n \t\t\tconsole.log(\"Failed to find translation:\" + err);\r\n \t\t\tcache[value] = \"Failed to load translation\";\r\n \t\t});\r\n }\r\n }\r\n xptypeFilterFunction.$stateful = true;\r\n\r\n return xptypeFilterFunction;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').service('base.service', baseService);\r\n angular.module('bizPartEngage').service('bizNotificationService', bizNotificationService);\r\n angular.module('bizPartEngage').service('bizPushNotificationService', bizPushNotificationService);\r\n\r\n angular.module('bizPartEngage').service('MetadataService', ['$window', '$filter', function ($window, $filter) {\r\n var self = this;\r\n self.setMetaTags = function (tagData) {\r\n $window.document.getElementsByName('title')[0].content = tagData.title;\r\n $window.document.getElementsByName('description')[0].content = tagData.description;\r\n\r\n if (tagData.keywords)\r\n $window.document.getElementsByName('keywords')[0].content = tagData.keywords;\r\n\r\n //Open graph...\r\n if (tagData.title && tagData.title.length > 0)\r\n document.getElementById('og-title').content = tagData.title;\r\n\r\n if (tagData.description && tagData.description.length > 0)\r\n document.getElementById('og-description').content = tagData.description;\r\n\r\n if (tagData.img && tagData.img.length > 0)\r\n document.getElementById('og-image').content = $filter('fullsitepath')(tagData.img);\r\n\r\n if (tagData.video && tagData.video.length > 0)\r\n document.getElementById('og-video').content = $filter('fullsitepath')(tagData.video);\r\n\r\n document.getElementById('og-url').content = location.href;\r\n\r\n if (tagData.appendPortalNameLast && tagData.appendPortalNameLast === true)\r\n $window.document.title = htmlDecode((tagData.title.length > 0 ? tagData.title + \" - \" : '') + portalName);\r\n else\r\n $window.document.title = htmlDecode(portalName + (tagData.title.length > 0 ? \" - \" + tagData.title : '')); \r\n };\r\n }]);\r\n\r\n baseService.$inject = [\"$http\", \"$state\", \"$filter\"];\r\n bizNotificationService.$inject = [\"$timeout\", \"$mdToast\"];\r\n bizPushNotificationService.$inject = [\"$http\", \"$mdToast\"];\r\n\r\n function baseService($http, $state, $filter) {\r\n \tthis.AddTranslatePartsToState = function (stateName, parts) {\r\n \t\tvar state = $state.get(stateName);\r\n \t\tif (!state)\r\n \t\t\treturn;\r\n\r\n \t\tif (!state.data)\r\n \t\t\tstate.data = { translateParts: [] };\r\n\t\t\telse if (!state.data.translateParts)\r\n \t\t\tstate.data.translateParts = [];\r\n\r\n \t\tstate.data.translateParts = state.data.translateParts.concat(parts);\r\n \t}\r\n\r\n this.GetMenuItemsForLoggedInUser = function() {\r\n return $http.get(siteRootPath + 'api/menu/GetMenuItemsForLoggedInUser');\r\n };\r\n\r\n this.GetLoggedInUser = function() {\r\n return $http.get(siteRootPath + 'api/User/GetLoggedInUser');\r\n };\r\n\r\n this.GetCultures = function () {\r\n return $http.get(siteRootPath + 'api/culture/GetCultures');\r\n };\r\n\r\n this.HasLayoutComponent = function (type) {\r\n return $http.get(siteRootPath + 'api/layout/HasLayoutComponent', {\r\n params: {\r\n type: type\r\n }\r\n });\r\n }\r\n\r\n this.GetGlobalSiteTitle = function () {\r\n return $http.get(siteRootPath + 'api/layout/GetGlobalSiteTitle');\r\n }\r\n\r\n this.GetFrontEndModuleSettingValue = function (module, key) {\r\n if (moduleSettings) {\r\n var settings = moduleSettings.GetItemByValue('ModuleName', module);\r\n if (settings && settings.Settings) {\r\n var s = settings.Settings.GetItemByValue('Key', key);\r\n return s ? s.Value : undefined;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n this.UpdateFrontEndModuleSettingValue = function (module, key, value) { \r\n if (moduleSettings) {\r\n var settings = moduleSettings.GetItemByValue('ModuleName', module);\r\n if (settings && settings.Settings) {\r\n var s = settings.Settings.GetItemByValue('Key', key);\r\n if (s) {\r\n s.Value = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.GetSiteRootPath = function (value) {\r\n return $filter(\"siteroot\")(value)\r\n }\r\n }\r\n\r\n function bizNotificationService($timeout, $mdToast) {\r\n this.AddInformationNotification = function (header, body, timeout) {\r\n var guid = randomString(5);\r\n var html = '
' + header + '
' + body + '
'\r\n var bizNotification = angular.element(document.querySelector('#bizNotification'));\r\n\r\n bizNotification.append(html);\r\n\r\n $timeout(function (id) {\r\n angular.element(document.querySelector('#' + id)).addClass('hide-notification');\r\n\r\n $timeout(function (elemId) {\r\n angular.element(document.querySelector('#' + elemId)).remove();\r\n }, 350, true, id);\r\n\r\n }, timeout || 10000, true, guid);\r\n }\r\n\r\n this.AddCustomNotification = function (content) {\r\n var template = '' + content + '';\r\n $mdToast.show({\r\n position: 'top center',\r\n parent: angular.element(document.body),\r\n hideDelay: 20000,\r\n template: template,\r\n autoWrap: true,\r\n controllerAs: 'vm',\r\n controller: function ($mdToast) {\r\n var vm = this;\r\n vm.close = function () {\r\n $mdToast.hide();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function randomString(len) {\r\n charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\r\n var randomString = '';\r\n for (var i = 0; i < len; i++) {\r\n var randomPoz = Math.floor(Math.random() * charSet.length);\r\n randomString += charSet.substring(randomPoz, randomPoz + 1);\r\n }\r\n return randomString;\r\n }\r\n }\r\n\r\n function bizPushNotificationService($http, $mdToast) {\r\n var messaging;\r\n\r\n this.Initialize = function () {\r\n try {\r\n firebase.initializeApp(firebaseConfig);\r\n messaging = firebase.messaging();\r\n\r\n messaging.onMessage(function (payload) {\r\n console.log('PAYLOAD', payload);\r\n if (payload && payload.data && payload.data.show_on_site === \"True\") {\r\n ShowOnSite(payload);\r\n }\r\n });\r\n navigator.serviceWorker.register(siteRootPath + \"firebase-messaging-sw.js\")\r\n .then((registration) => {\r\n messaging.useServiceWorker(registration);\r\n Notification.requestPermission().then((permission) => {\r\n if (permission === 'granted') {\r\n console.log('Notification permission granted.');\r\n // TODO(developer): Retrieve an Instance ID token for use with FCM.\r\n // ...\r\n GetFCMToken();\r\n } else {\r\n console.log('Unable to get permission to notify.');\r\n }\r\n });\r\n });\r\n\r\n messaging.usePublicVapidKey(\"BJz2MR7KAppIhe0N3M4nX2VH6boXvxpXxdVcPUVDdSL8P7kGFe1s3pYNBhSol3SV22EOkDmbB7wa4uup0G2QUQE\");\r\n } catch (error) {\r\n console.log('ERROR INITIALIZING FIREBASE!');\r\n console.log(error);\r\n } \r\n };\r\n\r\n function ShowOnSite(payload) {\r\n var template = '' + payload.data.body + '';\r\n $mdToast.show({\r\n position: 'top center',\r\n parent: angular.element(document.body),\r\n hideDelay: 10000,\r\n template: template,\r\n autoWrap: true,\r\n controllerAs: 'vm',\r\n controller: function ($mdToast) {\r\n var vm = this;\r\n vm.close = function () {\r\n $mdToast.hide();\r\n }\r\n vm.click = function () {\r\n if (payload.data.click_action) {\r\n location.href = payload.data.click_action;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function AddPushNotificationId (notificationId, type) {\r\n return $http.get(siteRootPath + \"api/PushNotification/AddPushNotificationId?\" + $.param({ id: notificationId,\r\n type: type || 1 }));\r\n };\r\n\r\n function ValidatePushNotificationId (notificationId) {\r\n return $http.get(siteRootPath + \"api/PushNotification/ValidatePushNotificationId?\" + $.param({id: notificationId}));\r\n };\r\n\r\n function GetFCMToken() {\r\n messaging.getToken().then((currentToken) => {\r\n if (currentToken) {\r\n console.log('Current token: ', currentToken)\r\n ValidatePushNotificationId(currentToken).then(function(valid) {\r\n if(!valid.data) {\r\n AddPushNotificationId(currentToken);\r\n }\r\n else {\r\n console.log('You are already registered with token: ', currentToken);\r\n }\r\n });\r\n\r\n } else {\r\n // Show permission request.\r\n console.log('No Instance ID token available. Request permission to generate one.');\r\n // Show permission UI.\r\n // updateUIForPushPermissionRequired();\r\n // setTokenSentToServer(false);\r\n }\r\n }).catch((err) => {\r\n console.log('An error occurred while retrieving token. ', err);\r\n //showToken('Error retrieving Instance ID token. ', err);\r\n //setTokenSentToServer(false);\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/ActivityReminders.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/AdminBar.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CookieSettings.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CountdownTimer.html',\r\n \"
Start meeting
Cancel meeting
Reset

har startat mötet

.

Kvar

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CultureSelector.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/DefaultLevelProgress.html',\r\n \"

{{vm.CurrentLevel.Name}}

0\\\">

{{vm.ExpLeftToNextLevel}} {{'CORE.EXPERIENCEPOINTSTO' | translate}} {{vm.NextLevel.Name}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageJourney.html',\r\n \"

Remaining experience: {{::journey.RemainingExperience}}

Remaining virtual currency: {{::journey.RemainingVirtualCurrency}}


| {{::object.Name}}

Status:

Experience: {{::object.ExperienceGive}}

Virtual currency: {{::object.VirtualCurrencyGive}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgress.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgressBar.html',\r\n \"

{{vm.label}}  

97 ? 'calc(' + vm.progress + '% - 20px)' : vm.progress + '%') || 0)}\\\" show-profile-image=vm.showProfileImage>
{{vm.progress | number:0}}%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgressSettings.html',\r\n \"
Visa progress för valda ämnen
Visa progress för hela siten
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageStackedObjects.html',\r\n \"
Del {{$index + 1}}

Del {{$index + 1}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Favorite.html',\r\n \"
Spara favorit
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/FavoriteEditList.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/FavoriteList.html',\r\n \"
No favorites found!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Header.html',\r\n \"
Sök
Favoriter
1\\\" ng-class=\\\"{'expanded': vm.ShowCultures}\\\" biz-click-outside=\\\"vm.ShowCultures = false\\\" ng-click=\\\"vm.ShowCultures = !vm.ShowCultures\\\"> Select language {{$root.Cultures.GetItemByValue('Id', $root.LoggedInUser.CurrentCultureId).CultureCode.slice(-2)}}
0\\\" ng-click=\\\"vm.ShowLogin = !vm.ShowLogin\\\"> {{$root.LoggedInUser.FirstName}}
Logga in / Skapa användare
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Leaderboard.html',\r\n \"

{{vm.header}}

{{user.Rank}} {{user.UserFirstName}} {{user.UserLastName}} {{user.DefaultExperiencePoints}}xp
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MainMenu.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourney.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourneyCollection.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourneyStatus.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyNotes.html',\r\n \"
Du har inga goda nyheter
Mina goda nyheter!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyNotesEditDialog.html',\r\n \"
Lägg till nyhet
Nyhet nummer 4 kommer då att försvinna.
Nej Ja

Nyhet: {{$index + 1}}

Färg
Bild
Lägg till bild

Ta bort bild
Avbryt Ok
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyText.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyTextEdit.html',\r\n \"
Text
Skicka
{{vm.Error}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/tip-someone.html',\r\n \"Bjud in någon!\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Unsubscribe.html',\r\n \"

Select categories to unsubscribe from

{{cat.Name}}
Confirm
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/LoginCenterWithBgImages/Views/forgotpassword.html',\r\n \"
Alla rättigheter förbehållna
Powered by
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/LoginCenterWithBgImages/Views/login.html',\r\n \"
Alla rättigheter förbehållna
Powered by
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/completeregister.html',\r\n \"
Slutför konfigurationen av kontot
Skapa konto
Mailadress
{{vm.VerificationCodeSent ? 'Skicka en ny kod' : 'Verifiera mailadressen'}}
Mata in koden nedan som strax dyker upp i din mailkorg.
Verifieringskod
Alla förnamn enligt passet
Mellannamn enligt passet
Efternamn enligt passet
Mobilnummer
Kön
{{gender.DisplayName}}
= 0\\\" full-phone-number=vm.ExtCustomFieldValues[customField.CustomId] label=Mobile bad-input=vm.CustomFieldsMobileBadInput[customField.CustomId]>
Välj lösenord
Bekräfta lösenord
Jag accepterar integritetspolicyn
Jag har tagit del av Integritetspolicy som beskriver hur X behandlar mina personuppgifter. För sådan behandling som kräver mitt samtyck, ger jag härmed mitt samtycke. Jag vet att jag kan återkalla mitt samtycker genom att kontackta X via de kontaktuppgifter som finns i integritetspolicyn.
Slutför
 Sparat
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/exthome.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/forgotpassword.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/login.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/logout.html',\r\n \"
Loggar ut
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mycolleagues.html',\r\n \"

{{'GLOBAL.COLLEAGUES' | translate}}

0\\\" class=\\\"biz-tab sm biz-margin-right\\\" ng-class=\\\"{ 'active': !vm.Tab }\\\" ng-click=\\\"vm.Tab = 0; vm.ShowSpecificUnit = false;\\\"> {{'CORE.MAINUNIT' | translate}}
{{'CORE.MYUNIT' | translate}}
0 && !vm.ShowSpecificUnit\\\">

{{'CORE.SELECTUNIT' | translate}}

{{unit.Name || 'CORE.NOUNITNAME' | translate}}

{{vm.MyUnit.Name || 'CORE.NOUNITNAME' | translate}}

{{user.FirstName}} {{user.LastName}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mycustomsettings.html',\r\n \"

Settings

{{customField.CustomSettings.GroupName}}
*
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/myleaderboards.html',\r\n \"

0\\\" class=\\\"biz-tab sm biz-margin-right\\\" biz-phrase=CORE.MAINUNIT>
0\\\" class=\\\"biz-50 biz-flex column\\\">

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mypage.html',\r\n \"

{{$root.LoggedInUser.FirstName}} {{$root.LoggedInUser.LastName}}

2444

COINS

{{($root.LoggedInUser.DefaultExperiencePoints > 0 ? $root.LoggedInUser.DefaultExperiencePoints : 0)}}

{{'GLOBAL.TOTALEXPERIENCE' | translate}}

{{vm.CertificationCount}}

CERTIFICATES

= 0\\\">{{vm.TotalEducationCount}}

= 0\\\">{{vm.BlogCount}}

= 0\\\">{{vm.VideoCount}}

= 0\\\">{{vm.QuizCount}}


{{'CORE.GAINMOREEXP' | translate}}
{{'CORE.LASTGAINEDEXP' | translate}}
0\\\">{{item.Currency}}c 0\\\">{{item.Exp}}p

{{'GLOBAL.NODATA' | translate}}

{{item.ExperiencePoints}} 0\\\"> ({{item.BonusExperiencePoints}})

{{'GLOBAL.NODATA' | translate}}


{{'CORE.NOTIFICATIONS' | translate}}
-
\\\"\\\" \\\"\\\"

{{'GLOBAL.NODATA' | translate}}


\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/myrelatedusers.html',\r\n \"

Related users

{{rt.Name}}
{{rt.Name}}
*
*
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mysecurity.html',\r\n \"

Security

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mysettings.html',\r\n \"

Personuppgifter

{{(vm.User.Photo ? 'GLOBAL.CHANGEIMAGE' : 'GLOBAL.ADDIMAGE') | translate}}
*
*
*
0 && $root.MiniSettings.Profile.ShowCountry\\\">
{{gender.DisplayName}}
0 && $root.MiniSettings.Profile.ShowUserType\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/notifications.html',\r\n \"
-
\\\"\\\" \\\"\\\"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/privacypolicy.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/profile.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/register.html',\r\n \"
Skapa konto
{{vm.Message}}
Jag accepterar integritetspolicyn
Jag har tagit del av Integritetspolicy som beskriver hur X behandlar mina personuppgifter. För sådan behandling som kräver mitt samtyck, ger jag härmed mitt samtycke. Jag vet att jag kan återkalla mitt samtycker genom att kontackta X via de kontaktuppgifter som finns i integritetspolicyn.
Skapa konto
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/showterms.html',\r\n \"

No terms were found

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/unsubscribe.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/welcome.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/blog-list.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/index.html',\r\n \"
{{'GLOBAL.NODATA' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/view.html',\r\n \"

0\\\" biz-background=\\\"{{::vm.SelectedItem.UserProfileImageUrl | siteroot}}\\\">
{{vm.GetDate(vm.SelectedItem.StartTimeUtc)}}

Mest gillade bloggar

Mest kommenterade

Relaterade Artiklar

Våra senaste inlägg

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Campaign/Views/default.html',\r\n \"
1\\\" class=campaign-menu> {{page.Name}}

No campaign found

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Certifications/Views/default.html',\r\n \"
{{cert.Name}}
{{cert.UserData.ProgressPercent}}% 0\\\" biz-excel-export=\\\"{{'Handlers/Core/Certifications/ShowCertificationHandler.ashx?cert=' + cert.UserData.UserCertId + '&auth=' + vm.AuthToken | siteroot}}\\\"> Ladda ner ditt certifikat!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Certifications/Views/new-certification-dialog.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Dictionary/Views/index.html',\r\n \"

{{letter}}

{{item.Word}}

{{item.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/education-list.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/educationslistdirective.html',\r\n \"
No educations found...
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/html5education.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/index.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/index-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/index.html',\r\n \"
{{vm.Event.Name}}
{{vm.Event.Description}}
Time: {{vm.Event.StartDateTimeUtc | time}} - {{vm.Event.EndDateTimeUtc | time}}
Email:
Comment:
Full Book Cancel
0\\\"> External link: {{vm.Event.ExternalUrl}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/list-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/index.html',\r\n \"

{{'FORUM.LIST' | translate}}

{{'FORUM.FORUM' | translate}} {{'FORUM.POSTS' | translate}} 0\\\"> {{'FORUM.UNREAD' | translate}}
0\\\" ng-bind=forum.UnreadPostCount>
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/viewforum.html',\r\n \"

{{'FORUM.THREAD' | translate}} {{'FORUM.POSTS' | translate}} 0\\\"> {{'FORUM.UNREAD' | translate}}
{{'FORUM.STICKY_THREAD' | translate}} 0\\\" ng-bind=thread.UnreadPostCount>
{{'CORE.NO_ITEMS' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/viewforumthread.html',\r\n \"

{{'FORUM.DELETE.POST' | translate}} {{'FORUM.EDIT.POST' | translate}} {{'FORUM.SAVE.POST' | translate}}
{{'CORE.NO_ITEMS' | translate}}
0\\\" class=forum-post>
{{'FORUM.POST_BTN' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Journey/Views/index.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/MasterRun/Views/index.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/index.html',\r\n \"
No items found...
1\\\"> -1\\\" ng-click=vm.ToggleMediaTypes(type.Id)>{{vm.GetFileTypeTranslations(type)}}

Senaste

Mest gillade

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/video-list.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/viewfile.html',\r\n \"
Image
{{vm.MediaFile.Name}}
1\\\" class=tag-filetype>{{::vm.GetFileTypeTranslations(vm.MediaFileTypes.GetItemByValue('Id', vm.MediaFile.Type))}}
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/viewtags.html',\r\n \"
{{vm.SelectedTag.Name}}
Image
{{vm.SelectedFile.Name}}
100\\\" class=media-file-read-more-btn ng-click=\\\"vm.SelectedFile.Expanded = true;\\\"> Läs mer
{{vm.SelectedFile.Description}}
{{file.Name}}
{{file.Description}}
Läs mer.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMission.html',\r\n \"

{{vm.mission.Name}}

0\\\">{{vm.mission.ExperienceGive}}p
0\\\">{{vm.mission.CurrencyGive}}c

{{::vm.mission.Description}}

{{vm.DaysLeft}} {{'GLOBAL.TIME.DAYS' | translate}} {{vm.HoursLeft}} {{'GLOBAL.TIME.HOURS' | translate}} {{vm.MinutesLeft}} {{'GLOBAL.TIME.MINUTES' | translate}}

{{'MISSIONS.COMPLETED' | translate}} {{vm.CompletedPercentage}}%

0\\\">

= 100\\\">{{'MISSIONS.USERSCOMPLETEDYOUAND' | translate}} {{::vm.mission.UsersCompletedMission - 1}} {{'MISSIONS.USERSCOMPLETED' | translate}}

{{::vm.mission.UsersCompletedMission}} {{'MISSIONS.USERSCOMPLETED' | translate}}

{{'MISSIONS.SHOWUSERS' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionList.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionRules/GenericTemplate.html',\r\n \"

{{rule.Name}}

{{rule.Description}}

{{rule.PercentageComplete}}%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionUser.html',\r\n \"
{{user.FirstName}}

{{user.FirstName}} {{user.LastName}}

{{'GLOBAL.EMAIL' | translate}}: {{user.Email}}

{{'GLOBAL.PHONE' | translate}}: {{user.Phone}}

{{'GLOBAL.CELLPHONE' | translate}}: {{user.Mobile}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/users.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/view.html',\r\n \"

{{'MISSIONS.RULES' | translate}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Search/Views/index.html',\r\n \"

Sökresultat

Alla resultat {{index.SearchIndexExternalName}}
Your search for \\\"{{vm.SearchedQuery}}\\\" resulted in {{vm.ResultCount}} hits. hit.
Sortera resultat
Från A-Ö
Senaste
{{category.SearchIndexExternalName | uppercase}} ({{vm.ResultItems.GetItemByValue('Index', category.Index).TotalHits}})
{{item.ItemName}} {{vm.GetDate(item.UpdatedDate)}}
{{vm.GetItemPreview(item);}}...
vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits\\\" ng-click=\\\"vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits = vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits + vm.HitsIncement; vm.Search();\\\">Visa mer
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/highscore.html',\r\n \"
{{vm.speedquizName}}
{{$index + 1}}.

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/list.html',\r\n \"

Quiz

{{speedquiz.Name}}

{{speedquiz.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/play.html',\r\n \"
{{'SPEEDQUIZ.LOADING_TEXT' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/show.html',\r\n \"

SHOW SPEEDQUIZ

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/base.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/cleanbase.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/dialog-primary.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/engagement-tip.html',\r\n \"

Bra jobbat!

Du klarade utbildningen: Cerebral pares och jag - Del 1

20

5

Här kommer några tips på vad du kan göra:

Motoriska interventioner och träning

Genomför utbildningen och tjäna mer erfarenheter och coins

Cp och jag quiz

Spela speedquiz spelet och tjäna mer erfarenheter och coins

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/welcome-guide.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/home.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Modules/Blog/grid.html',\r\n \"

0\\\" biz-background=\\\"{{::vm.SelectedItem.UserProfileImageUrl | siteroot}}\\\">
{{::vm.GetDate(vm.SelectedItem.StartTimeUtc)}}

Våra senaste inlägg

0 && !vm.SelectedItem)\\\">{{vm.SelectedTag.Name}}

No news items found
Show more
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/noaccess.html',\r\n \"

No access

\"\r\n );\r\n}]);\n})(window.angular);\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Campaign/GUI/Modules/Views/User/EventsModule.html',\r\n \"
Select your city
{{event.Description}}
{{event.Location}}
{{event.DateStart | datetime}}
Organizer
{{event.OrganizerName}}
{{event.OrganizerEmail}}
{{event.OrganizerPhone}}
Co-Organizers
{{organizer.Name}} ({{organizer.Email}})
Comment
Register
Unregister
The maximum amount of people has registered for this event.
The latest registration date has passed for this event.
You have already registered for an event.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Product/Views/User/ProductMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Product/Views/User/ProductSpecificationModule.html',\r\n \"
{{spec.ProductDetailType.Name}} {{spec.Value}}

{{spec.ProductDetailType.Name}} {{spec.Value}}
vm.module.Content.Limit && !vm.ShowMore\\\"> FLER SPECIFIKATIONER
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/BlogListLargeModule.html',\r\n \"
{{::item.Title}}
Read more
0\\\">{{::item.TotalCoins}}c 0\\\">{{::item.TotalPoints}}p
#{{::tag.Name}}
{{::vm.GetPhrase('CONTAINER_CMS_LIKE_ARTICLE') || 'What do you think about the article?'}}
{{::item.UserFullName}}
{{::vm.GetDate(item.PublishedDate)}}
Answer the question Good job! Oops, you answered incorrectly!
{{::item.LinkedTrainingPoll.Question}}
0\\\">{{::item.LinkedTrainingPoll.CoinsToGive}}c 0\\\">{{::item.LinkedTrainingPoll.PointsToGive}}p
{{option.Text}} ({{item.LinkedTrainingPoll.Results.GetItemByValue('Id', option.Id).Votes}} votes)
Answer the question
{{::item.LinkedPoll.Question}}
0\\\">{{::item.LinkedPoll.CoinsToGive}}c 0\\\">{{::item.LinkedPoll.PointsToGive}}p
{{option.Text}} ({{item.LinkedPoll.Results.GetItemByValue('Id', option.Id).Votes}} votes)
Get educated
{{::item.LinkedUserEducation.Name}}
{{::item.LinkedUserEducation.Duration}}
0 || item.Repetition.Coins > 0\\\">
0 || item.LinkedUserEducation.FastCoins > 0\\\">{{::item.Repetition.Coins || item.LinkedUserEducation.FastCoins}}c 0 || item.LinkedUserEducation.FastPoints > 0\\\">{{::item.Repetition.Points || item.LinkedUserEducation.FastPoints}}p Extra points
{{::vm.GetTimeTo(item.LinkedUserEducation.FastPointsAndCoinsExpires)}}h remaining
0\\\"> {{::item.LinkedUserEducation.MaxCoins - item.LinkedUserEducation.UserReceivedCoins}}c 0\\\"> {{::item.LinkedUserEducation.MaxPoints - item.LinkedUserEducation.UserReceivedPoints}}p
i
{{item.LinkedUserEducation.Description}}
No news items found
Get more news items
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/BlogListModule.html',\r\n \"
0 || entry.TotalPoints > 0)\\\"> 0\\\"> {{entry.TotalCoins}}c 0\\\"> {{entry.TotalPoints}}p
{{::entry.Title}}
{{::entry.Title}}
0\\\"> {{entry.TotalCoins}}c 0\\\"> {{entry.TotalPoints}}p
{{vm.GetBlogTranslation(entry)}}
{{vm.GetBlogTranslation(entry)}}
{{entry.ContentStrippedHtml}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CertificationsModule.html',\r\n \"
{{'' | phrase:\\\"CERTIFICATIONS_RELEASE_DATE\\\":\\\"#DATE#\\\":certificate.PublishedDate}}
%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CombinationModule.html',\r\n \"

{{vm.module.Content.Header}}

{{vm.module.Content.Header}}

{{::vm.GetVideoDuration(vm.VideoDuration)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CountdownModule.html',\r\n \"
{{vm.DaysLeft}}
DAYS
{{vm.HoursLeft}}
HOURS
{{vm.MinutesLeft}}
MINUTES
{{vm.SecondsLeft}}
SECONDS
{{vm.module.Content.TextToShow}}

Go to: {{vm.module.Content.LinkToShow}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EducationsModule.html',\r\n \"

{{edu.Name}}

{{edu.Duration}}
{{vm.PrintAcceptedStatus(edu)}}
0 || edu.ExtraPoints > 0\\\" class=fastWrapper> 0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p Extra points {{vm.PrintFastExpireDate(edu);}}
0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p 0\\\" ng-src=\\\"{{edu.ImageUrls[0] | siteroot}}\\\">
i
{{edu.Name}}

{{edu.Description}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EventListModule.html',\r\n \"
{{vm.GetDayAndMonth(event.StartDateTimeUtc).Day}}
{{vm.GetDayAndMonth(event.StartDateTimeUtc).Month}}
{{event.Name}}
0\\\">{{event.Description}}
0\\\">{{event.ShortDescription}}
Time: {{event.StartDateTimeUtc | time}} - {{event.EndDateTimeUtc | time}}
Full Book Cancel
0\\\"> External link: {{event.ExternalUrl}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EventListModuleParticipationDialog.html',\r\n \"

Event participation: {{vm.Event.Name}}

Attend to this event: {{vm.Event.Name}} Cancel your attendance

When you click SEND we will send you a confirmationlink by email that you have to click to fullfill your booking.

If you would like to cancel your attendance you have to enter the same email address you used in the booking process.

Email:
Comment:
Send Cancel
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ForumListModule.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/GoogleAnalyticsModule.html',\r\n \"

Google analytics proof of concept

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/HighscoreMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/HighscoreModule.html',\r\n \"
{{vm.module.Content.Label}}
{{score.Rank}}
{{score.User.FirstName | htmldecode}} {{score.User.LastName | htmldecode}}
{{score.Points}}p
No data found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/Html5EducationsModule.html',\r\n \"

VÃ¥ra utbildningar

Ladda in fler utbildningar  

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/LinkList.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MediaListModule-old.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MediaListModule.html',\r\n \"

VÃ¥ra filmer

Ladda in fler filmer  

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MiniJourneyModule.html',\r\n \"
N/A
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyCertificationsModule.html',\r\n \"

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_HEADER') || 'Certifieringar'}}

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_INTRODUCTIONS_FIRST')}}

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_INTRODUCTIONS_SECOND')}}

{{vm.CurrentTab.GetPhrase('BIZMYCERTIFICATIONS_WATCH_VIDEO')}}
0\\\">

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_CERTIFICATION_LBL') || \\\"Certifiering\\\" }} {{dep.Name}}

0\\\">{{vm.GetDepartmentCoins(dep, vm.CertificationList)}} c 0\\\">{{vm.GetDepartmentPoints(dep, vm.CertificationList)}} p
0\\\">

{{cert.Name}}

0\\\" class=cert-permission-department> {{cert.PermissionDepartments[0].Name}}
{{cert.UserData.ProgressPercent}} %
{{cert.Description}}
TILL SHOPPEN
Grattis! Du har l�st upp en ny produkt i shoppen.
Du har l�st upp denna produkten genom ett annat certifikat.
KR�VER CERT.
{{::vm.CurrentTab.GetPhrase(\\\"BIZMYEDUCATIONSBYCATEGORY_FINISH_CERT\\\").replace(\\\"#CERTIFICATE#\\\", cert.Name)}}
Show all
0\\\" class=cert-description> {{cert.Description}}

{{edu.Name}}

{{vm.PrintAcceptedStatus(edu)}}
0\\\">{{reward.Coins}}c 0\\\">{{reward.Points}}p
0 || edu.FastPoints > 0 || edu.ExtraRewards.length > 0\\\" class=fastWrapper> 0\\\">{{edu.FastCoins}}c 0\\\">{{edu.FastPoints}}p {{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCATEGORY_LBLEXTRAPOINTS')}}
{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCATEGORY_LBLAPPROVED')}} 0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p
{{edu.Duration}}
i
{{edu.Description}}
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsByCategoryModule.html',\r\n \"
Inga utbildningar hittades.

{{educationCategory.Name}}

{{edu.Name}}

{{edu.Object.Duration}}
Godk�nd
0 || edu.ExtraPoints > 0\\\" class=fastWrapper> -1\\\" ng-show=\\\"edu.Object.ExtraCoins > 0\\\">{{edu.Object.ExtraCoins}}c 0\\\">{{edu.Object.ExtraPoints}}p
{{vm.PrintFastExpireDate(edu.Object);}}
{{vm.PrintStatusText(edu.Object.UserStatus)}} Repetera
0\\\">{{edu.Object.MaxCoins}}c 0\\\">{{edu.Object.MaxPoints}}p
0\\\" ng-src=\\\"{{edu.Object.ImageUrls[0] | siteroot}}\\\">
i
{{edu.Object.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsCompletedModule.html',\r\n \"
{{vm.Certifications}}
{{vm.GetPhrase('BIZMYEDUCATIONSCOMPLETED_CERTIFICATE') || 'Certificates'}}
{{vm.CertificationEducations}}
{{vm.GetPhrase('BIZMYEDUCATIONSCOMPLETED_CERTIFICATEEDUCATIONS') || 'Certificate educations'}}
{{vm.Educations}}
Base educations
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsMiniListModule.html',\r\n \"

Rekommenderas f�r dig

{{edu.Name}}
0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p 0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p

Repetera

{{edu.Name}}
0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p 0\\\">{{edu.RemainingCoins}}c 0\\\">{{edu.RemainingPoints}}p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ProgressModule.html',\r\n \"
{{vm.module.Content.HeaderText}}
{{point.Comment}}
{{point.AddedPoints}} p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ShopModuleModule.html',\r\n \"
Du har {{vm.Currency}} coins kvar att handla för
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/SuggestionsModule.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/TagFilterModule.html',\r\n \"
{{vm.module.Content.Label}} / Tags / #{{vm.SelectedTag.Name}}
#{{vm.SelectedTag.Name}}
Select a tag
0\\\"> {{::tag.Name}} {{::tag.Occurence}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/AutomaticProductSaleModule.html',\r\n \"

{{sale.DiscountVoucherWidgetText}}

{{sale.Name}}
{{sale.Price}}c
{{sale.DiscountVoucherPrice}}c
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ButtonModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/EffectsModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FAQModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FavoriteModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FormModule.html',\r\n \"
Missed submission on {{vm.Form.MissingSubmissionDatesUtc[0] | date:'YYYY-MM-DD'}}, submit that first
Tillbaka
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/hotspotdialog.tmpl.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/IFrameModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageHotspotsModule.html',\r\n \"
{{vm.CurrentSelectedHotspot.Name}} {{vm.CurrentSelectedHotspot.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageModule.html',\r\n \"
{{vm.module.Content.ImageAlt}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageTextModule.html',\r\n \"
{{vm.module.Content.ImageAlt}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/JourneyModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/LikeActionsModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/MissionsModule.html',\r\n \"
0\\\">{{vm.Mission.ExperienceGive}}p
0\\\">{{vm.Mission.CurrencyGive}}c

{{vm.Mission.Name}}

Days {{vm.Mission.DaysLeft}} - Hours {{vm.Mission.HoursLeft}} - Minutes {{vm.Mission.MinutesLeft}}

Completed {{vm.Mission.CompletedPercentage}}%

{{::vm.Mission.Description}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/NavigationModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/PaintModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/QuestionModule.html',\r\n \"

{{vm.module.Content.QuestionTitle}}

{{::poll.Text}}

{{alt.Text}} ({{alt.SubmitCount}} votes)
Svara
Svara
There are no questions to answer
You answered the question!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SegmentModule.html',\r\n \"

Locked content

Läs mer Visa mindre
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SlideshowModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SocialShareModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizHighscoreModule.html',\r\n \"
{{type.Name}}
No quizes found
{{quiz.Name}}
{{quiz.ObjectName}}
Show highscore
1\\\"> {{quiz.Name}}
{{quiz.ObjectName}}
  1. {{::($index + 1) > 9 ? \\\"\\\" + ($index + 1) : \\\"0\\\" + ($index + 1)}} {{::score.FirstName}} {{::score.LastName}} {{::score.Score}}p
vm.Limit\\\" ng-click=\\\"vm.Limit = vm.Limit + 20\\\"> Show more
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizModule.html',\r\n \"
{{speedquiz.Name}}
{{vm.module.Content.ButtonText || 'Spela'}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizPlay.html',\r\n \"
{{Game.Score}}p
{{Game.Name}}

{{Question.Name}}

{{option.Text}}

0\\\" class=correct> {{CurrentTab.GetPhrase(\\\"SPEEDQUIZ_CORRECT\\\") || \\\"Correct\\\"}}! + {{AddedScore}} {{CurrentTab.GetPhrase(\\\"SPEEDQUIZ_WRONG\\\") || \\\"That was wrong\\\"}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/TextModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/VideoModule.html',\r\n \"
{{vm.module.Content.Header}}
{{vm.module.Content.DescriptionHeader}}
{{vm.module.Content.Description}}
0 && (vm.CoinsUser == true) && !vm.module.HasFinishedBefore\\\">{{::vm.module.Settings.CoinsGain}}c 0 && !vm.module.HasFinishedBefore\\\">{{::vm.module.Settings.PointsGain}}p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/ChangePasswordModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/CookieButtonModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/FavoriteEditModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/WelcomeGuideButtonModule.html',\r\n \"
0}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/EducationSummaryModule.html',\r\n \"
Well done, everything is done
You finished the education unsuccessfully What did I miss?
{{vm.GetFinishedCount(segment.Modules)}}/{{segment.Modules.length}}
{{module.Name}}
0\\\">
Functions outside of segment
{{vm.GetFinishedCount(vm.ModulesOutsideSegments)}}/{{vm.ModulesOutsideSegments.length}}
{{module.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/EvaluationModule.html',\r\n \"
Start test
1\\\" ng-click=vm.SlickSettings.method.slickNext() ng-style=\\\"::{'background-color': vm.module.Content.ButtonColor, 'border-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_START>Start test
1\\\" ng-click=vm.SlickSettings.method.slickGoTo(vm.StartIndex) ng-style=\\\"::{'background-color': vm.module.Content.ButtonColor, 'border-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_CONTINUE>Continue
Question /
0}\\\" ng-click=\\\"vm.SelectOption(question, option, $parent.$last)\\\">
1\\\" ng-click=vm.Retry() ng-style=\\\"::{'border-color': vm.module.Content.TestTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_RETRY>Retry
You answered {{vm.Correct}}/{{vm.Questions.length}} questions correctly and have completed the test! questions correctly, which is not enough to pass the test.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/QuestionsMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/QuestionsModule.html',\r\n \"
{{question.QuestionText}}
-1, 'option-button': question.QuestionType != 3, 'correct': question.Answered && option.Value > 0}\\\" ng-click=\\\"vm.SelectOption(option, question)\\\" ng-repeat=\\\"option in question.Options\\\" class=option ng-style=\\\"{'background-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\">
{{option.OptionText}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/TextInputModule.html',\r\n \"
{{vm.module.Content.Question}}
{{vm.module.Content.Button.ButtonText}}
{{vm.module.Content.TextAfter}}
{{vm.module.Content.Answer}} {{vm.Answer}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/TermsAndConditions/GUI/Modules/Views/User/GenericSendSignupModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/TermsAndConditions/GUI/Modules/Views/User/SignatureModule.html',\r\n \"
{{::vm.module.Content.SignatureText}}
Signature
\"\r\n );\r\n}]);\n})(window.angular);\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizComments/bizcomment.html',\r\n \"
0\\\" biz-background=\\\"{{comment.AuthorPhoto | siteroot}}\\\">
{{comment.AuthorName}} {{comment.Date | datetime}} Reply Edit

{{comment.Comment}}

This comment has been removed

0\\\">
Update Cancel
0\\\">
Comment Cancel
0\\\" ng-repeat=\\\"comment in vm.Comments | filter: {ParentId: comment.Id} | orderBy:'-Date'\\\" class=comment layout=row ng-include=\\\"'js/AngularModules/BizComments/bizcomment.html' | siteroot\\\" ng-class=\\\"{'comment-editmode': comment.EditMode || comment.Replying}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizComments/bizcomments.html',\r\n \"

Comments ({{vm.Comments.length}})

No type {{t.Name}}
0\\\" ng-click=\\\"vm.ShowComment = !vm.ShowComment\\\">

New comment

0\\\">
Comment
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizDotMenu/template.html',\r\n \"
  • {{vm.GetPhrase('BIZDOTMENU_COPY') || 'Kopiera länk'}} {{vm.GetPhrase('BIZDOTMENU_COPIED') || 'Länk kopierad'}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformedit.html',\r\n \"
Settings
Form name This is the name used to identify this form. It will be shown in stats and admin pages wherever forms are listed or displayed. It will not be displayed outwardly to users.
Start
Expires
Form type
Effect on submit
Send \\\"thank you\\\" email
No email fields added. Please add a field and set the data type to Email under Advanced field options > Data type
There is one field marked as data type Email. This field will be used to determine the address to send the thank you email to.
There are multiple fields marked as data type Email. The first of these fields will be used to determine the address to send the thank you email to.

Allow multiple submissions from same user
Require submissions for each day logged in Max one submission per day


{{vm.Form.Plugin.FieldsName || 'Fields' }}

No {{vm.Form.Plugin.FieldsName || 'fields' | lowercase}} added

Add {{vm.Form.Plugin.FieldName || 'field' | lowercase}}
{{vm.Form.Plugin.FieldName || 'Field'}} Group Actions
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformfieldedit.html',\r\n \"       Edit Delete \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformfieldeditdialog.html',\r\n \"

{{vm.Form.Plugin.FieldName || 'Field'}} settings

Type The type of the field. Changing this will reset some field configurations, such as options
Group
Wizard step
Text
Placeholder
Width (desktop)
Mandatory
{{setting.Name}}
{{::value.Name}}
Data type
Field value listeners Listen to value changes in other fields and perform actions when a certain value has been set. An example of usage is showing this field when another field (like a checkbox) has had its value set to \\\"true\\\".
Field Value Action
Delete
Add listener

Options

 

No options added

Edit Delete
Text
Correct
Preselected Disabled
Description
Image
Add option
OK
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformshow.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformwizard.html',\r\n \"
0\\\" class=form-wizard-steps-x-of-y> {{vm.CurrentWizardStep +1}}/{{(vm.Form.WizardSteps | filter:{'Hidden':false}).length}}
= (vm.Form.WizardSteps | filter:{'Hidden':false}).length - 1\\\" ng-click=\\\"vm.GoToWizardStep(vm.CurrentWizardStep - 1)\\\" class=\\\"biz-btn btn-prev\\\"> Tillbaka = (vm.Form.WizardSteps | filter:{'Hidden':false}).length - 1\\\" ng-click=\\\"vm.GoToWizardStep(vm.CurrentWizardStep + 1)\\\" class=\\\"biz-btn btn-next\\\"> GÃ¥ till steg {{vm.CurrentWizardStep + 2}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformwizardstepedit.html',\r\n \"

Wizard steps

No wizard steps added

Add wizard step
Step Actions
      Edit Delete
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/checkbox.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/checkboxlist.html',\r\n \"
{{option.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/dropdownlist.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/fileupload.html',\r\n \" NOT IMPLEMENTED YET!\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/input.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/phonecountrycode.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/radiobuttonlist.html',\r\n \"
{{option.Name}}
{{option.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/recaptcha.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/slider.html',\r\n \"
{{to.label}} {{model[options.key]}} {{to.unit}} eller fler eller färre
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/textarea.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/video.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizGauge/bizGauge.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizGenericTag/bizgenerictag.html',\r\n \"
Tags
Add Tag
Create and add Tag

No tags added

Added tags
{{tag.Name}}
{{vm.GetTagName(tagId)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizLike/template.html',\r\n \"
{{vm.Item.Likes}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/audio.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/button.html',\r\n \"
Change
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/document.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/documentlink.html',\r\n \"{{vm.File.Name}}\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/download.html',\r\n \"
0\\\">
-1\\\" ng-click=vm.ToggleMediaBankUploadLocation(uploadLocation)>{{ uploadLocation.Name }}
0\\\" class=noFiles> There are no files of the current file type or with the selected search conditions.
{{ file.Name }}
Cancel OK
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/link.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/Mediabank.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/upload.html',\r\n \"
Drag a file or click here to upload
Allowed types: {{vm.AllowedFileTypes}}
File: {{vm.File[0].name}}
Size: {{vm.File[0].size / 1024 | number:0}} kB
File name
File Description

Add
0\\\">
Added tags
{{tag.Name | htmldecode}}
Upload as private file Upload as invisible file Skip resize
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/video.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/VideoPlayerContainer.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bindCategory.html',\r\n \"
Edit
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bindCategoryEdit.html',\r\n \"

Select items to show on page

{{tag.Name}}
Save Close
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizAlertBanner.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizBlogSearch.html',\r\n \"
No fields found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizChangeMyDepartment.html',\r\n \"

Change department to see more content!

{{department.Name}}
Save\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizchart.html',\r\n \"
No data found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizChat.html',\r\n \"
{{::CurrentTab.GetPhrase(\\\"BIZCHAT_CHATROOMLIST_HEADER\\\");}}
  • {{ room.ExternalName }}
{{ GetTopic() }}
{{::CurrentTab.GetPhrase(\\\"BIZCHAT_USERSONLINE\\\");}}: {{usersOnline}}
{{$scope.chat}}
  • {{item.UserName}}
  • {{ smsg.Msg }}
0 || ChatClientInfo.Alias\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_CHAT_SENDMSG_BTN');}}
Set alias
{{::CurrentTab.GetPhrase('BIZCHAT_CHAT_LEAVE_CHAT_BTN');}}
0 && ShowUsersOnline\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_USERLIST_HEADER');}}
  • {{ user.Alias }} {{::CurrentTab.GetPhrase('BIZCHAT_USERTYPE_ADMIN');}} {{::CurrentTab.GetPhrase('BIZCHAT_USERTYPE_OP');}}
0 && (UserState.IsAdmin || UserState.IsOp)\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_BANUSERLIST_HEADER');}}
  • {{ ue.Alias }} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_BANNED');}} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_MUTED');}} {{::CurrentTab.GetPhrase('BIZCHAT_BANTYPE_GLOBAL');}} 0\\\">{{::CurrentTab.GetPhrase('BIZCHAT_BANTYPE_LOCAL');}} {{ ue.ChatRoomInternalName }} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_REASON');}}: {{ ue.Comment }}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCodeEditorDialog.html',\r\n \"

Source code

Cancel Save
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizContainerModulesList.html',\r\n \"
Activate Container modules
Save
-1\\\" ng-click=vm.ToggleModules(mod)>{{mod.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCopyUrl.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCurrency.html',\r\n \" 0\\\" class=\\\"biz-round-info coins\\\"> {{vm.currency}}c \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizDictionary.html',\r\n \"
0\\\">

No items found...

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizExperiencePoints.html',\r\n \" 0\\\" class=\\\"biz-round-info points\\\"> {{vm.points}}xp \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizItemNotFound.html',\r\n \"
Woops, item not found...
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizItemType.html',\r\n \"
0\\\" ng-bind=vm.OverrideName> Artikel Utbildning Video Engage object
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourney.html',\r\n \"

{{\\\"JOURNEY.DESCRIPTION_1\\\" | translate}}

{{\\\"JOURNEY.DESCRIPTION_2\\\" | translate}}

Carousel
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyGridSlick.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyNextOrPrev.html',\r\n \"
0\\\" id=bizjourneybuttons>
Prev
Next Next journey
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOne.html',\r\n \"
{{vm.journeyToShow.Name}}

{{item.Index}}
Bra jobbat!

Du har klarat av allt i den h�r resan.

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOneCarousel.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOneGrid.html',\r\n \"

({{(vm.Blogs | filter:{'Status': 3}).length}}/{{vm.Blogs.length}})

({{(vm.OnlineEducations | filter:{'Status': 3}).length}}/{{vm.OnlineEducations.length}})

({{(vm.Videos | filter:{'Status': 3}).length}}/{{vm.Videos.length}})

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizLikeActions.html',\r\n \"

Vad tyckte du?

1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && vm.item.LikeActions[0].LikeActionPerformedByUser)}\\\" class=\\\"like-action-icon fa {{action.Action.Icon}}\\\" ng-disabled=vm.HasUserLiked ng-click=\\\"vm.PerformLikeAction(vm.item, action)\\\">
0\\\" ng-click=\\\"vm.ShowCommentInput = !vm.ShowCommentInput;\\\" biz-phrase=LIKE.COMMENT_HEADER>Hjälp oss bli bättre - vad tycker du vi skulle haft med?
Send

Tack för din input!

1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && action.LikeActionPerformedByUser)}\\\" class=\\\"fa {{action.Action.Icon}}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizLikeView.html',\r\n \"
1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && action.LikeActionPerformedByUser)}\\\" class=\\\"fa {{action.Action.Icon}}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizMediaSwapper.html',\r\n \"
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizNewsletterSignup.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizPhoneCountryCode.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizQuotes.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizTagView.html',\r\n \"
0 && ($root.HideTagListForUser === undefined || $root.HideTagListForUser && $root.HideTagListForUser !== true)\\\"> Tags: #{{::tag.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizUnitLogo.html',\r\n \"{{vm.logoAlt}}\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/login.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/save-btn.html',\r\n \" {{vm.saveText || 'Save'}} {{vm.savingText || 'Saving...'}} {{vm.savedText || 'Saved'}} {{vm.errorText || 'Error'}} \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/tagcloud-clean.html',\r\n \"
1\\\">
Filter
{{::tag.Name}} ({{::tag.Occurrence}})
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/itemobjectlist.html',\r\n \"
This item cannot be accessed by anyone
+
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/itemtemplate.html',\r\n \"
Permissions Permissions that the related users (via {{vm.ParentRelation.Name}} relation) must satisfy
Public If public is active, other permissions have no effect.
OR
1\\\" class=\\\"form-control margin-top\\\" items=vm.bizItemPermissionCache[vm.accessModuleKey].Cultures selected-item=vm.SelectedCulture no-select-text=\\\"-- Cultures --\\\" disabled=vm.IsPublic disable-default-select=true>

You can use a specific ip address ex: 192.168.0.1

You can use ip range ex: 192.168.0.1 - 192.168.0.100

You can use CIDR range ex: 192.168.0.0/24

CIDR table:

CIDR

Mask

Addresses

/20

255.255.240.0

4K

/21

255.255.248.0

2K

/22

255.255.252.0

1K

/23

255.255.254.0

512

/24

255.255.255.0

256

Example: 10.0.1.0/24 will give permission to the addresses in the range: 10.0.1.1 - 10.0.1.255

Add Permission

No specific permissions added

Area Unit 1\\\">Culture Department Role Ip restriction Relations
{{::vm.bizItemPermissionCache[vm.accessModuleKey].Areas.GetItemByValue('Id', permission.AreaId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Units.GetItemByValue('Id', permission.UnitId).Name}} 1\\\">{{::vm.bizItemPermissionCache[vm.accessModuleKey].Cultures.GetItemByValue('Id', permission.CultureId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Departments.GetItemByValue('Id', permission.UserDepartmentId).SystemName}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Roles.GetItemByValue('Id', permission.RoleId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Relations.GetItemByValue('Id', permission.RelationId).Name}}
{{vm.BuildPermissionsString(permission)}}
related users needs: {{vm.BuildPermissionsString(subPerm)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/relationsubitems.html',\r\n \"
Close
Sub permissions does not work with immediate updates
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizReactWrapper/bizreactwrapper.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizSelect/bizselect.html',\r\n \"
{{selectedItem[Key]}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTerms.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsShow.html',\r\n \"


\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsStatus.html',\r\n \"
Accepted terms
Show terms
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsStatusShow.html',\r\n \"


Close
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizUnlockable/bizunlockable.html',\r\n \"
Add group Save

{{vm.GetTranslation(group, vm.TranslateTypes.Name).Value || 'Group ' + (vm.KeyGroups.length - $index)}}
Delete

Mediabank Upload

Name Type
{{::vm.GetUnlockableKeyName(unlockable)}} {{::vm.KeyTypes.GetItemByValue('Value', unlockable.KeyObjectType).Name}} Delete

AND

OR

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizUserSelection/template.html',\r\n \"
{{user.FirstName}} {{user.LastName}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizWelcomeGuide/SimpleWelcomeGuide.html',\r\n \"
1\\\" ng-class=\\\"{'is-first-page': $index === 0, 'is-last-page': $index === vm.pages.length - 1}\\\" ng-click=vm.TriggerPrev()>{{vm.Translations['BACKBTN']}} {{$index === vm.pages.length - 1 ? vm.Translations['COMPLETEBTN'] || 'OK' : vm.Translations['NEXTBTN']}} 1\\\">{{$index+1}}/{{vm.pages.length}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizWelcomeGuide/WelcomeGuideJourneySelector.html',\r\n \"
{{journey.Name}} {{journey.Description}}
\"\r\n );\r\n}]);\n})(window.angular);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["angular","completeRegister","$rootScope","$scope","$stateParams","completeRegisterService","$translate","$timeout","$filter","$sce","userService","vm","this","IsPostCustomFieldValid","customField","formFieldKey","CustomId","MyForm","$error","pattern","IsMandatory","ExtCustomFieldValues","Options","length","undefined","indexOf","CustomFieldsMobileBadInput","IsMobileValid","IsPostCustomField","field","toLowerCase","startsWith","InitFormSettings","settings","ExtCustomFields","i","_settings$ExtCustomFi","options","j","Id","Value","HasPostCustomFields","FormSettings","console","log","CompleteRegistrationGuid","guid","Unauthorized","MobilePattern","MobilePatternSE","GetUser","GetUserByActionGuid","then","response","result","BizPartCoreHelpers","getResponseValue","User","Settings","Initialized","status","UnauthorizedMessage","CompleteRegistration","password","gender","GetGender","passwordValid","AllowSetPassword","GetPassword","mobileValid","Mobile","MobileBadInput","postExtFieldsValid","$valid","Submitting","Submitted","extCustomFieldValues","customId","copy","hasOwnProperty","item","ShowValidation","Gender","VerificationCode","Success","SuccessMessage","trustAsHtml","Message","redirectUrl","ExtraInfo","RedirectUrl","setSessionStorage","RedirectTimeout","location","href","InternalError","GenderClick","Genders","checked","SystemName","number","skipSeMatch","test","LoadTranslations","translations","_translations$CORECO","_translations$CORECO2","msg","toString","mail","ErrorMessage","replace","IsPasswordSecure","Password","RepeatPassword","IsEmailValid","Email","EmailPattern","SendVerificationCode","SendVerificationCodeError","VerificationCodeSent","ShowEmailInvalid","PasswordRegex","IsMainCustomField","UnitLogo","GetUnitSettingsImage","$onInit","GetGenders","genders","filter","g","GetGuidInfo","Type","CreateUserForUnit","AllowEmailDomains","regexDomains","join","RegExp","$on","cancel","module","controller","$inject","window","extHome","$window","width","screen","css","height","top","left","boxShadow","borderRadius","e","data","showWelcomeGuide","parent","postMessage","show","dimBackground","showData","forgotpasswordController","forgotpasswordService","$mdDialog","bizValidationService","$mdToast","bizCoreService","IsIframed","mode","SendForgotPasswordWithEmail","SendPasswordRecoveryEmail","translation","ErrorObject","Object","ShowLogin","$broadcast","Portal","BackgroundImage","IsImagesInitialized","search","GetBackgroundImage","HasAcceptedCookies","getLocalStorage","changepasswordController","$state","Guid","PasswordWasUpdated","IsGuidValid","UpdatePassword","MyForm2","Init","IsResetPasswordGuidValid","loginController","loginService","bizLoaderService","IsInitialized","REMEMBER_ME_VAL_KEY","LoginError","RememberMe","OpenLoginActive","ShowLogo","MiniSettings","Login","ShowPortalName","ActivateAccountInit","ActivateAccountGuid","PhraseSuffix","phraseSuffix","ParentUnitUrlRewrite","parentUnitUrlRewrite","ExternalUnitKey","externalUnitKey","GetCustomImage","UserName","trim","RequestFullPageLoader","SetRememberMeData","deleteLocalStorage","Token","deleteStorage","setBizPartAuthToken","siteRootPath","HasAdminAccess","LoginAdminUrl","initialUrl","RequestFullPageLoaderFinish","setLocalStorage","SetHighlightLogin","InitEmailVerification","FormValid","ActivateAccountInitForm","AcctivateAccountInitSent","InitEmail","GetCurrentPortal","GetPortalsetting","portalSettings","getParameterByNameFromUrl","OpenIdOnly","ActivateAccount","_response$data$ExtraI","_response$data$ExtraI2","ActivateAccountSuccess","rememberMeVal","activatedEmailUserName","getSessionStorage","deleteSessionStorage","setTimeout","document","getElementById","focus","logoutController","Logout","myRelatedUsersController","$q","Clean","clean","AddRelatedUser","relationTypeId","RelatedUsers","push","Relations","RelationTypeId","ParentUserId","LoggedInUser","Focus","RemoveRelatedUser","user","index","splice","$setDirty","FilterByRelationType","relations","GetItemsByValue","GetItemByValue","Save","UpdateRelatedUsers","$setPristine","$setUntouched","HasSaved","simple","content","position","all","GetRelationTypes","GetRelatedUsers","RelationTypes","AutoExpandRelatedUserSystemNamesOnClean","autoExpandSystemNames","includes","mycustomsettingsController","GetProfile","CustomData","currentGroup","_customField$CustomSe4","_customField$CustomSe5","_customField$CustomSe6","group","CustomSettings","GroupName","NewGroup","selected","SelectedOption","$watch","newValue","oldValue","_vm$MyForm","$dirty","GetProfileRestrictedFields","RestrictedFields","CustomSettingsDisabledText","t","SaveCustomProfileData","IsFieldRestricted","find","rf","FieldType","Name","IsFieldMandatory","_customField$CustomSe","_customField$CustomSe2","GroupMandatoryAllOrNone","_customField$CustomSe3","mysecurityController","OldPassword","NewPassword","NewPasswordRepeat","ShowPasswords","UpdateMyPassword","ToggleShowPassword","setAttribute","mypageController","educationService","levelService","eventStatisticsService","engageService","certificationsService","PageMax","UserStats","AuthToken","getBizPartAuthToken","Mascot","mascot","EducationCount","BlogCount","VideoCount","ScormCount","QuizCount","TotalEducationCount","Notifications","NotificationsPage","ActivityLog","ActivityLogPage","GainMoreExperience","GainMoreExperiencePage","LastGainedExperience","LastGainedExperiencePage","CertificationCount","CompletedEducationCount","GetCompletedCount","Education","CertificationEducation","Certification","GetLoggedInUserNotifications","page","GetLoggedInUserExperiencePointHistory","GetAllEventStatisticsForUser","GetSuggestions","GoToSuggestion","ControlType","go","id","GetSuggestionIcon","ShowCertificates","certificateController","GetCertificates","templateUrl","controllerAs","bindToController","GetUserLogStats","eduCount","blogCount","videoCount","scormCount","quizCount","EngageObjectLogs","Passed","EngageObjectType","GetStatCount","types","count","y","Initialize","GetCertificationsForUser","UserCerts","IsPortalSettingTrue","GoToItem","ObjectOwnerUserId","ObjectType","ObjectId","mysettingsController","bizMediabankService","bizMediabankUploadService","bizCoreProvider","profileDialogController","Close","Ok","hide","GendersInitialized","defer","CountriesInitialized","UnitTypesInitialized","UserUnitsInitialized","GetCustomFieldValue","SetSelectedUserType","SetGender","promise","CountryId","userCountry","Countries","c","SelectedCountry","Units","ut","AllowedUnitTypesToEdit","UnitTypeId","unit","SelectedUnit","resolve","HadMiddleNameOnLastFetch","MiddleName","UpdateCustomFieldValue","CompanyNumber","AllowSms","PortalCustomerName","portalCustomerName","NotificationSettings","notificationSettings","SaveMyDetails","showToast","TempFile","SetFile","SuccessCallback","UserTypeId","SelectedUserType","currentUserUnitsForType","u","error","currentUserUnit","removeCurrentUnit","addNewUnit","SaveBasicProfile","IsEditMode","UpdateAllowSMSForLoggedInUser","Unregister","DeleteMe","AskToUnregister","getView","locals","Text","IsSureCheck","err","GetLoggedInUserSetting","key","callback","GetLoggedInUserSettingAsBoolean","file","File","FileType","FileTypes","Image","FileLocation","UploadLocations","UserProfile","FilePattern","IsPrivate","IsInvisible","IsPrivateControlHidden","IsInvisibleControlHidden","IsUser","UploadFile","name","Photo","FileUrl","SetTempFile","files","GetProfileImageUrl","FavoriteTagFilter","tag","ShowMoreFavorites","Favorite","UserTypes","userGender","DisplayName","CustomGenderFilterFn","GetAllTags","CurrentCultureId","Tags","GetUserTypes","GetAllActiveCountries","GetProfileAllowedUnitsToEdit","AllowedUnitsToEdit","UnitTypeName","_vm$MyForm2","_vm$MyForm3","_newValue$i$SelectedU","_oldValue$i$SelectedU","_newValue$i$SelectedU2","_oldValue$i$SelectedU2","mycolleaguesController","unitService","GetUsersInUnit","unitId","UnitUsers","MyUnit","ShowSpecificUnit","parentId","ParentId","GetUnitsByParent","myleaderboardsController","leaderboardService","InitializeUnit","MonthLeaderboardCallback","MainUnitLeaderboardMonth","YearLeaderboardCallback","MainUnitLeaderboardYear","MonthUnitLeaderboardCallback","UnitLeaderboardMonth","YearUnitLeaderboardCallback","UnitLeaderboardYear","MainUnitLeaderboard","UnitLeaderboard","Limit","GetMainUnitLeaderboard","GetMainUnitLeaderboardBetweenDates","moment","startOf","format","endOf","GetUnitLeaderboard","GetUnitLeaderboardBetweenDates","GetCountryLeaderboard","CountryLeaderboard","CountryLeaderboardMonth","CountryLeaderboardYear","startTime","endTime","notificationsController","bizUser","Back","history","back","registerController","registerService","Register","GenderIsMandatory","AcceptedConditions","IsActive","CultureId","strCulture","Cultures","CultureCode","CreateUser","dataLayer","event","attributes","success","Roles","showTermsController","termsService","GetTerms","GettingsTerms","GetSystemTerms","terms","InteractionsDisabled","Terms","themestestController","unsubscribe","welcomeController","GetWelcomeGuide","pages","showAdvanced","JSON","parse","useAdvanced","bizActivityReminderService","$http","baseUrl","GetActivityReminders","maxReminders","get","params","SetActivityReminderViewed","reminder","post","directive","restrict","bizPhraseLoaderService","reminders","ImageUrl","FirstImageUrl","Reminders","GetPhrasePlaceholders","PhrasePlaceholders","unitName","parentUnitName","ParentUnits","UserInfo","FirstName","LastName","UserIdListUsedIndex","UserIds","LoadPart","service","bizAdminBar","bizAdminBarController","scope","simulating","isAllowedToSimulate","bizAdminBarService","$transitions","GetCultures","populateId","url","moduleType","urlRewrite","deferred","GetIdByUrlRewrite","fUrl","reject","AdminPageMap","Map","accessTypeKey","dynamic","getFinalUrl","title","set","SetEditButton","onSuccess","$transition","CurrentCulture","currentCultureId","ChangeCulture","culture","substring","CancelSimulation","simulation","deleteCookie","SimulatedByUserToken","SimulatedByUserId","ShowSimulateUser","simulateUserDialogController","Users","SearchTerm","PageIndex","PageLength","IncludeInactive","RoleId","SearchUsers","pageIndex","GettingUsers","UserData","CurrentPageEntries","concat","SimulateUser","PreparingSimulation","Date","userSession","UserId","SearchMoreUsers","_newValue$Id","Admin","GetAllRoles","GetAdminUrl","AdminUrl","ShowAdminButton","current","showBtn","stateName","has","adminInfo","HasWriteOrHigherAccess","ShowEditButton","GotoAdminEdit","SimulatingDate","getSimulatedDate","searchTerm","pageLength","includeInactive","roleId","userId","date","objectType","headers","IgnoreLoader","bizCookieSettingsDirective","element","attr","templateurl","bizCookieSettingsController","ToggleCookie","IsLoggedIn","UpdateUserSetting","bizCountdownTimer","bizCore","bizCountdownService","link","attrs","HasModuleAccess","$destroy","remove","bizMyNotesController","$interval","Countdown","interval","StartTimer","ignoreUpdate","HasAccessToStartTimer","StartTime","utc","StartCountdown","Seconds","Minutes","TimerStarted","CancelTimer","CancelCountdown","ResetTime","hubListender","args","Content","Cancelled","GetCountdownForLoggedinUser","countdown","CreatedByUserFullName","elapsedSeconds","diff","elapsedMinutes","Math","floor","secondsLeft","$onDestroy","servicePath","bizCultureSelectorDirective","useGbflagForUs","bizCultureSelectorController","cultures","Flag","GetImageName","ShortCultureCode","GetShortCountryCode","IsVisible","cultureCode","ccParts","split","countryCode","ChangeLanguage","qs","parts","qsParts","bizEngageStackedObjectsDirective","engageObjects","categoryId","horizontal","gotoFunc","bigImage","bizEngageStackedObjectsController","ImageList","category","GenericCategories","catObj","Objects","Order","Selected","SetSelected","obj","SetSelectedImageFirst","newList","Goto","bizEngageProgressBarDirective","label","progress","showProfileImage","bizEngageProgressBarController","bizEngageProgressSettingsDirective","settingsHandler","bizEngageProgressSettingsController","GetSettings","SavedSettings","SaveSettings","OriginalSettings","assign","bizEngageProgressDirective","bizEngageProgressController","HideGeneralJourneyProgress","HideCustomJourneyProgress","getLoggedInUser","SetProgress","GetAllJourneysTotalProgress","General","bizEngageJourneyDirective","bizEngageJourneyController","GetEngageJourneys","EngageJourneys","GetEngageState","engageObject","UrlRewrite","showCustomJourney","template","bizEngageJourneyProgressBarController","GetJourneys","JourneysInitialized","Journeys","objectCount","finishedObjectCount","EngageObjects","Status","round","bizFavorite","objectId","favorite","bizFavoriteController","favoriteService","FavMarkedCssClass","FavUnmarkedCssClass","IsFavorite","ToggleFavorite","FavoriteChangeCallback","GetFavorites","AddFavorite","RemoveFavorite","bizFavoriteList","favorites","bizFavoriteListController","Remove","bizFavoriteEditList","bizFavoriteEditListController","bizGlobalSiteTitleDirective","bizGlobalSiteTitleController","baseService","GetGlobalSiteTitle","SiteTitle","bizHeaderDirective","bizHeaderController","$element","HighLightItem","showOverlay","addClass","removeClass","CloseAllMenus","ShowFavorites","ShowSearch","ShowCultures","$digest","onScroll","scrollTop","pageYOffset","documentElement","scrollDirection","lastScrollTop","offsetLimit","offsetElement","offsetTop","logoHeight","clientHeight","AddBgClass","RemoveBgClass","logo","GoToAdmin","Search","searchText","QueryString","ToggleCollapseHeader","toggleClass","ShowTipSomeone","OpenIdProviderId","Header","KeepBgClass","addEventListener","isSessionStorageTrue","ClickOutsideMenu","newVal","oldVal","bizLayoutComponent","bizLayoutComponentService","$compile","container","GetLayoutComponent","LayoutComponent","Container","compiled","html","servicepath","type","bizLeaderboardDirective","leaderboard","header","IsMe","bizDefaultLevelProgressDirective","bizDefaultLevelProgressController","CurrentLevel","NextLevel","UserExperienceSum","PercentageCompleted","ExpLeftToNextLevel","GetLoggedInUserDefaultLevelProgress","m_Item1","AllLevels","m_Item2","m_Item3","CurrentLevelIndex","GetIndexByValue","RequiredExp","CalculateExperience","sum","needed","bizMenuJourneyStatus","bizMenuJourneyStatusController","bizJourneyService","SetCurrentJourney","SetNextJourneyObject","IsCurrentJourney","CurrentJourney","GoToNextJourneyObject","stopPropagation","GoToEngageItem","NextJourneyObject","nextObject","CloseJourneyPanel","JourneyPanelOpen","bizMenuJourney","journey","fromCollection","bizMenuJourneyController","Round","p","bizMenuJourneyCollection","closeFunc","bizMenuJourneyCollectionController","GoToJourneyPage","bizMainMenuDirective","menuItems","bizMainMenuController","scrollService","bizMainMenuService","GetItemLink","Link","setting","objectTypeSettings","String","State","Identifier","ObjectIdentifier","Navigate","IsActiveItem","state","parentState","ControllerScope","IsAnchorLink","HandleMenuClick","parentItem","Children","Expanded","MenuItems","ExpandMainMenu","hostname","ScrollTo","$","open","CurrentLocation","hash","ShowJourneyWidget","mobile","ShowInstallPWA","pwaDeferredPrompt","HasInstalledPwa","InstallPWA","installPWA","hasSentCloseEvent","bizMyNotes","limit","limitDateFrom","limitDateTo","myNotesService","Notes","EditMyNotesDialog","body","fromDate","toDate","notes","Data","GetMyNotes","from","getDateNow","subtract","to","add","Color","bizMyNotesEditDialogController","AddNote","unshift","image","selectedColor","stringify","SaveMyNotes","ClearPromiseCache","SelectImage","ShowMediabankDialog","uploadSettings","Colors","MyText","bizMyText","settingKey","bizMyTextController","DefaultData","OpenEdit","EditDialogController","Cancel","bizNotificationProvider","notificationSettingType","FAB","STANDARD","DIALOG","$get","bizNotifications","notificationPosition","bizNotificationService","bizNotificationsController","bizEffects","coreEngageService","Fade","IsPulsating","CanFade","DoGroup","ShowNotifications","FadeTimer","GroupedNotifications","FirstItemOfType","MaxSubItemsLength","SubItemsGroupWithinSecounds","MaxNotificationsToShow","AddNotification","not","_vm$LatestNotificatio","notification","NotificationId","ExistInSubitems","LatestNotification","Show","Queue","effect","GroupNotifications","StartFadeTimer","SetFade","Pulsate","SetUrlRewrite","Effect","_vm$Queue","queueNotification","shift","Fading","CancelFadeTimer","GetNotifications","notificationsFromServer","SetProperties","GetPositionClass","Position","TOPLEFT","TOPRIGHT","BOTTOMLEFT","BOTTOMRIGHT","CENTER","val","GetHighestId","time","StopPulsating","ConfirmRead","DateSent","isAfter","IsEngageObject","ObjectUrlRewrite","RedirectToEngageObject","NavigateTo","goalId","Key","FeedbackLink","GetJourneySettings","feedbackPage","FeedbackPage","objectKey","IsHighlighted","SortedNotifications","NoHighlight","duration","asSeconds","InitSlick","SlickLoaded","SlickSettings","arrows","dots","infinite","slidesToShow","slidesToScroll","Items","gi","grouped","nextIndex","subItems","groupNext","nextNot","sameKey","withinTime","slice","UnHighlightAllNotifications","engageObjectList","GetEngageObjectsByObjectIdAndType","GetEngageObjectTypeId","FakeMessageForTesting","min","random","onStart","max","param","CustomNotificationHandlers","Enabled","Handler","clickOutsideToClose","multiple","skipHide","Notification","hideDelay","autoWrap","close","constant","provider","bizOpenLoginBtnsDirective","openIdOnly","GoToOpenIdLogin","GetActiveOpenIdProviders","Providers","bizProfileMenuDirective","getController","bizProfileMenuController","m","_$rootScope$CurrentSt","CurrentState","States","Phrase","Icon","AccessTypeRight","Read","PortalSettingForEnable","bizSearchDirective","ReferrerType","ReferrerId","Expand","ExplicitIndexList","Source","bizSearchController","bizSearchService","GoToResults","SearchText","query","MaxHits","CanSearch","MinSearchTermLength","SearchIndexList","Index","SearchIndexExternalName","TotalHits","HitsIncement","CustomFilters","SearchInIndexes","results","IndexList","ResultItems","ExplicitIndexNumbers","r","GetSearchResultCallbackFn","Results","GoToResult","LogSearch","itemUrl","GetItemUrl","ClearForm","GetCustomValue","customValue","CustomValues","map","s","parseInt","si","some","CustomIndexUrls","GetSearchResultItemUrlFn","StateParameters","ItemIds","ItemId","StateParams","Query","bizSimulateUser","bizSimulateUserController","bizSimulateUserService","isSimulatingShadowUser","GetShadowUserSimulationInfo","ShadowUserSimulationInfo","Preparing","SimulateShadowUser","ShadowUserConfigKey","bizSocialShareDirective","Socialshare","objectName","uiStateName","uiStateParams","object","disabledProviders","likeActions","likeActionObjectType","useMenu","bizSocialShareController","bizSocialShareService","MobileOnly","Share","Sharing","share","TrackingId","Provider","Url","AddSocialShare","substr","SetUrl","absolute","GetShareUrl","ShowShare","PerformLikeAction","action","LikeActionPerformedByUser","LikeActionModel","LikedUserId","CreatedByUsr","LikeKey","ActionId","Action","Comment","Count","OnCopySuccess","textContent","loadedObject","Where","controllerPath","likeActionPath","AddSocialShareClick","click","bizTipSomeone","fromMobileMenu","bizTipSomeoneController","OpenPanel","popupController","OnBtnClick","Clicked","Error","email","message","Sent","escapeToClose","bizUnsubscribeDirective","bizUnsubscribeController","bizUnsubscribeService","IsCategoryOptIn","CategoryType","GetCategoriesByCode","code","categories","cat","Checked","Categories","Logo","Code","GetEncodedQS","ConfirmCategories","Result","catIds","GetCategoryIdsToLink","SaveCategoriesByCode","isChecked","isOptIn","CategoryIds","extCustomFields","settingsPromise","engageJourneyPromise","apiPath","force","GetEngageJourneysByFavoriteTags","GetEngageJourneysForUser","deferrer","responses","Custom","HandleEngageObjectCancelled","objects","objectTypeName","GetEngageObjectTypeById","objectTypeId","deepload","newPassword","res","backgroundImages","images","RandomBetween","GetGlobalLeaderboard","method","GetExperienceValueFromLastCheck","CheckForLevelUp","SaveMyNote","note","portalService","GetPortalSetting","sessionService","Tick","sessionTimer","TimeToShowWarning","ShowingWarning","alert","instant","ok","Refresh","TimeOut","Stop","SessionTime","SessionTimeEnd","Timer","localStorage","setItem","Start","updateBackend","UpdateUserSession","ssoService","SSOCheckIfUserExists","ssoKey","ssoToken","SSOKey","SSOToken","RegisterSSOUser","userName","firstName","lastName","countryIsoCode","CountryIsoCode","includeAccepted","AddUserActivity","refererUrl","activityGroup","SaveMyProfile","GetUserGenericCustomFields","customFieldId","value","oldPassword","allowSms","GetLoggedInUser","GetLoggedInUserFromDB","relatedUsers","SubscribeToNewsletter","configCoreFunction","$stateProvider","bizUserProvider","$translatePartialLoaderProvider","rule","isPublic","extmode","onlyLoggedOut","config","effectsProvider","fireworks","effectSystemName","confetti","showFireworks","launchInterval","loopInterval","SCREEN_WIDTH","innerWidth","SCREEN_HEIGHT","innerHeight","particles","rockets","mousePos","canvas","createElement","context","getContext","launch","x","rocket","Rocket","explosionColor","vel","size","shrink","gravity","launchFrom","loop","fillStyle","fillRect","existingRockets","update","render","distance","sqrt","pow","pos","randomChance","explode","existingParticles","exists","Particle","resistance","flick","alpha","fade","color","apply","showingFireworks","timeout","append","setInterval","hideFireworks","clearInterval","prototype","save","globalCompositeOperation","gradient","createRadialGradient","addColorStop","beginPath","arc","PI","closePath","fill","restore","constructor","particle","angle","speed","cos","sin","Vars","OriginalTitle","Interval","On","intervalSpeed","Off","blogsListController","blogService","MetadataService","bizEngageService","BlogItems","GUISettings","GetBlogEntries","ignoreLoader","_journeySettings","bsMethod","GetNewestBlogEntries","journeySettings","UseJourneyOrderInLists","GetBlogEntriesByJourneyOrder","ItemsFetched","SortMostLiked","SortMostCommented","modules","ContainerId","getModules","VideoUrl","YoutubeId","Description","DisplayDates","FormatCreatedUpdatedDateDisplay","Created","Updated","HandleBlogData","GetGenericSetting","RelatedSettings","SelectedItem","RelatedId","items","BlogItemsCommented","sort","a","b","Comments","BlogItemsLiked","LikeValue","setMetaTags","description","GetMiniJourneySetting","MiniJourneySettings","blogsShowController","bizContainerSettings","EventSource","ContainerRefererType","ContainerRefererObjectId","EntryId","Preview","EntryTitle","GetOneBlogEntry","GetOneBlogEntryError","NoAccess","GetOneBlogEntrySuccess","blogItem","ContainerRefererCreatedByUserId","GettingMoreItems","HandleContainer","Types","Blog","imageModules","imageUrl","videoModules","videoUrl","Title","img","video","HandleMetaData","AllItemsFetched","GetOneBlogEntryByTitle","GetDate","momentDate","isValid","hours","minutes","blogsShowByTagController","tagIds","TagId","categoryIds","CustomBlogTagFilter","CustomBlogCategoryFilterFn","BlogItemsToShow","EntriesPerPage","TotalEntries","CustomHandleBlogPostsFn","PopulateContainer","HandleBlogPosts","entry","SetSelectedItem","TagSystemName","tagSystemName","BlogPostUrlRewrite","blogPostUrlRewrite","GetTag","GetTagSuccess","SelectedTag","Tag","GetTagBySystemName","blogController","entryId","entryTitle","ExpandItem","tagId","GetBlogEntriesLocal","ExpandedItem","TotalLikeActions","LikeActions","GetLikeActionsByValue","positive","AddLikeActionToBlogEntry","totalCount","totalValue","AverageLikeValue","GetRelatedBlogEntries","scrollTo","GetImageUrl","overrideSlides","customPaging","responsive","breakpoint","SlickOverrideResponsiveSlides","GetMoreItems","GetTimeTo","now","asHours","StartEducation","education","IsUnpublished","PublishDate","NavigateToBlogEntry","RedirectToUrlRewrite","GetEntryUrlRewriteById","RelatedEntries","GetRelatedBlogPosts","AddBlogComment","$root","NewComment","NotVisible","expire","ExpireDate","ready","bizModuleBlogListDirective","bizModuleBlogListController","favoritesService","ids","Filter","SelectedFilter","SelectedLimit","_JSON$parse","_JSON$parse2","TagIds","GetBlogPostsSuccess","FavoriteTagIds","GetMostCommentedPosts","GetMostLikedPosts","SelectedBlogs","GetBlogPosts","warn","BlogItemsForMiniObjectList","miniObject","InitObjectMiniList","HandleItems","version","major","minor","relatedToId","ignoreLoadingBar","preview","actionId","comment","GetRelatedEntries","pageSize","overrideCache","GetEntriesByTags","GetBlogEntriesByOrder","order","parameters","updateLatest","systemName","SpecificIds","PageSize","UseComments","pageController","cmsService","bizContainerService","bizContainerUrls","PageIdentifier","GetCMSPage","GettingCMSPage","Page","DisableMainMenuSticky","menuSettings","IsSticky","hasStickyNavigation","keywords","Keywords","uiOnParamsChanged","changedParams","transition","basePath","HasCMSPage","GetCMSPageById","campaignController","campaignService","GetCampaign","GettingCampaign","Campaign","referer","LogGenericObjectVisit","pageUrlRewrite","GoToCampaignStart","startPage","CampaignPages","CampaignPageTypeId","campaignPageController","GoToStart","GetCampaignPage","GettingCampaignPage","CampaignPage","ChangePage","pageId","reload","destroyOnModuleFinish","UseSettings","SetContainerModuleInstanceFinished","ModuleInstanceFinishedSuccess","indexController","certService","CertList","NoImageUrl","GetCertifications","totalXp","Item","ExperienceGive","dictionaryService","SelectedItemId","Dictionary","LettersWithWords","GetDictionary","GetAllEntries","dictionary","d","fl","Word","FirstLetter","cultureId","GetAllEntriesWCategories","arguments","categoriesCommaSep","html5Controller","replyService","ModuleFinishHandler","HTML5ModuleInstanceFinished","OnlineEducationReply","OnlineEducation","getModulesWithSettings","IsSubmitted","SubmitHTML5Education","OnlineEducationFinished","ShowOnlineEducation","ModulesRequiringFinish","OnlineEducationId","GetOnlineEducation","GetHTML5Education","GetHTML5EducationReply","CreatedByUserId","UserStatus","setModuleFinishHandler","modulesWithSettings","IsFinished","mod","ContainerModuleInstanceId","HTML5","GetHTML5EducationByUrlRewrite","reply","bizEducationsListDirective","bizModuleEducationListDirective","bizEducationsListController","DataLoaded","useJourneyOrder","SCORMUserStatus","NotStarted","Started","Failed","GetAllEducationTypes","GetHTML5EducationsForLoggedInUser","GetSCORMEducations","HTML5Educations","SCORMEducations","GetHTML5EducationsForLoggedInUserSuccess","list","edu","HandleCategoryForEduction","GetHTML5EducationsForLoggedInUserByTagId","UserHasPassed","OpenHTML5Education","Entries","IsCategory","TagFilter","bizEducationsListModuleController","GetEducationsSuccess","skipLoadContainer","journeyOrder","educationId","replyId","containerModuleInstanceId","bizDeactivateGoalDirective","goal","postInactivateAction","deleteMode","bizDeactivateGoalController","engagementGoalsService","GetGoals","MoveToGoalList","ParentGoalId","ChildGoals","Inactivate","goalIdToMoveTo","InactivateGoal","SelectGoal","FilterGoals","bizManagerGoalsDirective","bizManagerGoalsController","Statuses","ManagerGoals","GetManagerGoals","GoalSettings","ManagerGoalOverrideHeader","GoalOverrideHeader","GotoToGoal","EditClose","SaveManagerGoals","AddGoal","isManagerGoal","SelectedGoal","SelectedUserGoal","Goal","SelectedStatus","IsManagerGoal","ShowIcon","Goals","GetStatusName","UserSelected","UserGoals","SelectedUser","userGoals","managerGoals","usersInUnit","bizMyGoalsDirective","showActiveFilter","goalFilter","hideActivities","hideEdit","hideTasks","selectedGoal","editProgress","rootGoals","bizMyGoalsController","ActiveStatus","Active","ProgressObjectTypes","Activity","Task","GetGoalsCallback","goals","ReportProgress","ProgressSum","Activities","act","k","ToDoList","tsk","GetChildGoals","SelectedActiveStatus","CompleteToDo","todo","CompleteTask","GotoActivity","activity","IsExpired","task","IsCompleted","DateLocal","SaveProgress","rp","pList","LinkedObjectType","LinkedObjectId","CreateProgress","Saved","GoalId","bizMyRootGoalsDirective","bizMyRootGoalsDirectiveController","bizMyTasksDirective","includeCompleted","showFilter","ignoreTaskId","bizMyTasksController","OrderBy","OrderDesc","ChangeOrderBy","desc","SetCurrentFilterMode","CurrentFilterMode","FilterMode","All","Match","Upcoming","Expired","Completed","GetTasks","inclCompleted","tasks","AddTaskStatus","currentFilterMode","GotoTask","FilterTasks","GetTaskCount","filterMode","bizOneGoalActivityDirective","bizOneGoalActivityController","GetGoalTypes","period","GetSelectedPeriod","EditMode","IsCurrentPeriod","EndDate","SetActivityLoaded","GoalTypes","when","activityIsLoaded","GoalTypeId","SelectedType","pGetGoals","activityGoal","DateLocalDate","saveData","GoalValue","CreateUpdateActivity","newCreated","activityIsLoadedDefer","unbindActivityWatch","DeleteActivity","confirm","DateToLocal","bizOneGoalDirective","isRoot","bizOneGoalController","DefaultNewProgressSteps","NewProgressSteps","EditDate","UploadSettings","labels","colors","cutoutPercentage","display","text","SelectedPeriod","Years","year","StartDate","SelectedYear","goalTypesLoadedDefer","goalTypesLoaded","rootGoalsLoadedDefer","rootGoalsLoaded","FirstTimeCreate","ImageMediabankId","SelectedRootGoal","IsLocked","ChildGoalSuggestions","IsNegative","SelectedToDate","NewProgress","change","progressDate","NewProgressDate","isSame","Progress","CreateUpdateGoal","OriginalType","OriginalIsNegative","DateFromLocal","LockGoal","ev","ariaLabel","targetEvent","LockGoalCallback","GetRootGoals","GetGoal","ShowDeactivate","parentEl","querySelector","ShowDeactivateController","IncreaseNewProgress","SetProgressStep","Dirty","DecreaseNewProgress","FixSortingToDoList","toDoList","GoToActivity","GoToTask","RootGoals","months","EditMonths","SelectedNewMonth","GenerateEditMonths","CreateChildGoalSuggestion","suggestions","monthsPerSplit","goalValueReminder","periodStart","periodEnd","textSuffix","goalValue","endList","month","EndList","RemoveChildGoalSuggestion","SetEditMode","PreEditGoal","PreEditImage","CancelEdit","lblFunction","GoalType","Suffix","percent","ProgressSumInPercent","bizOneGoalTaskDirective","bizOneGoalTaskController","DateSettings","taskIsLoadedDefer","taskIsLoaded","touchUi","buttons","dateWheels","ActivityId","GetActivities","GetActivitiesByGoalDate","activities","AllActivities","goalFilteredActivities","SelectedActivity","Todo","CreateUpdateTask","SetTaskLoaded","SetTaskDates","unbindTaskWatch","DeleteTask","UncompleteTask","bizGoalTaskStatusDirective","bizGoalTaskStatusController","activityController","activityId","GetOneActivity","calendarService","Tasks","events","UserProgressSum","ProgressValue","LoggedInUserId","GetProgressSum","progressValue","GoToNextPeriod","IncreaseSelectedPeriod","GoToPreviousPeriod","DecreaseSelectedPeriod","IsSelectedPeriodInCurrentYear","NegativeGoals","oneGoalController","newRoot","ReportPeriodTypes","DatePickerSettings","DayList","weekdays","GetMeetingInfo","PeriodModeList","GetPeriodModes","PeriodMode","OriginalPeriodMode","GetFrontEndModuleSettingValue","GetMeetings","MeetingInfo","OriginalMeetingInfo","SavePeriodMode","SetPeriodMode","SaveMeetingInfo","SetMeetingInfo","PeriodType","MeetingDay","MeetingList","SaveMeeting","CreateUpdateMeeting","AddMeetingDate","UnitId","meeting","ShowNewMeeting","DeleteMeeting","DeleteMeetingCallback","MeetingHasPassed","goalService","PeriodTypes","PeriodDayBreak","userData","ToolTipDateFormat","CommentCount","userid","PeriodCommentSettings","NewCommentData","PreventReplies","NextPeriodCommentSettings","HideDate","CurrentDate","PeriodLengthInDays","TasksInPeriod","TasksInPreviousPeriod","LoadTasks","PeriodStart","PeriodEnd","completedTasks","notCompletedTasks","CompletedTasksForUser","NotCompletedTasksForUser","NextPeriodStart","NextPeriodEnd","TasksInNextPeriod","GetTodoCount","GetTodoCountForUsersInSameUnit","PreviousPeriodStart","PreviousPeriodEnd","inPeriod","prevPeriod","TasksCompletedInPeriod","TasksNotCompletedInPeriod","NotCompleted","completedInPreviousPeriod","notCompletedInPreviousPeriod","TasksCompletedInPreviousPeriod","TasksNotCompletedInPreviousPeriod","TasksCompletedChange","TaksNotCompletedChange","TasksCompletedChangePercent","TasksNotCompletedChangePercent","GetGoalAndActivityComments","GoalAndActivityComments","allGoals","GetGoalsForUsersInSameUnit","UsersInSameUnit","meetingInfo","isoWeekday","CurrentMeeting","PreviousMeeting","NextMeeting","oneTaskController","GetOneTask","taskId","ExpandStatusStorageKey","ExpandedUserProgress","GetCurrentProgress","prg","UsersProgress","GetGoalsForUsers","ToggleUserProgressExpanded","progressItem","StoreUserProgressExpandStatus","RetrieveUserProgressExpandStatus","EventId","listController","EventFilter","eventService","GetOneEvent","eventId","UpdateParticipationStatus","newStatus","getServicePath","questionFreetextController","questionController","SetSelectedValues","model","GetValues","GetOptionTranslation","option","NameTranslations","questionScaleController","fields","questionYesNoController","FormFieldId","FieldKey","evt","createEvent","initCustomEvent","dispatchEvent","forumsController","forumService","Forums","GetForums","GoToForum","forum","forumController","ForumId","Forum","Threads","GetForum","GoToThread","thread","forumThreadController","deletePostController","ThreadId","Thread","Post","ForumThreadId","GetThread","SubmitPost","ThreadRead","ThreadEntrys","IsEditing","EditPost","DeletePost","DeletePostSuccess","threadId","journeyController","IsJourneyLocked","masterrunController","MasterRunUrl","isMobile","any","mediaController","mediaService","onPlayerStateChange","OnPlay","VideoEnded","OnEnded","OnInit","source","EventInit","MediaFile","VideoType","VideoTypes","Youtube","YoutubePlayer","GetYoutubeId","match","MediaFiles","MediaFileTypes","SelectedTypes","playClicked","VideoPlaying","Extended","LikedExtended","SeenExtended","showLatest","showMostLiked","showMostViewed","showMostCommented","showRelated","fileId","fileUrlRewrite","EventStart","EventEnd","GetMediaFiles","GetMediaFileTypes","GetFileImage","Thumbnail","ToggleMediaTypes","typeId","lastIndexOf","AddLikeActionToMediaFile","GetShowingSettings","GetGenericSettings","overrideToShow","GetOneMediaFile","GetObject","MediabankFile","GetRelatedMediaFiles","Native","Vimeo","RelatedMediaFiles","FilterLiked","GetYoutubeEmbedUrl","FilterAlreadyVisibleFiles","PauseVideo","pause","PlayVideo","currentTime","play","PlayedVideo","PlayYoutube","player","playVideo","videoId","matchMedia","matches","YT","Player","playerVars","rel","GetFileTypeTranslations","NameOverrideTranslations","NavigateToMediaFile","mediatagsController","FilterByTag","SelectedFile","SetSelectedFile","defaultFileTypes","fileTypes","setFirstSelected","idMatchIndex","urlRewriteMatchIndex","isNumeric","NavigateToMediaFileForTag","GetMediaFileUrl","bizModuleVideoListDirective","bizModuleVideoListController","Videos","GetVideosSuccess","getRelatedFiles","includeViews","GetRelatedFiles","IncludeViews","JourneyOrder","keys","missionsController","missionsService","missionsViewController","Mission","MissionId","GetMission","missionId","mission","Rules","GetRuleUrl","CompleteId","missionsUsersController","GetUsers","bizMissionDirective","transclude","bizMissionController","GetNextRule","NextRule","PercentageComplete","CalculateTimeStats","Now","DaysLeft","HoursLeft","MinutesLeft","CalculateCompletedPercent","CompletedPercentage","totalPercentage","amountOfRules","bizMissionRuleDirective","TemplateUrl","KnobData","fgColor","SecondaryColor","bgColor","inputColor","angleOffset","angleArc","readOnly","displayInput","Class","missionListDirective","missionListController","Missions","GetMissions","GetMissionsForUser","endDate","CalculateTimeStatsForAllMissions","ResultCount","SelectedIndex","OrderList","ShowAllIndex","SearchQuery","decodeURIComponent","maxHits","SortBy","IndexesToShow","IndexToShowList","SearchedQuery","StateUrl","GetStateUrl","HandleResults","GetResultHref","OnKeyPress","$event","keyCode","SelectIndex","GetItemPreview","ItemPreview","decodeURI","ShowCategory","ChangeSorting","HasValidDate","isSameOrBefore","speedquizListController","speedquizService","PluginInstanceId","pluginInstanceId","SpeedquizName","Speedquizes","PlaySpeedquiz","speedquiz","GoToHighscore","GetSpeedquizInstancesForLoggedInUser","HasGuiOverrides","speedquizPlayController","SpeedquizId","SpeedquizUrlRewrite","FromOneQuiz","fromOneQuiz","hasCustomerGuiOverrides","ShowGame","IsLoading","GetIframeUrl","portalAlias","postMessageReceived","origin","GetSpeedquizIdByUrlRewrite","removeEventListener","speedquizHighscoreController","speedquizName","Highscore","GetHighscore","ScoreItems","GoBack","GetSpeedquizInstance","quizId","assemblyName","className","Answer","answer","Submit","score","v","portalProvider","EngageObjectRedirectController","EngageObjectId","IsPortalPublic","userProvider","Write","WriteExtended","SetLoggedInUser","accessTypeModuleKey","hasAccess","IsAdministrator","AccessTypeAccesses","AccessTypeModule","AccessTypeKey","accessTypeAccess","ignorePortalPublic","AllUnits","adminRoleSystemNames","role","setLoggedInUser","Initials","locale","configFunction","$urlRouterProvider","$httpProvider","$translateProvider","$locationProvider","$ocLazyLoadProvider","otherwise","html5Mode","GetLazyLoadModules","interceptors","useApplyAsync","addPart","useLoader","urlTemplate","bizPartVersion","preferredLanguage","fallbackLanguage","forceAsyncReload","useLoaderCache","useSanitizeValueStrategy","SetPublicPortal","runFunction","levelProvider","SignalRFactory","$location","$translatePartialLoader","genericPosition","$locale","bizPushNotificationService","unitcookie","initializationDefer","GetScrollWidth","scrollWidth","CultureDefer","CultureInitialized","refresh","setTranslateProvider","isTestMode","defaults","common","portalId","poweredby","QueryParams","genericpositions","maxWidth","GetFullscreenCalc","getFullscreenWidth","Theme","portalTheme","UnitSettings","getCookie","IsInIframe","HasWebpSupport","PasswordMinLen","ImageDarkMode","GetPreloadedPortalSetting","HasAcceptedCookieOfType","CustomCheckCookieConsentFn","PreventHideOnScroll","Startpage","DisableLoadData","AlreadyVerifiedRedirectUrl","Profile","ShowMenu","ShowProfileImage","ShowUserType","ShowMobile","ShowMiddleName","ShowGender","ShowCountry","ShowComment","ShowHiddenInPublicLists","DisableFirstName","DisableLastName","DisableMiddleName","DisableEmail","ShowUnregister","ShowWelcomeLink","CustomHeaderPhrase","ShowCustomSettings","DisableCustomSettings","ShowMyRelatedUsers","AdditionalProfileSubMenuItems","HideHiddenInPublicLists","HideCurrentRating","ForRolesOnly","HideUserName","CustomLogoutFn","GetMiniSetting","check_webp_feature","feature","hasWebpSupport","PreventScrollTopOnce","CurrentUserId","CurrentUserCurrency","DefaultVirtualCurrencyValue","ShowXP","ShowCurrency","NUMBER_FORMATS","GROUP_SEP","CustomEvent","sessionTimeoutInSeconds","GetMenuItemsForLoggedInUser","SendHubMessageToServer","createFallbackFavicon","PrimaryColor","PrimaryTextColor","navigator","connection","updateConnectionStatus","journeysDefer","updatedObjectType","updatedObjectId","updatedToStatus","anyUpdated","updateJourneyProgress","finishedCount","eo","TotalProgress","GetNextJourneyItem","firstIfAllComplete","firstObject","currentJourneyIsDone","currentJourney","IsJourneyStarted","gotoNextObject","gotoFirstIfDone","objectDoneCount","PortalVersion","PortalDefaultCulture","UseApiController","UseEngageCore","GoogleAnalyticCustomTrackers","ga","SendMessageQueue","IsHubconnected","MsgQueue","send","PreviousState","$from","$to","CurrentStateClass","path","GATHasSetUserId","route","pathname","LastPageLoadTime","EvaluateAccessRule","noAccessState","isFunction","abort","RedirectUrls","self","translateParts","AddCustomNotification","info","HubServerName","HubKey","AddInformationNotification","Subject","hubKey","hubServerName","serverMsg","detail","connect","loadingInterceptorFunction","request","htmlIndex","urlLC","htmlTemplateCachePaths","isUrlForTemplateCache","debugTimes","enabled","exec","totalTime","threshold","responseError","rejection","TOP","LEFT","RIGHT","BOTTOM","translate","getExperienceTypeLabel","PublicPortal","lastUpdate","GetView","fallback","override","viewOverrides","themeOverride","Views","ViewUrl","GetController","Controller","SetViewOverrides","overrides","setViewOverrides","getViewOverrides","run","factory","token","prConfigs","Deferred","ajax","dataType","configs","ViewOverrides","urlReMapper","UrlReMapper","MenuSettings","JourneySettings","prUser","lang","queryString","SessionTimeInMinutes","prFavorites","favoriteObjects","bootstrap","strictDi","baseController","pageTitleNotification","screenSize","bizHideComponentService","getLocalStorageKeyForWelcomeGuide","_user$Id","HandleFavorites","SetShown","isSimulating","SelectedJourney","showNewCert","certContent","ShowDialog","HideButtons","CustomContentTemplateUrl","Cert","levelUp","levelContent","textToShow","$$unwrapTrustedValue","Hide","ExtMode","SetLanguage","SocialShareTrackingId","GetUserSetting","HasLayoutComponent","hasWelcomeGuide","hasShownWelcomeGuide","ShowWelcomeGuide","previewWelcomeGuidePages","isPreview","use","StopAnimateExperience","AnimateExperience","GainExperienceInterval","amount","countedPoints","DefaultExperiencePoints","pointsEarned","DefaultExperiencePointsStart","ExpInterval","onshow","onclose","ShowingDialog","DialogQueue","dialogPromise","dialogController","previewPages","ShowWindow","redirect","welcomeGuideController","Redirect","FocusElement","elementId","shouldFocus","eId","desktop","is","on","TotalExperiencePoints","DefaultLevel","hasFocus","off","BizPart","Client","Core","SessionTimer","baseNoaccessController","baseHomeController","JourneyItemsPerRow","isStartPageDataLoaded","isStartPageDataLoadedPromise","ogDefaultImage","GoToNextJourneyItem","GetItemWidth","GetStartPageData","StartPageData","MainBanner","ButtonLink","ButtonType","Fullscreen","HeaderTranslations","TextTranslations","SelectedColor","BlogModule","SelectedButtonType","EducationModule","VideoModule","Journey","View","ShowTags","Event","ItemsPerRow","miniSettings","ItemCount","isStarted","JourneyButtonTextTranslations","ButtonTextSecondaryTranslations","ButtonTextTranslations","journeys","maxItems","TotalJourneyCount","bizPhraseLogService","Phrases","IsEnabled","Promise","LogPhrase","bizHideComponentDirective","elem","Hiding","components","bizHideComponent","hiddenComponents","initializing","require","otherModelValue","ngModel","$validators","compareTo","modelValue","$validate","$observe","bind","timeSince","justNow","fromNowOrNow","xptypeFilter","cache","xptypeFilterFunction","$stateful","isutc","getTimezoneOffset","utcOffset","AddTranslatePartsToState","moduleSettings","UpdateFrontEndModuleSettingValue","GetSiteRootPath","len","charSet","randomString","randomPoz","elemId","messaging","firebase","initializeApp","firebaseConfig","onMessage","payload","show_on_site","click_action","ShowOnSite","serviceWorker","register","registration","useServiceWorker","requestPermission","permission","getToken","currentToken","notificationId","valid","AddPushNotificationId","usePublicVapidKey","tagData","getElementsByName","appendPortalNameLast","htmlDecode","portalName","$templateCache","put","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__"],"sourceRoot":""}