{"version":3,"file":"4893.b36aea8a1034165a6b1a.js","mappings":"4HAUWA,EAAIC,E,kGAAJD,EAklDPE,OAAOF,GAAKE,OAAOF,IAAM,CAAC,GAllDfC,EAklDmBE,GAhlD9BC,QAAO,EAAMJ,EAAI,CACjBK,MAAO,CACLC,cAAe,CACbC,KAAM,KACNC,cAAe,KACfC,WAAY,KACZC,aAAc,KACdC,IAAK,yBACLC,MAAO,iBACPC,eAAgB,oBAChBC,gBAAiB,0BACjBC,YAAa,KACbC,gBAAiB,KACjBC,uBAAwB,KACxBC,yBAA0B,KAC1BC,aAAc,CACZC,QAAS,EACTC,KAAM,EACNC,QAAS,EACTC,eAAgB,GAElBC,qBAAsB,CACpBC,YAAa,IACbC,mBAAoB,KAEtBC,UAAW,CAAC3B,EAAG4B,QAAQC,YAAYC,WAAY9B,EAAG4B,QAAQC,YAAYE,SACtEC,aAAc,CAAChC,EAAG4B,QAAQC,YAAYI,gBACtCC,6BAA8B,CAC5BH,QAAS,GACTD,WAAY,KAEdK,uBAAwB,CACtBC,YAAa,EACbC,wBAAyB,EACzBC,sBAAuB,EACvBC,yBAA0B,GAM5BC,KAAM,SAAUjC,GACdkC,KAAKlC,KAAOA,EACZkC,KAAK1B,YAAcR,EAAKE,WAAWiC,YACnCD,KAAKhC,WAAaF,EAAKE,WACvBgC,KAAKE,eAAepC,EACtB,EAOAoC,eAAgB,SAAUpC,GACxB,IAAIqC,EAAOH,KAGXzC,EAAG6C,iBAAiBC,OAEfvC,EAAKwC,YACRxC,EAAKwC,UAAY9C,EAAE,wBAIrB2C,EAAKI,yBAAyB,CAC5BjC,YAAa6B,EAAK7B,YAClBkC,SAAU,SAAUC,GAClBN,EAAKpC,cAAgB0C,EACrBlD,EAAGmD,WAAWC,wBACZR,EAAK9B,gBACLd,EAAG4B,QAAQyB,aAAaC,SACxB,CACEC,KAAML,IAER,SAAUM,GACRjD,EAAKwC,UAAUU,QAAQC,OAAO,8BAAgCF,EAAe,UAC7EZ,EAAKe,kBACP,GAEJ,GAEJ,EAIAA,iBAAkB,WAChB,IAAIf,EAAOH,KACPmB,EAAa3D,EAAE,8BACjB4D,EAAgB5D,EAAE,kBAGpB2D,EACGE,KAAK,kBACLA,KAAK,KACLC,MAAK,SAAUC,GACd,IAAIC,EAAWhE,EAAEwC,MAAMyB,KAAK,cACxBC,EAAeP,EAAWE,KAAK,eAAiBG,GAChDG,EAAcR,EAAWE,KAAK,gBAAkBG,GAChDI,EAAUzB,EAAKpC,cAAcsD,MAAK,SAAUQ,GAC9C,OAAOA,EAAEC,QAAUD,EAAEE,aAAeP,CACtC,IAGY,IAARD,IACF/D,EAAEwC,MAAMgC,SAASC,SAAS,UAC1Bd,EAAWE,KAAK,YAAcG,GAAUS,SAAS,WAGnD9B,EAAK+B,gBAAgBN,EAASF,GAC9BvB,EAAKgC,iBAAiBP,EAASD,GAAa,WAC1C,GAAIxB,EAAKlC,aAAc,CACXT,EAAE,uBAAZ,IACI4E,EAAYjC,EAAKlC,aAAaoE,UAGlC7E,EAAE8D,KAAKc,GAAW,SAAUb,EAAKe,GAC/B,IAAIC,EAAWD,EAAGb,KAAK,GACnBe,EAAaD,EAAS,GAAK,IAAM,QAAU,QAC3CE,EAAItC,EAAKlC,aAAayE,YAAY,CAAEb,EAAG,EAAGc,EAAGpB,EAAKqB,MAAO,EAAGC,MAAO,IACvErF,EACE,0CACED,EAAGuF,QAAQC,cAAcR,EAAS,GAAIhF,EAAG4B,QAAQ6D,iBAAiBC,eAAgB,GAClF,UAEDC,IAAI,CACHC,SAAU,WACVC,KAAMX,EAAEW,KAAO,GACfC,IAAKZ,EAAEY,IAAM,EACbC,QAAS,OACTC,MAAOf,IAERgB,SAASrD,EAAKlC,aAAawF,kBAC3BC,OAAO,OACZ,GACF,CACF,IAGAvC,EAAWE,KAAK,wBAA0BG,GAAUS,SAAS,SAC/D,IAEFd,EAAWwC,GAAG,QAAS,wBAAwB,SAAUC,GACvDA,EAAEC,iBACF,IAAIC,EAAQtG,EAAEwC,MACV+D,EAAaD,EAAMrC,KAAK,cAExBqC,EAAME,KAAK,UAAY,YAAcD,IACvC5C,EAAWE,KAAK,aAAa4C,YAAY,UAC/B9C,EAAWE,KAAK,YAAc0C,GACpC9B,SAAS,UACb6B,EAAMI,IAAI,QAEd,IACA/C,EAAWwC,GAAG,QAAS,yBAAyB,SAAUC,GACxDA,EAAEC,iBACF,IAAIC,EAAQtG,EAAEwC,MACV+D,EAAaD,EAAMrC,KAAK,cACxBC,EAAeP,EAAWE,KAAK,uBAAyB0C,GAC1DpC,EAAcR,EAAWE,KAAK,wBAA0B0C,GAE1D5C,EACGE,KAAK,2CAA6C0C,EAAa,MAC/DE,YAAY,UACXH,EAAMK,SAAS,sBACjBzC,EAAauC,YAAY,UACzBtC,EAAYM,SAAS,WACZ6B,EAAMK,SAAS,wBACxBzC,EAAaO,SAAS,UACtBN,EAAYsC,YAAY,WAG1BH,EAAM7B,SAAS,SACjB,IAEAb,EAAcuC,GAAG,SAAS,SAAUC,GAClCA,EAAEC,iBACF1D,EAAKiE,aAAa,CAChB5F,uBAAwB2B,EAAKnC,WAAWQ,uBACxC6F,iBAAkBlE,EAAKnC,WAAWqG,iBAClCC,gBAAiBnE,EAAKnC,WAAWsG,gBACjCrE,YAAaE,EAAKnC,WAAWiC,YAC7B1B,gBAAiB,WACfyB,KAAKD,KAAKI,EAAKnC,WACjB,GAEJ,GACF,EAMAkE,gBAAiB,SAAUN,EAAS2C,GAClC,IACIC,EAAU,CACZC,OAAQ,CACNC,IAAK,CACHC,MAAM,EAENC,OAAQ,EAERC,MAAO,CACLF,MAAM,EACNG,UAAW,SAAUD,EAAOJ,GAC1B,IAAIM,EAAQvH,EACV,gCACEqH,EACA,QACAtH,EAAGuF,QAAQC,cACT0B,EAAOhD,KAAK,GAAG,GACflE,EAAG4B,QAAQ6D,iBAAiBC,eAC5B,GAEF,KACA1F,EAAGuF,QAAQC,cACTnB,EAAQoD,kBACRzH,EAAG4B,QAAQ6D,iBAAiBC,eAC5B,GAEF,UAUJ,OARA8B,EAAM7B,IAAI,CACRK,MAAO,QACP,YAAa,OACb,aAAc,SACd0B,QAAS,MACT,gBAAiB,MACjBC,WAAY,SAEPH,EAAM,GAAGI,SAClB,EACAC,UAAW,MAIjBC,OAAQ,CACNV,MAAM,GAERW,KAAM,CACJC,WAAW,IAIXC,EAAY,CACd,CACEX,MAAO,0BACPpD,KAAMG,EAAQ6D,WAAWC,QAAQ,GACjCnC,MAAOhG,EAAGoI,UAAUC,aAEtB,CACEf,MAAO,6BACPpD,KAAMG,EAAQiE,gBAAgBH,QAAQ,GACtCnC,MAAOhG,EAAGoI,UAAUG,YAGpBvB,EAAawB,SAAW,KAC1BxB,EAAawB,OAAO,KAGtBvI,EAAEwI,KAAKzB,EAAciB,EAAWhB,EAClC,EAMArC,iBAAkB,SAAUP,EAAS2C,EAAc/D,GACjD,IACIiB,EAAO,CACT,CACEoD,MAAO,cACPpD,KAAM,CAAC,CAACG,EAAQqE,kBAAmB,IACnC1C,MAAOhG,EAAGoI,UAAUO,cAEtB,CAEErB,MAAO,cACPpD,KAAM,CAAC,CAACG,EAAQ6D,WAAY,IAC5BlC,MAAOhG,EAAGoI,UAAUC,cAIpBrB,EAAawB,SAAW,KAC1BxB,EAAawB,OAAO,KAhBX/F,KAmBN/B,aAAeT,EAAEwI,KAAKzB,EAAc9C,EAAM,CAC7CgD,OAAQ,CACN0B,KAAM,CACJxB,MAAM,EACNyB,SAAU,GACVC,MAAO,SAEPC,KAAM,IACNC,YAAY,IAGhB3D,MAAO,CACL4D,MAAO,CACL,CAAC,EAAG,8CACJ,CAAC,EAAG,+CAENC,mBAAoB,GAEtB5D,MAAO,CACL6D,IAAKC,KAAKC,MAAM,IAAMhF,EAAQoD,mBAAqB,IACnD6B,UAAW,kBAEbxB,OAAQ,CACNV,MAAM,GAERmC,SAAS,EACTC,YAAa,CACXC,SAAU,UACVC,QAAS,SAAUpC,EAAOqC,EAAMC,EAAMC,GACpC,MACE,wHACAvC,EACA,WACAtH,EAAGuF,QAAQC,cAAcmE,EAAM3J,EAAG4B,QAAQ6D,iBAAiBC,eAAgB,GAC3E,IACA1F,EAAGuF,QAAQC,cACTnB,EAAQoD,kBACRzH,EAAG4B,QAAQ6D,iBAAiBC,eAC5B,GAEF,QAEJ,EACAoE,cAAc,GAEhB/B,KAAM,CACJC,WAAW,KAIS,mBAAb/E,GACTA,GAEJ,EAKAD,yBAA0B,SAAUzC,GAClCP,EAAG+J,YAAYC,QACb,4CAA8CzJ,EAAKQ,YACnD,MACA,SAAUmC,GACqB,mBAAlB3C,EAAK0C,UACd1C,EAAK0C,SAASC,EAElB,GAEJ,EAKA2D,aAAc,SAAUtG,GACtB,GAAIA,EAAM,CACR,IAAIqC,EAAOH,KACXG,EAAK7B,YAAcR,EAAKmC,YACxBE,EAAK5B,gBAAkBT,EAAKS,gBAC5B4B,EAAKqH,eAAiB1J,EAAK0J,eAC3BrH,EAAK3B,uBAAyB,KAC9B2B,EAAK1B,yBAA2BgJ,KAAKC,MAAMD,KAAKE,UAAU7J,EAAKuG,mBAG/DvG,EAAK0C,SAAW,SAAUO,GACxBxD,EAAGqK,MAAMC,KAAK,CACZpG,KAAM,CAAEA,KAAM3D,GACdK,MAAO,0BACP2J,UAAWtK,EAAEuD,GACbgH,KAAM,YACNC,QAAS,CACP,CACEnD,MAAO,qCACPmC,SAAU,yBACViB,OAAQ,SAAUC,GACmB,mBAAxB/H,EAAKqH,iBACdrH,EAAKqH,eAAerH,EAAKrC,KAAKU,wBAC9B0J,EAAUC,QAEd,GAEF,CACEtD,MAAO,2CACPmC,SAAU,kCAAoC7G,EAAKiI,4BAA4BtK,GAC/EmK,OAAQ,SAAUC,GAEXA,EAAUG,aAAahH,KAAK,WAAW8C,SAAS,cACnD5G,EAAG6C,iBAAiBkI,QAEpBnI,EAAKoI,qBACHpI,EAAKrC,KAAK0K,uBAEV,SAAU/H,GACJA,EAAQgI,WAC0B,mBAAzBtI,EAAK5B,kBACdhB,EAAG6C,iBAAiBC,OACpB6H,EAAUC,QACVhI,EAAK5B,gBAAgB4B,EAAKrC,KAAKU,yBAGjCjB,EAAGmL,MAAMC,MAAM,CAAC,CAAEC,KAAMnI,EAAQoI,UAAYrL,EAAE,YAElD,IAEA,SAAUsL,GACRvL,EAAGmL,MAAMC,MAAMG,EAAMtL,EAAE,aACvBD,EAAG6C,iBAAiBC,MACtB,IAGN,IAGJ0I,gBAAiB,SAAUC,GACzBzL,EAAG6C,iBAAiBC,OACpBF,EAAK8I,yBAAyBD,GAE9B7I,EAAK+I,mCAAmCF,GACxC7I,EAAKgJ,oBAAoBH,EAC3B,GAEJ,EAEA7I,EAAKrC,KAAOA,EACZqC,EAAKiJ,sBAAsBjJ,EAAKrC,KAClC,CACF,EAKAuL,mBAAoB,SAAUC,GAC5B,IAAInJ,EAAOH,KACPuJ,EAAM,2BACV,OAAQD,GACN,KAAKnJ,EAAKT,uBAAuB+I,WAC/B,MAAO,aACT,KAAKtI,EAAKT,uBAAuBE,wBACjC,KAAKO,EAAKT,uBAAuBG,sBACjC,KAAKM,EAAKT,uBAAuBI,yBAC/B,OACEyJ,EACA,uGAEJ,QACE,OAAOA,EAEb,EAUAhB,qBAAsB,SAAU9G,EAAMlD,EAAiBiL,GACrD,GAAI/H,EAAM,CACR,IAAItB,EAAOH,KACPyJ,EAAWtJ,EAAKuJ,yBAAyBjI,GAExCgI,EAASX,KAkBiB,mBAAlBU,GACTA,EAAcC,EAASX,MAlBzB3I,EAAKwJ,qBAAqB,CACxBlI,KAAM,CACJ+G,sBAAuBiB,GAEzBjJ,SAAU,SAAUC,GACdA,EAAQgI,WACqB,mBAApBlK,GACTA,EAAgBkC,GAGW,mBAAlB+I,GACTA,EAAc,CAAC,CAAEZ,KAAMzI,EAAKkJ,mBAAmB5I,EAAQf,0BAG7D,GAON,CACF,EAKAiK,qBAAsB,SAAU7L,GAC1BA,GACFP,EAAG+J,YAAYC,QAAQ,qCAAsCzJ,EAAK2D,MAAM,SAAUhB,GACnD,mBAAlB3C,EAAK0C,UACd1C,EAAK0C,SAASC,EAElB,GAEJ,EAKAiJ,yBAA0B,SAAU5L,GAClC,IAAIqC,EAAOH,KACT8I,EAAO,GAyDT,OAvDKhL,GACHgL,EAAKc,KAAK,CAAEhB,KAAM,qCAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAOiI,WAAWjI,EAAEkI,uBAAgE,IAAvCD,WAAWjI,EAAEkI,qBAC5D,KAEAjB,EAAKc,KAAK,CAAEhB,KAAM,kCAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAOiI,WAAWjI,EAAEmD,oBAA0D,IAApC8E,WAAWjI,EAAEmD,kBACzD,KAEA8D,EAAKc,KAAK,CAAEhB,KAAM,+CAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAOA,EAAEnD,eAAiByB,EAAKzB,aAAaC,OAC9C,KAEAmK,EAAKc,KAAK,CAAEhB,KAAM,0BAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OACGA,EAAEmI,sBAAwBnI,EAAEmI,oBAAoBC,YAAcpI,EAAEmI,oBAAoBE,OAEzF,KAEApB,EAAKc,KAAK,CAAEhB,KAAM,iCAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAOsI,SAAStI,EAAEuI,mBAAqBD,SAAStI,EAAEuI,kBAAoB,CACxE,KAEAtB,EAAKc,KAAK,CAAEhB,KAAM,8CAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAQA,EAAEwI,aAAexI,EAAEwI,WAAWC,yBACxC,KAEAxB,EAAKc,KAAK,CAAEhB,KAAM,+BAGlB9K,EAAK+L,MAAK,SAAUhI,GAClB,OAAQA,EAAE0I,sBAAyB1I,EAAE0I,sBAAwB1I,EAAE0I,qBAAqBC,OAAS,CAC/F,KAEA1B,EAAKc,KAAK,CAAEhB,KAAM,qDAGA,IAAhBE,EAAK0B,OACAC,OAAOC,OAAO5M,GAGhB,CAAEgL,KAAMA,EACjB,EAKA6B,0BAA2B,SAAUC,GACnC,MACE,2EAEArN,EAAGuF,QAAQ+H,kBAAkBD,GAHxB,6NAYT,EAMAE,qCAAsC,SAAUC,EAAKC,GACnD,GACED,GACAA,EAAIP,OAAS,GACbQ,GACAA,EAAOC,WACPD,EAAOjJ,YACPiJ,EAAOE,gBACP,CACA,IAAIC,EAAM,CAAC,EAqBX,OApBAJ,EAAIK,SAAQ,SAAUC,EAAI9J,GAEtB8J,EAAGC,2BACHD,EAAGC,0BAA0BC,oBAC7BF,EAAGC,0BAA0BC,mBAAmBf,OAAS,GAEzDa,EAAGC,0BAA0BC,mBAAmBH,SAAQ,SAAUI,EAAMjK,GAEpEiK,EAAKP,YAAcD,EAAOC,WAC1BO,EAAKzJ,aAAeiJ,EAAOjJ,YAC3ByJ,EAAKN,kBAAoBF,EAAOE,kBAEhCC,EAAMK,EAEV,GAKJ,IACOL,CACT,CACF,EACAM,mBAAoB,WAClB,IAAIC,EAAM,MACNC,EAAe,IAAOD,EAAIE,OAAS,SACvC,OAAID,EAAaE,SAASH,GACjBC,EAAaG,IAAI,EAAG,QAAQC,OAAO,KAErCJ,EAAaI,OAAO,IAC7B,EAMAC,kBAAmB,SAAUlI,EAAOmI,GAClC,IAW2CzL,EACrC0L,EAKAC,EAjBFhM,EAAOH,KACP4K,EAAY9G,EAAMrC,KAAK,aACvBA,EAAOwK,EAAG5J,QAAQ,QAClB+J,EAAajM,EAAK2K,qCAAqCrJ,EAAK4C,iBAAkB,CAChF4G,UAAWL,EACX7I,WAAY+B,EAAMrC,KAAK,cACvByJ,gBAAiBpH,EAAMrC,KAAK,gBAE1B4K,IAAaD,GAAaA,EAAWE,YACrCC,IAAWH,GAAaA,EAAWI,cAEIhM,EA8EhB,SAAUiM,GACnClP,EAAGqK,MAAMC,KAAK,CACZpG,KAAM,CACJwK,GAAIA,EACJG,WAAYA,GAEdjO,MAAO,oCACP2J,UAAWtK,EAAEiP,GACbzE,QAAS,CACP,CACEnD,MAAO,qCACPmC,SAAU,yBACViB,OAAQ,SAAUC,GAChBA,EAAUC,OACZ,GAEF,CACEtD,MAAO,2CACPmC,SAAU,oCACViB,OAAQ,SAAUyE,GAChB,IAAIlB,EAAOkB,EAAKrK,QAAQ,cACpB4J,EAAKS,EAAKrK,QAAQ,MAClBsK,EAAUD,EAAKE,WAAWvL,KAAK,8BAC/BwL,EAAaH,EAAKE,WAAWvL,KAAK,eAClCyL,EAAW,CAAC,EAEZD,EAAWrC,OAAS,IACtBsC,EAAW,CACTlC,UAAWiC,EAAWpL,KAAK,aAC3BsC,WAAY8I,EAAWpL,KAAK,cAC5BsL,SAAU5C,SAASuC,EAAKE,WAAWvL,KAAK,iBAAiB2L,SAG7D7M,EAAK8I,yBACHgD,EACkB,QAAlBU,EAAQK,OAAkBxB,EACR,OAAlBmB,EAAQK,OAAiBxB,EACzBsB,GAIF3M,EAAKiJ,sBACH,CACE5K,uBAAwB2B,EAAK3B,uBAC7B6F,iBAAkBlE,EAAK1B,yBACvB6F,gBAAiBnE,EAAKrC,KAAKwG,gBAC3B9D,SAAU,SAAUO,GAClB,IAAIkL,EAAKS,EAAKrK,QAAQ,MACtB4J,EAAGW,WAAWvL,KAAK,0BAA0BL,QAAQC,OAAOzD,EAAEuD,IAE9D,IAAIkM,EAAYhB,EAAGW,WAAWvL,KAAK,gBAC9B4L,GAAaA,EAAUzC,OAAS,IACnCyB,EAAG5D,aAAahH,KAAK,WAAW4C,YAAY,YAG9C9D,EAAK+M,gBAAgBpJ,EAAOmI,GAC5B9L,EAAKgJ,oBAAoB8C,EAC3B,GAEFT,GAGFkB,EAAKvE,OACP,IAGJY,gBAAiB,SAAUC,GACzB,IAAImE,EAAkBnE,EAAS4D,WAAWvL,KAAK,sBAC3C+L,EAAepE,EAAS4D,WAAWvL,KAAK,iBACxCgM,EAAerE,EAAS4D,WAAWvL,KAAK,yBACxCiM,EAAatE,EAASX,aAAahH,KAAK,WAE5C8L,EAAgBxJ,GAAG,UAAU,SAAUC,GACrCA,EAAEC,iBAGkB,QAFRrG,EAAEwC,MAEJgN,MACRK,EAAapJ,YAAY,UAEzBoJ,EAAapL,SAAS,SAE1B,IAEImL,EAAa5C,OAAS,GACxB8C,EAAWrL,SAAS,YAGtBmL,EAAazJ,GAAG,UAAU,SAAUC,GAClCA,EAAEC,iBACF,IAAIC,EAAQtG,EAAEwC,MACVmK,SAASrG,EAAMkJ,OAAS,EAC1BM,EAAWrJ,YAAY,YAEvBqJ,EAAWrL,SAAS,WAExB,GACF,GAEJ,EA/KMiK,EACF,2GAIEC,EAA4B,WAE5B3L,EAAS0L,EAAa,eAE1B,GAEKK,GAAYF,IAAelM,EAAKjB,UAAUqO,SAAS3C,KAClDyB,IACFH,GACE,8CACAtB,EACA,uBACA9G,EAAMrC,KAAK,cAHX,sKAOAtB,EAAKwK,0BAA0BC,IAG/B2B,GAAYH,EAAWoB,aACzBjQ,EAAGmD,WAAW+M,qBACZ,4BACAlQ,EAAG4B,QAAQyB,aAAaC,UACxB,SAAU6M,GACR,IAAIC,EAAenQ,EACjBD,EAAGK,MAAMgQ,YAAYC,iBACnBH,EACA,CAACtB,EAAWoB,cACZ,GACA,IAGkBG,EACnBtM,KAAK,oCACLJ,OAAO,8BAAgCd,EAAKsL,qBAAuB,kBACtEkC,EAAatM,KAAK,sBAAsByM,SAExC5B,GACE,iXAMAE,EAAWoB,aAAaO,eANxB,qTAcA3B,EAAW4B,gBAdX,6JAqBAL,EAAa,GAAGxI,UArBhB,6CA0BFgH,GACF,IAGFA,IAuGR,EAMAe,gBAAiB,SAAUpJ,EAAOmI,GAChC,IAAI9L,EAAOH,KACPiO,EAAehC,EAAGW,WAAWvL,KAAK,sBAEtC4M,EAAaC,IAAI,SACjBD,EAAatK,GAAG,SAAS,SAAUC,GACjCA,EAAEC,iBACF1D,EAAK6L,kBAAkBxO,EAAEwC,MAAOiM,EAClC,GACF,EAKA9C,oBAAqB,SAAU8C,GAC7B,IAAI9L,EAAOH,KACPiN,EAAYhB,EAAGW,WAAWvL,KAAK,cAEnC4L,EAAUiB,IAAI,SACdjB,EAAUtJ,GAAG,SAAS,SAAUC,GAC9BA,EAAEC,iBACF,IAAIC,EAAQtG,EAAEwC,MACdG,EAAK6L,kBAAkBlI,EAAOmI,EAChC,GACF,EAKA/C,mCAAoC,SAAU+C,GAC5C,IAAI9L,EAAOH,KACTmB,EAAa8K,EAAGW,WAAWvL,KAAK,qBAChC8M,EAAchN,EAAWE,KAAK,2BACbF,EAAWE,KAAK,mBAEnC8M,EAAYD,IAAI,UAChBC,EAAYxK,GAAG,UAAU,SAAUC,GACjCA,EAAEC,iBACF,IAAIC,EAAQtG,EAAEwC,MACV+D,EAAaD,EAAMkJ,MACrBoB,EAAWjN,EAAWE,KAAK,mCAEzByC,EAAMuK,GAAG,YACXD,EAAS/M,KAAK,cAAgB0C,GAAYzC,MAAK,SAAUC,EAAK+M,GAC5D9Q,EAAEwC,MAAMiE,YAAY,SACtB,IAEAmK,EAAS/M,KAAK,cAAgB0C,GAAYzC,MAAK,SAAUC,EAAK+M,GAC5D9Q,EAAEwC,MAAMiC,SAAS,SACnB,IAIGkM,EAAYE,GAAG,YAGlBpC,EAAG5D,aAAahH,KAAK,WAAW4C,YAAY,YAF5CgI,EAAG5D,aAAahH,KAAK,WAAWY,SAAS,YAI3C9B,EAAK8I,yBAAyBgD,EAChC,GACF,EAKA7D,4BAA6B,SAAUtK,GACrC,GAAIA,EAAKuG,kBAAoBvG,EAAKuG,iBAAiBmG,OAAS,EAAG,CAC7D,IAAI+D,GAAyB,EAmB7B,OAlBAzQ,EAAKuG,iBAAiB+G,SAAQ,SAAUC,EAAI9J,GAa1C,GAXE8J,EAAGC,2BACHD,EAAGC,0BAA0BC,oBAC7BF,EAAGC,0BAA0BC,mBAAmBf,OAAS,GAEzDa,EAAGC,0BAA0BC,mBAAmBH,SAAQ,SAAUI,EAAMjK,GACtE,GAAIiK,EAAKgD,oBAEP,OADAD,GAAyB,GAClB,CAEX,IAEEA,EACF,OAAO,CAEX,IAEIA,EACK,YAGF,EACT,CACF,EAQAE,2BAA4B,SAC1B1K,EACAM,EACAqK,EACAC,GAEA,GAAItK,GAAoBA,EAAiBmG,OAAS,GAAKzG,GAAcoG,SAASpG,GAAa,CACzF,IAAI5D,EAAOH,KACT4O,EAAa,EACbC,EAAgB,EAChBC,EAAQ3E,SAASpG,GAEfgL,EAAmB1K,EAAiB2K,QAAO,SAAUnN,GACvD,OAAOA,EAAEyJ,0BAA0B2D,UACrC,IAAG,GAEHF,EAAiBzD,0BAA0BC,mBAAmByD,QAAO,SAAUrM,GAC7E,OAAOA,EAAEZ,aAAe+M,CAC1B,IAAG1D,SAAQ,SAAUL,GAEf5K,EAAKjB,UAAUqO,SAASxC,EAAIE,aAC9B2D,GAAc7D,EAAImE,sBAGhB/O,EAAKZ,aAAagO,SAASxC,EAAIE,aACjC4D,GAAiB9D,EAAImE,qBAEzB,IAEA,IAAIC,EACFrF,WAAW3J,EAAKiP,UAAUR,IAC1B9E,WAAW3J,EAAKiP,UAAUP,IAC1B/E,WAAW3J,EAAKiP,UAAUV,IACxBW,EAAkBvF,WAAWqF,GAC7BA,EAAoBR,EAAuBvE,iBAC3C,EAEJ,MAAO,CACL6E,YAAY,EACZ7E,iBAAkBuE,EAAuBvE,iBACzCJ,oBAAqB2E,EAAuB3E,oBAC5CtL,aAAciQ,EAAuBjQ,aACrC4Q,sBAAuBX,EAAuBW,sBAC9CjL,iBAAkB0K,EAClBQ,oBAAqB,EACrBC,kBAAmBrP,EAAKiP,UAAUR,GAClC5J,kBAAmBmK,EACnBM,6BAA8BtP,EAAKiP,UAAUP,GAC7C9E,qBAAsB5J,EAAKiP,UAAUC,GACrCK,8BAA+B,IAAMvP,EAAKiP,UAAUC,GAAiB3J,QAAQ,GAC7EiK,0BAA2BjB,EAE/B,CACF,EAMAU,UAAW,SAAUQ,EAAKC,GAIxB,OAHKA,IACHA,EAAU,GAELlJ,KAAKmJ,KAAKF,EAAMC,GAAWA,CACpC,EAMAE,iBAAkB,SAAUC,EAAOC,GACjC,OACE1S,EAAGuF,QAAQoN,WAAWF,IACtBzS,EAAGuF,QAAQoN,WAAWD,IACtBD,EAAMjO,aAAekO,EAAMlO,YAC3BiO,EAAM9E,kBAAoB+E,EAAM/E,iBAChC8E,EAAM/E,YAAcgF,EAAMhF,WAC1B+E,EAAMG,uBACNF,EAAME,uBACN5S,EAAGuF,QAAQsN,YACTJ,EAAMG,sBAAsBE,oBAC5BJ,EAAME,sBAAsBE,oBAGlC,EAOApH,yBAA0B,SAAUgD,EAAIqE,EAAcC,EAAqBC,GACzE,GAAIvE,EAAI,CACN,IAAI9L,EAAOH,KAETyQ,EAAiBhJ,KAAKC,MACpBD,KAAKE,UACHxH,EAAK3B,uBAAyB2B,EAAK3B,uBAAyB2B,EAAKrC,KAAKU,yBAG1EkS,EAAyBvQ,EAAK1B,yBAAyBkS,KAAI,SAAU9O,GACnE,OAAOA,EAAEyJ,yBACX,IAEEsF,EAAkBzQ,EAAKrC,KAAKwG,gBAC9BuM,EAAkB5E,EAAGW,WAAWvL,KAAK,oBACrCyP,EAAkB7E,EAAGW,WAAWvL,KAAK,yBACrC0P,EAAgB9E,EAAGW,WAAWvL,KAAK,iBACnC2P,EAAoB/E,EAAGW,WAAWvL,KAAK,kBACvC4P,EAAcH,EAAgBzP,KAAK,gBACnC6P,EAAiBJ,EAAgBzP,KAAK,mBACtC8P,EAAoBL,EAAgBzP,KAAK,uBACzC+P,EAAaN,EAAgBzP,KAAK,0BAClCF,EAAa8K,EAAGW,WAAWvL,KAAK,qBAEhC+M,GADanC,EAAG5D,aAAahH,KAAK,eACvBF,EAAWE,KAAK,oCAC3BgQ,EAAUjD,EAAS/M,KAAK,mBACxBiQ,EAAalD,EAAS/M,KAAK,sBAC3BuN,EAAa,EACbC,EAAgB,EAChB0C,EAAoB,EACpBC,EAAY,EACZC,EAAc,QAGY,IAAjBnB,GAAiD,KAAjBA,IACzCA,GAAe,GAIbe,GAAWA,EAAQ7G,OAAS,GAC9B6G,EAAQ/P,MAAK,WACX,IAAK9D,EAAEwC,MAAMmE,SAAS,UAAW,CAC/B,IAAIuN,EAASlU,EAAEwC,MAAMyB,KAAK,cACtBiQ,IAAWD,EAAYlE,SAASmE,IAClCD,EAAY7H,KAAK8H,EAErB,CACF,IAEEJ,GAAcA,EAAW9G,OAAS,GACpC8G,EAAWhQ,MAAK,WACd,IAAK9D,EAAEwC,MAAMmE,SAAS,UAAW,CAC/B,IAAIuN,EAASlU,EAAEwC,MAAMyB,KAAK,cACtBiQ,IAAWD,EAAYlE,SAASmE,IAClCD,EAAY7H,KAAK8H,EAErB,CACF,IAIFjB,EAAelG,qBAAuB,GACtCkG,EAAepG,WAAa,GAC5B,IAAIsH,EAAwB,GACxBF,GAAeA,EAAYjH,OAAS,GACtCiH,EAAYrG,SAAQ,SAAU0D,EAAO8C,GACnC,IAAIC,EAAY,EACdC,EAAe,EACfC,EAAc,EAGZC,EACFpB,GAAmBA,EAAgBpG,OAAS,EACxCoG,EAAgBvP,MAAK,SAAUQ,GAC7B,OACEsI,SAAStI,EAAEyI,2BAA6B,GACxCH,SAAStI,EAAEyI,6BAA+BwE,CAE9C,IACA8B,EACFqB,EAAoBvB,EAAuBC,KAAI,SAAU5F,GAC3D,OAAOA,EAAIQ,mBAAmByD,QAAO,SAAUxD,GAC7C,OAAOA,EAAKzJ,aAAe+M,CAC7B,GACF,IACIoD,OACuD,IAAlDF,EAAcG,iCACrBH,EAAcG,gCAAkC,EAC5CH,EAAcG,gCACdH,EAAgB,EAChBA,EACA,EACFC,GAAqBA,EAAkBzH,OAAS,GAClDyH,EAAkB7G,SAAQ,SAAUgH,EAAWC,GAE7CD,EAAUhH,SAAQ,SAAUL,EAAKxJ,GAG/B,IAAI+Q,EAAmBnS,EAAK4P,iBAAiBO,EAAcvF,IAAQA,EAAIyC,aACnE+E,EAA0BpS,EAAK4P,iBAAiBQ,EAAqBxF,GAEzE,GAAI5K,EAAKjB,UAAUqO,SAASxC,EAAIE,WAAY,CAE1CF,EAAIyH,eACFzH,EAAIyH,aAAgBrS,EAAK4P,iBAAiBhF,EAAKwF,KAC3CxF,EAAIyH,YAEVzH,EAAI0H,cAAgB1H,EAAIyH,YAAczH,EAAI0H,cAAgB,EAC1D1H,EAAI2H,oBAAoB3H,EAAI2H,mBAAoB3H,EAAI2H,kBACpD,IAAIC,EAAW5H,EAAIyH,YAAczH,EAAIyC,aAAaoF,MAAQ7H,EAAIiD,gBAE1DsE,IAEFK,EAAW5H,EAAIyC,aAAaoF,MAC5B7H,EAAI8H,mBAAqB9H,EAAIyC,aAAaoF,MAC1C7H,EAAIyH,aAAc,EAClBzH,EAAI0H,cAAgB1H,EAAIyC,aAAasF,IACjC/H,EAAIyC,aAAasF,IACjB/H,EAAIE,YAAc1N,EAAG4B,QAAQC,YAAYE,QACzCa,EAAKV,6BAA6BH,QAClCa,EAAKV,6BAA6BJ,YAItCmR,GACAzF,EAAIE,YAAcuF,EAAe5F,WACjCG,EAAIhJ,aAAeyO,EAAezM,YAE9BoG,SAASqG,EAAezD,UAAY,IACtChC,EAAImE,qBACFnE,EAAIiD,gBAAkB7D,SAASqG,EAAezD,UAChDhC,EAAIgI,mBAAqB5I,SAASqG,EAAezD,UACjDhC,EAAIiI,cAAe,GAIvBjI,EAAImE,qBAAuByD,EAAW5H,EAAIgI,mBAC1ClB,GAAa9G,EAAImE,oBACnB,EAIEoD,GACAC,GACAhV,EAAGuF,QAAQoN,WAAWM,MAEtBzF,EAAIyB,eAAgB,EACpBzB,EAAIyD,qBAAsB,EAC1BzD,EAAI2H,mBAAoB,GAGtBvS,EAAKZ,aAAagO,SAASxC,EAAIE,aACjC6G,GAAgB/G,EAAImE,sBAGtB6C,GAAehH,EAAI0H,cACnBhC,EAAelG,qBAAqBX,KAAKmB,EAC3C,GACF,IAIF,IAAIkI,EACFnJ,WAAW+H,GACX/H,WAAWgI,GACXhI,WAAWiI,GACXjI,WAAWoI,GAEbtD,GAAciD,EACdhD,GAAiBiD,EACjBN,GAAaO,EACbR,GAAqBW,EAGrB,IAAIgB,EAAU,GACd/S,EAAK1B,yBAAyB2M,SAAQ,SAAU+H,GAE3C1C,EAAepG,WAAWR,MAAK,SAAUhI,GACxC,OACEsI,SAAStI,EAAEyI,4BACXH,SAAStI,EAAEyI,6BAA+BwE,CAE9C,OAEAoE,EAAUC,EAAGC,gBAAgB/R,MAAK,SAAUgS,GAC1C,OACElJ,SAASkJ,EAAE/I,4BACXH,SAASkJ,EAAE/I,6BAA+BwE,CAE9C,KACQwE,mBAAqBnT,EAAKrC,KAAKmC,YACvCwQ,EAAepG,WAAWT,KAAKsJ,GAEnC,IAEA,IAAIK,EAAsB,CACxBlJ,WAAY6I,EACZ3I,qBAAsBkG,EAAelG,qBACrCiJ,iBAAkBlD,GAAgBA,EAAavO,aAAe+M,EAC9D9E,oBAAqB,CACnBC,UAAWwG,EAAezG,oBAAoBC,UAC9CC,QAASuG,EAAezG,oBAAoBE,SAE9C+E,WAAYwB,EAAexB,WAC3BlF,qBAAsB5J,EAAKiP,UAAU6D,EAAYxC,EAAerG,kBAChEA,iBAAkBqG,EAAerG,iBACjCpF,kBAAmBiO,EACnBtD,0BAA2BuC,EAC3B1C,kBAAmBqC,EACnBpC,6BAA8BqC,EAC9BvC,oBAAqBwC,EACrB0B,eAAgBP,EAAQO,gBAE1BF,EAAoB7U,aAAeyB,EAAKuT,sBAAsBH,GAC9D5B,EAAsB/H,KAAK2J,EAC7B,IAGF,IAAIpE,EACFrF,WAAW8E,GACX9E,WAAW+E,GACX/E,WAAWyH,GACXzH,WAAW0H,GACTmC,EAAsB7J,WAAWqF,GACjCA,EAAoBsB,EAAerG,iBACnC,EACJqG,EAAejB,kBAAoBZ,EACnC6B,EAAehB,6BAA+BZ,EAC9C4B,EAAed,0BAA4B4B,EAC3Cd,EAAelB,oBAAsBiC,EACrCf,EAAezL,kBAAoBmK,EACnCsB,EAAe1G,qBAAuB5J,EAAKiP,UAAUuE,GACrDlD,EAAe/R,aAAeyB,EAAKuT,sBAAsBjD,GAEzDQ,EACGjE,IAAIyD,EAAejB,mBACnB5G,KAAK,IACLA,KAAK,IAAM6H,EAAejB,kBAAkB9J,QAAQ,IACvDwL,EACGlE,IAAIyD,EAAehB,8BACnB7G,KAAK,IACLA,KAAK,IAAM6H,EAAehB,6BAA6B/J,QAAQ,IAClEyL,EACGnE,IAAIyD,EAAed,2BACnB/G,KAAK,IACLA,KAAK,IAAM6H,EAAed,0BAA0BjK,QAAQ,IAC/D0L,EACGpE,IAAIyD,EAAelB,qBACnB3G,KAAK,IACLA,KAAK,IAAM6H,EAAelB,oBAAoB7J,QAAQ,IACzDqL,EACG/D,IAAIyD,EAAezL,mBACnB4D,KAAK,IACLA,KAAK,IAAM6H,EAAezL,kBAAkBU,QAAQ,IACvDsL,EACGhE,IAAIyD,EAAe1G,sBACnBnB,KAAK,IACLA,KAAK,IAAM6H,EAAe1G,qBAAqBrE,QAAQ,GAAK,OAC/DmL,EAAgBjI,KACd,oBAAsBzI,EAAKyT,0BAA0BnD,EAAe/R,eAGtEyB,EAAKrC,KAAK0K,sBAAwBmJ,EAClCxR,EAAK3B,uBAAyBiS,CAChC,CACF,EAKAiD,sBAAuB,SAAUG,GAC/B,IAAI1T,EAAOH,KACX,GAAI6T,EAAQ,CACV,GACEA,EAAOrE,mBACiC,GAAxC1F,WAAW+J,EAAOrE,oBAClBqE,EAAOpE,8BAC4C,GAAnD3F,WAAW+J,EAAOpE,8BAElB,OAAOtP,EAAKzB,aAAaI,eAG3B,GACE+U,EAAOrE,mBACiC,GAAxC1F,WAAW+J,EAAOrE,sBAChBqE,EAAOpE,8BAAmF,GAAnD3F,WAAW+J,EAAOpE,+BAE3D,OAAOtP,EAAKzB,aAAaE,KAG3B,GACEiV,EAAOpE,8BAC4C,GAAnD3F,WAAW+J,EAAOpE,iCAChBoE,EAAOrE,mBAA6D,GAAxC1F,WAAW+J,EAAOrE,oBAEhD,OAAOrP,EAAKzB,aAAaG,OAE7B,CACA,OAAOsB,EAAKzB,aAAaC,OAC3B,EAKAiV,0BAA2B,SAAUE,GACnC,IAAI3T,EAAOH,KACX,OAAQ8T,GACN,KAAK3T,EAAKzB,aAAaE,KACrB,MAAO,OACT,KAAKuB,EAAKzB,aAAaG,QACrB,MAAO,UACT,KAAKsB,EAAKzB,aAAaI,eACrB,MAAO,mBACT,QACE,MAAO,UAEb,EAMAsK,sBAAuB,SAAUtL,EAAMiW,GACrC,GAAIjW,EAAM,CACR,IAAIqC,EAAOH,KACPgU,EAAa,CAAC,EACdH,EAAS/V,EAAKU,uBAGlBwV,EAAWC,gBACT,mDAEAJ,EAAO7J,oBAAoBkK,mBAC3B,MACAL,EAAO7J,oBAAoBmK,iBAJ3B,yDAOAN,EAAOzJ,iBAPP,+DAUAjK,EAAKyT,0BAA0BC,EAAOnV,cAVtC,eAcFsV,EAAWI,aAAeP,EAAO7O,kBAAoB6O,EAAO7O,kBAAkBU,QAAQ,GAAK,EAC3FsO,EAAWK,mBACT,0JAEAR,EAAOrE,kBAAkB9J,QAAQ,GAFjC,mLAKAmO,EAAOpE,6BAA6B/J,QAAQ,GAL5C,0SAQAmO,EAAOlE,0BAA0BjK,QAAQ,GARzC,0LAWAmO,EAAOtE,oBAAoB7J,QAAQ,GAXnC,qCAkBFsO,EAAWhP,kBAAoB6O,EAAO9J,qBAClC8J,EAAO9J,qBAAqBrE,QAAQ,GACpC,EAGJsO,EAAWM,sBAAwB,GAGnCN,EAAWO,4BAA6B,EACxCP,EAAWQ,6BAA+B,GAE1C1W,EAAKuG,iBAAiB+G,SAAQ,SAAUC,EAAI9J,GAC1CyS,EAAWO,2BACTlJ,EAAG+H,iBACH/H,EAAG+H,gBAAgB5I,OAAS,GAC5Ba,EAAGC,2BACHD,EAAGC,0BAA0BC,oBAC7BF,EAAGC,0BAA0BC,mBAAmBoF,KAAI,SAAU9O,GAC5D,OAAOA,EAAEE,UACX,IAAGyI,OAAS,EAEVwJ,EAAWO,4BACblJ,EAAG+H,gBAAgBhI,SAAQ,SAAUuF,GACnC,IAAI8D,EAAU9D,EAAIrG,0BAClB0J,EAAWQ,8BACT,+DAEAC,EACA,kDACAA,EAJA,8CAOAA,EACA,KACAA,EATA,oBAYJ,IAGF,IAAIC,EACF,gEACArJ,EAAGsJ,cACH,eACEC,EAAa,GAEjB,GACEvJ,EAAGC,2BACHD,EAAGC,0BAA0BC,oBAC7BF,EAAGC,0BAA0BC,mBAAmBf,OAAS,EACzD,CACA,IAAIqK,GAAa,EACfC,GAAU,EACRC,EACA,mQAUFC,EACE,wTAYJ3J,EAAGC,0BAA0BC,mBAAmBH,SAAQ,SAAUI,EAAMjK,GACtE,IAAI0T,EAAgBzJ,EAAK0D,qBAAuB1D,EAAK0D,qBAAqBxJ,QAAQ,GAAK,EAGvF,GAAI8F,EAAKP,YAAc1N,EAAG4B,QAAQC,YAAYI,eAC5CqV,GAAa,EACbE,GACE,sCACAvJ,EAAKzJ,WACL,uBACAyJ,EAAKzJ,WAHL,4BAMCyJ,EAAK2E,sBAAsB+E,gBACxB1J,EAAK2E,sBAAsB+E,gBAC3B,IARJ,sBAWC1J,EAAKuH,mBAAqBvH,EAAKuH,mBAAqB,IAXrD,sBAcAkC,EAdA,+CAiBAA,EACA,MACAA,EAnBA,kBAuBG,GAAI9U,EAAKjB,UAAUqO,SAAS/B,EAAKP,WAAY,CAClD6J,GAAU,EACV,IAAIK,EAAe,IAIjB3J,EAAKuH,oBACJvH,EAAKgB,eACLhB,EAAKgD,qBACLhD,EAAKgH,aACLhH,EAAKkH,kBAIGlH,EAAKkH,kBACdyC,EACE3J,EAAKuH,mBAALvH,wFAGAA,EAAKP,UACL,4BACAO,EAAKgB,cACL,yBACAhB,EAAKc,YACL,uBACAd,EAAKzJ,WACL,uBACAyJ,EAAKN,gBACL,sCACCM,EAAKgH,aAAehH,EAAKqH,mBACtB,+BACA,0BACJ,OACOrH,EAAKgD,sBACd2G,EACE,kDACA3J,EAAKP,UACL,4BACAO,EAAKgB,cACL,yBACAhB,EAAKc,YACL,uBACAd,EAAKzJ,WACL,uBACAyJ,EAAKN,gBACL,qEAhCFiK,EAAe3J,EAAKuH,mBAAqB,0BAmC3C,IAAIqC,EACF5J,EAAKgH,aAAehH,EAAKqH,mBACrB,IACArH,EAAKqH,mBAAmBnN,QAAQ,GAChC,oDACA8F,EAAKwC,gBACL,IAAMxC,EAAKwC,gBAAgBtI,QAAQ,GAAK,sBACxC,EAENsP,GACE,mCACAxJ,EAAKzJ,WACL,uBACAyJ,EAAKzJ,WAHL,4BAMCyJ,EAAK2E,sBAAsB+E,gBACxB1J,EAAK2E,sBAAsB+E,gBAC3B,IARJ,sBAWC1J,EAAK6J,SAAW7J,EAAK6J,SAAW,IAXjC,qBAcAF,EAdA,qBAiBAC,EAjBA,+CAoBAH,EACA,MACAA,EAtBA,YAyBJ,CACF,IAEAL,IACGE,EAAUE,EAAgB,WAAa,KACvCH,EAAaE,EAAmB,WAAa,GAClD,CACAL,GAASE,EAAa,WACtBZ,EAAWM,uBAAyBI,CACtC,IAEIV,EAAWO,6BACbP,EAAWQ,6BACT,6GAEAR,EAAWQ,6BACX,UAGyB,mBAAlB1W,EAAK0C,UACdjD,EAAGmD,WAAWC,wBACZR,EAAK/B,eACLb,EAAG4B,QAAQyB,aAAaC,SACxBmT,GACA,SAAUjT,GACRjD,EAAK0C,SAASO,EAChB,GAGN,CACF,K,kBCxlDR,IAAI4P,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,WAAY,KACZ,cAAe,KACf,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,KACb,eAAgB,KAChB,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAAS2E,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBjT,EAAEkO,EAAK4E,GAAM,CACpC,IAAI3R,EAAI,IAAI+R,MAAM,uBAAyBJ,EAAM,KAEjD,MADA3R,EAAEgS,KAAO,mBACHhS,CACP,CACA,OAAO+M,EAAI4E,EACZ,CACAD,EAAeO,KAAO,WACrB,OAAOpL,OAAOoL,KAAKlF,EACpB,EACA2E,EAAeQ,QAAUL,EACzBM,EAAOC,QAAUV,EACjBA,EAAeE,GAAK,K","sources":["webpack://shipley-du-lib/./common/js/legacy/custPortal/cw/cw.pages.budgetManager.js","webpack://shipley-du-lib/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import moment from \"moment\";\r\nimport \"flot\";\r\nimport \"flot/jquery.flot.time\";\r\nimport \"flot/jquery.flot.stack\";\r\nimport \"flot/jquery.flot.categories\";\r\nimport \"flot/jquery.flot.pie\";\r\nimport \"jquery.flot.tooltip\";\r\n\r\nimport * as BootstrapDialog from \"bootstrap3-dialog\";\r\n\r\n(function (cw, $, undefined) {\r\n \"use strict\";\r\n $.extend(true, cw, {\r\n pages: {\r\n budgetManager: {\r\n args: null,\r\n budgetDetails: null,\r\n budgetData: null,\r\n summaryChart: null,\r\n url: \"/account/manage-budget\",\r\n title: \"Budget Manager\",\r\n enrollHtmlTmpl: \"BudgetEnroll.html\",\r\n managerHtmlTmpl: \"CwBudgetManagement.html\",\r\n s1AccountId: null,\r\n successCallback: null,\r\n CustomerBudgetResponse: null,\r\n CustomerServiceLocations: null,\r\n CoverageType: {\r\n Unknown: 0,\r\n Fuel: 1,\r\n Service: 2,\r\n FuelandService: 3,\r\n },\r\n heatingOilUsageValue: {\r\n HeatingOnly: 650,\r\n HeatingAndHotWater: 750,\r\n },\r\n fuelUtils: [cw.appEnum.ProductCode.HeatingOil, cw.appEnum.ProductCode.Propane],\r\n serviceUtils: [cw.appEnum.ProductCode.ServiceProduct],\r\n AssociatedFuelCapFeeFallback: {\r\n Propane: 99,\r\n HeatingOil: 120,\r\n },\r\n BudgetEnrollmentStatus: {\r\n Successfull: 1,\r\n BackendValidationFailed: 2,\r\n FailedBackendCreation: 3,\r\n FailedPriceChangeRequest: 4,\r\n },\r\n /**\r\n * Main Entry Point into Js file\r\n * @param {*} args\r\n */\r\n init: function (args) {\r\n this.args = args;\r\n this.s1AccountId = args.budgetData.S1AccountId;\r\n this.budgetData = args.budgetData;\r\n this.initializePage(args);\r\n },\r\n /**\r\n * Initializes page\r\n * **Gathers Data\r\n * **Renders Html\r\n * @param {*} args\r\n */\r\n initializePage: function (args) {\r\n var self = this;\r\n\r\n //if we need it\r\n cw.loadingIndicator.stop();\r\n\r\n if (!args.$viewport) {\r\n args.$viewport = $(\".dashboard-viewport\");\r\n }\r\n\r\n //API call to get budget info\r\n self.getCustomerBudgetDetails({\r\n s1AccountId: self.s1AccountId,\r\n callback: function (rtnData) {\r\n self.budgetDetails = rtnData;\r\n cw.templating.GetRenderedTemplateHTML(\r\n self.managerHtmlTmpl,\r\n cw.appEnum.TemplateType.CwWidget,\r\n {\r\n Data: rtnData,\r\n },\r\n function (renderedTmpl) {\r\n args.$viewport.empty().append('<div class=\"row container\">' + renderedTmpl + \"</div>\");\r\n self.bindInteractions();\r\n }\r\n );\r\n },\r\n });\r\n },\r\n /**\r\n * Bind Manager Interactions\r\n */\r\n bindInteractions: function () {\r\n var self = this;\r\n var $wrapperEl = $(\".budget-management-wrapper\"),\r\n $enrollBudget = $(\".budget-enroll\");\r\n\r\n //Set up our graphs here on a Per Customer basis\r\n $wrapperEl\r\n .find(\".nav-list-item\")\r\n .find(\"a\")\r\n .each(function (idx) {\r\n var customer = $(this).data(\"customerId\");\r\n var $statusChart = $wrapperEl.find(\"#status-pie-\" + customer);\r\n var $summaryPie = $wrapperEl.find(\"#summary-bar-\" + customer);\r\n var dataSet = self.budgetDetails.find(function (x) {\r\n return x.Active && x.CustomerId === customer;\r\n });\r\n\r\n //Mustache is being silly here, set the first account as active and it's panel\r\n if (idx === 0) {\r\n $(this).parent().addClass(\"active\");\r\n $wrapperEl.find(\"#account-\" + customer).addClass(\"active\");\r\n }\r\n\r\n self.makeStatusChart(dataSet, $statusChart);\r\n self.makeSummaryChart(dataSet, $summaryPie, function () {\r\n if (self.summaryChart) {\r\n var val = $('[name=\"budget-val\"]');\r\n var chartData = self.summaryChart.getData();\r\n\r\n //determine label color for summary chart\r\n $.each(chartData, function (idx, el) {\r\n var thisData = el.data[0];\r\n var labelColor = thisData[0] > 600 ? \"white\" : \"black\";\r\n var o = self.summaryChart.pointOffset({ x: 0, y: idx, yaxis: 1, xaxis: 1 });\r\n $(\r\n '<div class=\"data-point-label fs-xs-14\">' +\r\n cw.utility.formatAsMoney(thisData[0], cw.appEnum.PriceDisplayType.DollarsPerUnit, 2) +\r\n \"</div>\"\r\n )\r\n .css({\r\n position: \"absolute\",\r\n left: o.left + 10,\r\n top: o.top - 5,\r\n display: \"none\",\r\n color: labelColor,\r\n })\r\n .appendTo(self.summaryChart.getPlaceholder())\r\n .fadeIn(\"slow\");\r\n });\r\n }\r\n });\r\n\r\n //hide this here so we get the proper sizing of the chart, or the size will be jacked\r\n $wrapperEl.find(\".summary-bar-wrapper-\" + customer).addClass(\"hidden\");\r\n });\r\n\r\n $wrapperEl.on(\"click\", '[name=\"account-tab\"]', function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n var customerId = $this.data(\"customerId\");\r\n\r\n if ($this.attr(\"href\") === \"#account-\" + customerId) {\r\n $wrapperEl.find(\".tab-pane\").removeClass(\"active\");\r\n var tab = $wrapperEl.find(\"#account-\" + customerId + \"\");\r\n tab.addClass(\"active\");\r\n $this.tab(\"show\");\r\n }\r\n });\r\n $wrapperEl.on(\"click\", '[name=\"chart-select\"]', function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n var customerId = $this.data(\"customerId\");\r\n var $statusChart = $wrapperEl.find(\".status-pie-wrapper-\" + customerId),\r\n $summaryPie = $wrapperEl.find(\".summary-bar-wrapper-\" + customerId);\r\n\r\n $wrapperEl\r\n .find('[name=\"chart-select\"][data-customer-id=\"' + customerId + '\"]')\r\n .removeClass(\"active\");\r\n if ($this.hasClass(\"toggle-pie-status\")) {\r\n $statusChart.removeClass(\"hidden\");\r\n $summaryPie.addClass(\"hidden\");\r\n } else if ($this.hasClass(\"toggle-bar-summary\")) {\r\n $statusChart.addClass(\"hidden\");\r\n $summaryPie.removeClass(\"hidden\");\r\n }\r\n\r\n $this.addClass(\"active\");\r\n });\r\n\r\n $enrollBudget.on(\"click\", function (e) {\r\n e.preventDefault();\r\n self.budgetEnroll({\r\n CustomerBudgetResponse: self.budgetData.CustomerBudgetResponse,\r\n ServiceLocations: self.budgetData.ServiceLocations,\r\n AccountBalances: self.budgetData.AccountBalances,\r\n S1AccountId: self.budgetData.S1AccountId,\r\n successCallback: function () {\r\n this.init(self.budgetData);\r\n },\r\n });\r\n });\r\n },\r\n /**\r\n * Renders Status Chart on $graphTarget element\r\n * @param {*} dataSet\r\n * @param {*} $graphTarget\r\n */\r\n makeStatusChart: function (dataSet, $graphTarget) {\r\n var self = this;\r\n var options = {\r\n series: {\r\n pie: {\r\n show: true,\r\n //innerRadius: 0.7,\r\n radius: 1,\r\n // radius: 0.5,\r\n label: {\r\n show: true,\r\n formatter: function (label, series) {\r\n var $html = $(\r\n '<div class=\"pie-label-inner\">' +\r\n label +\r\n \"</br>\" +\r\n cw.utility.formatAsMoney(\r\n series.data[0][1],\r\n cw.appEnum.PriceDisplayType.DollarsPerUnit,\r\n 2\r\n ) +\r\n \"/ \" +\r\n cw.utility.formatAsMoney(\r\n dataSet.TotalPlanCoverage,\r\n cw.appEnum.PriceDisplayType.DollarsPerUnit,\r\n 2\r\n ) +\r\n \"</div>\"\r\n );\r\n $html.css({\r\n color: \"white\",\r\n \"font-size\": \"12px\",\r\n \"text-align\": \"center\",\r\n padding: \"2px\",\r\n \"border-radius\": \"4px\",\r\n background: \"#000\",\r\n });\r\n return $html[0].outerHTML;\r\n },\r\n threshold: 0.1,\r\n },\r\n },\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n grid: {\r\n hoverable: false,\r\n },\r\n };\r\n\r\n var graphData = [\r\n {\r\n label: \"Amount Paid Into Budget\",\r\n data: dataSet.PaidToDate.toFixed(2),\r\n color: cw.constants.shipleyBlue,\r\n },\r\n {\r\n label: \"Amount Remaining In Budget\",\r\n data: dataSet.AmountRemaining.toFixed(2),\r\n color: cw.constants.ctaOrange,\r\n },\r\n ];\r\n if ($graphTarget.height() < 200) {\r\n $graphTarget.height(200);\r\n }\r\n\r\n $.plot($graphTarget, graphData, options);\r\n },\r\n /**\r\n * Renders Summary Chart on $graphTarget element\r\n * @param {*} dataSet\r\n * @param {*} $graphTarget\r\n */\r\n makeSummaryChart: function (dataSet, $graphTarget, callback) {\r\n var self = this;\r\n var data = [\r\n {\r\n label: \"Budget Used\",\r\n data: [[dataSet.ActualUsageAmount, 0]],\r\n color: cw.constants.shipleyGreen,\r\n },\r\n {\r\n //Paid into Budget\r\n label: \"Budget Paid\",\r\n data: [[dataSet.PaidToDate, 1]],\r\n color: cw.constants.shipleyBlue,\r\n }, //Total Usage\r\n ];\r\n\r\n if ($graphTarget.height() < 150) {\r\n $graphTarget.height(150);\r\n }\r\n\r\n self.summaryChart = $.plot($graphTarget, data, {\r\n series: {\r\n bars: {\r\n show: true,\r\n barWidth: 0.3,\r\n align: \"center\",\r\n //lineWidth: 0,\r\n fill: 0.75,\r\n horizontal: true,\r\n },\r\n },\r\n yaxis: {\r\n ticks: [\r\n [0, '<div class=\"budget-used\">Budget Used</div>'],\r\n [1, '<div class=\"budget-paid\">Budget Paid</div>'],\r\n ],\r\n alignTicksWithAxis: 0,\r\n },\r\n xaxis: {\r\n max: Math.round(100 * dataSet.TotalPlanCoverage) / 100,\r\n axisLabel: \"Price (USD/oz)\",\r\n },\r\n legend: {\r\n show: false,\r\n },\r\n tooltip: true,\r\n tooltipOpts: {\r\n cssClass: \"flotTip\",\r\n content: function (label, xval, yval, flotItem) {\r\n return (\r\n '<div style=\"background: white; color: black; border-radius: 4px; border: 1px solid; padding: 10px; font-size: 14px;\">' +\r\n label +\r\n \": </br >\" +\r\n cw.utility.formatAsMoney(xval, cw.appEnum.PriceDisplayType.DollarsPerUnit, 2) +\r\n \"/\" +\r\n cw.utility.formatAsMoney(\r\n dataSet.TotalPlanCoverage,\r\n cw.appEnum.PriceDisplayType.DollarsPerUnit,\r\n 2\r\n ) +\r\n \"</div>\"\r\n );\r\n },\r\n defaultTheme: false,\r\n },\r\n grid: {\r\n hoverable: true,\r\n },\r\n });\r\n\r\n if (typeof callback === \"function\") {\r\n callback();\r\n }\r\n },\r\n /**\r\n * Retrieves Budget Details from backend\r\n * @param {*} args\r\n */\r\n getCustomerBudgetDetails: function (args) {\r\n cw.webservices.getJson(\r\n \"S1AccountManager/get-budget-by-s1account/\" + args.s1AccountId,\r\n null,\r\n function (rtnData) {\r\n if (typeof args.callback === \"function\") {\r\n args.callback(rtnData);\r\n }\r\n }\r\n );\r\n },\r\n /**\r\n * Enroll in Budget Plan\r\n * @param {*} args\r\n */\r\n budgetEnroll: function (args) {\r\n if (args) {\r\n var self = this;\r\n self.s1AccountId = args.S1AccountId;\r\n self.successCallback = args.successCallback;\r\n self.cancelCallback = args.cancelCallback;\r\n self.CustomerBudgetResponse = null; //reset on new modal request\r\n self.CustomerServiceLocations = JSON.parse(JSON.stringify(args.ServiceLocations)); //deep copy to keep reference integrity on new modal request\r\n\r\n //this gets called in self.getBudgetEnrollMarkup() function, but declared here because we need the markup rendered first\r\n args.callback = function (renderedTmpl) {\r\n cw.modal.Open({\r\n data: { data: args },\r\n title: \"Enroll in a Budget Plan\",\r\n modalBody: $(renderedTmpl),\r\n size: BootstrapDialog.SIZE_WIDE,\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n if (typeof self.cancelCallback === \"function\") {\r\n self.cancelCallback(self.args.CustomerBudgetResponse);\r\n dialogRef.close();\r\n }\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-paper-plane\"></i> Enroll',\r\n cssClass: \"btn-primary btn-xs-block enroll\" + self.getBudgetEnrollButtonStatus(args), //enable/disable based on if more info is needed\r\n action: function (dialogRef) {\r\n //enroll btn\r\n if (!dialogRef.$modalFooter.find(\".enroll\").hasClass(\"disabled\")) {\r\n cw.loadingIndicator.start();\r\n\r\n self.makeBudgetEnrollment(\r\n self.args.CustomerBudgetRequest,\r\n //successCallback\r\n function (rtnData) {\r\n if (rtnData.Successful) {\r\n if (typeof self.successCallback === \"function\") {\r\n cw.loadingIndicator.stop();\r\n dialogRef.close();\r\n self.successCallback(self.args.CustomerBudgetResponse);\r\n }\r\n } else {\r\n cw.alert.Alert([{ text: rtnData.Message }], $(\".err-pnl\"));\r\n }\r\n },\r\n //errorCallback\r\n function (errs) {\r\n cw.alert.Alert(errs, $(\".err-pnl\"));\r\n cw.loadingIndicator.stop();\r\n }\r\n );\r\n }\r\n },\r\n },\r\n ],\r\n onShownCallback: function (modalRef) {\r\n cw.loadingIndicator.stop();\r\n self.recalculateBudgetSummary(modalRef);\r\n\r\n self.bindMultipleBillingAccountSelector(modalRef);\r\n self.bindEnrollmentModal(modalRef);\r\n },\r\n });\r\n };\r\n\r\n self.args = args;\r\n self.getBudgetEnrollMarkup(self.args);\r\n }\r\n },\r\n /**\r\n *\r\n * @param {*} status\r\n */\r\n parseBackendStatus: function (status) {\r\n var self = this;\r\n var msg = \"Budget Enrollment Failed\";\r\n switch (status) {\r\n case self.BudgetEnrollmentStatus.Successful:\r\n return \"Successful\";\r\n case self.BudgetEnrollmentStatus.BackendValidationFailed:\r\n case self.BudgetEnrollmentStatus.FailedBackendCreation:\r\n case self.BudgetEnrollmentStatus.FailedPriceChangeRequest:\r\n return (\r\n msg +\r\n \" - Please contact your sales representative or our customer service department for more information.\"\r\n );\r\n default:\r\n return msg;\r\n }\r\n },\r\n /**\r\n * Function to Make the Budget Enrollment\r\n * **Validate\r\n * **Backend Save\r\n * **Success/Error\r\n * @param {*} data\r\n * @param {*} successCallback\r\n * @param {*} errorCallback\r\n */\r\n makeBudgetEnrollment: function (data, successCallback, errorCallback) {\r\n if (data) {\r\n var self = this;\r\n var validObj = self.validateBudgetEnrollment(data);\r\n\r\n if (!validObj.errs) {\r\n self.saveBudgetEnrollment({\r\n data: {\r\n CustomerBudgetRequest: validObj,\r\n },\r\n callback: function (rtnData) {\r\n if (rtnData.Successful) {\r\n if (typeof successCallback === \"function\") {\r\n successCallback(rtnData);\r\n }\r\n } else {\r\n if (typeof errorCallback === \"function\") {\r\n errorCallback([{ text: self.parseBackendStatus(rtnData.BudgetEnrollmentStatus) }]); //error message\r\n }\r\n }\r\n },\r\n });\r\n } else {\r\n if (typeof errorCallback === \"function\") {\r\n errorCallback(validObj.errs);\r\n }\r\n }\r\n }\r\n },\r\n /**\r\n * Backend Save Function for Budget Enrollment\r\n * @param {*} args\r\n */\r\n saveBudgetEnrollment: function (args) {\r\n if (args) {\r\n cw.webservices.getJson(\"S1AccountManager/enroll-new-budget\", args.data, function (rtnData) {\r\n if (typeof args.callback === \"function\") {\r\n args.callback(rtnData);\r\n }\r\n });\r\n }\r\n },\r\n /**\r\n * Budget Enrollment Data Validation\r\n * @param {*} args\r\n */\r\n validateBudgetEnrollment: function (args) {\r\n var self = this,\r\n errs = [];\r\n\r\n if (!args) {\r\n errs.push({ text: \"Invalid Customer Budget Response\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return parseFloat(x.MonthlyPaymentAmount) && parseFloat(x.MonthlyPaymentAmount) === 0;\r\n })\r\n ) {\r\n errs.push({ text: \"Invalid Montly Payment Amount\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return parseFloat(x.TotalPlanCoverage) && parseFloat(x.TotalPlanCoverage) === 0;\r\n })\r\n ) {\r\n errs.push({ text: \"Total Plan Coverage must be greater than 0\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return x.CoverageType === self.CoverageType.Unknown;\r\n })\r\n ) {\r\n errs.push({ text: \"Invalid Coverage Type\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return (\r\n !x.BudgetEffectiveDate || !x.BudgetEffectiveDate.StartDate || !x.BudgetEffectiveDate.EndDate\r\n );\r\n })\r\n ) {\r\n errs.push({ text: \"Invalid Effective Date Range\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return parseInt(x.NumberOfPayments) && parseInt(x.NumberOfPayments) < 1;\r\n })\r\n ) {\r\n errs.push({ text: \"Number of Payments must be greater than 0\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return !x.AccountMap || !x.AccountMap.RemoteSystemAccountNumber;\r\n })\r\n ) {\r\n errs.push({ text: \"Invalid Account for budget\" });\r\n }\r\n if (\r\n args.some(function (x) {\r\n return !x.LocationBudgetsItems || (x.LocationBudgetsItems && x.LocationBudgetsItems.length < 1);\r\n })\r\n ) {\r\n errs.push({ text: \"Budget Locations must contain at least one entry\" });\r\n }\r\n\r\n if (errs.length === 0) {\r\n return Object.freeze(args);\r\n }\r\n\r\n return { errs: errs };\r\n },\r\n /**\r\n * Additional Markup for Budget Enrollment Modal\r\n * @param {*} productId\r\n */\r\n getFuelProductUsageMarkup: function (productId) {\r\n return (\r\n '\t<div class=\"form-group col-xs-12 pt20\">' +\r\n '\t\t<label class=\"form-label\"> ' +\r\n cw.utility.utilityEnumToText(productId) +\r\n \"</label>\" +\r\n '\t\t<select class=\"form-control\" id=\"usage-select\">' +\r\n '\t\t\t<option value=\"\">--Select--</option>' +\r\n '\t\t\t<option value=\"650\">Heat Only</option>' +\r\n '\t\t\t<option value=\"750\">Heat and Hot Water</option>' +\r\n \"\t\t</select>\" +\r\n \"\t</div>\"\r\n );\r\n },\r\n /**\r\n * Iterate over Locations and extract Budget Items\r\n * @param {*} loc\r\n * @param {*} search\r\n */\r\n extractBudgetItemFromServiceLocation: function (loc, search) {\r\n if (\r\n loc &&\r\n loc.length > 0 &&\r\n search &&\r\n search.ProductId &&\r\n search.CustomerId &&\r\n search.DeliveryPointId\r\n ) {\r\n var rtn = {};\r\n loc.forEach(function (dp, idx) {\r\n if (\r\n dp.LocationBudgetEligibility &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.length > 0\r\n ) {\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.forEach(function (item, idx) {\r\n if (\r\n item.ProductId === search.ProductId &&\r\n item.CustomerId === search.CustomerId &&\r\n item.DeliveryPointId === search.DeliveryPointId\r\n ) {\r\n rtn = item;\r\n }\r\n });\r\n }\r\n if (rtn) {\r\n return;\r\n }\r\n });\r\n return rtn;\r\n }\r\n },\r\n getCapPriceEndDate: function () {\r\n var now = moment();\r\n var capPriceDate = moment(now.year() + \"-5-31\");\r\n if (capPriceDate.isBefore(now)) {\r\n return capPriceDate.add(1, \"year\").format(\"L\");\r\n }\r\n return capPriceDate.format(\"L\");\r\n },\r\n /**\r\n * Draw Modal to request more information on Budget Enroll - so many callbacks\r\n * @param {*} $this\r\n * @param {*} mr\r\n */\r\n drawMoreInfoModal: function ($this, mr) {\r\n var self = this;\r\n var productId = $this.data(\"productId\");\r\n var data = mr.getData(\"data\");\r\n var budgetItem = self.extractBudgetItemFromServiceLocation(data.ServiceLocations, {\r\n ProductId: productId,\r\n CustomerId: $this.data(\"customerId\"),\r\n DeliveryPointId: $this.data(\"deliveryId\"),\r\n });\r\n var checkUsage = budgetItem ? budgetItem.AskForUsage : false;\r\n var checkCap = budgetItem ? budgetItem.AskForCapPlan : false;\r\n\r\n var getProductInfoMarkup = function (args, callback) {\r\n var prodMarkup =\r\n '<div class=\"more-info-content-wrapper clearfix\">' +\r\n '\t<div class=\"more-info-content\">' +\r\n '<div class=\"pt20 pb20\">';\r\n\r\n var productInfoMarkupCallback = function () {\r\n if (typeof callback === \"function\") {\r\n callback(prodMarkup + \"</div></div>\");\r\n }\r\n };\r\n\r\n if ((checkCap || checkUsage) && self.fuelUtils.includes(productId)) {\r\n if (checkUsage) {\r\n prodMarkup +=\r\n '\t<div class=\"usage-info\" data-product-id=\"' +\r\n productId +\r\n '\" data-customer-id=\"' +\r\n $this.data(\"customerId\") +\r\n '\">' +\r\n \"\t\t<div> We were unable to retrieve historical fuel usage to determine the best Budget Payment for you. Please fill out the following information:</div>\" +\r\n \"\t</div>\" +\r\n self.getFuelProductUsageMarkup(productId);\r\n }\r\n\r\n if (checkCap && budgetItem.CapPricePlan) {\r\n cw.templating.DownloadTemplateHtml(\r\n \"ApplicationPricePlan.html\",\r\n cw.appEnum.TemplateType.CwWidget,\r\n function (templateContents) {\r\n var $planPreview = $(\r\n cw.pages.application.renderPricePlans(\r\n templateContents,\r\n [budgetItem.CapPricePlan],\r\n 1,\r\n false\r\n )\r\n );\r\n var $planHighlights = $planPreview\r\n .find(\".plan-highlights > ul > li:first\")\r\n .append(\"<li><strong> Plan EndDate: \" + self.getCapPriceEndDate() + \"</strong></li>\");\r\n $planPreview.find(\".enrollment-select\").remove();\r\n\r\n prodMarkup +=\r\n '\t<div class=\"form-group col-xs-12 cap-info\">' +\r\n '\t\t\t\t<label class=\"form-label pb5\"> Would you like to Cap your Price? </label>' +\r\n '\t\t\t\t<div class=\"shipley-checkbox\">' +\r\n '\t\t\t\t\t<input id=\"yes-price-cap\" name=\"price-cap\" type=\"radio\" value=\"yes\"> ' +\r\n '\t\t\t\t\t<label for=\"yes-price-cap\"> Yes, Cap my Price @ ' +\r\n '\t\t\t\t\t\t<span class=\"shipley-blue\" style=\"font-weight: 600\"> ' +\r\n budgetItem.CapPricePlan.PriceFormatted +\r\n \"/gal</span>\" +\r\n \"\t\t\t\t\t</label>\" +\r\n \"\t\t\t\t</div>\" +\r\n '\t\t\t\t<div class=\"shipley-checkbox\">' +\r\n '\t\t\t\t\t<input id=\"no-price-cap\" name=\"price-cap\" type=\"radio\" value=\"no\" checked> ' +\r\n '\t\t\t\t\t<label for=\"no-price-cap\"> No, keep my estimated budget price @ ' +\r\n '\t\t\t\t\t\t<span class=\"shipley-blue\" style=\"font-weight: 600\"> $' +\r\n budgetItem.ProductUnitCost +\r\n \"/gal\" +\r\n \"</span>\" +\r\n \" \t\t\t\t\t</label>\" +\r\n \"\t\t\t\t</div>\" +\r\n '\t\t\t\t<div class=\"plan-details-wrapper pt20 pb20 mt20 hidden\"> ' +\r\n '\t\t\t\t\t<div class=\"plan-details fs-xs-12\">' +\r\n $planPreview[0].outerHTML +\r\n \"\t\t\t\t\t</div>\" +\r\n \"\t\t\t\t</div>\" +\r\n \"\t\t\t</div>\";\r\n\r\n productInfoMarkupCallback();\r\n }\r\n );\r\n } else {\r\n productInfoMarkupCallback();\r\n }\r\n }\r\n };\r\n getProductInfoMarkup(data, function (productMarkup) {\r\n cw.modal.Open({\r\n data: {\r\n mr: mr,\r\n budgetItem: budgetItem,\r\n },\r\n title: \"Product Requires More Information\",\r\n modalBody: $(productMarkup),\r\n buttons: [\r\n {\r\n label: '<i class=\"fa fa-times\"></i> Cancel',\r\n cssClass: \"btn-white btn-xs-block\",\r\n action: function (dialogRef) {\r\n dialogRef.close();\r\n },\r\n },\r\n {\r\n label: '<i class=\"fa fa-paper-plane\"></i> Update',\r\n cssClass: \"btn-secondary btn-xs-block update\",\r\n action: function (mref) {\r\n var item = mref.getData(\"budgetItem\");\r\n var mr = mref.getData(\"mr\");\r\n var $chxBox = mref.$modalBody.find('[name=\"price-cap\"]:checked');\r\n var $usageInfo = mref.$modalBody.find(\".usage-info\");\r\n var usageObj = {};\r\n\r\n if ($usageInfo.length > 0) {\r\n usageObj = {\r\n productId: $usageInfo.data(\"productId\"),\r\n customerId: $usageInfo.data(\"customerId\"),\r\n usageVal: parseInt(mref.$modalBody.find(\"#usage-select\").val()),\r\n };\r\n }\r\n self.recalculateBudgetSummary(\r\n mr,\r\n $chxBox.val() === \"yes\" ? item : false,\r\n $chxBox.val() === \"no\" ? item : false,\r\n usageObj\r\n );\r\n\r\n //then rerender the html (rebind, etc)\r\n self.getBudgetEnrollMarkup(\r\n {\r\n CustomerBudgetResponse: self.CustomerBudgetResponse,\r\n ServiceLocations: self.CustomerServiceLocations,\r\n AccountBalances: self.args.AccountBalances,\r\n callback: function (renderedTmpl) {\r\n var mr = mref.getData(\"mr\");\r\n mr.$modalBody.find(\".budget-enroll-wrapper\").empty().append($(renderedTmpl));\r\n\r\n var $moreInfo = mr.$modalBody.find(\".more-info\");\r\n if (!$moreInfo || $moreInfo.length < 1) {\r\n mr.$modalFooter.find(\".enroll\").removeClass(\"disabled\");\r\n }\r\n\r\n self.bindPriceChange($this, mr);\r\n self.bindEnrollmentModal(mr);\r\n },\r\n },\r\n item //requestedMoreInfoItem\r\n );\r\n\r\n mref.close();\r\n },\r\n },\r\n ],\r\n onShownCallback: function (modalRef) {\r\n var $capSelectRadio = modalRef.$modalBody.find('[name=\"price-cap\"]');\r\n var $usageSelect = modalRef.$modalBody.find(\"#usage-select\");\r\n var $planDetails = modalRef.$modalBody.find(\".plan-details-wrapper\");\r\n var $updateBtn = modalRef.$modalFooter.find(\".update\");\r\n\r\n $capSelectRadio.on(\"change\", function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n\r\n if ($this.val() === \"yes\") {\r\n $planDetails.removeClass(\"hidden\");\r\n } else {\r\n $planDetails.addClass(\"hidden\");\r\n }\r\n });\r\n\r\n if ($usageSelect.length > 0) {\r\n $updateBtn.addClass(\"disabled\");\r\n }\r\n\r\n $usageSelect.on(\"change\", function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n if (parseInt($this.val()) > 0) {\r\n $updateBtn.removeClass(\"disabled\");\r\n } else {\r\n $updateBtn.addClass(\"disabled\");\r\n }\r\n });\r\n },\r\n });\r\n });\r\n },\r\n /**\r\n *\tBind Price Change Interactions\r\n * @param {any} $this\r\n * @param {any} mr\r\n */\r\n bindPriceChange: function ($this, mr) {\r\n var self = this;\r\n var $priceChange = mr.$modalBody.find(\".change-price-plan\");\r\n\r\n $priceChange.off(\"click\");\r\n $priceChange.on(\"click\", function (e) {\r\n e.preventDefault();\r\n self.drawMoreInfoModal($(this), mr);\r\n });\r\n },\r\n /**\r\n * Bind Enrollment Modal Interactions\r\n * @param {*} mr\r\n */\r\n bindEnrollmentModal: function (mr) {\r\n var self = this;\r\n var $moreInfo = mr.$modalBody.find(\".more-info\");\r\n\r\n $moreInfo.off(\"click\");\r\n $moreInfo.on(\"click\", function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n self.drawMoreInfoModal($this, mr);\r\n });\r\n },\r\n /**\r\n * Bind Account Selector if Multiple accounts are eligible for Budget Enroll\r\n * @param {*} mr\r\n */\r\n bindMultipleBillingAccountSelector: function (mr) {\r\n var self = this,\r\n $wrapperEl = mr.$modalBody.find(\".budget-breakdown\"),\r\n $accountChx = $wrapperEl.find('[name=\"account-select\"]'),\r\n $accountSelect = $wrapperEl.find(\".account-select\");\r\n\r\n $accountChx.off(\"change\");\r\n $accountChx.on(\"change\", function (e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n var customerId = $this.val(),\r\n tableRow = $wrapperEl.find(\".budget-breakdown-table > tbody\");\r\n\r\n if ($this.is(\":checked\")) {\r\n tableRow.find(\"tr.account-\" + customerId).each(function (idx, v) {\r\n $(this).removeClass(\"hidden\");\r\n });\r\n } else {\r\n tableRow.find(\"tr.account-\" + customerId).each(function (idx, v) {\r\n $(this).addClass(\"hidden\");\r\n });\r\n }\r\n\r\n //if all checkboxes are unchecked, disable enroll button\r\n if (!$accountChx.is(\":checked\")) {\r\n mr.$modalFooter.find(\".enroll\").addClass(\"disabled\");\r\n } else {\r\n mr.$modalFooter.find(\".enroll\").removeClass(\"disabled\");\r\n }\r\n self.recalculateBudgetSummary(mr);\r\n });\r\n },\r\n /**\r\n * Determine Budget Enrollment Status and Set Button to appropriate status\r\n * @param {*} args\r\n */\r\n getBudgetEnrollButtonStatus: function (args) {\r\n if (args.ServiceLocations && args.ServiceLocations.length > 0) {\r\n var requiresAdditionalInfo = false;\r\n args.ServiceLocations.forEach(function (dp, idx) {\r\n if (\r\n dp.LocationBudgetEligibility &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.length > 0\r\n ) {\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.forEach(function (item, idx) {\r\n if (item.BudgetNeedsMoreInfo) {\r\n requiresAdditionalInfo = true;\r\n return false;\r\n }\r\n });\r\n }\r\n if (requiresAdditionalInfo) {\r\n return false;\r\n }\r\n });\r\n\r\n if (requiresAdditionalInfo) {\r\n return \" disabled\";\r\n }\r\n\r\n return \"\";\r\n }\r\n },\r\n /**\r\n * Get Budget Balance object for Customer\r\n * @param {*} customerId\r\n * @param {*} ServiceLocations\r\n * @param {*} accountBalance\r\n * @param {*} customerBudgetResponse\r\n */\r\n getBudgetBalanceByCustomer: function (\r\n customerId,\r\n ServiceLocations,\r\n accountBalance,\r\n customerBudgetResponse\r\n ) {\r\n if (ServiceLocations && ServiceLocations.length > 0 && customerId && parseInt(customerId)) {\r\n var self = this,\r\n fuelAmount = 0,\r\n serviceAmount = 0,\r\n cusId = parseInt(customerId);\r\n\r\n var eligibleLocation = ServiceLocations.filter(function (x) {\r\n return x.LocationBudgetEligibility.IsEligible;\r\n })[0];\r\n\r\n eligibleLocation.LocationBudgetEligibility.BudgetItemsCovered.filter(function (y) {\r\n return y.CustomerId === cusId;\r\n }).forEach(function (loc) {\r\n //fuel\r\n if (self.fuelUtils.includes(loc.ProductId)) {\r\n fuelAmount += loc.ProductExtendedPrice;\r\n }\r\n //service\r\n if (self.serviceUtils.includes(loc.ProductId)) {\r\n serviceAmount += loc.ProductExtendedPrice;\r\n }\r\n });\r\n\r\n var totalPlanCoverage =\r\n parseFloat(self.roundCost(fuelAmount)) +\r\n parseFloat(self.roundCost(serviceAmount)) +\r\n parseFloat(self.roundCost(accountBalance));\r\n var monthlyCoverage = parseFloat(totalPlanCoverage)\r\n ? totalPlanCoverage / customerBudgetResponse.NumberOfPayments\r\n : 0;\r\n\r\n return {\r\n IsEligible: true,\r\n NumberOfPayments: customerBudgetResponse.NumberOfPayments,\r\n BudgetEffectiveDate: customerBudgetResponse.BudgetEffectiveDate,\r\n CoverageType: customerBudgetResponse.CoverageType,\r\n CoverageTypeFormatted: customerBudgetResponse.CoverageTypeFormatted,\r\n ServiceLocations: eligibleLocation,\r\n TotalAssociatedFees: 0,\r\n TotalFuelCoverage: self.roundCost(fuelAmount),\r\n TotalPlanCoverage: totalPlanCoverage,\r\n TotalServiceContractCoverage: self.roundCost(serviceAmount),\r\n MonthlyPaymentAmount: self.roundCost(monthlyCoverage),\r\n MonthlyPaymentAmountFormatted: \"$\" + self.roundCost(monthlyCoverage).toFixed(2),\r\n OutstandingAccountBalance: accountBalance,\r\n };\r\n }\r\n },\r\n /**\r\n * Round $ Amount to the nearest value passed in\r\n * @param {*} amt\r\n * @param {*} roundTo\r\n */\r\n roundCost: function (amt, roundTo) {\r\n if (!roundTo) {\r\n roundTo = 5;\r\n }\r\n return Math.ceil(amt / roundTo) * roundTo;\r\n },\r\n /**\r\n * Determines if the budget items are the same\r\n * @param {*} item1\r\n * @param {*} item2\r\n */\r\n isSameBudgetItem: function (item1, item2) {\r\n return (\r\n cw.utility.isValidObj(item1) &&\r\n cw.utility.isValidObj(item2) &&\r\n item1.CustomerId === item2.CustomerId &&\r\n item1.DeliveryPointId === item2.DeliveryPointId &&\r\n item1.ProductId === item2.ProductId &&\r\n item1.AssociatedBudgetItems &&\r\n item2.AssociatedBudgetItems &&\r\n cw.utility.arrayEquals(\r\n item1.AssociatedBudgetItems.CoveredEquipmentIds,\r\n item2.AssociatedBudgetItems.CoveredEquipmentIds\r\n )\r\n );\r\n },\r\n /**\r\n * Recalculate Budget Summary\r\n * @param {*} mr // Modal Reference\r\n * @param {*} capPriceItem //customer Id who chose Cap Price\r\n * @param {*} declineCapPriceItem // customer Id who declined Cap Price\r\n */\r\n recalculateBudgetSummary: function (mr, capPriceItem, declineCapPriceItem, manualUsageObj) {\r\n if (mr) {\r\n var self = this,\r\n //copy object, modify, then add to global to preserve object state when canceling modal\r\n customerBudget = JSON.parse(\r\n JSON.stringify(\r\n self.CustomerBudgetResponse ? self.CustomerBudgetResponse : self.args.CustomerBudgetResponse\r\n )\r\n ),\r\n customerBudgetLocation = self.CustomerServiceLocations.map(function (x) {\r\n return x.LocationBudgetEligibility;\r\n });\r\n\r\n var customerBalance = self.args.AccountBalances,\r\n $budgetCoverage = mr.$modalBody.find(\".budget-coverage\"),\r\n $summaryWrapper = mr.$modalBody.find(\".budget-summary-items\"),\r\n $planSubTotal = mr.$modalBody.find(\".total-amount\"),\r\n $planMonthlyTotal = mr.$modalBody.find(\".budget-amount\"),\r\n $fuelAmount = $summaryWrapper.find(\".fuel-amount\"),\r\n $serviceAmount = $summaryWrapper.find(\".service-amount\"),\r\n $oustandingAmount = $summaryWrapper.find(\".outstanding-amount\"),\r\n $feeAmount = $summaryWrapper.find(\".additional-fee-amount\"),\r\n $wrapperEl = mr.$modalBody.find(\".budget-breakdown\"),\r\n $usageInfo = mr.$modalFooter.find(\".usage-info\"),\r\n tableRow = $wrapperEl.find(\".budget-breakdown-table > tbody\"),\r\n fuelRow = tableRow.find(\"tr.fuel-product\"),\r\n serviceRow = tableRow.find(\"tr.service-product\"),\r\n fuelAmount = 0,\r\n serviceAmount = 0,\r\n outstandingAmount = 0,\r\n feeAmount = 0,\r\n customerIds = [];\r\n\r\n //set this to false by default if undefined\r\n if (typeof capPriceItem === \"undefined\" || capPriceItem === \"\") {\r\n capPriceItem = false;\r\n }\r\n\r\n /* Get selected customer numbers to add a budget to and calculuate */\r\n if (fuelRow && fuelRow.length > 0) {\r\n fuelRow.each(function () {\r\n if (!$(this).hasClass(\"hidden\")) {\r\n var custId = $(this).data(\"customerId\");\r\n if (custId && !customerIds.includes(custId)) {\r\n customerIds.push(custId);\r\n }\r\n }\r\n });\r\n }\r\n if (serviceRow && serviceRow.length > 0) {\r\n serviceRow.each(function () {\r\n if (!$(this).hasClass(\"hidden\")) {\r\n var custId = $(this).data(\"customerId\");\r\n if (custId && !customerIds.includes(custId)) {\r\n customerIds.push(custId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n //extract individual customer account totals because there can be multiple customers per S1. Allow sign up for individual accounts.\r\n customerBudget.LocationBudgetsItems = [];\r\n customerBudget.AccountMap = [];\r\n var customerBudgetRequest = [];\r\n if (customerIds && customerIds.length > 0) {\r\n customerIds.forEach(function (cusId, i) {\r\n var totalFuel = 0,\r\n totalService = 0,\r\n customerFee = 0,\r\n totalPlan = 0;\r\n\r\n var myBalanceItem =\r\n customerBalance && customerBalance.length > 0\r\n ? customerBalance.find(function (x) {\r\n return (\r\n parseInt(x.RemoteSystemAccountNumber) > 0 &&\r\n parseInt(x.RemoteSystemAccountNumber) === cusId\r\n );\r\n })\r\n : customerBalance;\r\n var myBudgetLocations = customerBudgetLocation.map(function (loc) {\r\n return loc.BudgetItemsCovered.filter(function (item) {\r\n return item.CustomerId === cusId;\r\n });\r\n });\r\n var customerOutstandingAmt =\r\n typeof myBalanceItem.AvailableBalanceForBudgetEnroll !== \"undefined\" &&\r\n myBalanceItem.AvailableBalanceForBudgetEnroll > 0\r\n ? myBalanceItem.AvailableBalanceForBudgetEnroll\r\n : myBalanceItem > 0\r\n ? myBalanceItem\r\n : 0;\r\n if (myBudgetLocations && myBudgetLocations.length > 0) {\r\n myBudgetLocations.forEach(function (budgetLoc, j) {\r\n //per location\r\n budgetLoc.forEach(function (loc, idx) {\r\n //per product per location\r\n\r\n var capLocationPrice = self.isSameBudgetItem(capPriceItem, loc) && loc.CapPricePlan;\r\n var declineLocationCapPrice = self.isSameBudgetItem(declineCapPriceItem, loc);\r\n\r\n if (self.fuelUtils.includes(loc.ProductId)) {\r\n //set default values\r\n loc.useCapPrice =\r\n loc.useCapPrice && !self.isSameBudgetItem(loc, declineCapPriceItem)\r\n ? loc.useCapPrice\r\n : false;\r\n loc.AssociatedFee = loc.useCapPrice ? loc.AssociatedFee : 0;\r\n loc.RequestedMoreInfo = loc.RequestedMoreInfo ? loc.RequestedMoreInfo : false;\r\n var unitCost = loc.useCapPrice ? loc.CapPricePlan.Price : loc.ProductUnitCost;\r\n\r\n if (capLocationPrice) {\r\n //change unit cost to cap if customer chooses to cap\r\n unitCost = loc.CapPricePlan.Price;\r\n loc.ProductUnitCostCap = loc.CapPricePlan.Price;\r\n loc.useCapPrice = true;\r\n loc.AssociatedFee = loc.CapPricePlan.Fee //don't forget the fee\r\n ? loc.CapPricePlan.Fee\r\n : loc.ProductId === cw.appEnum.ProductCode.Propane\r\n ? self.AssociatedFuelCapFeeFallback.Propane\r\n : self.AssociatedFuelCapFeeFallback.HeatingOil;\r\n }\r\n\r\n if (\r\n manualUsageObj &&\r\n loc.ProductId === manualUsageObj.productId &&\r\n loc.CustomerId === manualUsageObj.customerId\r\n ) {\r\n if (parseInt(manualUsageObj.usageVal) > 0) {\r\n loc.ProductExtendedPrice =\r\n loc.ProductUnitCost * parseInt(manualUsageObj.usageVal);\r\n loc.ProductAnnualUsage = parseInt(manualUsageObj.usageVal);\r\n loc.UsageChanged = true;\r\n }\r\n }\r\n\r\n loc.ProductExtendedPrice = unitCost * loc.ProductAnnualUsage;\r\n totalFuel += loc.ProductExtendedPrice;\r\n }\r\n\r\n //remove the link to request more info\r\n if (\r\n capLocationPrice ||\r\n declineLocationCapPrice ||\r\n cw.utility.isValidObj(manualUsageObj)\r\n ) {\r\n loc.AskForCapPlan = false;\r\n loc.BudgetNeedsMoreInfo = false;\r\n loc.RequestedMoreInfo = true;\r\n }\r\n\r\n if (self.serviceUtils.includes(loc.ProductId)) {\r\n totalService += loc.ProductExtendedPrice;\r\n }\r\n\r\n customerFee += loc.AssociatedFee;\r\n customerBudget.LocationBudgetsItems.push(loc);\r\n });\r\n });\r\n }\r\n\r\n //Get our per customer totals in order\r\n var totalPlan =\r\n parseFloat(totalFuel) +\r\n parseFloat(totalService) +\r\n parseFloat(customerFee) +\r\n parseFloat(customerOutstandingAmt);\r\n\r\n fuelAmount += totalFuel;\r\n serviceAmount += totalService;\r\n feeAmount += customerFee;\r\n outstandingAmount += customerOutstandingAmt;\r\n\r\n //Account Map - make sure we assign S1 account as well\r\n var mapping = \"\";\r\n self.CustomerServiceLocations.forEach(function (sl) {\r\n if (\r\n !customerBudget.AccountMap.some(function (x) {\r\n return (\r\n parseInt(x.RemoteSystemAccountNumber) &&\r\n parseInt(x.RemoteSystemAccountNumber) === cusId\r\n );\r\n })\r\n ) {\r\n mapping = sl.RemoteSystemMap.find(function (r) {\r\n return (\r\n parseInt(r.RemoteSystemAccountNumber) &&\r\n parseInt(r.RemoteSystemAccountNumber) === cusId\r\n );\r\n });\r\n mapping.ShipleyOneNumberId = self.args.S1AccountId;\r\n customerBudget.AccountMap.push(mapping);\r\n }\r\n });\r\n\r\n var thisCustomerRequest = {\r\n AccountMap: mapping,\r\n LocationBudgetsItems: customerBudget.LocationBudgetsItems,\r\n RequestedCapPlan: capPriceItem && capPriceItem.CustomerId === cusId,\r\n BudgetEffectiveDate: {\r\n StartDate: customerBudget.BudgetEffectiveDate.StartDate,\r\n EndDate: customerBudget.BudgetEffectiveDate.EndDate,\r\n },\r\n IsEligible: customerBudget.IsEligible,\r\n MonthlyPaymentAmount: self.roundCost(totalPlan / customerBudget.NumberOfPayments),\r\n NumberOfPayments: customerBudget.NumberOfPayments,\r\n TotalPlanCoverage: totalPlan,\r\n OutstandingAccountBalance: customerOutstandingAmt,\r\n TotalFuelCoverage: totalFuel,\r\n TotalServiceContractCoverage: totalService,\r\n TotalAssociatedFees: customerFee,\r\n RemoteSystemId: mapping.RemoteSystemId,\r\n };\r\n thisCustomerRequest.CoverageType = self.getBudgetCoverageType(thisCustomerRequest);\r\n customerBudgetRequest.push(thisCustomerRequest);\r\n });\r\n }\r\n\r\n var totalPlanCoverage =\r\n parseFloat(fuelAmount) +\r\n parseFloat(serviceAmount) +\r\n parseFloat(outstandingAmount) +\r\n parseFloat(feeAmount);\r\n var monthlyPlanCoverage = parseFloat(totalPlanCoverage)\r\n ? totalPlanCoverage / customerBudget.NumberOfPayments\r\n : 0;\r\n customerBudget.TotalFuelCoverage = fuelAmount;\r\n customerBudget.TotalServiceContractCoverage = serviceAmount;\r\n customerBudget.OutstandingAccountBalance = outstandingAmount;\r\n customerBudget.TotalAssociatedFees = feeAmount;\r\n customerBudget.TotalPlanCoverage = totalPlanCoverage;\r\n customerBudget.MonthlyPaymentAmount = self.roundCost(monthlyPlanCoverage); //round to nearest 5\r\n customerBudget.CoverageType = self.getBudgetCoverageType(customerBudget);\r\n\r\n $fuelAmount\r\n .val(customerBudget.TotalFuelCoverage)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.TotalFuelCoverage.toFixed(2));\r\n $serviceAmount\r\n .val(customerBudget.TotalServiceContractCoverage)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.TotalServiceContractCoverage.toFixed(2));\r\n $oustandingAmount\r\n .val(customerBudget.OutstandingAccountBalance)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.OutstandingAccountBalance.toFixed(2));\r\n $feeAmount\r\n .val(customerBudget.TotalAssociatedFees)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.TotalAssociatedFees.toFixed(2));\r\n $planSubTotal\r\n .val(customerBudget.TotalPlanCoverage)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.TotalPlanCoverage.toFixed(2));\r\n $planMonthlyTotal\r\n .val(customerBudget.MonthlyPaymentAmount)\r\n .text(\"\")\r\n .text(\"$\" + customerBudget.MonthlyPaymentAmount.toFixed(2) + \"/mo\");\r\n $budgetCoverage.text(\r\n \"Budget Coverage: \" + self.getBudgetCoverageTypeName(customerBudget.CoverageType)\r\n );\r\n\r\n self.args.CustomerBudgetRequest = customerBudgetRequest;\r\n self.CustomerBudgetResponse = customerBudget;\r\n }\r\n },\r\n /**\r\n * Get Budget Coverage Type\r\n * @param {*} budget\r\n */\r\n getBudgetCoverageType: function (budget) {\r\n var self = this;\r\n if (budget) {\r\n if (\r\n budget.TotalFuelCoverage &&\r\n parseFloat(budget.TotalFuelCoverage) != 0 &&\r\n budget.TotalServiceContractCoverage &&\r\n parseFloat(budget.TotalServiceContractCoverage) != 0\r\n ) {\r\n return self.CoverageType.FuelandService;\r\n }\r\n\r\n if (\r\n budget.TotalFuelCoverage &&\r\n parseFloat(budget.TotalFuelCoverage) != 0 &&\r\n (!budget.TotalServiceContractCoverage || parseFloat(budget.TotalServiceContractCoverage) != 0)\r\n ) {\r\n return self.CoverageType.Fuel;\r\n }\r\n\r\n if (\r\n budget.TotalServiceContractCoverage &&\r\n parseFloat(budget.TotalServiceContractCoverage) != 0 &&\r\n (!budget.TotalFuelCoverage || parseFloat(budget.TotalFuelCoverage) != 0)\r\n ) {\r\n return self.CoverageType.Service;\r\n }\r\n }\r\n return self.CoverageType.Unknown;\r\n },\r\n /**\r\n * Get Coverage Type Name from Enum\r\n * @param {*} coverage\r\n */\r\n getBudgetCoverageTypeName: function (coverage) {\r\n var self = this;\r\n switch (coverage) {\r\n case self.CoverageType.Fuel:\r\n return \"Fuel\";\r\n case self.CoverageType.Service:\r\n return \"Service\";\r\n case self.CoverageType.FuelandService:\r\n return \"Fuel And Service\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n },\r\n /**\r\n * Get Budget Enrollment Hmtl Markup\r\n * @param {*} args\r\n * @param {*} requestedMoreInfoItem\r\n */\r\n getBudgetEnrollMarkup: function (args, requestedMoreInfoItem) {\r\n if (args) {\r\n var self = this;\r\n var markupData = {};\r\n var budget = args.CustomerBudgetResponse;\r\n\r\n //info markup\r\n markupData.BudgetInfoItems =\r\n \"<div>\" +\r\n '<div class=\"pt5 pb5\">Budget Coverage Date: ' +\r\n budget.BudgetEffectiveDate.StartDateFormatted +\r\n \" - \" +\r\n budget.BudgetEffectiveDate.EndDateFormatted +\r\n \"</div>\" +\r\n '<div class=\"pt5 pb5\">Number of Budget Payments: ' +\r\n budget.NumberOfPayments +\r\n \"</div>\" +\r\n '<div class=\"pt5 pb5 budget-coverage\">Budget Coverage: ' +\r\n self.getBudgetCoverageTypeName(budget.CoverageType) +\r\n \"</div>\" +\r\n \"</div>\";\r\n\r\n markupData.PlanSubTotal = budget.TotalPlanCoverage ? budget.TotalPlanCoverage.toFixed(2) : 0.0;\r\n markupData.BudgetSummaryItems =\r\n \"<ul>\" +\r\n '<li class=\"summary-item\"><div class=\"col-xs-12 pl0 pr0 clearfix\"><span class=\"pull-left\">Fuel Usage: </span> <span class=\"pull-right fuel-amount\">$' +\r\n budget.TotalFuelCoverage.toFixed(2) +\r\n \"</span></div></li>\" +\r\n '<li class=\"summary-item\"><div class=\"col-xs-12 pl0 pr0 clearfix\"><span class=\"pull-left\">Service Contract: </span> <span class=\"pull-right service-amount\"> $' +\r\n budget.TotalServiceContractCoverage.toFixed(2) +\r\n \"</span></div></li>\" +\r\n '<li class=\"summary-item\"><div class=\"col-xs-12 pl0 pr0 clearfix\"><span class=\"pull-left\">Outstanding Balance: <i class=\"fa fa-regular fa-circle-question\" title=\"This represents your past due balance of 30 days or more.\"></i></span> <span class=\"pull-right outstanding-amount\">$' +\r\n budget.OutstandingAccountBalance.toFixed(2) +\r\n \"</span></div></li>\" +\r\n '<li class=\"summary-item\"><div class=\"col-xs-12 pl0 pr0 clearfix\"><span class=\"pull-left\">Additional Charges: </span> <span class=\"pull-right additional-fee-amount\">$' +\r\n budget.TotalAssociatedFees.toFixed(2) +\r\n \"</span></div></li>\" +\r\n \"</ul>\" +\r\n \"<div>\" +\r\n \"</div>\";\r\n\r\n //total markup\r\n markupData.TotalPlanCoverage = budget.MonthlyPaymentAmount\r\n ? budget.MonthlyPaymentAmount.toFixed(2)\r\n : 0.0;\r\n\r\n //breakdown markup\r\n markupData.BudgetBreakdownTables = \"\";\r\n\r\n //multiple billing account selector markup\r\n markupData.hasMultipleBillingAccounts = false;\r\n markupData.MultipleBillingAccountMarkup = \"\";\r\n\r\n args.ServiceLocations.forEach(function (dp, idx) {\r\n markupData.hasMultipleBillingAccounts =\r\n dp.RemoteSystemMap &&\r\n dp.RemoteSystemMap.length > 1 &&\r\n dp.LocationBudgetEligibility &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.map(function (x) {\r\n return x.CustomerId;\r\n }).length > 1;\r\n\r\n if (markupData.hasMultipleBillingAccounts) {\r\n dp.RemoteSystemMap.forEach(function (map) {\r\n var account = map.RemoteSystemAccountNumber;\r\n markupData.MultipleBillingAccountMarkup +=\r\n '<div class=\"shipley-checkbox\">' +\r\n '\t\t<input id=\"account-select-' +\r\n account +\r\n '\" name=\"account-select\" type=\"checkbox\" value=\"' +\r\n account +\r\n '\" checked>' +\r\n '\t\t\t<label for=\"account-select-' +\r\n account +\r\n '\">' +\r\n account +\r\n \"\t\t</label>\" +\r\n \"</div>\";\r\n });\r\n }\r\n\r\n var table =\r\n '<div class=\"location pb5\"><div class=\"text-center\">Location: ' +\r\n dp.StreetAddress +\r\n \"</div></div>\";\r\n var tableParts = \"\";\r\n\r\n if (\r\n dp.LocationBudgetEligibility &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered &&\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.length > 0\r\n ) {\r\n var hasService = false,\r\n hasFuel = false;\r\n var serviceBreakdown =\r\n '<table class=\"budget-breakdown-table table service-breakdown pt5\">' +\r\n \"\t<thead>\" +\r\n \"\t\t<tr>\" +\r\n '\t\t\t<th valign=\"top\">Contract</th>' +\r\n '\t\t\t<th valign=\"top\">Amount</th>' +\r\n '\t\t\t<th valign=\"top\">Price</th>' +\r\n '\t\t\t<th valign=\"top\">Extended Price</th>' +\r\n \"\t\t</tr>\" +\r\n \"\t</thead>\" +\r\n \"\t<tbody>\",\r\n fuelBreakdown =\r\n '<table class=\"budget-breakdown-table table fuel-breakdown pt5\">' +\r\n \"\t<thead>\" +\r\n \"\t\t<tr>\" +\r\n '\t\t\t<th valign=\"top\">Tank</th>' +\r\n '\t\t\t<th valign=\"top\">Tank Size</th>' +\r\n '\t\t\t<th valign=\"top\">Projected Annual Gallons</th>' +\r\n '\t\t\t<th valign=\"top\">Unit Price</th>' +\r\n '\t\t\t<th valign=\"top\">Extended Price</th>' +\r\n \"\t\t</tr>\" +\r\n \"\t</thead>\" +\r\n \"\t<tbody>\";\r\n\r\n dp.LocationBudgetEligibility.BudgetItemsCovered.forEach(function (item, idx) {\r\n var extendedPrice = item.ProductExtendedPrice ? item.ProductExtendedPrice.toFixed(2) : 0;\r\n\r\n //service contract\r\n if (item.ProductId === cw.appEnum.ProductCode.ServiceProduct) {\r\n hasService = true;\r\n serviceBreakdown +=\r\n '<tr class=\"service-product account-' +\r\n item.CustomerId +\r\n '\" data-customer-id=\"' +\r\n item.CustomerId +\r\n '\">' +\r\n '<td class=\"text-left\">' +\r\n (item.AssociatedBudgetItems.ItemDescription\r\n ? item.AssociatedBudgetItems.ItemDescription\r\n : \"\") +\r\n \"</td>\" +\r\n '<td class=\"\">' +\r\n (item.ProductAnnualUsage ? item.ProductAnnualUsage : \"\") +\r\n \"</td>\" +\r\n '<td class=\"\">$' +\r\n extendedPrice +\r\n \"</td>\" +\r\n '<td class=\"extended-price\" data-price=\"' +\r\n extendedPrice +\r\n '\">$' +\r\n extendedPrice +\r\n \"</td>\" +\r\n \"</tr>\";\r\n //fuel items\r\n } else if (self.fuelUtils.includes(item.ProductId)) {\r\n hasFuel = true;\r\n var moreInfoHtml = \"\";\r\n\r\n //product is ready for enrollment\r\n var moreInfoNotNeeded =\r\n item.ProductAnnualUsage &&\r\n !item.AskForCapPlan &&\r\n !item.BudgetNeedsMoreInfo &&\r\n !item.useCapPrice &&\r\n !item.RequestedMoreInfo;\r\n\r\n if (moreInfoNotNeeded) {\r\n moreInfoHtml = item.ProductAnnualUsage + \"<small> gallons</small>\";\r\n } else if (item.RequestedMoreInfo) {\r\n moreInfoHtml =\r\n item.ProductAnnualUsage +\r\n \"<small> gallons</small> <br />\" +\r\n '<a href=\"#\" class=\"change-price-plan\" data-product-id=\"' +\r\n item.ProductId +\r\n '\" data-ask-for-cap-plan=\"' +\r\n item.AskForCapPlan +\r\n '\" data-ask-for-usage=\"' +\r\n item.AskForUsage +\r\n '\" data-customer-id=\"' +\r\n item.CustomerId +\r\n '\" data-delivery-id=\"' +\r\n item.DeliveryPointId +\r\n '\"\"><i class=\"fa fa-exchange\"></i> ' +\r\n (item.useCapPrice && item.ProductUnitCostCap\r\n ? \"I don't want to cap my price\"\r\n : \"I want to cap my price\") +\r\n \"</a>\";\r\n } else if (item.BudgetNeedsMoreInfo) {\r\n moreInfoHtml =\r\n '<a href=\"#\" class=\"more-info\" data-product-id=\"' +\r\n item.ProductId +\r\n '\" data-ask-for-cap-plan=\"' +\r\n item.AskForCapPlan +\r\n '\" data-ask-for-usage=\"' +\r\n item.AskForUsage +\r\n '\" data-customer-id=\"' +\r\n item.CustomerId +\r\n '\" data-delivery-id=\"' +\r\n item.DeliveryPointId +\r\n '\"><i class=\"fa fa-exclamation-circle\"></i> Requires More Info</a>';\r\n }\r\n\r\n var productUnitCost =\r\n item.useCapPrice && item.ProductUnitCostCap\r\n ? \"$\" +\r\n item.ProductUnitCostCap.toFixed(3) +\r\n \"<small>/gal<span> (price capped) </span> </small>\"\r\n : item.ProductUnitCost\r\n ? \"$\" + item.ProductUnitCost.toFixed(3) + \"<small>/gal</small>\"\r\n : 0;\r\n\r\n fuelBreakdown +=\r\n '<tr class=\"fuel-product account-' +\r\n item.CustomerId +\r\n '\" data-customer-id=\"' +\r\n item.CustomerId +\r\n '\">' +\r\n '<td class=\"text-left\">' +\r\n (item.AssociatedBudgetItems.ItemDescription\r\n ? item.AssociatedBudgetItems.ItemDescription\r\n : \"\") +\r\n \"</td>\" +\r\n '<td class=\"\">' +\r\n (item.TankSize ? item.TankSize : \"\") +\r\n \"</td>\" +\r\n '<td class=\"\">' +\r\n moreInfoHtml +\r\n \"</td>\" +\r\n '<td class=\"\">' +\r\n productUnitCost +\r\n \"</td>\" +\r\n '<td class=\"extended-price\" data-price=\"' +\r\n extendedPrice +\r\n '\">$' +\r\n extendedPrice +\r\n \"</td>\" +\r\n \"</tr>\";\r\n }\r\n });\r\n\r\n tableParts +=\r\n (hasFuel ? fuelBreakdown + \"</tbody>\" : \"\") +\r\n (hasService ? serviceBreakdown + \"</tbody>\" : \"\");\r\n }\r\n table += tableParts + \"</table>\";\r\n markupData.BudgetBreakdownTables += table;\r\n });\r\n\r\n if (markupData.hasMultipleBillingAccounts) {\r\n markupData.MultipleBillingAccountMarkup =\r\n '<div class=\"multiple-billing-account-wrapper text-center\">' +\r\n \"\t<h5>Billing Accounts to include in budget</h5>\" +\r\n markupData.MultipleBillingAccountMarkup +\r\n \"</div>\";\r\n }\r\n\r\n if (typeof args.callback === \"function\") {\r\n cw.templating.GetRenderedTemplateHTML(\r\n self.enrollHtmlTmpl,\r\n cw.appEnum.TemplateType.CwWidget,\r\n markupData,\r\n function (renderedTmpl) {\r\n args.callback(renderedTmpl);\r\n }\r\n );\r\n }\r\n }\r\n },\r\n },\r\n },\r\n });\r\n})((window.cw = window.cw || {}), jQuery);\r\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 66810,\n\t\"./bs.js\": 66810,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["cw","$","window","jQuery","extend","pages","budgetManager","args","budgetDetails","budgetData","summaryChart","url","title","enrollHtmlTmpl","managerHtmlTmpl","s1AccountId","successCallback","CustomerBudgetResponse","CustomerServiceLocations","CoverageType","Unknown","Fuel","Service","FuelandService","heatingOilUsageValue","HeatingOnly","HeatingAndHotWater","fuelUtils","appEnum","ProductCode","HeatingOil","Propane","serviceUtils","ServiceProduct","AssociatedFuelCapFeeFallback","BudgetEnrollmentStatus","Successfull","BackendValidationFailed","FailedBackendCreation","FailedPriceChangeRequest","init","this","S1AccountId","initializePage","self","loadingIndicator","stop","$viewport","getCustomerBudgetDetails","callback","rtnData","templating","GetRenderedTemplateHTML","TemplateType","CwWidget","Data","renderedTmpl","empty","append","bindInteractions","$wrapperEl","$enrollBudget","find","each","idx","customer","data","$statusChart","$summaryPie","dataSet","x","Active","CustomerId","parent","addClass","makeStatusChart","makeSummaryChart","chartData","getData","el","thisData","labelColor","o","pointOffset","y","yaxis","xaxis","utility","formatAsMoney","PriceDisplayType","DollarsPerUnit","css","position","left","top","display","color","appendTo","getPlaceholder","fadeIn","on","e","preventDefault","$this","customerId","attr","removeClass","tab","hasClass","budgetEnroll","ServiceLocations","AccountBalances","$graphTarget","options","series","pie","show","radius","label","formatter","$html","TotalPlanCoverage","padding","background","outerHTML","threshold","legend","grid","hoverable","graphData","PaidToDate","toFixed","constants","shipleyBlue","AmountRemaining","ctaOrange","height","plot","ActualUsageAmount","shipleyGreen","bars","barWidth","align","fill","horizontal","ticks","alignTicksWithAxis","max","Math","round","axisLabel","tooltip","tooltipOpts","cssClass","content","xval","yval","flotItem","defaultTheme","webservices","getJson","cancelCallback","JSON","parse","stringify","modal","Open","modalBody","size","buttons","action","dialogRef","close","getBudgetEnrollButtonStatus","$modalFooter","start","makeBudgetEnrollment","CustomerBudgetRequest","Successful","alert","Alert","text","Message","errs","onShownCallback","modalRef","recalculateBudgetSummary","bindMultipleBillingAccountSelector","bindEnrollmentModal","getBudgetEnrollMarkup","parseBackendStatus","status","msg","errorCallback","validObj","validateBudgetEnrollment","saveBudgetEnrollment","push","some","parseFloat","MonthlyPaymentAmount","BudgetEffectiveDate","StartDate","EndDate","parseInt","NumberOfPayments","AccountMap","RemoteSystemAccountNumber","LocationBudgetsItems","length","Object","freeze","getFuelProductUsageMarkup","productId","utilityEnumToText","extractBudgetItemFromServiceLocation","loc","search","ProductId","DeliveryPointId","rtn","forEach","dp","LocationBudgetEligibility","BudgetItemsCovered","item","getCapPriceEndDate","now","capPriceDate","year","isBefore","add","format","drawMoreInfoModal","mr","prodMarkup","productInfoMarkupCallback","budgetItem","checkUsage","AskForUsage","checkCap","AskForCapPlan","productMarkup","mref","$chxBox","$modalBody","$usageInfo","usageObj","usageVal","val","$moreInfo","bindPriceChange","$capSelectRadio","$usageSelect","$planDetails","$updateBtn","includes","CapPricePlan","DownloadTemplateHtml","templateContents","$planPreview","application","renderPricePlans","remove","PriceFormatted","ProductUnitCost","$priceChange","off","$accountChx","tableRow","is","v","requiresAdditionalInfo","BudgetNeedsMoreInfo","getBudgetBalanceByCustomer","accountBalance","customerBudgetResponse","fuelAmount","serviceAmount","cusId","eligibleLocation","filter","IsEligible","ProductExtendedPrice","totalPlanCoverage","roundCost","monthlyCoverage","CoverageTypeFormatted","TotalAssociatedFees","TotalFuelCoverage","TotalServiceContractCoverage","MonthlyPaymentAmountFormatted","OutstandingAccountBalance","amt","roundTo","ceil","isSameBudgetItem","item1","item2","isValidObj","AssociatedBudgetItems","arrayEquals","CoveredEquipmentIds","capPriceItem","declineCapPriceItem","manualUsageObj","customerBudget","customerBudgetLocation","map","customerBalance","$budgetCoverage","$summaryWrapper","$planSubTotal","$planMonthlyTotal","$fuelAmount","$serviceAmount","$oustandingAmount","$feeAmount","fuelRow","serviceRow","outstandingAmount","feeAmount","customerIds","custId","customerBudgetRequest","i","totalFuel","totalService","customerFee","myBalanceItem","myBudgetLocations","customerOutstandingAmt","AvailableBalanceForBudgetEnroll","budgetLoc","j","capLocationPrice","declineLocationCapPrice","useCapPrice","AssociatedFee","RequestedMoreInfo","unitCost","Price","ProductUnitCostCap","Fee","ProductAnnualUsage","UsageChanged","totalPlan","mapping","sl","RemoteSystemMap","r","ShipleyOneNumberId","thisCustomerRequest","RequestedCapPlan","RemoteSystemId","getBudgetCoverageType","monthlyPlanCoverage","getBudgetCoverageTypeName","budget","coverage","requestedMoreInfoItem","markupData","BudgetInfoItems","StartDateFormatted","EndDateFormatted","PlanSubTotal","BudgetSummaryItems","BudgetBreakdownTables","hasMultipleBillingAccounts","MultipleBillingAccountMarkup","account","table","StreetAddress","tableParts","hasService","hasFuel","serviceBreakdown","fuelBreakdown","extendedPrice","ItemDescription","moreInfoHtml","productUnitCost","TankSize","webpackContext","req","id","webpackContextResolve","__webpack_require__","Error","code","keys","resolve","module","exports"],"sourceRoot":""}