{"version":3,"mappings":";y5EA4EA,MAAMA,GAAa,CACjB,aAAc,CAAE,EAChB,aAAc,CAAE,EAChB,gBAAiB,GACjB,mBACE,qHACF,gBAAiB,CAAE,EACnB,iBAAkB,GAClB,oBAAqB,KACrB,YAAa,CAAE,EACf,YAAa,CAAC,KAAK,EACnB,WAAY,GACZ,oBAAqB,GACrB,kBAAmB,GACnB,oBAAqB,GACrB,aAAc,GACd,eAAgB,EAClB,EAEO,SAASC,IAAoB,CAClC,SAASC,EAAaC,EAAMC,EAAU,GAAI,CACxC,MAAMC,EAAe,CAAE,GAAGL,GAAY,GAAGI,CAAS,EAElD,OAAOE,GAAU,SAASH,EAAME,CAAY,CAC7C,CAED,SAASE,EAAiBJ,EAAMC,EAAU,GAAI,CAC5C,MAAMC,EAAe,CACnB,mBACE,sGAKF,WAAY,GACZ,SAAU,CAAC,OAAQ,OAAQ,OAAO,EAClC,SAAU,CACR,UACA,UACA,aACA,WACA,OACA,UACA,gBACA,UACD,EACD,gBAAiB,GACjB,wBAAyB,GACzB,GAAGD,CACJ,EAED,OAAOE,GAAU,SAASH,EAAME,CAAY,CAC7C,CAED,MAAO,CAAE,aAAAH,EAAc,iBAAAK,CAAkB,CAC3C,CCpHA,MAAAL,eAAA,EAAAD,GAAA,EAEAO,GAAA,CACA,kBACA,OACA,YACA,WACA,WACA,WACA,MACA,YACA,gBACA,CACA,EACA,OACA,QACA,EACA,UACA,WACA,OAAAN,GAAA,cACA,CACA,CACA,qVCJAM,GAAA,CACA,kBACA,OACA,KACA,YACA,gBACA,EACA,gBACA,UACA,YACA,iBACA,iBACA,kBACA,qBACA,iBACA,iBACA,yBACA,eACA,qBACA,MACA,YACA,YACA,CACA,EACA,OACA,OACA,mBACA,kBACA,eACA,2BACA,UACA,CACA,CACA,EACA,UACA,iBACA,IAAAC,EAAA,sCACA,mCACAA,GAAA,2CACAA,GAAA,iCACA,gCAAAA,GAAA,kBACA,iBAAAA,GAAA,iBACA,oBAAAA,GAAA,wBACA,eAAAA,GAAA,iBACA,gBAAAA,GAAA,uBAEA,gBAAAA,GAAA,iBACAA,CACA,EACA,aACA,iEACA,EACA,iBAC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ACA,UACA,aACA,UACA,EACA,OACA,WACA,EACA,YACA,qBACA,UACA,CACA,EACA,OACA,OACA,YACA,CACA,EACA,UACA,aACA,+CACA,EACA,gBACA,sCACA,qCAEA,eACA,CACA,EACA,SACA,aAAAG,EAAA,CACA,IAAAC,EAEA,kCAEA,GADAA,EAAA,qBACAD,EACAC,EAAA,qBACA,CACA,MAAAtC,EAAAsC,EAAA,oBACAtC,IAAA,IACAsC,EAAA,OAAAtC,EAAA,EAEA,MAEAsC,EAAAD,EAGA,mBAAAC,CAAA,EACA,oBAAAA,CAAA,CACA,EACA,sBACA,MAAAC,EAAA,CACA,QAAAtB,GAAAR,EAAA,6CAAAA,EAAA,kBAAAQ,EAAA,uBACA,qBACA,EACA,mBAAAsB,CAAA,CACA,CACA,CACA,4YCrEAhD,GAAA,CACA,qBACA,uDACA,OACA,OACA,iBACA,CACA,EACA,SACA,sBACA,gCACA,kBACA,EACA,eACA,oBACA,+BACA,CACA,CACA,yvBChCAA,GAAA,CACA,yBACA,OACA,SACA,YACA,0DACA,CACA,CACA,+SCpBaiD,GAAsB,CACjC,OAAQ,CACN,CACE,MAAO,UACP,MAAO,KACR,EACD,CACE,MAAO,UACP,MAAO,QACR,EACD,CACE,MAAO,UACP,MAAO,QACR,EACD,CACE,MAAO,UACP,MAAO,aACR,EACD,CACE,MAAO,UACP,MAAO,OACR,CACF,CACH,EAEaC,GAAY,CACvB,OAAQ,CACN,CACE,MAAO,UACP,MAAO,OACR,EACD,CACE,MAAO,UACP,MAAO,WACR,EACD,CACE,MAAO,UACP,MAAO,MACR,EACD,CACE,MAAO,UACP,MAAO,YACR,EACD,CACE,MAAO,UACP,MAAO,OACR,EACD,CACE,MAAO,UACP,MAAO,KACR,EACD,CACE,MAAO,UACP,MAAO,QACR,EACD,CACE,MAAO,UACP,MAAO,QACR,EACD,CACE,MAAO,UACP,MAAO,aACR,EACD,CACE,MAAO,UACP,MAAO,OACR,EACD,CACE,MAAO,UACP,MAAO,YACR,EACD,CACE,MAAO,UACP,MAAO,WACR,EACD,CACE,MAAO,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kBACA,+BACA,EACA,uBACA,oCACA,EACA,wBACA,qCACA,EACA,aACA,mDAKA,EACA,mBACA,4DACA,CACA,CACA,6mCC5BAA,GAAA,CACA,wBACA,OACA,2BACA,8BACA,6BACA,4BACA,wBACA,oCACA,wCACA,CACA,4sCCNAA,GAAA,CACA,2BACA,OAEA,UACA,WACA,EAEA,YACA,WACA,EAEA,aACA,WACA,EAEA,WACA,WACA,CACA,EACA,OACA,OACA,QACA,CACA,EACA,UACA,eACA,EACA,SACA,mBAAAqF,EAAA,CACA,iBAAAA,EACA,4BAAAA,CAAA,CACA,EACA,gBAAAC,EAAA,CACAA,EAAA,qBACA,uBACA,EACA,gBAAAA,EAAA,CACAA,EAAA,qBACA,uBACA,EACA,WACA,QAAAC,EAAA,EAAAA,EAAA,EAAAA,IACA,iBAAAA,EAAA,iBAEA,CACA,CACA,mqDC3EAvF,GAAA,CACA,gBACA,OACA,YACA,kBACA,+BACA,kCACA,aACA,iBACA,EACA,UACA,WACA,sDACA,EACA,UACA,2CACA,EACA,UACA,mBACA,6BAEA,kBACA,WACA,aACA,YACA,aACA,aACA,aACA,YACA,aACA,QACA,YACA,CACA,CACA,CACA,gfCiCAA,GAAA,CACA,sBACA,QAAA2C,EAAA,EACA,OACA,WACA,MACA,YACA,sBAAA6B,GAAA,GACA,EACA,QACA,YACA,WACA,EACA,aACA,IACA,YACA,QAAAA,GAAA,CACA,EACA,iBACA,mBACA,kBACA,iBACA,WACA,aACA,UACA,EACA,eACA,aACA,UACA,EACA,eACA,aACA,UACA,EACA,cACA,YACA,YACA,CACA,EACA,OACA,OACA,WACA,cACA,WACA,YACA,oBACA,mBACA,cACA,WACA,CACA,EACA,UACA,kBACA,+BACA,EACA,mBACA,yBACA,EACA,mBACA,yBACA,EACA,cACA,6BACA,kCACA,0DACA,EACA,WACA,8BACA,EACA,WACA,kCACA,EACA,WACA,uBACA,CACA,EACA,OACA,MAAAgB,EAAA,CACAA,IAAA,MACA,YAEA,CACA,EACA,SACA,oBACA,wBACA,EACA,aAAA1D,EAAA,CACA,MAAA2D,EAAA3D,EAAA,cAAAA,EAAA,mBACA2D,IACA,oBAAAA,CAAA,EAEA,8BACA,0BAGA,mBACA,wBACA,6CACA,EACA,eAAAA,EAAA,CACA,IAAAC,EAAA,2BAAAD,CAAA,EACA,gBACAC,IAAA,YAEAA,EAAA,aAGA,cAAAA,EAAA,IAAAC,KAAA,iBACA,EACA,oBACA,gDAGA,GAFA,yBAEA,0BACA,MAAAC,EAAA,0BACA,2BAEA,qBACA,+BACA,mBACA,KAAAA,EAAA,IACA,EAEA,6BACA,OACA,WACA,2CACA,8BACA,sCACA,CACA,EACA,EACA,EAEAA,GACA,0BAAAA,CAAA,EACA,qBAEA,mBACA,wBAEA,CAEA,6CACA,EACA,MAAA9D,EAAA,CACAA,GACAA,EAAA,iBAGA,0BACA,4BACA,6BAGA,mBACA,yBAEA,mBACA,wBAEA,0BACA,mBACA,EACA,uBACA,6BACA,CACA,CACA,0gFC9BA9B,GAAA,CACA,iBACA,QAAA2C,EAAA,EACA,OACA,8CACA,aACA,MACA,YACA,cACA,EACA,OACA,aACA,UACA,EACA,UACA,aACA,UACA,EACA,mBACA,8BACA,uBACA,aACA,iBACA,gBACA,iBACA,cACA,aACA,UACA,EACA,WACA,aACA,UACA,EACA,2BACA,YACA,aACA,aACA,UACA,EACA,yBACA,WACA,mBACA,iBACA,iBACA,UACA,aACA,UACA,EACA,YACA,UACA,iBACA,MACA,YACA,SACA,EACA,cACA,YACA,aACA,EAEA,OAEA,OACA,qBACA,UACA,aACA,UACA,EACA,2CACA,2CACA,EACA,OACA,OACA,wBACA,YACA,WACA,aACA,eACA,cACA,WACA,iBACA,CACA,EACA,UACA,gBACA,8BACA,GAEA,oEAEA,EACA,eACA,wBACA,EACA,gBACA,iBACA,EACA,WACA,gEACA,EACA,SACA,uDACA,EACA,kBACA,MAAAkD,EAAA,+BACAC,EAAA,gCACAC,EAAA,iCACA,SAAAF,CAAA,IAAAC,CAAA,IAAAC,CAAA,EACA,EACA,aACA,+CAC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CAAA,IAAAD,CAAA,GAAAC,EACA,wCAAAC,CAAA,EACA,EACA,aACA,mBACA,kCACA,iBACA,KACA,CACA,CACA,wxLC9kBAnH,GAAA,CACA,iBACA,OACA,MACA,YACA,gBACA,EACA,QACA,aACA,UACA,EACA,aACA,aACA,UACA,EACA,WACA,aACA,UACA,EACA,YACA,aACA,UACA,CACA,EACA,OACA,QACA,CACA,+TCDAA,GAAA,CACA,0BACA,OACA,SACA,aACA,UACA,EACA,WACA,aACA,UACA,EACA,WACA,YACA,gBACA,CACA,EACA,OACA,QACA,EACA,UACA,iBACA,0BACA,EACA,gBACA,yBACA,EACA,kBACA,2BACA,CACA,EACA,SACA,kBACA,mBACA,CACA,CACA,44CCxBAA,GAAA,CACA,iBACA,OACA,QACA,YACA,YACA,EACA,qBACA,SACA,aACA,UACA,EACA,kBACA,aACA,UACA,EACA,OACA,aACA,UACA,EACA,qBACA,aACA,kBACA,EACA,OACA,OACA,QACA,sBACA,qBACA,aACA,cACA,YACA,WACA,kBACA,mBACA,kBACA,gBACA,eACA,mBACA,YACA,WACA,CACA,EACA,UACA,qBACA,gCACA,EACA,wBACA,mCACA,EACA,SACA,2BACA,CACA,EACA,UACA,yBACA,kCACA,EACA,YACA,wBACA,EACA,SACA,mBAEA,wBAIA,GAFA,sDAEA,kBA0BA,CAEA,uBAEA,MAAAqH,EAAA,yBACA,wBAAAA,EAAA,gBACA,yBAAAA,EAAA,iBACA,0CACA,4CAEA,gBAEA,qDAAAA,CAAA,EACA,kCACA,8CACA,6CACA,+BACA,qBACA,sBACA,0BACA,KA9CA,CAEA,uBAEA,kCACA,oCACA,sCACA,oCAEA,MAAAA,EAAA,qBACAA,EAAA,yCACA,iCAAAA,EAAA,UAEA,wHACA,2CACA,gBACA,6DACA,0CACA,wCACA,KACA,gBACA,+BACA,6CACA,qBACA,sBACA,sBACA,CAsBA,EACA,oBACA,aACA,gDACA,sDACA,6DACA,oBACA,8CACA,qEACA,GAEA,EACA,oBACA,aACA,iDACA,gBACA,2DACA,uBAEA,EACA,oBACA,aAEA,sBAAAC,GACAA,EAAA,qCACA,EAGA,YACA,gFAEA,mCAGA,EACA,8BACA,iBACA,MAAAC,EAAA,oDACAA,GAAA,MACAA,EAAA,8BACAA,EAAA,OACA,kBAMA,gBACAA,EAAA,6DACAA,EAAA,yDACA,uBARA,gBACAA,EAAA,6DACAA,EAAA,yDACA,uBAOA,uBACA,EAEA,CACA,EACA,aAAAC,GAAA,SAAA1F,EAAA,CACA,gBAAA2F,GAAA3F,EAAA,OACA2F,IAEAA,EAAA,eACA,eAAAA,EACA,KACA,CACA,soCChNAzH,GAAA,CACA,yBACA,OACA,UACA,aACA,UACA,EACA,UACA,YACA,cACA,CACA,EACA,OACA,QACA,EACA,UACA,WACA,wBACA,EACA,aACA,oDACA,EACA,kBACA,+BACA,EACA,YACA,8BACA,CACA,EACA,SACA,kBACA,mBACA,CACA,CACA,20BCjDAA,GAAA,CACA,yBACA,OACA,kBACA,mBACA,EACA,OACA,QACA,CACA,s6BCpBqB8D,EAAI,wBAAwB,g9BCAjCA,EAAI,+BAA+B,4TC2CnD9D,GAAA,CACA,iBACA,QAAA2C,EAAA,EACA,OACA,kBACA,cACA,EACA,OACA,YACA,IACA,YACA,8DACA,EACA,OACA,oCACA,WACA,EACA,YACA,SACA,YACA,aACA,EAEA,YACA,UACA,EACA,OACA,WACA,EACA,YACA,2CACA,EACA,OACA,QACA,EACA,UACA,gBACA,8BACA,GAEA,oEAEA,EACA,kBACA,mCACA,EACA,iBACA,0BACA,CACA,EACA,SACA,aAAA2C,EAAA,CACA,0BACAA,EAAA,iBACA,oDAEA,+BACA,CACA,CACA,6uCCvEAtF,GAAA,CACA,kBACA,OACA,UACA,YACA,eACA,EACA,MACA,YACA,iBACA,EACA,YACA,OACA,WACA,EACA,YACA,YACA,sBACA,EACA,kBACA,WACA,SACA,YACA,gBACA,EACA,cACA,qBACA,aACA,aACA,UACA,CACA,EACA,OACA,OACA,yBACA,CACA,EACA,UACA,WACA,0BACA,EACA,YACA,qBACA,0CACA,wCACA,EACA,aACA,uDACA,eACA,EACA,iBACA,wDACA,EACA,cACA,4BACA,wBACA,CACA,EACA,SACA,gBACA,6BACA,8CACA,eACA,kBAEA,EACA,OACA,gBACA,CACA,CACA,soCCzCAA,GAAA,CACA,kBACA,QAAA2C,EAAA,EACA,OACA,UACA,kBACA,aACA,2CACA,iBACA,iBACA,mBACA,iBACA,cACA,aACA,UACA,EACA,2CACA,EACA,OACA,OACA,WACA,WACA,eACA,mBACA,WACA,CACA,EACA,UACA,gBACA,8BACA,GAEA,wCAEA,EACA,cACA,gCACA,EACA,WACA,uDACA,EACA,UACA,MACA,gBACA,mBACA,iBACA,8CAEA,EACA,iBACA,qBACA,gBACA,EACA,YACA,yBACA,EACA,cACA,qCACA,EACA,WACA,2BACA,EACA,mBACA,oCACA,CACA,EACA,OACA,cACA,sBACA,CACA,EACA,UAEA,IAAA+E,EACA,eACAA,EAAA,qBACA,CACA,MAAAC,EAAA,iCACAA,EAAA,SACAD,EAAAC,EAAA,oBAEAD,EAAA,MAEA,CACA,SACA,yDAAAA,CAAA,YAEA,yDACA,sBACA,EACA,SACA,cAAA5D,EAAA,IAAA8D,GAAA,CACA,MAAAC,EAAA,6CACA,IAAAC,EAAA,GAAAF,CAAA,IAAApD,GAAA,IACAqD,EAAA,SAAAE,EAAAxC,IAAA,CACAwC,IAAA,WAAAjE,CAAA,QACAgE,EAAA,GAAAF,CAAA,IAAArC,CAAA,GAEA,GAEA,eAAAuC,CACA,EACA,kBACA,MAAAE,EAAA,oDACAA,GACAA,EAAA,kDAEA,EACA,aAAAlG,EAAA,CACA,gCACA,mBAAAA,CAAA,CACA,EACA,YAAAwD,EAAA,CACA,gBACA,mBAAAA,CAAA,CACA,EACA,WAAAA,EAAA,CACA,gBACA,kBAAAA,CAAA,CACA,EACA,oBAAA2C,EAAA,CACA,qBAAAA,CACA,EACA,cACA,gBACA,4CACA,8CAEA,EACA,aAAAnG,EAAA,CACAA,EAAA,uDAEA,kBAEA,CACA,CACA,2rCCjHA9B,GAAA,CACA,eACA,OACA,MACA,YACA,iBACA,EACA,kBACA,YACA,UACA,aACA,UACA,kBACA,iBACA,YACA,WACA,YACA,eACA,EACA,aACA,UACA,cACA,gBACA,aACA,MACA,YACA,iBACA,EACA,OACA,YACA,YACA,CACA,EACA,OACA,OACA,eACA,kBACA,WACA,aACA,aACA,wBACA,CACA,EACA,UACA,cACA,iCACA,EACA,qBACA,kCACA,EACA,wBACA,qCACA,EACA,WACA,oCACA,EACA,eACA,wBACA,EACA,qBACA,kCACA,EACA,cACA,uBACA,EACA,gBACA,wCACA,CACA,EACA,OACA,SACA,mBACA,CACA,EACA,cAGA,4BACA,gBAEA,EACA,UAEA,oBACA,yBACA,2BACA,mBAEA,GACA,oDACA,eACA,8DAEA,EACA,SACA,iBACA,cACA,2BAEA,EACA,oBACA,IAAAkI,EAAA,4BACA,MAAAC,EAAA,GACA,KAAAD,GACAC,EAAA,KAAAD,CAAA,EACAA,IAAA,mBAEAC,EAAA,OAAAC,KAAA,iCACA,OACA,gBAEA,eAEA,EACA,eAEA,kCAEA,MAAAC,EAAA,2CACAC,EAAA,0CAGA,gBAMA,GALA,8BACA,CAAAA,CAAA,MACA,yBAAAD,CAAA,IACA,GAEA,mBACA,MAAAE,EAAA,8BACAA,EAAA,6CACA,iCAAAA,EAAA,UACA,oBACAA,EAAA,0BACA,EACA,UAEA,8BACA,CAAAD,CAAA,uBACA,yBAAAD,CAAA,IACA,GACA,iCACA,MAAAE,EAAA,yBACA,qDAAAA,CAAA,CACA,CAGA,eACA,EACA,uBACA,mCACA,wCACA,kCACA,uBAEA,gBACA,sBACA,OACA,wCACA,EACA,cACA,mBACA,EACA,aAAAC,GAAA,WACA,2BACA,mBAEA,OACA,yBACA,eACA,8DAEA,CACA,CACA,+2ECnPAxI,GAAA,CACA,kBACA,QAAA2C,EAAA,EACA,gBACA,OACA,2CACA,UACA,aACA,UACA,CACA,EACA,YACA,UACA,maCKA3C,GAAA,CACA,iBACA,OACA,SACA,YACA,WACA,EACA,aACA,WACA,YACA,WACA,EACA,MACA,YACA,WACA,EACA,cACA,iBACA,mBACA,EACA,UACA,aACA,0BACA,EACA,YACA,yBACA,EACA,cACA,2BACA,EACA,YACA,sCACA,kBACA,CACA,EACA,SACA,oBACA,2CACA,4CACA,EACA,CACA,CACA,k1BCvCAA,GAAA,CACA,yBACA,OACA,MACA,YACA,eACA,EACA,YACA,YACA,cACA,EACA,QACA,aACA,UACA,EACA,MACA,aACA,UACA,EACA,SACA,aACA,UACA,EACA,OACA,aACA,UACA,CACA,EACA,OACA,QACA,EACA,UACA,kBACA,+BACA,EACA,mBACA,gCACA,EACA,mBACA,gCACA,CACA,EACA,SACA,kBACA,mBACA,CACA,CACA,qoCC9EAA,GAAA,CACA,yBACA,OACA,QACA,CACA,yKCFAA,GAAA,CACA,8BACA,OACA,YACA,cACA,EACA,SACA,UACA,yBACA,EACA,aACA,uEACA,CACA,CACA,qRCAAA,GAAA,CACA,kBACA,OACA,aACA,YACA,sBACA,EACA,UACA,YACA,wCACA,EACA,YACA,yBACA,EACA,WACA,kBACA,EACA,YACA,mBACA,4DADA,EAEA,CACA,EACA,SACA,WACA,MAAAyI,EAAA,GACA,wBAAAA,EAAA,uBAEAA,CACA,CACA,CACA,mrBCrDMC,GAAclD,GAAQ,CAC1B,GAAI,CAACA,EAAK,MAAO,GACjB,MAAMmD,EAAMnD,EAAI,SAAU,EAC1B,OAAOmD,EAAI,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,CAClD,ECJMC,GAAiBpD,GAChBA,EACE,SAASA,CAAG,EAChB,SAAU,EACV,QAAQ,wBAAyB,GAAG,EAHtB,GCOnBqD,EAAM,OAAOC,EAAG,EAChBD,EAAM,OAAOE,EAAQ,EACrBF,EAAM,OAAOG,EAAY,EACzBH,EAAM,OAAO,IAAI,ECTjB,MAAMI,GAAczD,GACbA,EACEqD,EAAMrD,CAAG,EAAE,OAAO,yBAAyB,EADjC,GCDbyD,GAAczD,GACbA,EACEqD,EAAMrD,CAAG,EAAE,OAAO,kBAAkB,EAD1B;;;;;;;;;87oCCAnB0D,EAAI,I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,EAAS,KAAK,KAAK,cAAc,OAAO,CAAC,EACjE,OAAA0T,EAAOgb,GAA4BD,CAAe,EAC3CA,CACb,CAAK,EAEH,sBAAuB,CAAC9X,EAAGG,IAAO,CAChC,MAAM3W,EAAM,uEAAuE2W,CAAE,GACrF,OAAOlD,EAAI,OAAOzT,CAAG,CACtB,CACH,EAEawU,GAAY,CACvB,CAAC6Z,EAA8B,EAAEjb,EAAOgb,EAAkB,CACxDhb,EAAM,iBAAmBgb,CAC1B,EACD,CAACG,EAA0B,EAAEnb,EAAOkb,EAAiB,CACnDlb,EAAM,gBAAkBkb,CACzB,CACH,EAEeE,GAAA,CACb,WAAY,GACd,MAAEpb,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC9Daia,GAAgB,CAC3B,CACE,KAAM,uBACN,MAAO,SACP,GAAI,sCACL,EACD,CACE,KAAM,qBACN,MAAO,QACP,GAAI,sCACL,EACD,CACE,KAAM,uBACN,MAAO,SACP,GAAI,sCACL,EACD,CACE,KAAM,sBACN,MAAO,QACP,GAAI,sCACL,EACD,CACE,KAAM,yBACN,MAAO,WACP,GAAI,sCACL,CACH,EACaC,GAAiB,CAC5B,CACE,KAAM,WACN,MAAO,UACR,EACD,CACE,KAAM,UACN,MAAO,SACR,EACD,CACE,KAAM,YACN,MAAO,WACR,EACD,CACE,KAAM,SACN,MAAO,QACR,EACD,CACE,KAAM,cACN,MAAO,QACR,EACD,CACE,KAAM,OACN,MAAO,MACR,EACD,CACE,KAAM,UACN,MAAO,SACR,EACD,CACE,KAAM,uBACN,MAAO,sBACR,EACD,CACE,KAAM,uBACN,MAAO,sBACR,EACD,CACE,KAAM,WACN,MAAO,UACR,EACD,CACE,KAAM,aACN,MAAO,YACR,EACD,CACE,KAAM,qBACN,MAAO,YACR,EACD,CACE,KAAM,WACN,MAAO,UACR,CACH,EACaC,GAAkB,CAC7B,CACE,KAAM,YACN,MAAO,WACR,EACD,CACE,KAAM,UACN,MAAO,SACR,CACH,EACaC,GAAqB,CAChC,CACE,KAAM,SACN,MAAO,QACR,EACD,CACE,KAAM,gBACN,MAAO,kBACR,EACD,CACE,KAAM,eACN,MAAO,SACR,EACD,CACE,KAAM,UACN,MAAO,SACR,CACH,EACaC,GAA6B,CACxC,CACE,KAAM,QACN,MAAO,OACR,EACD,CACE,KAAM,WACN,MAAO,UACR,EACD,CACE,KAAM,eACN,MAAO,cACR,EACD,CACE,KAAM,4BACN,MAAO,wBACR,CACH,EACaC,GAAmB,CAC9B,CACE,KAAM,SACN,MAAO,QACR,EACD,CACE,KAAM,YACN,MAAO,WACR,EACD,CACE,KAAM,SACN,MAAO,QACR,EACD,CACE,KAAM,kBACN,MAAO,iBACR,EACD,CACE,KAAM,cACN,MAAO,QACR,EACD,CACE,KAAM,UACN,MAAO,SACR,EACD,CACE,KAAM,WACN,MAAO,UACR,CACH,EACaC,GAAoB,CAC/B,CACE,KAAM,OACN,MAAO,MACR,EACD,CACE,KAAM,OACN,MAAO,MACR,EACD,CACE,KAAM,WACN,MAAO,UACR,CACH,EAmgDaC,GAAgB,CAC3B,CACE,KAAM,mBACN,MAAO,kBACR,EACD,CACE,KAAM,WACN,MAAO,UACR,EACD,CACE,KAAM,UACN,MAAO,SACR,CACH,EAEaC,GAAmB,CAC9B,KAAM,CAAE,KAAM,cAAe,MAAO,GAAI,QAAS,GAAI,KAAM,SAAW,EACtE,qBAAsB,CAAE,KAAM,QAAS,MAAO,KAAM,QAAS,KAAM,KAAM,SAAW,EACpF,oBAAqB,CAAE,KAAM,eAAgB,MAAO,KAAM,QAAS,KAAM,KAAM,SAAW,EAC1F,gBAAiB,CAAE,KAAM,WAAY,MAAO,KAAM,QAAS,KAAM,KAAM,SAAW,EAClF,kBAAmB,CAAE,KAAM,aAAc,MAAO,KAAM,QAAS,KAAM,KAAM,SAAW,EACtF,aAAc,CAAE,KAAM,gBAAiB,MAAO,CAAE,EAAE,QAAS,GAAI,KAAM,QAAU,EAC/E,eAAgB,CAAE,KAAM,YAAa,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACjF,gBAAiB,CAAE,KAAM,aAAc,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACnF,cAAe,CAAE,KAAM,WAAY,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EAC/E,kBAAmB,CAAE,KAAM,qBAAsB,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EAC7F,oBAAqB,CAAE,KAAM,qBAAsB,MAAO,KAAM,QAAS,GAAI,KAAM,QAAU,EAC7F,iBAAkB,CAAE,KAAM,mBAAoB,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EAC1F,0BAA2B,CACzB,KAAM,6BACN,MAAO,KACP,QAAS,KACT,KAAM,QACP,EACD,mBAAoB,CAAE,KAAM,aAAc,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACtF,cAAe,CAAE,KAAM,oBAAqB,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACxF,kBAAmB,CAAE,KAAM,aAAc,MAAO,KAAM,QAAS,KAAM,KAAM,UAAY,EACvF,+BAAgC,CAC9B,KAAM,2BACN,MAAO,KACP,QAAS,KACT,KAAM,UACP,EACD,kBAAmB,CAAE,KAAM,YAAa,MAAO,KAAM,QAAS,KAAM,KAAM,UAAY,EACtF,eAAgB,CAAE,KAAM,kBAAmB,MAAO,CAAE,EAAE,QAAS,GAAI,KAAM,UAAY,EACrF,iBAAkB,CAAE,KAAM,YAAa,MAAO,KAAM,QAAS,KAAM,KAAM,UAAY,EACrF,kBAAmB,CAAE,KAAM,aAAc,MAAO,KAAM,QAAS,KAAM,KAAM,UAAY,EACvF,gBAAiB,CAAE,KAAM,WAAY,MAAO,KAAM,QAAS,KAAM,KAAM,UAAY,EACnF,mBAAoB,CAAE,KAAM,sBAAuB,MAAO,KAAM,QAAS,GAAI,KAAM,UAAY,EAC/F,YAAa,CAAE,KAAM,eAAgB,MAAO,CAAE,EAAE,QAAS,GAAI,KAAM,OAAS,EAC5E,gBAAiB,CAAE,KAAM,mBAAoB,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACzF,uBAAwB,CACtB,KAAM,0BACN,MAAO,KACP,QAAS,KACT,KAAM,QACP,EACD,gCAAiC,CAC/B,KAAM,oCACN,MAAO,KACP,QAAS,KACT,KAAM,QACP,EACD,kBAAmB,CAAE,KAAM,yBAA0B,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,EACjG,gBAAiB,CAAE,KAAM,uBAAwB,MAAO,KAAM,QAAS,KAAM,KAAM,QAAU,CAC/F,EAEaC,GAAyB,CACpC,gBAAiB,kBACjB,uBAAwB,kBACxB,gCAAiC,4BACjC,kBAAmB,uBACnB,gBAAiB,oBACnB,EChvDO,SAASC,IAAmB,CACjC,SAASC,EAAmBnb,EAAQ,CAClC,MAAMob,EAAS,CAAE,EACjB,GAAIpb,IACFob,EAAO,MAAQpb,EAAO,OAAS,KAC/Bob,EAAO,MAAQpb,EAAO,OAAS,KAC/Bob,EAAO,WAAapb,EAAO,UAAY,KACvCob,EAAO,SAAWpb,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,KAC9Eob,EAAO,OAASpb,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,YAAW,EAAK,KACxEob,EAAO,OAASpb,EAAO,QAAU,KAE7BA,EAAO,UAAU,CACnBob,EAAO,eAAiB,CAAE,EAE1B,UAAWj0B,KAAO6Y,EAAO,SACnBA,EAAO,SAAS7Y,CAAG,GAAK,MAAQ6Y,EAAO,SAAS7Y,CAAG,EAAE,SAAW,IAClEi0B,EAAO,eAAe,GAAGj0B,CAAG,EAAE,EAAI6Y,EAAO,SAAS7Y,CAAG,EAG1D,CAEH,OAAOi0B,CACR,CAED,SAASC,EAAyBC,EAAS,CACzC,MAAMC,EAAgBC,EAAUF,CAAO,EACjCG,EAAmB,OAAO,QAAQT,EAAgB,EACrD,OAAQU,GAAUA,EAAM,CAAC,EAAE,OAAS,QAAQ,EAC5C,IAAKA,GAAUA,EAAM,CAAC,CAAC,EAEpBC,EAAY,CAAE,EACpB,cAAO,KAAKJ,CAAa,EAAE,QAASH,GAAW,CACzCA,IAAW,mBACbO,EAAU,UAAYJ,EAAcH,CAAM,EAAE,MAAM,GAAG,EAAE,CAAC,EACxDO,EAAU,SAAWJ,EAAcH,CAAM,EAAE,MAAM,GAAG,EAAE,CAAC,EACvD,OAAOG,EAAcH,CAAM,GAClBA,IAAW,0BACpBO,EAAU,kBAAoBJ,EAAcH,CAAM,EAAE,MAAM,GAAG,EAAE,CAAC,EAChEO,EAAU,gBAAkBJ,EAAcH,CAAM,EAAE,MAAM,GAAG,EAAE,CAAC,EAC9D,OAAOG,EAAcH,CAAM,GAClBK,EAAiB,SAASL,CAAM,IACzCO,EAAUV,GAAuBG,CAAM,CAAC,EAAIG,EAAcH,CAAM,EAChE,OAAOG,EAAcH,CAAM,EAEnC,CAAK,EACG,OAAO,KAAKO,CAAS,EAAE,SACzBJ,EAAc,OAASI,GAGlBJ,CACR,CAED,MAAO,CACL,yBAAAF,EACA,mBAAAF,CACD,CACH,CC3DgB,SAAAS,GAAgB,CAAEpc,MAAMqc,EAAY,MAAAC,EAAQ,IAAK,EAAI,GAAI,CACjE,MAAAC,EAASD,GAASE,KAEf,SAAAC,EAAmB7C,EAASC,EAAS,KAAM,CAKlD,OAAKA,EAIE0C,EAAO,QAAQ,iBAAiB3C,EAASC,CAAM,EAAE,QAAU,EAAI,EAH7D0C,EAAO,QAAQ,kBAAkB3C,CAAO,EAAE,QAAU,EAAI,CAInE,CAIO,WACL5Z,EACA,MAAOuc,EACP,mBAAAE,CAAA,CAEJ,CCtBA,SAASC,GAAiBC,EAASC,EAAc,iBAC/C,MAAMl9B,GAAOk9B,GAAA,YAAAA,EAAc,OAAQ,GAAIn7B,GAAAR,EAAA27B,GAAA,YAAAA,EAAc,OAAd,YAAA37B,EAAoB,eAApB,YAAAQ,EAAkC,OAAS,CAAE,EAC9E,CAAE,OAAAo7B,EAAQ,OAAAz6B,CAAM,EAAKw6B,EAE3B,OAAID,IAAY,EACP,CACL,KAAAj9B,EACA,OAAOiC,GAAAD,EAAAk7B,GAAA,YAAAA,EAAc,OAAd,YAAAl7B,EAAoB,eAApB,YAAAC,EAAkC,MACzC,OAAAk7B,EACA,OAAAz6B,CACD,EAEM,CACL,KAAA1C,EACA,OAAOoC,GAAAF,EAAAg7B,GAAA,YAAAA,EAAc,OAAd,YAAAh7B,EAAoB,eAApB,YAAAE,EAAkC,MACzC,OAAA+6B,EACA,OAAAz6B,CACD,CAEL,CAEA,SAAS06B,GAAeh8B,EAAQ,CAC9B,KAAM,CAAE,IAAAkf,EAAK,mBAAAyc,GAAuBL,GAAgBt7B,CAAM,EAE1D,eAAei8B,EAAevc,EAAS,GAAI,CACzC,MAAMmc,EAAUF,EAAmB,cAAe,eAAe,EAE3DlwB,EACJowB,IAAY,EACR,8DACA,8DAEAf,EAASF,KAAmB,mBAAmBlb,CAAM,EAErDwc,EAAyBtB,GAAgB,EAAG,yBAChDE,EAAO,gBAAkB,CAAE,CAC5B,EAEKxvB,EAAW,MAAM4T,EAAI,KAAKzT,EAAK,CAAE,GAAGqvB,EAAQ,eAAgBoB,EAAwB,EAG1F,MAAO,CAAE,GADaN,GAAiBC,EAASvwB,EAAS,IAAI,EAClC,OAAAwvB,CAAQ,CACpC,CAED,MAAO,CACL,eAAAmB,CACD,CACH,CClDY,MAACE,GAAe,CAC1B,OAAQ,SACR,SAAU,WACV,gBAAiB,kBACjB,SAAU,UACZ,EACaC,GAAgB,CAC3B,SAAU,WACV,QAAS,UACT,UAAW,YACX,OAAQ,SACR,oBAAqB,SACrB,KAAM,OACN,eAAgB,YAChB,QAAS,UACT,oBAAqB,uBACrB,SAAU,WACV,WAAY,aACZ,mBAAoB,aACpB,SAAU,UACZ,EAIaC,GAAgB,CAC3B,OAAQ,SACR,qBAAsB,mBACtB,aAAc,UACd,QAAS,SACX,EACaC,GAAuB,CAClC,OAAQ,SACR,SAAU,UACZ,EACaC,GAA0B,CACrC,UAAW,YACX,OAAQ,QACV,EACaC,GAAmB,CAC9B,OAAQ,EACR,UAAW,CACb,EACaC,GAAiB,CAC5B,0BAA2B,EAC3B,yBAA0B,EAC1B,2BAA4B,EAC5B,0BAA2B,CAC7B,EACaC,GAAqB,CAChC,sBAAuB,EACvB,cAAe,EACf,OAAQ,CACV,EACaC,GAAgC,CAC3C,aAAc,uCACd,OAAQ,uCACR,UAAW,uCACX,eAAgB,uCAChB,WAAY,uCACZ,eAAgB,uCAChB,UAAW,uCACX,SAAU,sCACZ,EAEaC,GAAiB,CAC5B,SAAU,WACV,oBAAqB,qBACvB,EAEaC,GAAkB,CAC7B,MAAO,QACP,SAAU,WACV,aAAc,eACd,uBAAwB,wBAC1B,uUC1DMC,GAAe,CACnB,OAAQ,GACR,cAAe,KACf,sBAAuB,GACvB,GAAI,KACJ,YAAa,KACb,YAAa,KACb,cAAe,KACf,0BAA2B,KAC3B,kBAAmB,KACnB,iBAAkB,KAClB,eAAgB,KAChB,iBAAkB,KAClB,iBAAkB,KAClB,sBAAuB,KACvB,YAAa,CAAE,EACf,MAAO,CAAE,EACT,SAAU,KACV,sBAAuB,KACvB,gBAAiB,KACjB,iBAAkB,KAClB,cAAe,KACf,mBAAoB,KACpB,YAAa,KACb,aAAc,KACd,cAAe,CACb,GAAI,KACJ,eAAgB,KAChB,cAAe,KACf,iBAAkB,KAClB,eAAgB,KAChB,oBAAqB,KACrB,0BAA2B,EAC3B,iBAAkB,KAClB,uBAAwB,EACxB,kBAAmB,KACnB,qBAAsB,KACtB,YAAa,KACb,eAAgB,KAChB,gBAAiB,KACjB,YAAa,KACb,iBAAkB,KAClB,0BAA2B,KAC3B,kBAAmB,GACnB,mBAAoB,GACpB,iBAAkB,GAClB,kBAAmB,KACnB,gBAAiB,KACjB,uBAAwB,KACxB,yBAA0B,KAC1B,uBAAwB,KACxB,oBAAqB,iBACrB,qBAAsB,GACtB,2BAA4B,KAC5B,gBAAiB,KACjB,6BAA8B,CAAE,EAChC,wCAAyC,KACzC,0BAA2B,KAC3B,qBAAsB,KACtB,eAAgB,KAChB,kBAAmB,KACnB,qBAAsB,KACtB,iBAAkB,KAClB,oBAAqB,KACrB,kBAAmB,KACnB,YAAa,IACd,EACD,gBAAiB,CACf,gCAAiC,KACjC,aAAc,KACd,iBAAkB,KAClB,eAAgB,KAChB,YAAa,KACb,0BAA2B,KAC3B,oBAAqB,KACrB,4BAA6B,KAC7B,sBAAuB,KACvB,kBAAmB,KACnB,cAAe,KACf,eAAgB,KAChB,mBAAoB,CAAE,EACtB,OAAQ,KACR,iBAAkB,IACnB,CACH,EAEaje,GAAQ,CACnB,SAAU,CAAE,EACZ,eAAgB,CAAE,EAClB,WAAY,CAAE,EACd,WAAY,CAAE,GAAGie,EAAc,EAC/B,QAAS,KACT,cAAe,CAAE,EACjB,wBAAyB,CAAE,EAC3B,oBAAqB,GACrB,cAAe,KACf,gBAAiB,KACjB,cAAe,KACf,gBAAiB,GACjB,eAAgB,GAChB,6BAA8B,GAC9B,cAAe,KACf,wBAAyB,KACzB,mBAAoB,CAAE,EACtB,gBAAiB,CAAE,EACnB,kBAAmB,GACnB,qBAAsB,EACxB,EAEahe,GAAU,CACrB,YAAcD,GAAUA,EAAM,SAC9B,kBAAoBA,GAAUA,EAAM,eACpC,cAAgBA,GAAUA,EAAM,WAChC,qBAAuBA,GAAUA,EAAM,WACvC,WAAaA,GAAUA,EAAM,QAC7B,iBAAmBA,GAAUA,EAAM,cACnC,uBAAyBA,GAAUA,EAAM,oBACzC,iBAAmBA,GAAUA,EAAM,cACnC,mBAAqBA,GAAUA,EAAM,gBACrC,uBAAyBA,GAAK,WAAK,QAAAje,GAAAD,GAAAR,EAAA0e,GAAA,YAAAA,EAAO,UAAP,YAAA1e,EAAgB,UAAhB,YAAAQ,EAA0B,KAA1B,YAAAC,EAA8B,SAAU,MAC3E,yBAA2Bie,GAAK,WAAK,QAAAje,GAAAD,GAAAR,EAAA0e,GAAA,YAAAA,EAAO,UAAP,YAAA1e,EAAgB,YAAhB,YAAAQ,EAA4B,KAA5B,YAAAC,EAAgC,SAAU,MAC/E,iBAAmBie,GAAUA,EAAM,cACnC,2BAA6BA,GAAUA,EAAM,wBAC7C,sBAAwBA,GAAUA,EAAM,gBACxC,kBAAoBA,GAAUA,EAAM,eACpC,gCAAkCA,GAAUA,EAAM,6BAClD,iBAAmBA,GAAUA,EAAM,cACnC,2BAA6BA,GAAUA,EAAM,wBAC7C,sBAAwBA,GAAUA,EAAM,mBACxC,qBAAuBA,GAAUA,EAAM,kBACvC,wBAA0BA,GAAUA,EAAM,oBAC5C,EAEaE,GAAU,CACrB,qBAAsB,CAAC,CAAE,SAAAoa,GAAY4D,EAAc,KAO1C5D,EAAS,gBAND,CACb,OAAQ,GACR,SAAU,GACV,MAAO4D,EACP,MAAO,IACR,CACsC,EAEzC,cAAe,MAAO,CAAE,OAAA/d,CAAQ,EAAE,CAAE,OAAAU,EAAQ,aAAAsd,EAAe,MAAY,CAIrE,GAAI,CAEF,KAAM,CAAE,KAAAp+B,EAAM,OAAAk8B,CAAQ,EAAG,MAAMkB,GAAgB,EAAC,eAAetc,CAAM,EAErE,OAAAV,EAAOie,GAAuBr+B,CAAI,EAElCogB,EAAOke,GAAkCF,IAAiB,GAAOlC,EAAS,IAAI,EAC9E9b,EAAOme,GAAyCH,CAAY,EACrDp+B,CACR,OAAQgiB,EAAK,CACZ,MAAA5B,EAAOie,GAAuB,EAAE,EAC1Brc,CACP,CACF,EACD,iBAAkB,CAAC,CAAE,OAAA5B,KAAa,CAChCA,EAAOie,GAAuB,EAAE,CACjC,EACD,oBAAqB,CAAC,CAAE,OAAAje,CAAQ,EAAEU,IAAW,CAC3C,IAAIjU,EAAM,8EAEV,OAAIiU,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,IAAIiU,EAAO,MAAM,IAG1BjU,GAAO,gBAAgBiU,EAAO,KAAK,iBAAiBA,EAAO,KAAK,sBAC9D,OAAOA,EAAO,SAAa,IAAc,GAAKA,EAAO,QAC3D,oBACMA,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,EAClE,kBAAsBA,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,cAAgB,EAAE,GACxEA,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,WAAWiU,EAAO,MAAM,IAEjCjU,GAAO,qBAAqBiU,EAAO,gBAAgB,GAC5CR,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,OAClB,KAAInL,EAAAmL,EAAS,OAAT,YAAAnL,EAAe,OAAQ,EAAG,CAC5B,MAAMgG,EAASmF,EAAS,KAAK,KAAK,WAAW,OAC7C,OAAA0T,EAAOoe,GAA8Bj3B,CAAM,EACpCA,CACR,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOoe,GAA8B,IAAI,EACnCxc,CACd,CAAO,CACJ,EACD,gBAAiB,CAAC,CAAE,OAAA5B,CAAQ,EAAE+N,IAAU,CAEtC,MAAMC,EAAWD,EAAM,SAAW,IAAI,KAAKA,EAAM,QAAQ,EAAE,SAAS,EAAG,EAAG,EAAG,CAAC,EAAI,KAC5EE,EAASF,EAAM,OAAS,IAAI,KAAKA,EAAM,MAAM,EAAE,SAAS,GAAI,GAAI,GAAI,GAAG,EAAI,KAE3EthB,EAAM,iFAETshB,EAAM,KAAK,iBAAiBA,EAAM,KAAK,sBACxCA,EAAM,UACZ,yBAA6BA,EAAM,aAAa,oBAC1CC,EAAW,IAAI,KAAKA,CAAQ,EAAE,YAAa,EAAG,IACpD,kBAAsBC,EAAS,IAAI,KAAKA,CAAM,EAAE,YAAW,EAAK,IAAI,GAEhE,OAAO/N,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAI+xB,EAAa,CAAE,EACnB,OAAI/xB,EAAS,KAAK,KAAK,eAAc+xB,EAAa/xB,EAAS,KAAK,KAAK,aAAa,QAClF0T,EAAOse,GAA2BD,CAAU,EACrCA,CACb,CAAK,CACF,EACD,qBAAsB,CAACpb,EAAGvC,IAAW,CACnC,MAAMjU,EAAM,+EAA+EiU,EAAO,MAAM,UAAUA,EAAO,KAAK,GAC9H,OAAOR,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAaA,EAAS,IAAI,CACrD,EACD,aAAc,CAAC2W,EAAGG,IAAO,CACvB,MAAM3W,EAAM,kEAAkE2W,CAAE,8FAChF,OAAKA,EAEElD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAaA,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,CAAC,EAF9D,EAGjB,EACD,aAAc,CAAC,CAAE,OAAA0T,CAAQ,EAAEoD,IAAO,CAChC,MAAM3W,EAAM,kEAAkE2W,CAAE,oHAChF,OAAKA,EAGDvD,GAAM,kBAAoB,GACrB,QAAQ,QAAQ,EAAE,GAI3BG,EAAOue,GAAgC,EAAI,EAG3C,WAAW,IAAM,CACX1e,GAAM,kBAAoB,IAC5BG,EAAOue,GAAgC,EAAK,CAE/C,EAAE,GAAK,EAERve,EAAOwe,GAA0B,IAAI,EACrCxe,EAAOye,GAAiC,CAAE,oBAAqB,EAAK,CAAE,EACtEze,EAAO0e,GAA2C,CAAE,6BAA8B,EAAK,CAAE,EAElFxe,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,MAAMqyB,EAAUryB,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,EAGtD,OAAA0T,EAAOue,GAAgC,EAAK,EAG5Cve,EAAOwe,GAA0BG,CAAO,EAEpCA,GACF3e,EAAO4e,GAAmBD,CAAO,EAE5B,QAAQ,QAAQA,GAAW,IAAI,CAC9C,CAAO,EACA,MAAO/c,GAAQ,CAEd,MAAA5B,EAAOue,GAAgC,EAAK,EAC5Cve,EAAO4e,GAAmB,IAAI,EACxBhd,CACd,CAAO,GA1Ca,EA2CjB,EACD,aAAc,CAAC,CAAE,OAAA5B,KAAa,CAC5BA,EAAO4e,GAAmB,IAAI,CAC/B,EACD,oBAAqB,CAAC3b,EAAGG,IAAO,CAC9B,MAAM3W,EAAM,0EAA0E2W,CAAE,GACxF,OAAKA,EAEElD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMG,EAAMH,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,WACtD,OAAO,KAAKG,CAAG,CACrB,CAAK,EALe,EAMjB,EACD,kBAAmB,CAACwW,EAAG,CAAE,GAAAG,EAAI,QAAAhiB,CAAO,IAAO,CACzC,MAAMqL,EAAM,wEAAwE2W,CAAE,GACtF,OAAKA,EAEElD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMG,EAAMH,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,SACtD,GAAIG,GAAOrL,EAAS,CAClB,MAAMy9B,EAAQpyB,EAAI,MAAM,kBAAkB,EAC1C,GAAIoyB,EAAO,CACT,MAAMnyB,EAAOmyB,EAAM,CAAC,EACpB,UAAU,UAAU,UAAUnyB,CAAI,EAAE,KAClC,IAAM,CACJtL,EAAQ,QAAQ,CACd,MAAOA,EAAQ,GAAG,mBAAmB,EACrC,QAASA,EAAQ,GAAG,gCAAgC,EACpD,KAAM,SACtB,CAAe,CACF,EACD,IAAM,CACJA,EAAQ,QAAQ,CACd,MAAOA,EAAQ,GAAG,0CAA0C,EAC5D,QAASA,EAAQ,GAAG,8BAA8B,EAClD,KAAM,OACtB,CAAe,CACF,CACF,CACX,MACU,QAAQ,MAAM,uCAAuC,CAE/D,MACQ,OAAO,SAAWqL,CAE1B,CAAK,EA9Be,EA+BjB,EACD,0BAA2B,CAACwW,EAAGG,IAAO,CACpC,MAAM3W,EAAM,wEAAwE2W,CAAE,GACtF,OAAKA,EACElD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CAErC,MAAMuyB,EADMvyB,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,SACpC,MAAM,kBAAkB,EAC1C,GAAIuyB,EAAO,CACT,MAAMnyB,EAAOmyB,EAAM,CAAC,EACpB,OAAO,KAAKnyB,CAAI,CACxB,MACQ,QAAQ,MAAM,uCAAuC,CAE7D,CAAK,EAVe,EAWjB,EACD,iBAAkB,CAACuW,EAAGG,IAAO,CAC3B,MAAM3W,EAAM,uEAAuE2W,CAAE,GACrF,OAAKA,EAEElD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMG,EAAMH,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,QACtD,OAAO,KAAKG,CAAG,CACrB,CAAK,EALe,EAMjB,EACD,yBAA0B,CAACwW,EAAGuH,IAAY,aACxC,MAAM7I,EAAQ6I,EAAQ,QAChB/d,EAAM,mFAAmFkV,EAAM,qBAAqB,GACpHmd,EAAY,CAChB,GAAInd,EAAM,cACV,KAAMA,EAAM,YACZ,OAAQA,EAAM,cACd,mBAAoBA,EAAM,0BAC1B,iBAAkBA,EAAM,iBACxB,cAAe,CACb,GAAIA,EAAM,aACX,EACD,mBAAoBA,EAAM,mBAC1B,QAASA,EAAM,YACf,YAAa,CACX,GAAIA,EAAM,QACX,EACD,WAAY,CACV,GAAIA,EAAM,iBACX,EACD,SAAU,CACR,GAAIA,EAAM,gBACX,EACD,WAAYA,EAAM,WAClB,eAAgB,CACd,GAAIA,EAAM,gBACX,EACD,sBAAuB,CACrB,GAAIA,EAAM,qBACX,EACD,iBAAkBA,EAAM,iBACxB,sBAAuBA,EAAM,qBAC9B,EACD,OAAI6I,EAAQ,YAAcA,EAAQ,WAAW,kBAAoB,OAC/DsU,EAAU,gBAAkBtU,EAAQ,WAAW,gBAC/CsU,EAAU,QAAU,CAClB,CACE,4BAA4Bn9B,GAAAR,EAAAqpB,EAAQ,aAAR,YAAArpB,EAAoB,gBAApB,YAAAQ,EAAmC,2BAC/D,iBAAiBE,GAAAD,EAAA4oB,EAAQ,aAAR,YAAA5oB,EAAoB,gBAApB,YAAAC,EAAmC,WACrD,CACF,GAEIqe,EAAI,KAAKzT,EAAKqyB,CAAS,EAAE,KAAMxyB,GAAaA,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,CAAC,CAC3F,EACD,iBAAkB,CAAC,CAAE,UAAAwmB,CAAW,EAAEtI,IAAY,CAC5C,MAAM/d,EAAM,uDACNkV,EAAQ6I,EAAQ,QAChBuU,EAAavU,EAAQ,YAAc,KAEnCsU,EAAY,CAChB,GAAInd,EAAM,GACV,KAAMA,EAAM,YACZ,OAAQA,EAAM,cACd,mBAAoBA,EAAM,0BAC1B,QAASA,EAAM,YACf,iBAAkBA,EAAM,iBACxB,cAAe,CACb,GAAIA,EAAM,aACX,EACD,mBAAoBA,EAAM,mBAC1B,YAAa,CACX,GAAIA,EAAM,QACX,EACD,sBAAuB,CACrB,GAAIA,EAAM,qBACX,EACD,WAAY,CACV,GAAIA,EAAM,iBACX,EACD,SAAU,CACR,GAAIA,EAAM,gBACX,EACD,KAAM,CACJ,IAAKmR,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAC3D,EACD,QAAS,CAAE,EACX,UAAW,CAAE,EACb,MAAO,CACL,GAAI,sCACL,EACD,WAAYnR,EAAM,WAClB,eAAgB,CACd,GAAIA,EAAM,gBACX,EACD,iBAAkBA,EAAM,iBACxB,sBAAuBA,EAAM,qBAC9B,EAED,OAAIod,IACFpd,EAAM,MAAQod,EAAW,MACrBA,EAAW,kBAAoB,OACjCD,EAAU,gBAAkBC,EAAW,mBAKzCpd,EAAM,cAAgBwb,GAAa,QACnCxb,EAAM,cAAgBwb,GAAa,iBACnCxb,EAAM,cAAgBwb,GAAa,YAEnC2B,EAAU,QAAQ,CAAC,EAAI,CACrB,GAAInd,EAAM,cAAc,GACxB,KAAMA,EAAM,YACZ,OAAQld,GAAM,EACd,OACEkd,EAAM,cAAgBwb,GAAa,SAC/BC,GAAc,SACdA,GAAc,oBACpB,oCAAqCzb,EAAM,cAAc,oBACzD,oBAAqBA,EAAM,cAAc,iBACzC,0BAA2BA,EAAM,cAAc,0BAC/C,qBAAsBA,EAAM,cAAc,qBAC1C,kBAAmBA,EAAM,cAAc,kBACvC,kBAAmBA,EAAM,cAAc,kBACvC,kBAAmBA,EAAM,cAAc,kBACvC,qBAAsBA,EAAM,cAAc,qBAC1C,iBAAkBA,EAAM,cAAc,iBACtC,oBAAqBA,EAAM,cAAc,oBACzC,mBAAoBA,EAAM,cAAc,mBACxC,iBAAkBA,EAAM,cAAc,iBACtC,8BAA+BA,EAAM,cAAc,uBACnD,qBAAsBA,EAAM,cAAc,kBAC1C,gBAAiBA,EAAM,cAAc,YACrC,uBAAwBA,EAAM,cAAc,uBAC5C,mBAAoBA,EAAM,cAAc,gBACxC,YAAaA,EAAM,cAAc,YACjC,cAAeA,EAAM,cAAc,iBACnC,YAAaA,EAAM,cAAc,0BACjC,MAAOA,EAAM,aACb,eAAgBA,EAAM,cAAc,eACpC,WAAYA,EAAM,WAClB,yBAA0BA,EAAM,cAAc,yBAC9C,kBAAmBA,EAAM,cAAc,kBACvC,eAAgB,KAChB,cAAe,KACf,2BAA4BA,EAAM,cAAc,2BAChD,gBAAiBA,EAAM,cAAc,gBACrC,uBAAwBA,EAAM,cAAc,uBAC5C,uBAAwB,GACxB,wBAAyB,GACzB,cAAe,GACf,WAAYA,EAAM,WAClB,eAAgB,CACd,GAAIA,EAAM,gBACX,EACD,qBAAsBA,EAAM,cAAc,qBAC1C,oBAAqBA,EAAM,cAAc,oBACzC,iBAAkBA,EAAM,iBACxB,sBAAuBA,EAAM,sBAC7B,KAAM,CACJ,IAAKmR,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAC3D,EACD,KAAM,CACJ,GAAInR,EAAM,cAAc,IACzB,EACD,6BAA8B,CAC5B,GAAIA,EAAM,cAAc,4BACzB,EACD,wCACEA,EAAM,cAAc,wCACtB,0BAA2BA,EAAM,cAAc,0BAC/C,qBAAsBA,EAAM,cAAc,qBAC1C,eAAgBA,EAAM,cAAc,eACpC,YAAaA,EAAM,cAAc,WAClC,EAEGod,GACa,CACb,kBACA,OACA,oBACA,cACA,cACA,aACA,qBACA,gBACA,mBACA,uBACA,iBACA,4BAGD,EAEM,IAAKhU,GAAU,CACf+T,EAAU,QAAQ,CAAC,EAAE/T,CAAK,IAC7B+T,EAAU,QAAQ,CAAC,EAAE/T,CAAK,EAAIgU,EAAW,cAAchU,CAAK,EAExE,CAAS,IAKHpJ,EAAM,cAAgBwb,GAAa,UACnCxb,EAAM,cAAgBwb,GAAa,mBAEnC2B,EAAU,UAAU,CAAC,EAAI,CACvB,KAAMnd,EAAM,YACZ,OAAQA,EAAM,cACd,OAAQyb,GAAc,oBACtB,eAAgBzb,EAAM,gBAAgB,iBACtC,kBAAmBA,EAAM,gBAAgB,eACzC,uBAAwBA,EAAM,gBAAgB,oBAC9C,QAASA,EAAM,gBAAgB,4BAC/B,aAAcA,EAAM,gBAAgB,sBACpC,qBAAsBA,EAAM,gBAAgB,kBAC5C,mBAAoBA,EAAM,gBAAgB,gBAC1C,oBAAqBA,EAAM,gBAAgB,cAC3C,OAAQA,EAAM,gBAAgB,aAC9B,0BAA2BA,EAAM,gBAAgB,0BACjD,qBAAsBA,EAAM,gBAAgB,YAC5C,gCAAiCA,EAAM,gBAAgB,gCACvD,OAAQA,EAAM,gBAAgB,OAC9B,iBAAkBA,EAAM,gBAAgB,gBACzC,GAcCmd,EAAU,QAAQ,CAAC,IAGnBnd,EAAM,cAAc,gBAAkB2b,GAAqB,QAC3D3b,EAAM,cAAc,iBAAmB8b,GAAe,2BAEtDqB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,QAEzD/b,EAAM,cAAc,gBAAkB2b,GAAqB,QAC3D3b,EAAM,cAAc,iBAAmB8b,GAAe,0BAEtDqB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,QAEzD/b,EAAM,cAAc,gBAAkB2b,GAAqB,UAC3D3b,EAAM,cAAc,iBAAmB8b,GAAe,2BAEtDqB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,eAEzD/b,EAAM,cAAc,gBAAkB2b,GAAqB,UAC3D3b,EAAM,cAAc,iBAAmB8b,GAAe,0BAEtDqB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,eAEzD/b,EAAM,cAAc,gBAAkB2b,GAAqB,UAC3D3b,EAAM,cAAc,iBAAmB8b,GAAe,4BAEtDqB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,wBAEzDoB,EAAU,QAAQ,CAAC,EAAE,cAAgB,GACrCA,EAAU,QAAQ,CAAC,EAAE,eAAiBpB,GAAmB,gBAOzDoB,EAAU,QAAQ,CAAC,IAEjBnd,EAAM,cAAc,mBAAqB4b,GAAwB,OACnEuB,EAAU,QAAQ,CAAC,EAAE,WAAatB,GAAiB,OAEnDsB,EAAU,QAAQ,CAAC,EAAE,WAAatB,GAAiB,WAIhDtd,EAAI,KAAKzT,EAAKqyB,CAAS,EAAE,KAAMxyB,GAAaA,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,CAAC,CAC3F,EACD,iBAAkB,CAAC,CAAE,OAAA0T,EAAQ,UAAA8S,CAAS,EAAInR,IAAU,CAClD,MAAMlV,EAAM,uDAIZ,GAFAkV,EAAM,KAAO,CAAE,IAAKmR,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EAEzEnR,EAAM,QAAQ,CAAC,EAAG,CACpB,MAAMuT,EAAS,OAAO,OAAO,CAAE,EAAEvT,EAAM,QAAQ,CAAC,CAAC,EACjDuT,EAAO,KAAO,CAAE,IAAKpC,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EAC9EnR,EAAM,QAAQ,CAAC,EAAIuT,CACpB,CACD,OAAOhV,EAAI,IAAIzT,EAAKkV,CAAK,EAAE,KAAMrV,GAAa,CAC5C,MAAMqyB,EAAUryB,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,EACtD,OAAA0T,EAAO4e,GAAmBD,CAAO,EAC1BA,CACb,CAAK,CACF,EACD,wBAAyB,CAAC,CAAE,OAAA3e,CAAQ,EAAE2e,IAAY,CAChD3e,EAAOgf,GAAuBL,CAAO,CACtC,EACD,wBAAyB,CAAC,CAAE,OAAA3e,CAAQ,EAAE2B,KACpC3B,EAAOif,GAA0Btd,CAAK,EAC/B,QAAQ,QAAQ,EAAE,GAE3B,uBAAwB,CAAC,CAAE,OAAA3B,KAAa,CACtCA,EAAOkf,EAAuB,CAC/B,EACD,cAAe,CAAC,CAAE,OAAAlf,CAAQ,EAAE2e,IAAY,CACtC,MAAMQ,EAAa,OAAO,OAAO,CAAE,EAAEtf,GAAM,QAAS8e,CAAO,EAC3D3e,EAAO4e,GAAmBO,CAAU,CACrC,EACD,MAAM,qBAAqB,CAAE,UAAArM,CAAW,EAAEnR,EAAO,CAC/C,MAAMlV,EAAM,uDAEZ,GADAkV,EAAM,KAAO,CAAE,IAAKmR,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EACzEnR,EAAM,QAAQ,CAAC,EAAG,CACpB,MAAMuT,EAAS,OAAO,OAAO,CAAE,EAAEvT,EAAM,QAAQ,CAAC,CAAC,EACjDuT,EAAO,KAAO,CAAE,IAAKpC,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EAC9EnR,EAAM,QAAQ,CAAC,EAAIuT,CACpB,CACD,GAAI,CAIF,OAHiB,MAAMhV,EAAI,IAAIzT,EAAKkV,CAAK,GAChB,KAAK,KAAK,WAAW,OAAO,CAAC,CAGvD,OAAQhe,EAAO,CACd,MAAMA,CACP,CACF,EACD,YAAa,CAAC,CAAE,SAAAw2B,EAAU,UAAArH,EAAW,OAAA9S,CAAM,EAAI2B,IAAU,CACvD,MAAMlV,EAAM,uDAIZ,GAFAkV,EAAM,KAAO,CAAE,IAAKmR,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EAEzEnR,EAAM,QAAQ,CAAC,EAAG,CACpB,MAAMuT,EAAS,OAAO,OAAO,CAAE,EAAEvT,EAAM,QAAQ,CAAC,CAAC,EACjDuT,EAAO,KAAO,CAAE,IAAKpC,EAAU,eAAe,gBAAkB,IAAI,IAAM,EAAI,EAC9EnR,EAAM,QAAQ,CAAC,EAAIuT,CACpB,CACD,OAAAlV,EAAOof,GAAmC,EAAK,EACxClf,EACJ,IAAIzT,EAAKkV,CAAK,EACd,KAAMrV,GAAa,CAClB,MAAMqyB,EAAUryB,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,EACtD6tB,EAAS,oBAAqB,EAAK,EACnCA,EAAS,qBAAsB,KAAK,KAAK,EACzCA,EAAS,eAAgBwE,EAAQ,EAAE,EAAE,KAAK,KACxCxE,EAAS,oBAAqB,EAAI,EAClCA,EAAS,yBAA0B,EAAK,EACxCna,EAAOof,GAAmC,EAAI,EACvCT,EACR,CACT,CAAO,EACA,MAAO/c,GAAQ,CACd,MAAAuY,EAAS,oBAAqB,EAAI,EAC5BvY,CACd,CAAO,CACJ,EACD,mBAAoB,CAAC,CAAE,OAAA5B,CAAQ,EAAE9Z,IAAS,CACxC8Z,EAAOqf,GAA6Bn5B,CAAI,CACzC,EACD,kBAAmB,CAAC,CAAE,OAAA8Z,CAAQ,EAAEsf,IAAY,CAC1Ctf,EAAOuf,GAA4BD,CAAO,CAC3C,EACD,gBAAiB,CAAC,CAAE,OAAAtf,CAAQ,EAAErc,IAAU,CACtCqc,EAAOwf,GAAyB77B,CAAK,CACtC,EACD,kBAAmB,CAAC,CAAE,OAAAqc,CAAQ,EAAErc,IAAU,CACxCqc,EAAOyf,GAA2B97B,CAAK,CACxC,EACD,mBAAoB,CAAC,CAAE,OAAAqc,KAAa,CAClCA,EAAO0f,EAA6B,CACrC,EACD,uBAAwB,CAAC,CAAE,OAAA1f,CAAQ,EAAEnb,IAAU,CAC7Cmb,EAAOye,GAAiC,CAAE,oBAAqB55B,CAAK,CAAE,CACvE,EACD,iBAAkB,CAAC,CAAE,OAAAmb,CAAQ,EAAE2e,IAAY,CACzC3e,EAAOwe,GAA0BG,CAAO,CACzC,EACD,iBAAkB,CAAC,CAAE,OAAA3e,CAAQ,EAAE2f,IAAW,CACxC3f,EAAO4f,GAA0BD,CAAM,CACxC,EACD,2BAA4B,CAAC,CAAE,OAAA3f,CAAQ,EAAE+c,IAAW,CAClD/c,EAAO6f,GAAoC9C,CAAM,CAClD,EACD,iBAAkB,CAAC,CAAE,SAAA5C,CAAU,EAAEpM,IAAU,CACzC,MAAMthB,EAAM,yEAAyEshB,EAAM,EAAE,WAAWA,EAAM,MAAM,GAEpH,OAAO7N,EAAI,IAAIzT,EAAKoT,GAAM,OAAO,EAAE,KAAMvT,GAAa,CACpD6tB,EAAS,qBAAsB,KAAK,KAAK,EACzC,MAAMwE,EAAUryB,EAAS,KAAK,KAAK,WAAW,OAAO,CAAC,EACtD6tB,EAAS,eAAgBwE,EAAQ,EAAE,EAAE,KAAK,KACxCxE,EAAS,yBAA0B,EAAK,EACjCwE,EACR,CACP,CAAK,CACF,EACD,cAAe,CAAC1b,EAAGhD,IAAc,CAC/B,MAAMxT,EAAM,kEAAkEwT,CAAS,GAEvF,OAAOC,EAAI,OAAOzT,CAAG,CACtB,EACD,wBAAyB,CAAC,CAAE,OAAAuT,GAAUiY,EAAc,MAE9CA,GACFjY,EAAO8f,GAAuC,EAAE,EAI9CjgB,GAAM,mBAAmB,OACpB,QAAQ,QAAQA,GAAM,kBAAkB,EAK1CK,EAAI,IAFC,yEAEM,EAAE,KAAM5T,GAAa,WACrC,MAAMnF,IAASvF,GAAAD,GAAAR,EAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,EAAgB,OAAhB,YAAAQ,EAAsB,eAAtB,YAAAC,EAAoC,SAAU,CAAE,EAC/D,OAAAoe,EAAO8f,GAAuC34B,CAAM,EAC7CA,CACb,CAAK,GAEH,yBAA0B,CAAC,CAAE,OAAA6Y,CAAQ,EAAE+f,KACrC/f,EAAOggB,GAAkCD,CAAW,EAC7C,QAAQ,QAAQ,EAAE,GAE3B,uBAAwB,CAAC,CAAE,OAAA/f,CAAQ,EAAEigB,KACnCjgB,EAAOkgB,GAAgCD,CAAS,EACzC,QAAQ,QAAQ,EAAE,GAE3B,sBAAuB,CAAC,CAAE,OAAAjgB,CAAQ,EAAEkP,KAClClP,EAAOmgB,GAA+BjR,CAAQ,EACvC,QAAQ,QAAQ,EAAE,GAE3B,wBAAyB,CAAC,CAAE,OAAAlP,CAAQ,EAAEogB,KACpCpgB,EAAOqgB,GAAiCD,CAAU,EAC3C,QAAQ,QAAQ,EAAE,GAE3B,uBAAwB,CAAC,CAAE,OAAApgB,CAAQ,EAAEsgB,KACnCtgB,EAAOugB,GAAgCD,CAAM,EACtC,QAAQ,QAAQ,EAAE,GAE3B,6BAA8B,CAAC,CAAE,OAAAtgB,CAAQ,EAAEwgB,KACzCxgB,EAAOygB,GAAuCD,CAAe,EACtD,QAAQ,QAAQ,EAAE,GAE3B,gCAAiC,CAAC,CAAE,OAAAxgB,CAAQ,EAAEnb,IAAU,CACtDmb,EAAO0e,GAA2C,CAAE,6BAA8B75B,CAAK,CAAE,CAC1F,EACD,iBAAkB,CAAC,CAAE,OAAAmb,CAAQ,EAAE0gB,KAC7B1gB,EAAO2gB,GAA2BD,CAAa,EACxC,QAAQ,QAAQ,EAAE,GAE3B,2BAA4B,CAAC,CAAE,OAAA1gB,CAAQ,EAAE4gB,KACvC5gB,EAAO6gB,GAAuCD,CAAuB,EAC9D,QAAQ,QAAQ,EAAE,GAE3B,8BAA+B,CAAC,CAAE,OAAA5gB,CAAQ,EAAE1d,KAC1C0d,EAAO8gB,GAAyCx+B,CAAM,EAC/C,QAAQ,QAAQ,EAAE,GAE3B,2BAA4B,CAAC,CAAE,OAAA0d,CAAQ,EAAE+gB,IAAc,CACrD/gB,EAAOghB,GAA2CD,CAAS,CAC5D,CACH,EAEa9f,GAAY,CACvB,CAACgd,EAAqB,EAAEpe,EAAOohB,EAAU,CACvCphB,EAAM,SAAWohB,CAClB,EACD,CAAC7C,EAA4B,EAAEve,EAAOqhB,EAAgB,CACpDrhB,EAAM,eAAiBqhB,CACxB,EACD,CAAC5C,EAAyB,EAAEze,EAAOwe,EAAY,CAC7Cxe,EAAM,WAAawe,CACpB,EACD,CAACW,EAAqB,EAAEnf,EAAOsf,EAAY,CACzCtf,EAAM,WAAa,CACjB,GAAGA,EAAM,WACT,GAAGsf,CACJ,CACF,EACD,CAACF,EAAwB,EAAEpf,EAAO8B,EAAO,CACvC,MAAMwd,EAAajD,EAAUrc,EAAM,UAAU,EAE7CA,EAAM,WAAashB,GAAMhC,EAAYxd,CAAK,CAC3C,EACD,CAACud,EAAuB,EAAErf,EAAO,CAC/BA,EAAM,WAAa,CAAE,GAAGie,EAAc,CACvC,EACD,CAACc,EAAiB,EAAE/e,EAAO8e,EAAS,CAE9BA,GAAWA,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,IAEvDA,EAAQ,QAAQ,CAAC,EAAE,kBACnB,IAAI,KAAKA,EAAQ,QAAQ,CAAC,EAAE,gBAAgB,EAAI,IAAI,KAAK,KAAM,CAAC,IAEhEA,EAAQ,QAAQ,CAAC,EAAE,iBAAmB,MAGtCA,EAAQ,QAAQ,CAAC,EAAE,eACnB,IAAI,KAAKA,EAAQ,QAAQ,CAAC,EAAE,aAAa,EAAI,IAAI,KAAK,KAAM,CAAC,IAE7DA,EAAQ,QAAQ,CAAC,EAAE,cAAgB,MAGnCA,EAAQ,QAAQ,CAAC,EAAE,gBACnB,IAAI,KAAKA,EAAQ,QAAQ,CAAC,EAAE,cAAc,EAAI,IAAI,KAAK,KAAM,CAAC,IAE9DA,EAAQ,QAAQ,CAAC,EAAE,eAAiB,MAGpCA,EAAQ,QAAQ,CAAC,EAAE,aACnB,IAAI,KAAKA,EAAQ,QAAQ,CAAC,EAAE,WAAW,EAAI,IAAI,KAAK,KAAM,CAAC,IAE3DA,EAAQ,QAAQ,CAAC,EAAE,YAAc,OAGrC9e,EAAM,QAAU8e,CACjB,EACD,CAACa,EAAuB,EAAE3f,EAAOlc,EAAO,CAClCkc,EAAM,cAAc,QAAQlc,CAAK,IAAM,IACzCkc,EAAM,cAAc,KAAKlc,CAAK,CAEjC,EACD,CAAC87B,EAAyB,EAAE5f,EAAOlc,EAAO,CACxC,MAAMjD,EAAQmf,EAAM,cAAc,QAAQlc,CAAK,EAC3CjD,IAAU,IACZmf,EAAM,cAAc,OAAOnf,EAAO,CAAC,CAEtC,EACD,CAACg/B,EAA6B,EAAE7f,EAAO,CACrCA,EAAM,cAAgB,CAAE,CACzB,EACD,CAAC4e,EAA+B,EAAE5e,EAAO,CAAE,oBAAAuhB,CAAmB,EAAI,CAChEvhB,EAAM,oBAAsBuhB,CAC7B,EACD,CAAC5C,EAAwB,EAAE3e,EAAO8e,EAAS,CACzC9e,EAAM,cAAgB8e,CACvB,EACD,CAACU,EAA2B,EAAExf,EAAO1Z,EAAM,CACzC0Z,EAAM,gBAAkB1Z,CACzB,EACD,CAACy5B,EAAwB,EAAE/f,EAAO8f,EAAQ,CACxC9f,EAAM,cAAgB8f,CACvB,EACD,CAACE,EAAkC,EAAEhgB,EAAOkd,EAAQ,CAClDld,EAAM,wBAA0Bkd,CACjC,EACD,CAACiD,EAAgC,EAAEngB,EAAOkgB,EAAa,CACjDA,GAAeA,EAAY,OAAS,GACtCA,EAAY,QAASsB,GAAe,CACNxhB,EAAM,QAAQ,QAAQ,CAAC,EAAE,WAAW,OAC7DyhB,GAAQA,EAAG,GAAKD,EAAW,UAAU,EACvC,EAEmB,QAASE,GAAqB,CAChDA,EAAiB,iBAAmBF,EAAW,UAAU,gBACnE,CAAS,EAGyBxhB,EAAM,QAAQ,QAAQ,CAAC,EAAE,WAAW,OAC3DyhB,GACEA,EAAG,sBACFA,EAAG,qBAAqB,KACrBE,GAAQA,EAAI,YAAcA,EAAI,WAAW,KAAOH,EAAW,EAC7D,GACFC,EAAG,YACFA,EAAG,YACHA,EAAG,WAAW,KAAME,GAAQA,EAAI,KAAOH,EAAW,EAAE,CACzD,EAEiB,QAASE,GAAqB,CAK9C,GAJ0BA,EAAiB,qBAAqB,UAC7DC,GAAQA,EAAI,YAAcA,EAAI,WAAW,KAAOH,EAAW,EAC7D,IAEyB,EAExBE,EAAiB,qBAAuB,SAGxC,MADY,0DAId,MAAME,EAAkBF,EAAiB,YAAY,UAClDG,GAAQA,EAAI,KAAOL,EAAW,EAChC,EAED,GAAII,IAAoB,GACtBF,EAAiB,YAAY,OAAOE,EAAiB,CAAC,EACtDF,EAAiB,YAAY,KAAKF,CAAU,MAG5C,MADY,+CAGxB,CAAS,CACT,CAAO,CAEJ,EACD,CAACnB,EAA8B,EAAErgB,EAAOogB,EAAW,CACjDpgB,EAAM,QAAQ,QAAQ,CAAC,EAAE,UAAYogB,CACtC,EACD,CAACE,EAA6B,EAAEtgB,EAAOqP,EAAU,CAC/CrP,EAAM,QAAQ,QAAQ,CAAC,EAAE,SAAWqP,CACrC,EACD,CAACmR,EAA+B,EAAExgB,EAAOugB,EAAY,CACnDvgB,EAAM,QAAQ,QAAQ,CAAC,EAAE,WAAaugB,EACtCvgB,EAAM,QAAQ,QAAQ,CAAC,EAAE,kBAAoB,CAAE,EAE/C,QAASra,EAAI,EAAGA,EAAI46B,EAAW,OAAQ56B,IAEnC46B,EAAW56B,CAAC,EAAE,sBAAwB,MACtC46B,EAAW56B,CAAC,EAAE,qBAAqB,OAAQ,GAAM,EAAE,OAAO,EAAE,OAAS,GAErEqa,EAAM,QAAQ,QAAQ,CAAC,EAAE,kBAAkB,KACzCugB,EAAW56B,CAAC,EAAE,qBAAqB,OAAQ,GAAM,EAAE,OAAO,EAAE,CAAC,CAC9D,CAGN,EACD,CAAC+6B,EAA8B,EAAE1gB,EAAOygB,EAAQ,CACzCzgB,EAAM,QAAQ,UAAU,CAAC,EAAE,UAC9BA,EAAM,QAAQ,UAAU,CAAC,EAAE,QAAU,CAAE,GAGzC,MAAMgE,EAAehE,EAAM,QAAQ,UAAU,CAAC,EAAE,QAAQ,UAAW4G,GAAMA,EAAE,KAAO6Z,EAAO,EAAE,EACvFzc,IAAiB,IAEnBhE,EAAM,QAAQ,UAAU,CAAC,EAAE,QAAQ,OAAOgE,EAAc,CAAC,EACzDhE,EAAM,QAAQ,UAAU,CAAC,EAAE,QAAQ,KAAKygB,CAAM,CAIjD,EACD,CAACG,EAAqC,EAAE5gB,EAAO2gB,EAAiB,CAC9D3gB,EAAM,QAAQ,QAAQ,CAAC,EAAE,gBAAkBqc,EAAUsE,CAAe,CACrE,EACD,CAACjC,EAA8B,EAAE1e,EAAOvd,EAAQ,CAC9Cud,EAAM,gBAAkBvd,CACzB,EACD,CAACi9B,EAA0B,EAAE1f,EAAOyf,EAAS,CAC3Czf,EAAM,eAAiByf,CACxB,EACD,CAACZ,EAAyC,EAAE7e,EAAO,CAAE,6BAAA8hB,CAA4B,EAAI,CACnF9hB,EAAM,6BAA+B8hB,CACtC,EACD,CAAChB,EAAyB,EAAE9gB,EAAO6gB,EAAe,CAChD7gB,EAAM,cAAgB6gB,CACvB,EACD,CAACG,EAAqC,EAAEhhB,EAAO+gB,EAAyB,CACtE/gB,EAAM,wBAA0B+gB,CACjC,EACD,CAACd,EAAqC,EAAEjgB,EAAO+hB,EAAoB,CACjE/hB,EAAM,mBAAqB+hB,CAC5B,EACD,CAACd,EAAuC,EAAEjhB,EAAOvd,EAAQ,CACvDud,EAAM,QAAQ,OAAO,CAAC,EAAE,OAASvd,CAClC,EACD,CAAC88B,EAAiC,EAAEvf,EAAOgiB,EAAS,CAClDhiB,EAAM,kBAAoBgiB,CAC3B,EACD,CAACb,EAAyC,EAAEnhB,EAAOkhB,EAAW,CAC5DlhB,EAAM,qBAAuBkhB,CAC9B,CACH,EAEepC,GAAA,CACb,WAAY,GACd,MAAE9e,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC9/BapB,GAAQ,CACnB,gBAAiB,CAAE,EACnB,oBAAqB,CAAE,CACzB,EAEaC,GAAU,CACrB,mBAAqBD,GAAUA,EAAM,gBACrC,uBAAyBA,GAAUA,EAAM,mBAC3C,EAEaE,GAAU,CACrB,mBAAmBkD,EAAGtB,EAAO,CAE3B,OAAOzB,EAAI,KADC,8DACSyB,CAAK,EAAE,KAAMrV,GAAaA,EAAS,KAAK,KAAK,kBAAkB,OAAO,CAAC,CAAC,CAC9F,EACD,qBAAsB,CAAC,CAAE,OAAA0T,CAAQ,EAAEC,IAAc,CAC/C,MAAMxT,EAAM,yEAAyEwT,CAAS,GAC9F,OAAOC,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMnF,EAASmF,EAAS,KAAK,KAAK,kBAAkB,OACpD,OAAA0T,EAAO8hB,GAA+B36B,CAAM,EACrCA,CACR,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAO8hB,GAA+B,IAAI,EACpClgB,CACd,CAAO,CACJ,EACD,yBAA0B,CAAC,CAAE,OAAA5B,CAAQ,EAAEU,IAAW,CAChD,IAAIjU,EAAM,yEACV,OAAIiU,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,IAAIiU,EAAO,MAAM,IAE1BjU,GAAO,gBAAgBiU,EAAO,KAAK,iBAAiBA,EAAO,KAAK,sBAC9DA,EAAO,QACb,oBACMA,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,EAClE,kBAAsBA,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,cAAgB,EAAE,GACxEA,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,WAAWiU,EAAO,MAAM,IAE1BR,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMnF,EAASmF,EAAS,KAAK,KAAK,kBAAkB,OACpD,OAAA0T,EAAO+hB,GAAoC56B,CAAM,EAC1CA,CACR,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAO+hB,GAAoC,IAAI,EACzCngB,CACd,CAAO,CACJ,CACH,EACaX,GAAY,CACvB,CAAC6gB,EAA6B,EAAEjiB,EAAOmiB,EAAiB,CACtDniB,EAAM,gBAAkBmiB,CACzB,EACD,CAACD,EAAkC,EAAEliB,EAAOmiB,EAAiB,CAC3DniB,EAAM,oBAAsBmiB,CAC7B,CACH,EAEeC,GAAA,CACb,WAAY,GACd,MAAEpiB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECxEapB,GAAQ,CACnB,QAAS,CAAE,CACb,EAEaC,GAAU,CACrB,yBAA2BD,GAAUA,EAAM,OAC7C,EAEaE,GAAU,CACrB,2BAA4B,CAAC,CAAE,OAAAC,CAAQ,EAAEC,IAAc,CACrD,MAAMxT,EAAM,6EAA6EwT,CAAS,GAClG,OAAOC,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAM41B,EAAU51B,EAAS,KAAK,KAAK,kBAAkB,OACrD,OAAA0T,EAAOmiB,GAAqCD,CAAO,EAC5CA,CACR,CACT,CAAO,EACA,MAAOtgB,GAAQ,CACd,MAAA5B,EAAOmiB,GAAqC,IAAI,EAC1CvgB,CACd,CAAO,CACJ,EACD,0BAA2B,CAAC,CAAE,OAAA5B,CAAQ,EAAEoiB,IAE/BliB,EAAI,KADC,8DACSkiB,CAAQ,EAAE,KAAM91B,GAAa,CAChD,MAAM+1B,EAAiB/1B,EAAS,KAAK,KAAK,kBAAkB,OAAO,CAAC,EACpE,OAAA0T,EAAOsiB,GAAiCD,CAAc,EAC/CA,CACb,CAAK,EAEH,YAAa,CAAC,CAAE,OAAAriB,CAAQ,EAAEoc,KACxBpc,EAAO,eAAgBoc,CAAK,EACrB,QAAQ,QAAQvc,GAAM,OAAO,GAEtC,eAAgB,CAAC,CAAE,OAAAG,CAAQ,EAAEqiB,IAEpBniB,EAAI,KADC,qEACSmiB,CAAc,EAAE,KAAK,IAAM,CAC9C,KAAM,CAAE,GAAAjf,EAAI,OAAAmf,CAAM,EAAKF,EACjB3hC,EAAQ8hC,GAAU3iB,GAAM,QAAS,CAAE,GAAAuD,CAAE,CAAE,EACvCgZ,EAAQF,EAAUrc,GAAM,QAAQnf,CAAK,CAAC,EAC5C,OAAA07B,EAAM,OAASmG,EACfviB,EAAO,oBAAqB,CAAE,MAAAtf,EAAO,MAAA07B,CAAK,CAAE,EACrC,CAAE,MAAA17B,EAAO,MAAA07B,CAAO,CAC7B,CAAK,EAEH,0BAA2B,CAAC,CAAE,OAAApc,EAAQ,MAAAH,CAAK,EAAIuc,IAEtClc,EAAI,IADC,8DACQkc,CAAK,EAAE,KAAM9vB,GAAa,CAC5C,MAAM+1B,EAAiB/1B,EAAS,KAAK,KAAK,kBAAkB,OAAO,CAAC,EAC9D,CAAE,GAAA8W,CAAE,EAAKif,EACT3hC,EAAQ8hC,GAAU3iB,EAAM,QAAS,CAAE,GAAAuD,CAAE,CAAE,EACvCgZ,EAAQF,EAAUrc,EAAM,QAAQnf,CAAK,CAAC,EAE5C,OAAA07B,EAAM,KAAOiG,EAAe,KAC5BriB,EAAO,qBAAsB,CAAE,MAAAtf,EAAO,MAAA07B,CAAK,CAAE,EACtC,CAAC17B,EAAO07B,CAAK,CAC1B,CAAK,EAEH,8BAA+B,CAAC,CAAE,OAAApc,EAAQ,MAAAH,CAAO,EAAE,CAAE,GAAAuD,EAAI,MAAAzB,KAEhDzB,EAAI,KADC,qEACSyB,CAAK,EAAE,KAAMrV,GAAa,CAC7C,MAAMm2B,EAAUn2B,EAAS,KAAK,KAAK,yBAAyB,OAAO,CAAC,EAC9D5L,EAAQ8hC,GAAU3iB,EAAM,QAAS,CAAE,GAAIuD,EAAI,EAEjD,OAAApD,EAAO0iB,GAAyC,CAAE,MAAAhiC,EAAO,QAAA+hC,CAAO,CAAE,EAC3D,CAAC/hC,EAAO+hC,CAAO,CAC5B,CAAK,EAEH,0BAA2B,CAAC,CAAE,OAAAziB,CAAQ,EAAEoD,IAAO,CAC7C,MAAM3W,EAAM,gFAAgF2W,CAAE,GAC9F,OAAOlD,EAAI,OAAOzT,CAAG,EAAE,KAAK,KAC1BuT,EAAO,kBAAmBoD,CAAE,EACrB,GACR,CACF,EACD,4BAA6B,CAAC,CAAE,OAAApD,CAAM,EAAI,CAAE,iBAAA2iB,EAAkB,UAAAC,CAAS,IAAO,CAC5E,MAAMn2B,EAAM,8FAA8Fm2B,CAAS,GACnH,OAAO1iB,EAAI,OAAOzT,CAAG,EAAE,KAAK,IAAM,CAChC,MAAM/L,EAAQ8hC,GAAU3iB,GAAM,QAAS,CAAE,GAAI8iB,EAAkB,EAC/D,OAAA3iB,EAAO,oBAAqB,CAAE,MAAAtf,EAAO,UAAAkiC,CAAS,CAAE,EACzC,EACb,CAAK,CACF,CACH,EAEa3hB,GAAY,CACvB,CAACkhB,EAAmC,EAAG,CAACtiB,EAAOqiB,IAAY,CACzDriB,EAAM,QAAUqiB,CACjB,EACD,CAACI,EAA+B,EAAG,CAACziB,EAAO,CAAE,MAAAnf,EAAO,MAAA07B,CAAK,IAAO,CAC9Dvc,EAAM,QAAQnf,CAAK,EAAI07B,CACxB,EACD,CAACsG,EAAuC,EAAG,CAAC7iB,EAAO,CAAE,MAAAnf,EAAO,QAAA+hC,CAAO,IAAO,CACxE5iB,EAAM,QAAQnf,CAAK,EAAE,SAAS,QAAQ+hC,CAAO,CAC9C,EACD,mBAAoB,CAAC5iB,EAAO,CAAE,MAAAnf,EAAO,MAAA07B,CAAK,IAAO,CAC/C,KAAM,CAAE,KAAAlM,CAAI,EAAKkM,EACjBvc,EAAM,QAAQnf,CAAK,EAAE,KAAOwvB,CAC7B,EACD,kBAAmB,CAACrQ,EAAO,CAAE,MAAAnf,EAAO,MAAA07B,CAAK,IAAO,CAC9Cvc,EAAM,QAAQnf,CAAK,EAAE,OAAS07B,EAAM,MACrC,EACD,aAAc,CAACvc,EAAOuc,IAAU,CAC1BA,EAAM,WAAa,OACrBA,EAAM,SAAW,CAAE,GAErBvc,EAAM,QAAQ,QAAQuc,CAAK,CAC5B,EACD,gBAAiB,CAACvc,EAAOuc,IAAU,CACjC,MAAM8F,EAAUriB,EAAM,QAAQ,OAAQ9d,GAAMA,EAAE,KAAOq6B,CAAK,EAE1Dvc,EAAM,QAAUqiB,CACjB,EACD,kBAAmB,CAACriB,EAAO,CAAE,MAAAnf,EAAO,UAAAkiC,CAAS,IAAO,CAClD,MAAMC,EAAWhjB,EAAM,QAAQnf,CAAK,EAAE,SAAS,OAAQR,GAAMA,EAAE,KAAO0iC,CAAS,EAE/E/iB,EAAM,QAAQnf,CAAK,EAAE,SAAWmiC,CACjC,CACH,EAEeR,GAAA,CACb,WAAY,GACd,MAAExiB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECpIalB,GAAU,CACrB,6BAA8B,CAACkD,EAAGtB,IAEzB8B,EACJ,KAFS,sEAEC9B,CAAK,EACf,KAAMrV,GAAaA,EAAS,KAAK,KAAK,0BAA0B,OAAO,CAAC,CAAC,CAEhF,EAEew2B,GAAA,CACb,WAAY,GACd,QAAE/iB,EACF,ECTMF,GAAQ,CACZ,mBAAoB,KACpB,qBAAsB,KACtB,qBAAsB,KACtB,YAAa,GACb,qBAAsB,CAAE,EACxB,qBAAsB,KACtB,0BAA2B,CAAE,EAC7B,oBAAqB,KACrB,oBAAqB,EACvB,EAEMC,GAAU,CACd,sBAAwBD,GAAUA,EAAM,mBACxC,wBAA0BA,GAAUA,EAAM,qBAC1C,wBAA0BA,GAAUA,EAAM,qBAC1C,sBAAwBA,GAAUA,EAAM,YACxC,wBAA0BA,GAAUA,EAAM,qBAC1C,uBAAyBA,GAAUA,EAAM,oBACzC,uBAAyBA,GAAUA,EAAM,mBAC3C,EAEME,GAAU,CACd,yBAA0B,CAAC,CAAE,OAAAC,EAAQ,SAAAma,CAAQ,EAAI6B,IAAY,CAC3D,MAAMC,EAAgBC,EAAUF,CAAO,EACvC,OAAAhc,EAAO+iB,GAAgC9G,CAAa,EACpD9B,EAAS,2BAA4B,EAAI,EAClC,QAAQ,QAAQ,EAAE,CAC1B,EACD,2BAA4B,CAAC,CAAE,OAAAna,CAAQ,EAAEgc,IAAY,CACnD,MAAMC,EAAgBC,EAAUF,CAAO,EACvC,OAAAhc,EAAOke,GAAkCjC,CAAa,EAC/C,QAAQ,QAAQ,EAAE,CAC1B,EACD,2BAA4B,CAAC,CAAE,OAAAjc,CAAQ,EAAEgjB,IAAY,CACnD,MAAMC,EAAgB/G,EAAU8G,CAAO,EACvC,OAAAhjB,EAAOkjB,GAAkCD,CAAa,EAC/C,QAAQ,QAAQ,EAAE,CAC1B,EACD,yBAA0B,CAAC,CAAE,OAAAjjB,CAAQ,EAAEmjB,IAAU,CAC/CnjB,EAAOojB,GAAgCD,CAAK,CAC7C,EACD,0BAA2B,CAAC,CAAE,SAAAhJ,KAErBja,EAAI,IADC,8EACM,EAAE,KAAM5T,GAAa,CACrC,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAE3B,MAAM+2B,EADS/2B,EAAS,KAAK,KAAK,uBAAuB,OAEzD,OAAO6tB,EAAS,0BAA2BkJ,CAAc,EAAE,KAAMl8B,GAAW,CAAC,KAAMA,CAAM,CAAC,CAC3F,CACP,CAAK,EAQH,0BAA2B,CAAC,CAAE,OAAA6Y,KAAa,CACzCA,EAAOsjB,GAAoC,EAAE,CAC9C,EAED,wBAAyB,CAAC,CAAE,OAAAtjB,CAAQ,EAAEujB,KACpCvjB,EAAOsjB,GAAoCC,CAAQ,EAC5C,IAAI,QAASjgC,GAAY,CAC9BA,EAAQigC,CAAQ,CACtB,CAAK,GAEH,kBAAmB,CAAC,CAAE,QAAAzjB,CAAS,EAAE6B,IAAU,CACzC,MAAM6hB,EAAO7hB,EAAM,KAAK,YAAa,EAC/B4hB,EAAWrH,EAAUpc,EAAQ,uBAAuB,EAC1D,OAAI6B,EAAM,KAAO,MAAQ4hB,EAAS,KAAME,GAAMA,EAAE,KAAK,YAAa,IAAKD,CAAI,EAClE,IAAI,QAASlgC,GAAY,CAC9BA,EAAQ,CAAC,IAAIogC,GAAgB,iBAAiBF,CAAI,kBAAkB,EAAG,IAAI,CAAC,CACpF,CAAO,EAGD7hB,EAAM,KAAO,MACb4hB,EAAS,KAAME,GAAMA,EAAE,KAAK,YAAa,IAAKD,GAAQC,EAAE,KAAO9hB,EAAM,EAAE,EAEhE,IAAI,QAASre,GAAY,CAC9BA,EAAQ,CAAC,IAAIogC,GAAgB,iBAAiBF,CAAI,kBAAkB,EAAG,IAAI,CAAC,CACpF,CAAO,EAGItjB,EAAI,KADC,kEACSyB,CAAK,EAAE,KAAMrV,GAEzB,CAAC,KADoBA,EAAS,IACJ,CAClC,CACF,EACD,uBAAuB,CAAE,OAAA0T,EAAQ,QAAAF,CAAO,EAAI6jB,EAAQ,CAClD,MAAMH,EAAOG,EAGb,OADiBzH,EAAUpc,EAAQ,uBAAuB,EAC7C,KAAM2jB,GAAMA,IAAME,CAAM,EAC5B,CAAC,IAAIC,GAAiB,IAAI,GAGnC5jB,EAAO6jB,GAA+BL,CAAI,EACnC,CAAC,KAAMA,CAAI,EACnB,EAED,yBAAyB,CAAE,OAAAxjB,GAAU,CACnC,OAAAA,EAAO6jB,GAA+B,IAAI,EACnC,CAAC,KAAM,IAAI,CACnB,CACH,EAEM5iB,GAAY,CAChB,CAAC8hB,EAA8B,EAAEljB,EAAOmc,EAAS,CAC/Cnc,EAAM,mBAAqBmc,CAC5B,EACD,CAACkC,EAAgC,EAAEre,EAAOmc,EAAS,CACjDnc,EAAM,qBAAuBmc,CAC9B,EACD,CAACkH,EAAgC,EAAErjB,EAAOmjB,EAAS,CACjDnjB,EAAM,qBAAuBmjB,CAC9B,EACD,CAAC7E,EAAuC,EAAEte,EAAOikB,EAAU,CACzDjkB,EAAM,oBAAsBikB,CAC7B,EACD,CAACV,EAA8B,EAAEvjB,EAAOsjB,EAAO,CAC7CtjB,EAAM,YAAcsjB,CACrB,EAED,CAACG,EAAkC,EAAEzjB,EAAO0jB,EAAU,CACpD1jB,EAAM,qBAAuB0jB,CAC9B,EACD,CAACM,EAA6B,EAAEhkB,EAAO8jB,EAAQ,CAC7C9jB,EAAM,oBAAsB8jB,CAC7B,CACH,EAEeI,GAAA,CACb,WAAY,GACd,MAAElkB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC7IapB,GAAQ,CACnB,aAAc,CAAE,EAChB,mBAAoB,CAAE,CACxB,EAEaC,GAAU,CACrB,gBAAkBD,GAAUA,EAAM,aAClC,sBAAwBA,GAAUA,EAAM,kBAC1C,EAEaE,GAAU,CACrB,kBAAmB,CAAC,CAAE,OAAAC,CAAQ,EAAEC,IAAc,CAC5C,MAAMxT,EAAM,qEAAqEwT,CAAS,GAC1F,OAAOC,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMnF,EAASmF,EAAS,KAAK,KAAK,eAAe,OACjD,OAAA0T,EAAOgkB,GAA4B78B,CAAM,EAClC,IAAI,QAAQ,SAAU7D,EAAS,CACpCA,EAAQ6D,CAAM,CAC1B,CAAW,CACF,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOgkB,GAA4B,IAAI,EACjCpiB,CACd,CAAO,CACJ,EACD,gBAAiB,CAACqB,EAAGtB,IAEZzB,EAAI,KADC,0DACSyB,CAAK,EAAE,KAAMrV,GAAaA,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,CAAC,EAE5F,wBAAyB,CAAC,CAAE,OAAA0T,CAAQ,EAAEwC,IAAW,CAC/C,MAAM/V,EAAM,4EAA4E+V,CAAM,cAC9F,OAAOtC,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMnF,EAASmF,EAAS,KAAK,KAAK,eAAe,OACjD,OAAA0T,EAAOikB,GAAoC98B,CAAM,EAC1CA,CACR,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOikB,GAAoC,IAAI,EACzCriB,CACd,CAAO,CACJ,CACH,EACaX,GAAY,CACvB,CAAC+iB,EAA0B,EAAEnkB,EAAOqkB,EAAc,CAChDrkB,EAAM,aAAeqkB,CACtB,EAED,CAACD,EAAkC,EAAEpkB,EAAOskB,EAAoB,CAC9DtkB,EAAM,mBAAqBskB,CAC5B,CACH,EAEeC,GAAA,CACb,WAAY,GACd,MAAEvkB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EClEapB,GAAQ,CACnB,kBAAmB,CAAE,CACvB,EACaC,GAAU,CACrB,qBAAuBD,GAAUA,EAAM,iBACzC,EACaE,GAAU,CACrB,sBAAuB,CAAC,CAAE,OAAAC,CAAQ,EAAEkZ,IAAU,CAC5C,GAAI,CAACA,EAAO,CACVlZ,EAAOqkB,GAAkC,EAAE,EAC3C,MACD,CAED,MAAM53B,EAAM,yFAAyFysB,CAAK,GAC1G,OAAOhZ,EAAI,IAAIzT,CAAG,EAAE,KAAMmf,GAAQ,CAChC,MAAMrC,EAAYqC,EAAI,KAAK,KAAK,4BAA4B,OAE5D,OAAA5L,EAAOqkB,GAAkC9a,CAAS,EAC3CqC,CACb,CAAK,CACF,CACH,EACa3K,GAAY,CACvB,CAACojB,EAAgC,EAAG,CAACxkB,EAAO0J,IAAc,CACxD1J,EAAM,kBAAoB0J,CAC3B,CACH,EACe+a,GAAA,CACb,WAAY,GACd,MAAEzkB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECjCapB,GAAQ,CACnB,kBAAmB,CAAE,CACvB,EACaC,GAAU,CACrB,qBAAuBD,GAAUA,EAAM,iBACzC,EACaE,GAAU,CACrB,sBAAuB,CAAC,CAAE,OAAAC,CAAQ,EAAEkZ,IAAU,CAC5C,GAAI,CAACA,EAAO,CACVlZ,EAAOukB,GAAiC,EAAE,EAC1C,MACD,CAED,MAAM93B,EAAM,yFAAyFysB,CAAK,GAC1G,OAAOhZ,EAAI,IAAIzT,CAAG,EAAE,KAAMmf,GAAQ,CAChC,MAAMrC,EAAYqC,EAAI,KAAK,KAAK,4BAA4B,OAC5D,OAAA5L,EAAOukB,GAAiChb,CAAS,EAC1CqC,CACb,CAAK,CACF,CACH,EACa3K,GAAY,CACvB,CAACsjB,EAA+B,EAAG,CAAC1kB,EAAO0J,IAAc,CACvD1J,EAAM,kBAAoB0J,CAC3B,CACH,EACeib,GAAA,CACb,WAAY,GACd,MAAE3kB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EChCapB,GAAQ,CACnB,IAAK,CAAE,EACP,MAAO,CAAE,CACX,EAEaC,GAAU,CACrB,OAASD,GAAUA,EAAM,IACzB,SAAWA,GAAUA,EAAM,KAC7B,EAEaE,GAAU,CACrB,SAAU,CAAC,CAAE,OAAAC,CAAQ,EAAEoD,IAAO,CAC5B,MAAM3W,EAAM,yEAAyE2W,CAAE,GAEvF,OAAOlD,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMm4B,EAAMn4B,EAAS,KAAK,KAAK,aAAa,OAE5C,OAAA0T,EAAO0kB,GAAmBD,CAAG,EACtBA,CACb,CAAK,CACF,EACD,WAAY,CAAC,CAAE,OAAAzkB,KAGNE,EAAI,IAFC,gEAEM,EAAE,KAAM5T,GAAa,CACrC,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMm4B,EAAMn4B,EAAS,KAAK,KAAK,aAAa,OAE5C,OAAA0T,EAAO2kB,GAAqBF,CAAG,EACxBA,CACR,CACP,CAAK,CAEL,EAEaxjB,GAAY,CACvB,CAACyjB,EAAiB,EAAE7kB,EAAO4kB,EAAK,CAC9B5kB,EAAM,IAAM4kB,CACb,EACD,CAACE,EAAmB,EAAE9kB,EAAO+kB,EAAO,CAClC/kB,EAAM,MAAQ+kB,CACf,CACH,EAEeH,GAAA,CACb,WAAY,GACd,MAAE5kB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EClDapB,GAAQ,CACnB,KAAM,CAAE,EACR,MAAO,CAAE,CACX,EAEaC,GAAU,CACrB,QAAUD,GAAUA,EAAM,KAC1B,SAAWA,GAAUA,EAAM,KAC7B,EAEaE,GAAU,CACrB,UAAW,CAAC,CAAE,OAAAC,KAGLE,EAAI,IAFC,yDAEM,EAAE,KAAM5T,GAAa,CACrC,MAAMu4B,EAAOv4B,EAAS,KAAK,KAAK,QAAQ,OAExC,OAAA0T,EAAO8kB,GAAoBD,CAAI,EACxBA,CACb,CAAK,EAEH,WAAY,CAAC,CAAE,OAAA7kB,KAGNE,EAAI,IAFC,sDAEM,EAAE,KAAM5T,GAAa,CACrC,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMy4B,EAAQz4B,EAAS,KAAK,KAAK,QAAQ,OACzC,OAAA0T,EAAOglB,GAAqBD,CAAK,EAC1BA,CACR,CACP,CAAK,EAEH,SAAU,CAAC,CAAE,OAAA/kB,CAAQ,EAAE2B,IAEdzB,EAAI,KADC,mDACSyB,CAAK,EAAE,KAAMrV,GAAa,CAC7C,MAAMu4B,EAAOv4B,EAAS,KAAK,KAAK,QAAQ,OAAO,CAAC,EAChD,OAAA0T,EAAO8kB,GAAoBD,CAAI,EACxBA,CACb,CAAK,EAEH,WAAY,CAAC,CAAE,OAAA7kB,CAAQ,EAAE2B,IAEhBzB,EAAI,IADC,mDACQyB,CAAK,EAAE,KAAMrV,GAAa,CAC5C,MAAMu4B,EAAOv4B,EAAS,KAAK,KAAK,QAAQ,OAAO,CAAC,EAChD,OAAA0T,EAAO8kB,GAAoBD,CAAI,EACxB,IAAI,QAASvhC,GAAY,CAC9BA,EAAQuhC,CAAI,CACpB,CAAO,CACP,CAAK,EAEH,WAAY,CAAC5hB,EAAGG,IAAO,CACrB,MAAM3W,EAAM,2DAA2D2W,CAAE,GACzE,OAAOlD,EAAI,OAAOzT,CAAG,CACtB,CACH,EAEawU,GAAY,CACvB,CAAC6jB,EAAkB,EAAEjlB,EAAOglB,EAAM,CAChChlB,EAAM,KAAOglB,CACd,EACD,CAACG,EAAmB,EAAEnlB,EAAOklB,EAAO,CAClCllB,EAAM,MAAQklB,CACf,CACH,EAEeF,GAAA,CACb,WAAY,GACd,MAAEhlB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,+cCnEA,SAASgkB,GAAcjkC,EAAQ,CAC7B,MAAMw7B,EAAQE,KAERwI,EAAgB,CACpB,eAAgB,oBAE4B1L,GAAgB,gBAC5D0L,EAAc,qBAAuB1L,GAAgB,qBAEvD,MAAM2L,EAA4B,CAChC,eAAgB,uBAGZC,EAAYC,GAAM,OAAO,CAC7B,QAAS7I,EAAM,QAAQ,QAEvB,QAAS,IACT,gBAAiB,GACjB,QAAS0I,CAAA,CACV,EAEKzhB,EAAY4hB,GAAM,OAAO,CAC7B,QAAS7I,EAAM,QAAQ,QACvB,QAAS,KACT,YAAa,GACb,gBAAiB,GACjB,YAAa,GACb,QAAS2I,CAAA,CACV,EAEKG,EAAY,IAAI,KAAK,aAAa,QAAS,CAC/C,MAAO,WACP,SAAU,MACX,EACD,SAASC,GAAyB,CAChC,MAAMhjB,EAAavhB,GAAA,YAAAA,EAAQ,WACrByhB,EAASzhB,GAAA,YAAAA,EAAQ,OAEvB,OAAOuhB,GAAcE,CACvB,CAEA,SAAS+iB,EAAiB5lC,EAAM,CAC9B,KAAM,CAAE,eAAA6lC,EAAgB,cAAAC,EAAe,iBAAAC,CAAA,EAAqB/lC,EAerD,MAdY,CACjB,eAAgB,CACd,GAAG6lC,CACL,EACA,cAAe,CACb,GAAGC,EACH,WAAYA,EAAc,YAC1B,YAAaA,EAAc,cAC7B,EACA,iBAAkB,CAChB,GAAGC,CACL,EAIJ,CAEA,SAASC,EAAmBhmC,EAAM,CACzB,OACL,eAAgB,CACd,UAAWA,EAAK,UAChB,SAAUA,EAAK,SACf,MAAOA,EAAK,MACZ,aAAcA,EAAK,aACnB,WAAYA,EAAK,WACjB,kBAAmBA,EAAK,kBACxB,WAAY,CACV,UAAWA,EAAK,oBAChB,SAAUA,EAAK,mBACf,MAAOA,EAAK,eACd,CACF,EACA,cAAe,CACb,YAAaA,EAAK,YAClB,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,QAASA,EAAK,QACd,eAAgBA,EAAK,eACrB,YAAaA,EAAK,yBAClB,YAAaA,EAAK,YAClB,UAAWA,EAAK,uBAChB,qBAAsBA,EAAK,qBAC3B,8BAA+BA,EAAK,8BACpC,eAAgBA,EAAK,eACrB,UAAWA,EAAK,UAChB,OAAQA,EAAK,OACb,cAAeA,EAAK,eACpB,eAAgBA,EAAK,eACrB,iBAAkBA,EAAK,iBACvB,gBAAiBA,EAAK,eACxB,EACA,iBAAkB,CAChB,cAAe0lC,EAAU,OAAO1lC,EAAK,aAAa,EAClD,2BAA4B0lC,EAAU,OAAO1lC,EAAK,0BAA0B,CAC9E,EAEJ,CAEA,SAASimC,EAAkBjmC,EAAM,CAC/B,MAAMkmC,EAAoB,CACxB,eAAgB,CACd,UAAW,KACX,SAAU,KACV,MAAO,KACP,aAAc,KACd,WAAY,KACZ,kBAAmB,KACnB,WAAY,IACd,EACA,cAAe,CACb,YAAa,KACb,eAAgB,KAChB,YAAa,KACb,QAAS,KACT,eAAgB,KAChB,WAAY,CAAC,EACb,YAAa,GACb,UAAW,CAAC,EACZ,qBAAsB,KACtB,8BAA+B,KAC/B,eAAgB,KAChB,YAAa,CAAC,EACd,OAAQ,CACV,EACA,iBAAkB,CAChB,cAAe,EACf,2BAA4B,CAC9B,GAGF,OAAOlmC,EAAK,cAAc,UAE1B,MAAMmmC,EAAa,CACjB,GAAGD,EACH,GAAGlmC,CAAA,EAID,OAAAmmC,EAAW,eAAe,aAAe,KAC3CA,EAAW,eAAe,WAAa,MAEzCA,EAAW,cAAc,YAAY,QAASC,GAAQ,CAChDA,EAAA,YAAc,mBAAmBA,EAAI,WAAW,EACrD,EAEMD,CACT,CAEA,SAASE,EAAyBrmC,EAAM,CACtC,MAAMsmC,EAAS,CACb,KACA,iBACA,cACA,YACA,WACA,kBACA,aACA,UACA,iBACA,uBACA,gCACA,gBACA,6BACA,SACA,mBAoCK,OAjCYtmC,EAAK,IAAKyI,IAAU,CACrC,GAAG69B,EAAO,OAAO,CAAC1lC,EAAKuqB,KAAU,QAC/B,OAAAvqB,EAAIuqB,EAAK,EACP,OAAO1iB,EAAK0iB,EAAK,GAAM,YAAY5pB,GAAAkH,EAAK0iB,EAAK,IAAV,MAAA5pB,GAAa,MAAOkH,EAAK0iB,EAAK,EAAE,KAAO1iB,EAAK0iB,EAAK,EAC/EvqB,CACT,EAAG,EAAE,EACL,UAAW,GAAG6H,EAAK,SAAS,IAAIA,EAAK,QAAQ,GAC7C,eACEA,EAAK,iBAAmB,KAAOS,EAAMT,EAAK,cAAc,EAAE,OAAO,eAAe,EAAI,MACtF,qBACEA,EAAK,uBAAyB,KAC1BS,EAAMT,EAAK,oBAAoB,EAAE,OAAO,eAAe,EACvD,MACN,8BACEA,EAAK,gCAAkC,KACnCS,EAAMT,EAAK,6BAA6B,EAAE,OAAO,eAAe,EAChE,MACN,2BACEA,EAAK,6BAA+B,KAChC,IAAIA,EAAK,2BAA2B,eAAe,QAAS,CAC1D,sBAAuB,EACvB,sBAAuB,EACxB,CAAC,GACF,MACN,cACEA,EAAK,gBAAkB,KACnB,IAAIA,EAAK,cAAc,eAAe,QAAS,CAC7C,sBAAuB,EACvB,sBAAuB,EACxB,CAAC,GACF,KACN,GAGJ,CAEA,eAAe89B,GAAiB,CAC1B,IAACZ,IACI,eAAQ,OAAO,oCAAoC,EAG5D,MAAMa,EAAiB,+BAA+BplC,EAAO,UAAU,WAAWA,EAAO,MAAM,GAE3F,IAGF,OAFiB,MAAMokC,EAAU,IAAIgB,CAAc,GAEnC,WACTxkB,EAAK,CACN,MAAAA,CACR,CACF,CAEA,eAAeykB,GAAuB,CAChC,IAACd,IACI,eAAQ,OAAO,oCAAoC,EAG5D,MAAMe,EAAmB,iCAAiCtlC,EAAO,UAAU,WAAWA,EAAO,MAAM,GAE/F,IAGK,OAAE,IAFQ,MAAMokC,EAAU,IAAIkB,CAAgB,GAEhC,YACd1kB,EAAK,CACN,MAAAA,CACR,CACF,CAEA,eAAe2kB,EAAqBC,EAAU,CACtC,MAAAC,EAAmB,cAAcD,CAAQ,GACzC,CAAE,KAAA5mC,EAAM,OAAA0C,GAAW,MAAM4d,EAAI,IAAIumB,CAAgB,EACvD,MAAO,CAAE,KAAMb,EAAmBhmC,CAAI,EAAG,OAAA0C,CAAO,CAClD,CAEA,eAAeokC,EAA6BF,EAAU,CAC9C,MAAAC,EAAmB,oCAAoCD,CAAQ,GAC/D,CAAE,KAAA5mC,EAAM,OAAA0C,GAAW,MAAM4d,EAAI,IAAIumB,CAAgB,EAChD,OAAE,KAAA7mC,EAAY,OAAA0C,EACvB,CACA,eAAeqkC,EAAe/mC,EAAM,CAC9B,IAAC2lC,IACI,eAAQ,OAAO,oCAAoC,EAEtD,MAAAQ,EAAaF,EAAkBjmC,CAAI,EAEnCgnC,EAAgB,yBAAyB5lC,EAAO,UAAU,WAAWA,EAAO,MAAM,GACxF+kC,EAAW,cAAc,qBAAuBj9B,EAC9Ci9B,EAAW,cAAc,sBACzB,OAAO,YAAY,EACrBA,EAAW,cAAc,8BAAgCj9B,EACvDi9B,EAAW,cAAc,+BACzB,OAAO,YAAY,EACjB,IAEF,OADiB,MAAMX,EAAU,KAAKwB,EAAeb,CAAU,GAC/C,WACTnkB,EAAK,CACN,MAAAA,CACR,CACF,CAEe,eAAAilB,EAA4BL,EAAUlkC,EAAQwkC,EAAQ,CACnE,MAAML,EAAmB,kCACrB,IACF,MAAMV,EAAa,CACjB,gBAAiBS,EACjB,OAAQlkC,EACR,OAAQwkC,CAAA,EAGH,OADU,MAAM1B,EAAU,IAAIqB,EAAkBV,CAAU,QAE1DnkB,EAAK,CAEN,MAAAA,CACR,CACF,CAEe,eAAAmlB,EAAoBP,EAAUQ,EAAsB,CAC3D,MAAAP,EAAmB,+BAA+BD,CAAQ,2CAC1DT,EAAaP,EAAiBwB,CAAoB,EAEjD,OADU,MAAM9mB,EAAI,IAAIumB,EAAkBV,CAAU,CAE7D,CAEA,eAAekB,EAAsB1hB,EAAW,CAGvC,OAFU,MAAM9B,EAAU,KAAK,oBAAqB8B,CAAS,CAGtE,CAEe,eAAA2hB,EAAkB,CAAE,OAAA5kC,GAAU,CAC3C,MAAM6kC,EAA2B,oCAAoCnmC,EAAO,MAAM,WAAWsB,CAAM,GAK/F,IACF,KAAM,CAAE,KAAA1C,CAAK,EAAI,MAAMwlC,EAAU,IAAI+B,CAAwB,EAC7D,OAAI7kC,IAAW,EAEN2jC,EAAyBrmC,CAAI,EAE/BA,QACAgiB,EAAK,CACN,MAAAA,CACR,CACF,CAEA,eAAewlB,EAAYZ,EAAU,CAC7B,MAAA/5B,EAAM,cAAc+5B,CAAQ,YAElC,OAAO,MAAMtjB,EAAY,IAAIzW,CAAG,EAAE,KAAKK,EAAK,iBAAiB,CAC/D,CAEA,eAAeu6B,GAAsB,CAC/B,IACI,MAAE,KAAAznC,GAAS,MAAMwlC,EAAU,IAAI,gCAAgCpkC,EAAO,MAAM,EAAE,EAC7E,OAAApB,QACAgiB,EAAK,CACN,MAAAA,CACR,CACF,CAEe,eAAA0lB,EAAiB5mB,EAAS,GAAI,cACrC,MAAAjU,EAAM,4BAA4BzL,EAAO,MAAM,GAE/C86B,EAASF,GAAA,EAAmB,mBAAmBlb,CAAM,EAErDwc,EAAyBtB,KAAmB,yBAChDE,EAAO,gBAGHxvB,EAAW,MAAM84B,EAAU,KAAK34B,EAAK,CACzC,GAAGqvB,EACH,eAAgBoB,CAAA,CACjB,EAEM,OAAE,OAAMt7B,IAAAD,IAAAR,GAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,GAAgB,OAAhB,YAAAQ,GAAsB,eAAtB,YAAAC,GAAoC,SAAU,GAC/D,CAEA,eAAe2lC,EAAe,CAAE,SAAAC,EAAU,SAAAhB,GAAY,CACpD,MAAM/5B,EAAM,6BAA6B+5B,CAAQ,aAAagB,CAAQ,GAGtE,OADiB,MAAMpC,EAAU,IAAI34B,CAAG,GACxB,IAClB,CAEO,OACL,UAAA24B,EACA,qBAAAiB,EACA,eAAAF,EACA,eAAAoB,EACA,eAAAZ,EACA,sBAAAM,EACA,qBAAAV,EACA,6BAAAG,EACA,oBAAAK,EACA,4BAAAF,EACA,kBAAAK,EACA,YAAAE,EACA,oBAAAC,EACA,iBAAAC,CAAA,CAEJ,CC3XY,MAACG,GAAyB,CACpC,QACA,WACA,eACA,2BACF,EAEaC,GAAe,CAC1B,UAAW,YACX,cAAe,gBACf,YAAa,cACb,KAAM,gBACR,EAoBaC,GAA0B,CACrC,YAAa,GACb,eAAgB,GAChB,eAAgB,KAChB,iBAAkB,KAClB,gBAAiB,KACjB,cAAe,KACf,YAAa,GACb,QAAS,KACT,eAAgB,KAChB,WAAY,CAAE,EACd,YAAa,KACb,UAAW,CAAE,EACb,qBAAsB,KACtB,8BAA+B,KAC/B,eAAgB,GAChB,UAAW,CAAE,EACb,OAAQ,CACV,EACaC,GAA0B,CACrC,UAAW,GACX,SAAU,GACV,MAAO,GACP,aAAc,KACd,WAAY,KACZ,kBAAmB,KACnB,WAAY,CACV,UAAW,KACX,SAAU,KACV,MAAO,IACR,CACH,EACaC,GAAwB,CACnC,cAAe,KACf,2BAA4B,IAC9B,ECxDMhoB,GAAQ,KAAO,CACnB,uBAAA4nB,GACA,aAAAC,GACA,kBAAmB,CACjB,GAAI,KACJ,OAAQ,KACR,eAAgB,CACd,GAAGE,EACJ,EACD,cAAe,CACb,GAAGD,EACJ,EACD,iBAAkB,CAChB,GAAGE,EACJ,CACF,EACD,sBAAuB,CAAE,EACzB,eAAgB,KAChB,WAAY,CAAE,EACd,eAAgB,CAAE,CACpB,GAEM/nB,GAAU,CACd,qBAAuBD,GAAUA,EAAM,kBACvC,wBAA0BA,GAAUA,EAAM,kBAAkB,eAC5D,wBAA0BA,GAAUA,EAAM,kBAAkB,cAC5D,0BAA4BA,GAAUA,EAAM,kBAAkB,iBAC9D,yBAA2BA,GAAUA,EAAM,sBAC3C,wBAA0BA,GAAUA,EAAM,eAC1C,oBAAsBA,GAAUA,EAAM,WACtC,kBAAoBA,GAAUA,EAAM,cACtC,EAEME,GAAU,CACd,gBAAiB,MAAO,CAAE,OAAAC,CAAQ,EAAEwmB,IAAa,CAC/C,GAAI,CACF,MAAMl6B,EAAW,MAAM24B,KAAgB,qBAAqBuB,CAAQ,EACpE,GAAIl6B,EAAS,SAAW,IACtB,OAAA0T,EAAO8nB,GAA+Bx7B,EAAS,IAAI,EAC5C,QAAQ,QAAQA,EAAS,IAAI,CAEvC,OAAQsV,EAAK,CACZ,OAAO,QAAQ,OAAOA,CAAG,CAC1B,CACF,EACD,wBAAyB,MAAOqB,EAAGujB,IAAa,CAC9C,GAAI,CACF,MAAMl6B,EAAW,MAAM24B,KAAgB,6BAA6BuB,CAAQ,EAC5E,GAAIl6B,EAAS,SAAW,IACtB,OAAO,QAAQ,QAAQA,EAAS,IAAI,CAEvC,OAAQsV,EAAK,CACZ,OAAO,QAAQ,OAAOA,CAAG,CAC1B,CACF,EACD,sBAAuB,MACrB,CAAE,OAAA5B,CAAQ,EACV,CAAE,SAAAwmB,EAAU,eAAAf,EAAgB,cAAAC,EAAe,iBAAAC,CAAkB,IAC1D,CAEH,MAAMoC,EAAiB,MAAM9C,KAAgB,oBAAoBuB,EAAU,CACzE,eAAAf,EACA,cAAAC,EACA,iBAAAC,CACN,CAAK,EACD,OAAA3lB,EAAOgoB,GAAkC,CACvC,eAAAvC,EACA,cAAAC,EACA,iBAAAC,CACN,CAAK,EACM,QAAQ,QAAQoC,CAAc,CACtC,EACD,4BAA6B,CAAC9kB,EAAG,CAAE,SAAAujB,EAAU,OAAAlkC,EAAQ,OAAAwkC,CAAM,IAClD7B,GAAa,EAAG,4BAA4BuB,EAAUlkC,EAAQwkC,CAAM,EAE7E,gBAAiB,CAAC,CAAE,OAAA9mB,MAClBA,EAAO8nB,GAA+B,CACpC,GAAI,KACJ,OAAQ,KACR,eAAgB,CACd,GAAGF,EACJ,EACD,cAAe,CACb,GAAGD,EACJ,EACD,iBAAkB,CAChB,GAAGE,EACJ,CACP,CAAK,EACM,QAAQ,QAAQ,EAAI,GAG7B,2BAA4B,MAAO,CAAE,OAAA7nB,EAAQ,YAAAioB,CAAW,EAAIvnB,EAAS,KAAO,OAC1E,MAAM+B,IAASthB,EAAA8mC,EAAY,kBAAZ,YAAA9mC,EAA6B,KAAM,KAClD,GAAI,CAACshB,EACH,OAAO,QAAQ,OAAO,oBAAoB,EAG5C/B,EAAS,CAAE,GAAGA,EAAQ,OAAQ,CAAG,EAEjC,GAAI,CACF,MAAMpU,EAAW,MAAM24B,GAAc,CAAE,OAAAxiB,CAAM,CAAE,EAAE,kBAAkB/B,CAAM,EAEzE,OAAAV,EAAOkoB,GAAmC57B,CAAQ,EAC3C,QAAQ,QAAQA,CAAQ,CAChC,OAAQvK,EAAG,CACV,OAAO,QAAQ,OAAOA,CAAC,CACxB,CACF,EACD,2BAA4B,MAAO,CAAE,OAAAie,EAAQ,SAAAma,EAAU,QAAAra,CAAO,EAAIif,KAChE,MAAM5E,EAAS,2BAA2B,EAC1Cna,EAAOmoB,GAAmCpJ,CAAU,EAC7C,QAAQ,QAAQjf,EAAQ,uBAAuB,GAExD,0BAA2B,CAAC,CAAE,OAAAE,MAC5BA,EAAOmoB,GAAmC,IAAI,EACvC,QAAQ,QAAQ,EAAI,GAE7B,YAAa,MAAOllB,EAAGujB,IACd,MAAMvB,GAAa,EAAG,YAAYuB,CAAQ,EAEnD,sBAAuB,MAAO,CAAE,OAAAxmB,EAAQ,YAAAioB,KAAkB,OACxD,MAAMxlB,IAASthB,EAAA8mC,EAAY,kBAAZ,YAAA9mC,EAA6B,KAAM,KAClD,GAAI,CAACshB,EACH,OAAO,QAAQ,OAAO,oBAAoB,EAG5C,GAAI,CACF,MAAMnW,EAAW,MAAM24B,GAAc,CAAE,OAAAxiB,CAAQ,GAAE,oBAAqB,EAEtE,OAAAzC,EAAOooB,GAA6B97B,CAAQ,EACrC,QAAQ,QAAQA,CAAQ,CAChC,OAAQvK,EAAG,CACV,OAAO,QAAQ,OAAOA,CAAC,CACxB,CACF,EACD,oBAAqB,MAAO,CAAE,OAAAie,EAAQ,YAAAioB,CAAW,EAAI,CAAE,OAAAvnB,CAAM,IAAO,OAClE,MAAM+B,IAASthB,EAAA8mC,EAAY,kBAAZ,YAAA9mC,EAA6B,KAAM,KAClD,GAAI,CAACshB,EACH,OAAO,QAAQ,OAAO,oBAAoB,EAG5C,GAAI,CACF,KAAM,CAAE,KAAA7iB,CAAM,EAAG,MAAMqlC,GAAc,CAAE,OAAAxiB,EAAQ,EAAE,iBAAiB/B,CAAM,EAExE,OAAAV,EAAOqoB,GAA+BzoC,CAAI,EACnCA,CACR,OAAQgiB,EAAK,CACZ,MAAA5B,EAAOqoB,GAA+B,EAAE,EAClCzmB,CACP,CACF,EACD,uBAAwB,CAAC,CAAE,OAAA5B,KAAa,CACtCA,EAAOqoB,GAA+B,EAAE,CACzC,CACH,EAEMpnB,GAAY,CAChB,CAAC6mB,EAA6B,EAAEjoB,EAAOyoB,EAAmB,CACxDzoB,EAAM,kBAAoByoB,CAC3B,EACD,CAACN,EAAgC,EAAEnoB,EAAOyoB,EAAmB,CAC3DzoB,EAAM,kBAAoB,CACxB,GAAGA,EAAM,kBACT,GAAGyoB,CACJ,CACF,EACD,CAACJ,EAAiC,EAAEroB,EAAO0oB,EAAuB,CAChE1oB,EAAM,sBAAwB0oB,CAC/B,EACD,CAACJ,EAAiC,EAAEtoB,EAAO2oB,EAAgB,CACzD3oB,EAAM,eAAiB2oB,CACxB,EACD,CAACJ,EAA2B,EAAEvoB,EAAO4oB,EAAY,CAC/C5oB,EAAM,WAAa4oB,CACpB,EACD,CAACJ,EAA6B,EAAExoB,EAAOohB,EAAU,CAC/CphB,EAAM,eAAiBohB,CACxB,CACH,EAEeyH,GAAA,CACb,WAAY,GACd,MAAE7oB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECnMapB,GAAQ,CACnB,4BAA6B,CAAE,CACjC,EACaC,GAAU,CACrB,+BAAiCD,GAAUA,EAAM,2BACnD,EACaE,GAAU,CACrB,iCAAkC,CAAC,CAAE,OAAAC,CAAQ,EAAEkZ,IAAU,CACvD,GAAI,CAACA,EAAO,CACVlZ,EAAO2oB,GAA8C,EAAE,EACvD,MACD,CAED,MAAMl8B,EAAM,yFAAyFysB,CAAK,GAC1G,OAAOhZ,EAAI,IAAIzT,CAAG,EAAE,KAAMmf,GAAQ,CAChC,MAAMrC,EAAYqC,EAAI,KAAK,KAAK,4BAA4B,OAC5D,OAAA5L,EAAO2oB,GAA8Cpf,CAAS,EACvDqC,CACb,CAAK,CACF,CACH,EACa3K,GAAY,CACvB,CAAC0nB,EAA4C,EAAG,CAAC9oB,EAAO0J,IAAc,CACpE1J,EAAM,4BAA8B0J,CACrC,CACH,EACeqf,GAAA,CACb,WAAY,GACd,MAAE/oB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EChCapB,GAAQ,CACnB,gBAAiB,CAAE,EACnB,mBAAoB,CAAE,CACxB,EAEaC,GAAU,CACrB,mBAAqBD,GAAUA,EAAM,gBACrC,sBAAwBA,GAAUA,EAAM,kBAC1C,EAEaE,GAAU,CACrB,qBAAsB,CAAC,CAAE,OAAAC,KAGhBE,EAAI,IAFC,4DAEM,EAAE,KAAM5T,GAAa,CACrC,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMu8B,EAAkBv8B,EAAS,KAAK,KAAK,kBAAkB,OAC7D,OAAA0T,EAAO8oB,GAA+BD,CAAe,EAC9CA,CACR,CACP,CAAK,EAEH,wBAAyB,CAAC,CAAE,OAAA7oB,KAGnBE,EAAI,IAFC,mEAEM,EAAE,KAAM5T,GAAa,CACrC,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMy8B,EAAqBz8B,EAAS,KAAK,KAAK,qBAAqB,OACnE,OAAA0T,EAAOgpB,GAAmCD,CAAkB,EACrDA,CACR,CACP,CAAK,CAEL,EAEa9nB,GAAY,CACvB,CAAC6nB,EAA6B,EAAEjpB,EAAOgpB,EAAiB,CACtDhpB,EAAM,gBAAkBgpB,CACzB,EACD,CAACG,EAAiC,EAAEnpB,EAAOkpB,EAAoB,CAC7DlpB,EAAM,mBAAqBkpB,CAC5B,CACH,EAEeE,GAAA,CACb,WAAY,GACd,MAAEppB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC/CMioB,GAA2B,EAAI,GAAK,IAE1C,SAASjX,GAAexlB,EAAK,CAC3B,OAAOyW,EAAY,IAAIzW,CAAG,EAAE,KAAKK,EAAK,iBAAiB,CACzD,CAEO,MAAM+S,GAAQ,CACnB,WAAY,CAAE,EACd,eAAgB,CAAE,EAClB,iBAAkB,CAAE,EACpB,kBAAmB,CAAE,EACrB,iBAAkB,CAAE,EACpB,cAAe,CAAE,EACjB,WAAY,CAAE,CAChB,EAEMoB,GAAY,CAChB,CAACkoB,EAA0B,EAAEtpB,EAAOupB,EAAW,CAC7CvpB,EAAM,WAAWupB,EAAU,IAAI,EAAIA,CACpC,EACD,CAACC,EAA4B,EAAExpB,EAAOypB,EAAO,CAC3CzpB,EAAM,eAAiBypB,CACxB,EACD,CAACC,EAA8B,EAAE1pB,EAAO2pB,EAAY,CAClD3pB,EAAM,iBAAmB2pB,CAC1B,EACD,CAACC,EAAwB,EAAE5pB,EAAO6pB,EAAY,CAC5C7pB,EAAM,kBAAoB6pB,CAC3B,EACD,CAACC,EAA8B,EAAE9pB,EAAO+pB,EAAa,CACnD/pB,EAAM,kBAAoBA,EAAM,kBAAkB,OAAQ3e,GAAMA,EAAE,KAAO0oC,CAAW,CACrF,EACD,CAACC,EAAuB,EAAEhqB,EAAOiqB,EAAW,CAC1CjqB,EAAM,iBAAmBiqB,CAC1B,EACD,CAACC,EAA8B,EAAElqB,EAAOmqB,EAAmB,CACzDnqB,EAAM,iBAAmBA,EAAM,iBAAiB,OAAQ3e,GAAMA,EAAE,KAAO8oC,CAAiB,CACzF,EACD,CAACC,EAA8B,EAAEpqB,EAAOqqB,EAAiB,CAEvD,MAAMC,EAAStqB,EAAM,iBAAiB,KAAM,GAAM,EAAE,KAAOqqB,EAAgB,EAAE,EAE7EC,EAAO,MAAQD,EAAgB,MAC/BC,EAAO,OAASD,EAAgB,OAChCC,EAAO,UAAYD,EAAgB,UACnCC,EAAO,cAAgBD,EAAgB,cAEvCrqB,EAAM,iBAAmB,CACvB,GAAGA,EAAM,iBAAiB,OAAQ,GAAM,EAAE,KAAOqqB,EAAgB,EAAE,EACnEC,CACD,CACF,EACD,CAACC,EAA+B,EAAEvqB,EAAOwqB,EAAM,CACzCA,EAAK,IACPxqB,EAAM,WAAWwqB,EAAK,IAAI,EAAE,WAAW,KAAKA,EAAK,QAAQ,EAEzDxqB,EAAM,WAAWwqB,EAAK,IAAI,EAAE,WAAaxqB,EAAM,WAAWwqB,EAAK,IAAI,EAAE,WAAW,OAC7EnqC,GAAMA,IAAMmqC,EAAK,QACnB,CAEJ,EACD,CAACC,EAAkB,EAAEzqB,EAAOjgB,EAAM,CAChCigB,EAAM,WAAajgB,CACpB,EACD,CAAC2qC,EAAoB,EAAE1qB,EAAO2qB,EAAQ,CACpC3qB,EAAM,cAAgB2qB,CACvB,EACD,CAACC,EAA2B,EAAE5qB,EAAO6qB,EAAgB,CACnD7qB,EAAM,cAAgBA,EAAM,cAAc,OAAQ3e,GAAMA,EAAE,KAAOwpC,CAAc,CAChF,EACD,CAACC,EAA2B,EAAE9qB,EAAO+qB,EAAc,CACjD/qB,EAAM,cAAgB,CACpB,GAAGA,EAAM,cAAc,OAAQ3e,GAAMA,EAAE,KAAO0pC,EAAa,EAAE,EAC7DA,CACD,CACF,EACD,CAACC,EAA4B,EAAEhrB,EAAOirB,EAAe,CACnD,MAAM9iC,EAAI,IAAI,IACd,UAAW,KAAK8iC,EACd9iC,EAAE,IAAI,EAAE,EAAE,EAEZ,UAAW9H,KAAK2f,EAAM,cACpB1W,EAAI,IAAIjJ,EAAG,YAAa8H,EAAE,IAAI9H,EAAE,EAAE,CAAC,CAEtC,CACH,EAEa4f,GAAU,CACrB,cAAgBD,GAAUA,EAAM,WAChC,kBAAoBA,GAAUA,EAAM,eACpC,oBAAsBA,GAAUA,EAAM,iBACtC,qBAAuBA,GAAUA,EAAM,kBACvC,oBAAsBA,GAAUA,EAAM,iBACtC,iBAAmBA,GAAUA,EAAM,cACnC,oBAAsBA,GAAUA,EAAM,UACxC,EAEaE,GAAU,CACrB,eAAgB,MAAOkD,EAAG8nB,IAAe,CACvC,MAAMt+B,EAAM,qEAAqEs+B,CAAU,GAC3F,IAAIz+B,EACJ,GAAI,CAEF,GADAA,EAAW,MAAM4T,EAAI,KAAKzT,CAAG,EACzBH,EAAS,SAAW,IACtB,OAAO,QAAQ,QAAQA,CAAQ,CAElC,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,oBAAqB,CAACqB,EAAG+nB,IAAe,CACtC,MAAMv+B,EAAM,+DAA+Du+B,CAAU,GACrF,OAAO/Y,GAAexlB,CAAG,CAC1B,EACD,oBAAqB,MAAO,CAAE,MAAAoT,EAAO,OAAAG,EAAQ,UAAA8S,CAAS,EAAIuX,IAAS,CACjE,MAAM59B,EAAM,gEAAgE49B,EAAK,IAAI,GACrF,GAAI,CACF,MAAM5nB,GAAUqQ,EAAU,eAAe,gBAAkB,IAAI,IAAM,GAKrE,GACEuX,EAAK,UACL,CAACxqB,EAAM,WAAWwqB,EAAK,IAAI,GAC3BxqB,EAAM,WAAWwqB,EAAK,IAAI,EAAE,SAAW5nB,GACvC5C,EAAM,WAAWwqB,EAAK,IAAI,EAAE,UAAY,KAAK,IAAG,EAAKnB,GACrD,CACA,MAAM58B,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAClC,GAAIH,EAAS,SAAW,IAAK,CAC3B,MAAM88B,EAAY98B,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAC1D88B,EAAU,UAAY,KAAK,IAAK,EAChCA,EAAU,OAAS3mB,EACnBzC,EAAOmpB,GAA4BC,CAAS,CAC7C,CACF,CACF,OAAQxnB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,oBAAqB,MAAO,CAAE,MAAA/B,EAAO,OAAAG,KAAa,CAChD,GAAI,CAACH,EAAM,eAAe,OAAQ,CAChC,MAAMpT,EAAM,2DACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KACtB0T,EAAOqpB,GAA8B/8B,EAAS,KAAK,KAAK,aAAa,MAAM,CAE9E,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,CACF,EACD,sBAAuB,MAAO,CAAE,MAAA/B,EAAO,OAAAG,KAAa,CAClD,GAAI,CAACH,EAAM,iBAAiB,OAAQ,CAClC,MAAMpT,EAAM,gEACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KACtB0T,EAAOupB,GAAgCj9B,EAAS,KAAK,KAAK,sBAAsB,MAAM,CAEzF,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,CACF,EACD,uBAAwB,MAAO,CAAE,OAAA5B,KAAa,CAC5C,MAAMvT,EAAM,sEACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KACtB0T,EAAOypB,GAA0Bn9B,EAAS,KAAK,KAAK,4BAA4B,MAAM,CAEzF,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,sBAAuB,MAAO,CAAE,OAAA5B,KAAa,CAC3C,MAAMvT,EAAM,qEACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KACtB0T,EAAO6pB,GAAyBv9B,EAAS,KAAK,KAAK,mBAAmB,MAAM,CAE/E,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,eAAgB,MAAO,CAAE,OAAA5B,CAAQ,EAAEqqB,IAAS,CAC1C,MAAM59B,EAAM,+DAA+D49B,EAAK,IAAI,GACpF,GAAI,EACeA,EAAK,IAAM,MAAMnqB,EAAI,IAAIzT,CAAG,EAAI,MAAMyT,EAAI,OAAOzT,CAAG,GACxD,SAAW,KACtBuT,EAAOoqB,GAAiCC,CAAI,CAE/C,OAAQzoB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,sBAAuB,MAAO,CAAE,OAAA5B,CAAQ,EAAEgqB,IAAsB,CAC9D,MAAMv9B,EAAM,gEAAgEu9B,CAAiB,GAC7F,GAAI,EACe,MAAM9pB,EAAI,OAAOzT,CAAG,GACxB,SAAW,KACtBuT,EAAO+pB,GAAgCC,CAAiB,CAE3D,OAAQpoB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,gBAAiB,MAAO,CAAE,OAAA5B,CAAQ,EAAE4pB,IAAgB,CAClD,MAAMn9B,EAAM,gEAAgEm9B,CAAW,GACvF,GAAI,EACe,MAAM1pB,EAAI,OAAOzT,CAAG,GACxB,SAAW,KACtBuT,EAAO2pB,GAAgCC,CAAW,CAErD,OAAQhoB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,sBAAuB,MAAO,CAAE,SAAAuY,CAAU,EAAE+P,IAAoB,CAC9D,MAAMz9B,EAAM,+DACZ,GAAI,EACe,MAAMyT,EAAI,KAAKzT,EAAKy9B,CAAe,GACvC,SAAW,KACtB/P,EAAS,uBAAuB,CAEnC,OAAQvY,EAAK,CACZ,MAAMA,CACP,CACF,EACD,sBAAuB,MAAO,CAAE,OAAA5B,CAAQ,EAAEkqB,IAAoB,CAC5D,MAAMz9B,EAAM,+DACZ,GAAI,EACe,MAAMyT,EAAI,IAAIzT,EAAKy9B,CAAe,GACtC,SAAW,KACtBlqB,EAAOiqB,GAAgCC,CAAe,CAEzD,OAAQtoB,EAAK,CACZ,MAAMA,CACP,CACF,EAED,mBAAoB,MAAO,CAAE,OAAA5B,KAAa,CACxC,MAAMvT,EAAM,mEACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KAAOA,EAAS,KAAK,KAAK,wBAChD0T,EAAOuqB,GAAsBj+B,EAAS,KAAK,KAAK,uBAAuB,MAAM,CAEhF,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,0BAA2B,MAAO,CAAE,OAAA5B,KAAa,CAC/C,MAAMvT,EAAM,0EACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAC9BH,EAAS,SAAW,KAAOA,EAAS,KAAK,KAAK,wBAChD0T,EAAO6qB,GAA8Bv+B,EAAS,KAAK,KAAK,uBAAuB,MAAM,CAExF,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,sBAAuB,MAAO,CAAE,OAAA5B,CAAQ,EAAEirB,IAAmB,CAC3D,MAAMx+B,EAAM,gEACZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,KAAKzT,EAAKw+B,CAAc,EACnD,GAAI3+B,EAAS,SAAW,IACtB,OAAA0T,EAAOsqB,GAAoBh+B,EAAS,KAAK,KAAK,aAAa,MAAM,EAC1D,QAAQ,QAAQA,CAAQ,CAElC,OAAQsV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,qBAAsB,CAACqB,EAAGynB,IAAmB,CAC3C,MAAMj+B,EAAM,4EAA4Ei+B,CAAc,GACtG,OAAOzY,GAAexlB,CAAG,CAC1B,EACD,mBAAoB,MAAOwW,EAAGynB,IAAmB,CAC/C,MAAMj+B,EAAM,0EAA0Ei+B,CAAc,GACpG,GAAI,CACF,MAAMp+B,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAClC,GAAIH,EAAS,SAAW,IAAK,CAC3B,MAAM4+B,EAAY5+B,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,IACtD0+B,EAAa1+B,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAAE,KAEvDE,EAAO,MADS,MAAM,MAAM0+B,CAAS,GACV,KAAM,EACvCp+B,EAAK,kBAAkB,KAAMN,EAAMw+B,CAAU,CAC9C,CACF,OAAQppB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,oBAAqB,MAAOqB,EAAGynB,IAAmB,CAChD,MAAMj+B,EAAM,2EAA2Ei+B,CAAc,GACrG,GAAI,EACe,MAAMxqB,EAAI,IAAIzT,CAAG,GACrB,MAId,OAAQmV,EAAK,CACZ,MAAMA,CACP,CACF,EACD,mBAAoB,MAAO,CAAE,SAAAuY,CAAU,EAAEyQ,IAAiB,CACxD,IAAIxnB,EAAK,GACT,MAAM3W,EAAM,mEAEZ,GAAI,CACF,MAAMH,EAAW,MAAM4T,EAAI,KAAKzT,EAAKm+B,CAAY,EAC7Ct+B,EAAS,SAAW,MACtB8W,EAAK9W,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAC7C6tB,EAAS,oBAAoB,EAEhC,OAAQvY,EAAK,CACZ,MAAMA,CACP,CACD,OAAOwB,CACR,EACD,mBAAoB,MAAO,CAAE,OAAApD,CAAQ,EAAE4qB,IAAiB,CACtD,MAAMn+B,EAAM,mEACZ,GAAI,EACe,MAAMyT,EAAI,IAAIzT,EAAKm+B,CAAY,GACnC,SAAW,KACtB5qB,EAAO2qB,GAA6BC,CAAY,CAEnD,OAAQhpB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,mBAAoB,MAAO,CAAE,OAAA5B,CAAQ,EAAE0qB,IAAmB,CACxD,MAAMj+B,EAAM,oEAAoEi+B,CAAc,GAC9F,GAAI,EACe,MAAMxqB,EAAI,OAAOzT,CAAG,GACxB,SAAW,KACtBuT,EAAOyqB,GAA6BC,CAAc,CAErD,OAAQ9oB,EAAK,CACZ,MAAMA,CACP,CACF,EACD,oBAAqB,CAAC,CAAE,OAAA5B,CAAQ,EAAEmrB,IAAe,CAC/CnrB,EAAOsqB,GAAoBa,CAAU,CACtC,EACD,sBAAuB,CAAC,CAAE,OAAAnrB,KAAa,CACrCA,EAAOsqB,GAAoB,EAAE,CAC9B,CACH,EAEec,GAAA,CACb,WAAY,GACd,MAAEvrB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC9WMoqB,GAA2B,CAC/B,WAAY,cACZ,wBAAyB,CAAE,EAC3B,0BAA2B,CAAE,EAC7B,4BAA6B,CAAE,EAC/B,sBAAuB,CAAE,EACzB,oBAAqB,CAAE,EACvB,2BAA4B,CAAE,EAC9B,yBAA0B,CAAE,EAC5B,cAAe,KACf,cAAe,KACf,UAAW,KACX,UAAW,KACX,QAAS,KACT,SAAU,KACV,cAAe,CAAC,GAAI,EAAE,EACtB,kBAAmB,KACnB,gBAAiB,KACjB,QAAS,KACT,SAAU,KACV,SAAU,KACV,UAAW,KACX,KAAM,KACN,KAAM,KACN,MAAO,KACP,UAAW,KACX,OAAQ,KACR,OAAQ,KACR,QAAS,IACX,EAEMC,GAAe,KACZ,CACL,kBAAmB,CAAE,GAAGD,EAA0B,CACnD,GAGGvrB,GAAU,CACd,qBAAuBD,GAAUA,EAAM,iBACzC,EAEME,GAAU,CACd,qBAAsB,CAAC,CAAE,OAAAC,CAAQ,EAAEurB,KACjCvrB,EAAO,uBAAwBurB,CAAM,EAC9B,QAAQ,QAAS,GAE1B,uBAAwB,CAAC,CAAE,OAAAvrB,MACzBA,EAAO,wBAAwB,EACxB,QAAQ,QAAS,EAE5B,EAEMiB,GAAY,CAChB,qBAAqBpB,EAAOsqB,EAAQ,CAClCtqB,EAAM,kBAAoB,CAAE,GAAGA,EAAM,kBAAmB,GAAGsqB,CAAQ,CACpE,EACD,uBAAuBtqB,EAAO,CAC5BA,EAAM,kBAAoB,CAAE,GAAGwrB,EAA0B,CAC1D,CACH,EAEeG,GAAA,CACb,WAAY,GACZ,MAAOF,GACT,QAAExrB,GACF,QAAEC,GACF,UAAEkB,EACF,EChEMpB,GAAQ,CACZ,gBAAiB,CAAE,EACnB,oBAAqB,CACnB,yBAA0B,GAC1B,2BAA4B,EAC7B,CACH,EAEMC,GAAU,CACd,mBAAqBD,GAAUA,EAAM,gBACrC,uBAAyBA,GAAUA,EAAM,mBAC3C,EAEME,GAAU,CACd,qBAAsB,CAAC,CAAE,OAAAC,KAGhBE,EAAI,IAFC,kEAEM,EAAE,KAAK,SAAU5T,EAAU,CAC3C,OAAA0T,EAAOyrB,GAA2Bn/B,EAAS,KAAK,KAAK,SAAS,MAAM,EAC7DA,EAAS,IACtB,CAAK,EAEH,mBAAoB,CAAC,CAAE,OAAA0T,CAAQ,EAAE0rB,IAAoB,CACnD1rB,EAAOyrB,GAA2BC,CAAe,CAClD,EACD,uBAAwB,CAAC,CAAE,OAAA1rB,CAAQ,EAAE2rB,IAAwB,CAC3D3rB,EAAO4rB,GAAgCD,CAAmB,CAC3D,CACH,EAEM1qB,GAAY,CAChB,CAACwqB,EAAyB,EAAE5rB,EAAO6rB,EAAiB,CAClD7rB,EAAM,gBAAkB6rB,CACzB,EACD,CAACE,EAA8B,EAAE/rB,EAAO8rB,EAAqB,CAC3D9rB,EAAM,oBAAsB8rB,CAC7B,CACH,EAEeD,GAAA,CACb,WAAY,GACd,MAAE7rB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC7CMpB,GAAQ,CACZ,WAAY,IACd,EAEaC,GAAU,CACrB,cAAgBD,GACVA,EAAM,WACDA,EAAM,WAAW,IAAKgsB,IACpB,CACL,EAAGA,EAAE,OACL,EAAGA,EAAE,OACL,EAAGA,EAAE,MACL,EAAGA,EAAE,OACL,EAAGA,EAAE,GACL,UAAWA,EAAE,QACd,EACF,EACS,CAAE,CAElB,EAEa9rB,GAAU,CACrB,gBAAiB,MAAO,CAAE,OAAAC,KAAa,CAErC,MAAM1T,EAAW,MAAM4T,EAAI,IADf,yBACsB,EAClC,GAAI5T,EAAS,KAAK,QAAU,EAAG,CAC7B,MAAMw/B,EAAax/B,EAAS,KAAK,KAAK,kBAAkB,OACxD0T,EAAO+rB,GAAgCD,CAAU,CAClD,CACF,EACD,eAAgB,MAAO,CAAE,OAAA9rB,CAAQ,EAAEgsB,IAAS,CAC1C,MAAMC,EAAaD,EAAK,IAAKH,IACpB,CACL,OAAQA,EAAE,EACV,OAAQA,EAAE,EACV,MAAOA,EAAE,EACT,OAAQA,EAAE,EACV,GAAIA,EAAE,EACN,SAAUA,EAAE,SACb,EACF,EACKp/B,EAAM,0BAEZ,MAAMyT,EAAI,IAAIzT,EAAKw/B,CAAU,EAE7B,MAAMC,EAAU,MAAMhsB,EAAI,IAAIzT,CAAG,EACjC,GAAIy/B,EAAQ,KAAK,QAAU,EAAG,CAC5B,MAAMJ,EAAaI,EAAQ,KAAK,KAAK,kBAAkB,OACvDlsB,EAAO+rB,GAAgCD,CAAU,CAClD,CACF,CACH,EAEa7qB,GAAY,CACvB,CAAC8qB,EAA8B,EAAElsB,EAAOisB,EAAY,CAClDjsB,EAAM,WAAaisB,CACpB,CACH,EAEeK,GAAA,CACb,WAAY,GACd,MAAEtsB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EClEalB,GAAU,CACrB,uBAAuBkD,EAAG+L,EAAU,CAClC,MAAMviB,EAAM,oEAAoEuiB,CAAQ,GACxF,OAAO9O,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GACKA,EAAS,KAAK,KAAK,cAAc,MAE/D,CACF,CACH,EAEe8/B,GAAA,CACb,WAAY,GACd,QAAErsB,EACF,ECbaF,GAAQ,CACnB,mBAAoB,KACpB,sBAAuB,CAAE,CAC3B,EAEaC,GAAU,CACrB,sBAAwBD,GAAUA,EAAM,mBACxC,yBAA2BA,GAAUA,EAAM,qBAC7C,EAEaE,GAAU,CACrB,sBAAuB,CAAC,CAAE,OAAAC,CAAQ,EAAEqsB,KAClCrsB,EAAOssB,GAAgCD,CAAU,EAC1C,IAAI,QAAS/oC,GAAY,CAC9BA,EAAQ+oC,CAAU,CACxB,CAAK,GAEH,yBAA0B,CAAC,CAAE,OAAArsB,CAAQ,EAAEusB,KACrCvsB,EAAOwsB,GAAmCD,CAAa,EAChD,IAAI,QAASjpC,GAAY,CAC9BA,EAAQipC,CAAa,CAC3B,CAAK,EAEL,EAEatrB,GAAY,CACvB,CAACurB,EAAiC,EAAE3sB,EAAO0sB,EAAe,CACxD1sB,EAAM,sBAAwB0sB,CAC/B,EACD,CAACD,EAA8B,EAAEzsB,EAAOwsB,EAAY,CAClDxsB,EAAM,mBAAqBwsB,CAC5B,CACH,EAEeI,GAAA,CACb,WAAY,GACd,MAAE5sB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECtCMpB,GAAQ,CACZ,mBAAoB,CAAE,EACtB,WAAY,IACd,EAEaC,GAAU,CACrB,sBAAwBD,GAAUA,EAAM,mBACxC,qBAAuBA,GAAWuD,GACzBvD,EAAM,mBAAmB,KAAM6sB,GAAQA,EAAI,KAAOtpB,CAAE,EAE7D,cAAgBvD,GAAUA,EAAM,UAClC,EACaE,GAAU,CACrB,wBAAyB,CAAC,CAAE,OAAAC,CAAQ,EAAE2sB,IAAkB,CACtD,MAAMlgC,EAAM,kEAAkEkgC,CAAa,GAC3F,OAAOzsB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,IACxB0T,EAAO4sB,GAAqC,CAC1C,mBAAoBtgC,EAAS,KAAK,KAAK,qBAAqB,OAC5D,cAAAqgC,CACR,CAAO,EACMrgC,EACR,CACF,EACD,wBAAyB,CAAC,CAAE,OAAA0T,CAAQ,EAAE2sB,IAAkB,CACtD3sB,EAAO6sB,GAAgCF,CAAa,CACrD,EACD,sBAAuB,CAAC,CAAE,OAAA3sB,CAAQ,EAAE3b,IAAU,CAC5C2b,EAAO4sB,GAAqCvoC,CAAK,CAClD,EACD,qBAAsB,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CAC3C2b,EAAO8sB,GAA6BzoC,CAAK,CAC1C,EACD,0BAA2B,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CAChD2b,EAAO+sB,GAAiC1oC,CAAK,CAC9C,EACD,wBAAyB,CAAC,CAAE,OAAA2b,CAAQ,EAAEgtB,IAAwB,CAC5DhtB,EAAOitB,GAAgCD,CAAmB,CAC3D,EACD,wBAAyB,CAAC,CAAE,OAAAhtB,KAAa,CACvCA,EAAOktB,EAA6B,CACrC,CACH,EACajsB,GAAY,CACvB,CAAC2rB,EAAmC,EAAE/sB,EAAOstB,EAAM,CACjDttB,EAAM,mBAAqBstB,EAAK,mBAC7B,IAAKT,IACG,CACL,GAAIA,EAAI,GACR,cAAeS,EAAK,cACpB,KAAMT,EAAI,KACV,eAAgBA,EAAI,eACpB,UAAWA,EAAI,UACf,mBAAoBA,EAAI,mBACxB,YAAaA,EAAI,YACjB,WAAYA,EAAI,WAChB,mBAAoBA,EAAI,mBACxB,iBAAkBA,EAAI,iBACtB,QAASA,EAAI,QACb,4BAA6BA,EAAI,2BAClC,EACF,EACA,KAAK,CAAC,EAAG/V,IACD,EAAE,UAAYA,EAAE,SACxB,CACJ,EACD,CAACmW,EAA2B,EAAEjtB,EAAOutB,EAAY,CAC/C,MAAMC,EAAWxtB,EAAM,mBAAmB,UAAW6sB,GAAQA,EAAI,KAAOU,EAAW,EAAE,EAErF,GAAIC,IAAa,GAAI,MAAO,GAE5B,OAAO,OAAOxtB,EAAM,mBAAmBwtB,CAAQ,EAAGD,CAAU,CAC7D,EACD,CAACP,EAA8B,EAAEhtB,EAAO8sB,EAAe,CACrD,MAAMW,EAAgBztB,EAAM,mBAAmB,OAAQ6sB,GAAQA,EAAI,UAAY,EAAK,EAAE,OAEtF7sB,EAAM,WAAa,CACjB,GAAI/S,EAAK,KAAM,EACf,cAAe6/B,EACf,KAAM,aACN,eAAgB,kBAChB,UAAWW,EACX,mBAAoB,GACpB,YAAa,IACb,WAAY,GACZ,mBAAoB,GACpB,iBAAkB,GAClB,QAAS,EACV,EAEDztB,EAAM,mBAAmB,KAAKA,EAAM,UAAU,CAC/C,EACD,CAACktB,EAA+B,EAAEltB,EAAOxb,EAAO,CAC9C,MAAMkpC,EACJlpC,EAAM,QAAUA,EAAM,QAAQ,CAAC,EAAIA,EAAM,OAASA,EAAM,OAASA,EAAM,QAAQ,OAGjF,GAAIkpC,IAAmBlpC,EAAM,QAAQ,CAAC,EAAG,CACvC,MAAMmpC,EAAa3tB,EAAM,mBAAmB,OAAOxb,EAAM,QAAQ,CAAC,EAAGA,EAAM,QAAQ,MAAM,EACzFwb,EAAM,mBAAmB,OAAO0tB,EAAgB,EAAG,GAAGC,CAAU,CACjE,CAED,IAAIC,EAAW,EACf5tB,EAAM,mBAAmB,QAAS6sB,GAAQ,CACpCA,EAAI,UAAY,KAClBA,EAAI,UAAYe,IAExB,CAAK,CACF,EACD,CAACR,EAA8B,EAAEptB,EAAOmtB,EAAqB,CAC3D,MAAMU,EAAa7tB,EAAM,mBAAmB,KAAM6sB,GAAQA,EAAI,KAAOM,CAAmB,EACxFU,EAAW,QAAU,GACrBA,EAAW,UAAY,KAGvB7tB,EAAM,mBAAmB,KAAK,SAAU8tB,EAAGhX,EAAG,CAC5C,OAAOgX,EAAE,UAAYhX,EAAE,SAC7B,CAAK,EAGD,IAAI8W,EAAW,EACf5tB,EAAM,mBAAmB,QAAS6sB,GAAQ,CACpCA,EAAI,UAAY,KAClBA,EAAI,UAAYe,IAExB,CAAK,CACF,EACD,CAACP,EAA6B,EAAErtB,EAAO,CACrCA,EAAM,mBAAqB,CAAE,CAC9B,CACH,EACe+tB,GAAA,CACb,WAAY,GACd,MAAE/tB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECxIMpB,GAAQ,CACZ,sBAAuB,CAAE,EACzB,cAAe,IACjB,EAEaC,GAAU,CACrB,yBAA2BD,GAAUA,EAAM,sBAC3C,iBAAmBA,GAAUA,EAAM,aACrC,EACaE,GAAU,CACrB,2BAA4B,CAAC,CAAE,OAAAC,CAAQ,EAAE2sB,IAAkB,CACzD,MAAMlgC,EAAM,qEAAqEkgC,CAAa,kDAC9F,OAAOzsB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,IACxB0T,EAAO6tB,GAAwC,CAC7C,sBAAuBvhC,EAAS,KAAK,KAAK,wBAAwB,OAClE,cAAAqgC,CACR,CAAO,EACMrgC,EACR,CACF,EACD,2BAA4B,CAAC,CAAE,OAAA0T,CAAQ,EAAE3b,IAAU,CACjD2b,EAAO8tB,GAAmCzpC,CAAK,CAChD,EACD,yBAA0B,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CAC/C2b,EAAO6tB,GAAwCxpC,CAAK,CACrD,EACD,wBAAyB,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CAC9C2b,EAAO+tB,GAAgC1pC,CAAK,CAC7C,EACD,2BAA4B,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CACjD2b,EAAOguB,GAAmC3pC,CAAK,CAChD,EACD,2BAA4B,CAAC,CAAE,OAAA2b,KAAa,CAC1CA,EAAOiuB,EAAgC,CACxC,CACH,EACahtB,GAAY,CACvB,CAAC4sB,EAAsC,EAAEhuB,EAAOstB,EAAM,CACpDttB,EAAM,sBAAwBstB,EAAK,sBAAsB,IAAI,SAAUe,EAAM,CAC3E,MAAO,CACL,GAAIA,EAAK,GACT,cAAef,EAAK,cACpB,eAAgB,CACd,GAAIe,EAAK,eAAe,EACzB,EACD,kBAAmB,CACjB,GAAIA,EAAK,kBAAkB,EAC5B,EACD,MAAOA,EAAK,MACZ,QAASA,EAAK,OACf,CACP,CAAK,CACF,EACD,CAACJ,EAAiC,EAAEjuB,EAAOxb,EAAO,CAChDwb,EAAM,cAAgB,CACpB,GAAI/S,EAAK,KAAM,EACf,cAAezI,EAAM,cACrB,eAAgB,CACd,GAAIA,EAAM,gBACX,EACD,kBAAmB,CACjB,GAAIA,EAAM,mBACX,EACD,MAAO,KACP,QAAS,EACV,EACDwb,EAAM,sBAAsB,KAAKA,EAAM,aAAa,CACrD,EACD,CAACkuB,EAA8B,EAAEluB,EAAOxb,EAAO,CAK7C,GAJAwb,EAAM,cAAgBA,EAAM,sBAAsB,KAC/CquB,GAASA,EAAK,KAAO7pC,EAAM,sBAC7B,EAEG,CAACwb,EAAM,cAAe,MAAO,GAEjCA,EAAM,cAAc,MAAQxb,EAAM,QACnC,EACD,CAAC2pC,EAAiC,EAAEnuB,EAAOxb,EAAO,CAChDwb,EAAM,sBAAsB,QAASquB,GAAS,EAEzC7pC,EAAM,kBAAoB,MAAQA,EAAM,mBAAqB6pC,EAAK,eAAe,IACjF7pC,EAAM,qBAAuB,MAC5BA,EAAM,sBAAwB6pC,EAAK,kBAAkB,MAEvDA,EAAK,QAAU,GAEvB,CAAK,CACF,EACD,CAACD,EAAgC,EAAEpuB,EAAO,CACxCA,EAAM,sBAAwB,CAAE,CACjC,CACH,EACesuB,GAAA,CACb,WAAY,GACd,MAAEtuB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EClGMpB,GAAQ,CACZ,gBAAiB,CAAE,EACnB,QAAS,IACX,EAEaC,GAAU,CACrB,mBAAqBD,GAAUA,EAAM,gBACrC,WAAaA,GAAUA,EAAM,OAC/B,EACaE,GAAU,CACrB,qBAAsB,CAAC,CAAE,OAAAC,CAAQ,EAAE2sB,IAAkB,CACnD3sB,EAAOouB,EAA0B,EAEjC,MAAM3hC,EAAM,+DAA+DkgC,CAAa,GACxF,OAAOzsB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,IACxB0T,EAAOquB,GAAkC,CACvC,gBAAiB/hC,EAAS,KAAK,KAAK,kBAAkB,OACtD,cAAAqgC,CACR,CAAO,EACM,GACR,CACF,EACD,qBAAsB,CAAC,CAAE,OAAA3sB,CAAQ,EAAE2sB,IAAkB,CACnD3sB,EAAOsuB,GAA6B3B,CAAa,CAClD,EACD,mBAAoB,CAAC,CAAE,OAAA3sB,CAAQ,EAAE3b,IAAU,CACzC2b,EAAOquB,GAAkChqC,CAAK,CAC/C,EACD,kBAAmB,CAAC,CAAE,OAAA2b,CAAQ,EAAE3b,IAAU,CACxC2b,EAAOuuB,GAA0BlqC,CAAK,CACvC,EACD,uBAAuB,CAAE,OAAA2b,CAAQ,EAAE3b,EAAO,CACxC2b,EAAOwuB,GAA8BnqC,CAAK,CAC3C,EACD,qBAAsB,CAAC,CAAE,OAAA2b,CAAQ,EAAEyuB,IAAqB,CACtDzuB,EAAO0uB,GAA6BD,CAAgB,CACrD,EACD,qBAAsB,CAAC,CAAE,OAAAzuB,KAAa,CACpCA,EAAOouB,EAA0B,CAClC,CACH,EACantB,GAAY,CACvB,CAACotB,EAAgC,EAAExuB,EAAOstB,EAAM,CAC9CttB,EAAM,gBAAkBstB,EAAK,gBAC1B,IAAI,SAAUwB,EAAK,CAClB,MAAO,CACL,GAAIA,EAAI,GACR,cAAexB,EAAK,cACpB,WAAYwB,EAAI,WAChB,UAAWA,EAAI,UACf,aAAcA,EAAI,aAClB,QAASA,EAAI,OACd,CACT,CAAO,EACA,KAAK,SAAU,EAAGhY,EAAG,CACpB,OAAO,EAAE,UAAYA,EAAE,SAC/B,CAAO,CACJ,EACD,CAAC4X,EAAwB,EAAE1uB,EAAO+uB,EAAY,CAC5C,MAAMC,EAAWhvB,EAAM,gBAAgB,UAAW8uB,GAAQA,EAAI,KAAOC,EAAW,EAAE,EAClF,OAAO,OAAO/uB,EAAM,gBAAgBgvB,CAAQ,EAAGD,CAAU,CAC1D,EACD,CAACN,EAA2B,EAAEzuB,EAAO8sB,EAAe,CAClD,MAAMW,EAAgBztB,EAAM,gBAAgB,OAAQ6sB,GAAQA,EAAI,UAAY,EAAK,EAAE,OAEnF7sB,EAAM,QAAU,CACd,GAAI/S,EAAK,KAAM,EACf,cAAe6/B,EACf,WAAY,GACZ,UAAWW,EACX,aAAc,GACd,QAAS,EACV,EACDztB,EAAM,gBAAgB,KAAKA,EAAM,OAAO,CACzC,EACD,CAAC2uB,EAA4B,EAAE3uB,EAAOxb,EAAO,CAC3C,MAAMkpC,EACJlpC,EAAM,QAAUA,EAAM,KAAK,CAAC,EAAIA,EAAM,OAASA,EAAM,OAASA,EAAM,KAAK,OAG3E,GAAIkpC,IAAmBlpC,EAAM,KAAK,CAAC,EAAG,CACpC,MAAMmpC,EAAa3tB,EAAM,gBAAgB,OAAOxb,EAAM,KAAK,CAAC,EAAGA,EAAM,KAAK,MAAM,EAChFwb,EAAM,gBAAgB,OAAO0tB,EAAgB,EAAG,GAAGC,CAAU,CAC9D,CAED,IAAIC,EAAW,EACf5tB,EAAM,gBAAgB,QAAS8uB,GAAQ,CACrCA,EAAI,UAAYlB,GACtB,CAAK,CACF,EACD,CAACiB,EAA2B,EAAE7uB,EAAO4uB,EAAkB,CACrD,MAAMK,EAAajvB,EAAM,gBAAgB,KAAM8uB,GAAQA,EAAI,KAAOF,CAAgB,EAClFK,EAAW,QAAU,GACrBA,EAAW,UAAY,KAGvBjvB,EAAM,gBAAgB,KAAK,SAAU8tB,EAAGhX,EAAG,CACzC,OAAOgX,EAAE,UAAYhX,EAAE,SAC7B,CAAK,EAGD,IAAI8W,EAAW,EACf5tB,EAAM,gBAAgB,QAAS8uB,GAAQ,CACjCA,EAAI,UAAY,KAClBA,EAAI,UAAYlB,IAExB,CAAK,CACF,EACD,CAACW,EAA0B,EAAEvuB,EAAO,CAClCA,EAAM,gBAAkB,CAAE,EAC1BA,EAAM,QAAU,IACjB,CACH,EACekvB,GAAA,CACb,WAAY,GACd,MAAElvB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECvHMpB,GAAQ,CACZ,YAAa,KACb,mBAAoB,CAAE,EACtB,yBAA0B,CAAE,CAC9B,EAEaC,GAAU,CACrB,eAAiBD,GAAUA,EAAM,YACjC,sBAAwBA,GAAUA,EAAM,mBACxC,4BAA8BA,GAAUA,EAAM,wBAChD,EACaE,GAAU,CACrB,iBAAkB,CAAC,CAAE,OAAAC,CAAQ,EAAE2sB,IAAkB,CAC/C3sB,EAAOgvB,EAAuB,EAE9B,MAAMviC,EAAM,0EAA0EkgC,CAAa,wBACnG,OAAOzsB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAM2iC,EAAc3iC,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAC9D,OAAA0T,EAAOkvB,GAA+B,CACpC,YAAaD,EACb,OAAQA,EAAY,OACpB,UAAW,CACnB,CAAO,EACMA,CACb,CAAK,CACF,EACD,wBAAyB,CAAC,CAAE,OAAAjvB,CAAQ,EAAEgP,IAAa,CACjD,MAAMviB,EAAM,6EAA6EuiB,CAAQ,GACjG,OAAO9O,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,GAAIA,EAAS,KAAK,QAAU,EAAG,CAC7B,MAAM2iC,EAAc3iC,EAAS,KAAK,KAAK,aAAa,OAEpD,OAAA0T,EAAOmvB,GAA+BF,CAAW,EAE1C3iC,CACR,CACP,CAAK,CACF,EACD,kBAAmB,CAAC,CAAE,OAAA0T,CAAQ,EAAEovB,IAAS,CACvCpvB,EAAOkvB,GAA+B,CACpC,YAAaE,EAAK,YAClB,UAAWA,EAAK,UAChB,OAAQA,EAAK,MACnB,CAAK,CACF,EACD,eAAgB,CAAC,CAAE,OAAApvB,CAAQ,EAAEivB,IAAgB,CAC3CjvB,EAAOqvB,GAAuBJ,CAAW,CAC1C,EACD,sBAAuB,CAAC,CAAE,OAAAjvB,CAAQ,EAAEsvB,IAAuB,CACzDtvB,EAAOmvB,GAA+BG,CAAkB,CACzD,EACD,iBAAkB,CAAC,CAAE,OAAAtvB,KAAa,CAChCA,EAAOgvB,EAAuB,CAC/B,EACD,kBAAmB,CAAC,CAAE,OAAAhvB,CAAQ,EAAE3b,KAE9B2b,EAAOuvB,GAA0BlrC,CAAK,EAG/B6b,EAAI,IADC,4DACQL,GAAM,WAAW,EAAE,KAAMvT,GAAa,CAExD,MAAM2iC,EAAc3iC,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAC9D,OAAA0T,EAAOkvB,GAA+B,CACpC,YAAaD,EACb,OAAQA,EAAY,OACpB,UAAW,CACnB,CAAO,EAGDjvB,EAAOuvB,GAA0B,CAC/B,gBAAiB,KACjB,mBAAoB,KACpB,sBAAuB,IAC/B,CAAO,EACM,QAAQ,QAAQ,CACrB,GAAIjjC,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAAE,GAChD,gBAAiBA,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAAE,gBAC7D,mBAAoBA,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAAE,mBAChE,sBAAuBA,EAAS,KAAK,KAAK,eAAe,OAAO,CAAC,EAAE,qBAC3E,CAAO,CACP,CAAK,GAEH,+BAAgC,CAAC,CAAE,OAAA0T,CAAQ,EAAEkZ,IAAU,CACrD,MAAMzsB,EAAM,yFAAyFysB,CAAK,GAC1G,OAAOhZ,EAAI,IAAIzT,CAAG,EAAE,KAAMmf,GAAQ,CAChC,MAAMrC,EAAYqC,EAAI,KAAK,KAAK,4BAA4B,OAE5D,OAAA5L,EAAOwvB,GAAgDjmB,CAAS,EACzDqC,CACb,CAAK,CACF,EACD,gBAAiB,CAAC,CAAE,OAAA5L,CAAQ,EAAEU,IAAW,CACvC,MAAMjU,EAAM,iEAAiEiU,EAAO,aAAa,aAAaA,EAAO,QAAQ,gBAAgBA,EAAO,WAAW,GAC/J,OAAOR,EAAI,KAAKzT,CAAG,EAAE,KAAMH,GAAa,CACtC,MAAMgjC,EAAqBhjC,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EACnE,OAAA0T,EAAOyvB,GAA0CH,CAAkB,EAC5DA,CACb,CAAK,CACF,EACD,mBAAoB,CAACrsB,EAAGvC,IAAW,CACjC,MAAMjU,EAAM,4EAA4E,mBACtFiU,EAAO,QACb,CAAK,SAASA,EAAO,IAAI,GACrB,OAAOR,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAIgjC,EAAqB,CAAE,EAE3B,OAAIhjC,EAAS,MAAQA,EAAS,KAAK,MAAQ,IACzCgjC,EAAqBhjC,EAAS,KAAK,KAAK,aAAa,QAEhDgjC,CACb,CAAK,CACF,EACD,kBAAmB,CAAC,CAAE,OAAAtvB,CAAQ,EAAE0vB,IAAmB,CAEjD,MAAMjjC,EAAM,0EADAijC,EAAe,KAAM,CACwD,GACzF,OAAOxvB,EAAI,OAAOzT,CAAG,EAAE,KAAK,IAAM,CAChC,QAASjH,EAAI,EAAGA,EAAIkqC,EAAe,OAAQlqC,IACzCwa,EAAO2vB,GAAkCD,EAAelqC,CAAC,CAAC,EAE5D,MAAO,EACb,CAAK,CACF,EACD,UAAW,CAAC,CAAE,OAAAwa,CAAQ,EAAE4vB,IAGf1vB,EAAI,IAFC,sEAEQ0vB,CAAe,EAAE,KAAMtjC,GAAa,CACtD,GAAIA,EAAS,KAAK,QAAU,EAAG,CAC7B,MAAM2iC,EAAc3iC,EAAS,KAAK,KAAK,aAAa,OAEpD,OAAA0T,EAAOmvB,GAA+BF,CAAW,EAE1CA,CACR,CACP,CAAK,EAEH,oBAAqB,CAAC,CAAE,OAAAjvB,CAAQ,EAAEU,IAAW,CAC3C,MAAMjU,EAAM,6EAA6EiU,EAAO,QAAQ,yBAAyBA,EAAO,oBAAoB,GAC5J,OAAOR,EAAI,KAAKzT,CAAG,EAAE,KAAMH,GAAa,WACtC,MAAMgjC,IAAqB1tC,GAAAD,GAAAR,EAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,EAAgB,OAAhB,YAAAQ,EAAsB,eAAtB,YAAAC,EAAoC,SAAU,CAAE,EAC3E,OAAAoe,EAAOmvB,GAA+BG,CAAkB,EACjDA,CACb,CAAK,CACF,CACH,EACaruB,GAAY,CACvB,CAACiuB,EAA6B,EAAErvB,EAAOxb,EAAO,CAC5C,MAAM4qC,EAAc5qC,EAAM,YAE1Bwb,EAAM,YAAc,CAClB,GAAIovB,EAAcA,EAAY,GAAKniC,EAAK,KAAM,EAC9C,KAAMmiC,EAAcA,EAAY,KAAO,GACvC,qBAAsBA,EAAcA,EAAY,qBAAuB,GACvE,YAAaA,EAAcA,EAAY,YAAc,EACrD,aAAcA,EAAcA,EAAY,aAAe,EACvD,qBAAsBA,EAAcA,EAAY,qBAAuB,GACvE,iBAAkBA,EAAcA,EAAY,iBAAmB,GAC/D,UAAWA,EAAcA,EAAY,UAAY,EACjD,WAAYA,EAAcA,EAAY,WAAa,GACnD,uBAAwBA,EAAcA,EAAY,uBAAyB,GAC3E,sBAAuBA,EAAcA,EAAY,sBAAwB,GACzE,MAAOA,EAAcA,EAAY,MAAQ,EACzC,wBAAyBA,EAAcA,EAAY,wBAA0B,GAC7E,oBAAqBA,EAAcA,EAAY,oBAAsB,KACrE,QAASA,EAAcA,EAAY,QAAU,GAC7C,OAAQ5qC,EAAM,OACd,gBACE4qC,GAAeA,EAAY,gBAAkBA,EAAY,gBAAkB,KAC7E,mBACEA,GAAeA,EAAY,mBAAqBA,EAAY,mBAAqB,KACnF,sBACEA,GAAeA,EAAY,sBAAwBA,EAAY,sBAAwB,KACzF,cAAeA,EAAcA,EAAY,cAAgB,GACzD,UAAWA,EAAcA,EAAY,UAAY5qC,EAAM,UACvD,MAAO4qC,EAAcA,EAAY,MAAQ,KACzC,kBAAmBA,EAAcA,EAAY,kBAAoB,KACjE,qBAAsBA,EAAcA,EAAY,qBAAuB,KACvE,sBAAuBA,EAAcA,EAAY,sBAAwB,IAC1E,CACF,EACD,CAACI,EAAqB,EAAExvB,EAAOovB,EAAa,CAC1CpvB,EAAM,YAAcovB,CACrB,EACD,CAACE,EAA6B,EAAEtvB,EAAOyvB,EAAoB,CACzDzvB,EAAM,mBAAqByvB,CAC5B,EACD,CAACG,EAAwC,EAAE5vB,EAAOyvB,EAAoB,CAChEzvB,EAAM,qBAAuB,OAAMA,EAAM,mBAAqB,CAAE,GAEpE,MAAMgE,EAAehE,EAAM,mBAAmB,UAC3CgwB,GAAQA,EAAI,gBAAkBP,EAAmB,aACnD,EACGzrB,IAAiB,IACnBhE,EAAM,mBAAmB,OAAOgE,EAAc,CAAC,EAEjDhE,EAAM,mBAAmB,KAAKyvB,CAAkB,CACjD,EACD,CAACK,EAAgC,EAAE9vB,EAAOuD,EAAI,CAC5C,MAAMS,EAAehE,EAAM,mBAAmB,UAAWgwB,GAAQA,EAAI,gBAAkBzsB,CAAE,EACrFS,IAAiB,IACnBhE,EAAM,mBAAmB,OAAOgE,EAAc,CAAC,CAElD,EACD,CAAC0rB,EAAwB,EAAE1vB,EAAOxb,EAAO,CACvCwb,EAAM,YAAY,gBAAkBxb,EAAM,gBAC1Cwb,EAAM,YAAY,mBAAqBxb,EAAM,mBAC7Cwb,EAAM,YAAY,sBAAwBxb,EAAM,qBACjD,EACD,CAACmrC,EAA8C,EAAG,CAAC3vB,EAAO0J,IAAc,CACtE1J,EAAM,yBAA2B0J,CAClC,EACD,CAACylB,EAAuB,EAAEnvB,EAAO,CAC/BA,EAAM,YAAc,IACrB,CACH,EACeiwB,GAAA,CACb,WAAY,GACd,MAAEjwB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC7NapB,GAAQ,CACnB,WAAY,KACZ,aAAc,EAChB,EACaC,GAAU,CACrB,cAAgBD,GAAUA,EAAM,WAChC,0BAA4BA,GAAUA,EAAM,aAC5C,iBAAmBA,GAAWA,EAAM,WAAaA,EAAM,WAAW,IAAM,KACxE,6BAA+BA,GAC7B,CAAC,EAAEA,EAAM,YAAcA,EAAM,WAAW,2BAC5C,EACaE,GAAU,CACrB,cAAe,CAAC,CAAE,OAAAC,CAAQ,EAAE+vB,IAAe,CACzC/vB,EAAOgwB,GAAsBD,CAAU,CACxC,EACD,gBAAiB,CAAC,CAAE,OAAA/vB,CAAQ,EAAEiwB,IAAiB,CAC7C,MAAMxjC,EAAM,+EAA+EwjC,CAAY,GACvG,OAAO/vB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,cAAc,OAAO,CAAC,EACtD,OAAA0T,EAAOgwB,GAAsB1jC,EAAS,KAAK,KAAK,cAAc,OAAO,CAAC,CAAC,EAChE1M,CACb,CAAK,CACF,EACD,iBAAkB,CAAC,CAAE,OAAAogB,CAAQ,EAAE+vB,IAAe,CAC5C,MAAMG,EAAgB,OAAO,OAAO,CAAE,EAAErwB,GAAM,WAAYkwB,CAAU,EACpE/vB,EAAOgwB,GAAsBE,CAAa,CAC3C,EACD,6BAA8B,CAAC,CAAE,OAAAlwB,CAAQ,EAAEnb,IAAU,CACnDmb,EAAOmwB,GAAgCtrC,CAAK,CAC7C,EACD,eAAgB,CAACoe,EAAG8sB,IAEX7vB,EAAI,IADC,0DACQ6vB,CAAU,EAAE,KAAMzjC,GACjBA,EAAS,KAAK,KAAK,cAAc,MAErD,CAEL,EACa2U,GAAY,CACvB,CAAC+uB,EAAoB,EAAEnwB,EAAOkwB,EAAY,CACxClwB,EAAM,WAAakwB,CACpB,EACD,CAACI,EAA8B,EAAEtwB,EAAOhb,EAAO,CAC7Cgb,EAAM,aAAehb,CACtB,CACH,EACekrC,GAAA,CACb,WAAY,GACd,MAAElwB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECnDMpB,GAAQ,CACZ,OAAQ,KACR,YAAa,CAAE,EACf,aAAc,CAAE,CAClB,EAEaC,GAAU,CACrB,UAAYD,GAAUA,EAAM,OAC5B,eAAiBA,GAAUA,EAAM,YACjC,gBAAkBA,GAAUA,EAAM,YACpC,EACaE,GAAU,CACrB,YAAa,CAAC,CAAE,OAAAC,CAAQ,EAAEgP,IAAa,CACrC,MAAMviB,EAAM,gEAAgEuiB,CAAQ,wBACpF,OAAO9O,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,UAAU,OAAO,CAAC,EAClD,OAAA0T,EAAOowB,GAAkBxwC,CAAI,EACtBA,CACb,CAAK,CACF,EACD,kBAAmB,CAAC,CAAE,OAAAogB,CAAQ,EAAEU,IAAW,CACzC,IAAIjU,EAAM,8DACN4jC,EAAmB,GAEvB,OAAI3vB,EAAO,QACTjU,GAAO,gBAAgBiU,EAAO,KAAK,GACnC2vB,EAAmB,IAGjB3vB,EAAO,QACTjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,gBAAgB3vB,EAAO,KAAK,GACjE2vB,EAAmB,IAGjB3vB,EAAO,UAAYA,EAAO,SAAS,OAAS,IAC9CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,mBACnC3vB,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,EACpE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBACnC3vB,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,YAAW,EAAK,EAChE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBAAiB3vB,EAAO,MAAM,GACnE2vB,EAAmB,IAGjB3vB,EAAO,YAAcA,EAAO,WAAW,OAAS,IAClDjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB3vB,EAAO,UAAU,IAGtER,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,MAAMnF,EAASmF,EAAS,KAAK,KAAK,aAC9BA,EAAS,KAAK,KAAK,aAAa,OAChC,KACJ,OAAA0T,EAAOswB,GAAyBnpC,CAAM,EAC/B,IAAI,QAAQ,SAAU7D,EAAS,CACpCA,EAAQ6D,CAAM,CACxB,CAAS,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOswB,GAAyB,IAAI,EAC9B1uB,CACd,CAAO,CACJ,EACD,kBAAmB,CAAC,CAAE,OAAA5B,KAAa,CACjCA,EAAOswB,GAAyB,IAAI,CACrC,EACD,iBAAkB,CAAC,CAAE,OAAAtwB,KAEZE,EAAI,IADC,wDACM,EAAE,KAAM/Y,GAAW,CACnC,MAAMopC,EAAcppC,EAAO,KAAK,KAAK,cAAc,OACnD,OAAA6Y,EAAOwwB,GAA2BD,CAAW,EACtCA,CACb,CAAK,CAEL,EACatvB,GAAY,CACvB,CAACmvB,EAAgB,EAAEvwB,EAAOqV,EAAQ,CAChCrV,EAAM,OAAS,CACb,GAAIqV,EAASA,EAAO,GAAKpoB,EAAK,KAAM,EACpC,OAAQooB,EAASA,EAAO,OAAS,GACjC,KAAMA,EAASA,EAAO,KAAO,GAC7B,uBAAwBA,EAASA,EAAO,uBAAyB,EAClE,CACF,EACD,CAACsb,EAAyB,EAAE3wB,EAAO0wB,EAAa,CAC9C1wB,EAAM,YAAc0wB,CACrB,EACD,CAACD,EAAuB,EAAEzwB,EAAO2S,EAAS,CACxC3S,EAAM,aAAe2S,CACtB,CACH,EACe0C,GAAA,CACb,WAAY,GACd,MAAErV,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC/GO,SAASwvB,GAAU9C,EAAGhX,EAAGz2B,EAAG+F,EAAG,CAGpC,OAFA0nC,EAAIA,EAAE,YAAa,EACnBhX,EAAIA,EAAE,YAAa,EACfz2B,GAAK+F,GACP/F,EAAIA,EAAE,YAAa,EACnB+F,EAAIA,EAAE,YAAa,EACZ0nC,EAAIhX,EAAI,GAAKgX,EAAIhX,EAAI,EAAIz2B,EAAI+F,EAAI,GAAK/F,EAAI+F,EAAI,EAAI,GAElD0nC,EAAIhX,EAAI,GAAKgX,EAAIhX,EAAI,EAAI,CAEpC,CAEA,MAAM+Z,GAAWzqC,GACPA,GAAKA,EAAE,OAAS,GAAK,IAAI,KAAKA,CAAC,GAAM,KAGzC0qC,GAAa1qC,GACT,CAAC,CAACA,GAAKA,EAAE,OAAS,GAAKA,EAAE,SAAQ,GAAO,KAKrC2qC,GAAa,CAACjD,EAAGhX,EAAGka,EAAY,SAAW,CACtD,MAAMC,EAAQJ,GAAQ/C,EAAEkD,CAAS,CAAC,EAC5BE,EAAQL,GAAQ/Z,EAAEka,CAAS,CAAC,EAElC,OAAIC,IAAU,MAAQC,IAAU,MACtBD,IAAU,OAASC,IAAU,OAG/BD,IAAU,OAASC,IAAU,OAASA,EAAQD,CACxD,EAEaE,GAAe,CAACrD,EAAGhX,EAAG5L,IAAU,CAC3C,MAAMkmB,EAAQN,GAAUhD,EAAE5iB,CAAK,CAAC,EAC1BmmB,EAAQP,GAAUha,EAAE5L,CAAK,CAAC,EAEhC,OAAIkmB,IAAU,MAAQC,IAAU,MACtBD,IAAU,OAASC,IAAU,MAGhCD,EAAM,cAAcC,CAAK,CAClC,EAEaC,GAAc,CAACjlC,EAAK2kC,EAAY,OAAQO,EAAU,KAAU,CACvE,MAAMC,EAAU,CAAC,GAAGnlC,CAAG,EAEvB,OAAOklC,EACHC,EAAQ,KAAK,CAAC1D,EAAGhX,IAAMia,GAAWja,EAAGgX,EAAGkD,CAAS,CAAC,EAClDQ,EAAQ,KAAK,CAAC1D,EAAGhX,IAAMia,GAAWjD,EAAGhX,EAAGka,CAAS,CAAC,CACxD,EAEaS,GAAgB,CAACplC,EAAK6e,EAAOqmB,EAAU,KAAU,CAC5D,GAAI,CAACrmB,EAAO,MAAO,GACnB,MAAMsmB,EAAU,CAAC,GAAGnlC,CAAG,EACvB,OAAOklC,EACHC,EAAQ,KAAK,CAAC1D,EAAGhX,IAAMqa,GAAara,EAAGgX,EAAG5iB,CAAK,CAAC,EAChDsmB,EAAQ,KAAK,CAAC1D,EAAGhX,IAAMqa,GAAarD,EAAGhX,EAAG5L,CAAK,CAAC,CACtD,ECxDA,SAASwmB,GAAe1U,EAAS,CAC/B,SAAS2U,EAA8BC,EAAU,CAC/C,MAAMC,EAAQ7U,IAAY,EAAI4U,EAAS,KAAK,QAAQ,OAASA,EAAS,MAEtE,OAA0BC,CAG3B,CAED,SAASC,EAA+BC,EAAY,CAClD,MAAMC,EAAShV,IAAY,EAAI+U,EAAW,KAAK,aAAa,OAASA,EAErE,OAAI/U,IAAY,EAAUgV,EAEnBA,EAAO,IAAK3Y,GAAU,CAC3B,KAAM,CAAE,QAAA4Y,EAAS,GAAGC,CAAI,EAAK7Y,EAC7B,MAAO,CACL,GAAG6Y,EACH,MAAOD,CACR,CACP,CAAK,CACF,CAED,MAAO,CACL,8BAAAN,EACA,+BAAAG,CACD,CACH,CAEA,SAASK,GAAgBhxC,EAAQ,CAC/B,KAAM,CAAE,IAAAkf,EAAK,mBAAAyc,GAAuBL,GAAgBt7B,CAAM,EAE1D,eAAeixC,EAASC,EAAY,GAAI,OACtC,MAAMrV,EAAUF,EAAmB,eAAgB,UAAU,EAOvDjc,EAAS,CAAE,GALK,CACpB,QAAS,GACT,OAAQ,EACR,MAAO,GACR,EACkC,GAAGwxB,CAAW,EAEjD,IAAIzlC,EAAM,SAASowB,CAAO,0DACtB17B,EAAAuf,EAAO,UAAP,MAAAvf,EAAgB,SAAQsL,GAAO,IAAIiU,EAAO,OAAO,IACjDmc,IAAY,IACdpwB,GAAO,WAAWiU,EAAO,MAAM,UAAUA,EAAO,KAAK,IAGvD,MAAMpU,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAElC,OAAO8kC,GAAe1U,CAAO,EAAE,8BAA8BvwB,EAAS,IAAI,CAC3E,CAED,eAAe6lC,GAAgB,CAC7B,MAAMtV,EAAUF,EAAmB,eAAgB,eAAe,EAC5DlwB,EAAM,SAASowB,CAAO,qFAEtBvwB,EAAW,MAAM4T,EAAI,IAAIzT,CAAG,EAElC,OAAO8kC,GAAe1U,CAAO,EAAE,+BAA+BvwB,EAAS,IAAI,CAC5E,CAED,MAAO,CACL,SAAA2lC,EACA,cAAAE,CACD,CACH,CC/DA,MAAMtyB,GAAQ,CACZ,OAAQ,CAAE,EACV,0BAA2B,GAC3B,0BAA2B,CAAE,EAC7B,6BAA8B,CAAE,EAChC,4BAA6B,EAC/B,EAEMC,GAAU,CACd,UAAYD,GAAUA,EAAM,OAC5B,SAAWA,GAAWuD,GAAOvD,EAAM,OAAO,KAAMqZ,GAAUA,EAAM,KAAO9V,CAAE,EACzE,eAAiBvD,GAAWlY,GAASkY,EAAM,OAAO,KAAMqZ,GAAUA,EAAM,OAASvxB,CAAI,EACrF,6BAA+BkY,GAAUA,EAAM,0BAC/C,6BAA+BA,GAAUA,EAAM,0BAC/C,gCAAkCA,GAAUA,EAAM,6BAClD,+BAAiCA,GAAUA,EAAM,2BACnD,EAEME,GAAU,CACd,YAAa,MAAO,CAAE,OAAAC,CAAQ,EAAEoyB,IAAiB,CAC/C,GAAIvyB,GAAM,OAAO,QAAU,CAACuyB,EAC1B,OAAO,QAAQ,QAAQvyB,GAAM,IAAI,EAGnC,MAAMgyB,EAAS,MAAMG,GAAiB,EAAC,cAAe,EAEtD,OAAAhyB,EAAOqyB,GAAwBR,CAAM,EAC9BA,CACR,EACD,YAAa,CAAC,CAAE,OAAA7xB,CAAQ,EAAEwK,IAGjBtK,EAAI,KADC,yDACSsK,CAAO,EAAE,KAAMle,IAClC0T,EAAOqyB,GAAwB/lC,EAAS,KAAK,KAAK,aAAa,MAAM,EAC9DA,EACR,EAEH,UAAW,CAAC,CAAE,OAAA0T,CAAQ,EAAEwK,IAGftK,EAAI,IADC,yDACQsK,CAAO,EAAE,KAAMle,IACjC0T,EAAOqyB,GAAwB/lC,EAAS,KAAK,KAAK,aAAa,MAAM,EAC9DA,EACR,EAEH,YAAa,CAAC,CAAE,OAAA0T,CAAQ,EAAEwK,IAAY,CACpC,MAAM/d,EAAM,sEAAsE+d,EAAQ,WAAW,GACrG,OAAOtK,EAAI,OAAOzT,CAAG,EAAE,KAAK,SAAUH,EAAU,CAC9C,OAAA0T,EAAOqyB,GAAwB/lC,EAAS,KAAK,KAAK,aAAa,MAAM,EAC9D,EACb,CAAK,CACF,EACD,sBAAuB,CAAC,CAAE,OAAA0T,CAAQ,EAAEwK,IAAY,CAC9C,MAAMsnB,EAAUtnB,EAAQ,MAAM,IAAKiZ,GAAMA,EAAE,EAAE,EAAE,KAAK,GAAG,EACjD6O,EAAW9nB,EAAQ,OAAO,IAAKiZ,GAAMA,EAAE,EAAE,EAAE,KAAK,GAAG,EACzD,OAAOvjB,EACJ,OACC,uEAAuE4xB,CAAO,gBAAgBQ,CAAQ,EACvG,EACA,KAAMhmC,GAAa,CAClB,MAAMulC,EAASvlC,EAAS,KAAK,KAAK,aAAa,OAC/C,OAAA0T,EAAOqyB,GAAwBR,CAAM,EACrC7xB,EAAOuyB,GAA0B,CAC/B,QAAST,EACT,SAAUQ,EACV,OAAQT,CAClB,CAAS,EACMA,CACf,CAAO,CACJ,EACD,iBAAkB,CAAC,CAAE,OAAA7xB,CAAQ,EAAEwK,IAAY,CACzC,MAAM7I,EAAQ,CACZ,OAAQ6I,EAAQ,MAAM,IAAKiZ,GAAMA,EAAE,EAAE,EAAE,KAAK,GAAG,EAC/C,QAASjZ,EAAQ,OAAO,IAAKiZ,GAAMA,EAAE,EAAE,EAAE,KAAK,GAAG,CAClD,EAED,OAAOvjB,EACJ,KAAK,+DAAgEyB,CAAK,EAC1E,KAAK,SAAUrV,EAAU,CACxB,MAAMulC,EAASvlC,EAAS,KAAK,KAAK,aAAa,OAC/C,OAAA0T,EAAOqyB,GAAwBR,CAAM,EACrC7xB,EAAOwyB,GAAuB,CAC5B,QAAS7wB,EAAM,OACf,SAAUA,EAAM,QAChB,OAAQkwB,CAClB,CAAS,EACMA,CACf,CAAO,CACJ,EACD,6BAA8B,CAAC,CAAE,OAAA7xB,CAAQ,EAAEwK,IAAY,CACrDxK,EAAOyyB,GAAoCjoB,CAAO,CACnD,EACD,gCAAiC,CAAC,CAAE,OAAAxK,KAAa,CAC/CA,EAAO0yB,EAAqC,CAC7C,EACD,6BAA8B,CAAC,CAAE,OAAA1yB,CAAQ,EAAEwK,IAAY,CACrDxK,EAAO2yB,GAAuCnoB,CAAO,CACtD,EACD,gCAAiC,CAAC,CAAE,OAAAxK,CAAQ,EAAEwK,IAAY,CACxDxK,EAAO4yB,GAA2CpoB,CAAO,CAC1D,EACD,+BAAgC,CAAC,CAAE,OAAAxK,CAAQ,EAAEwK,IAAY,CACvDxK,EAAO6yB,GAAgDroB,CAAO,CAC/D,CACH,EAEMvJ,GAAY,CAChB,CAACoxB,EAAsB,EAAExyB,EAAOgyB,EAAQ,CACtChyB,EAAM,OAASgyB,EAAO,KAAK,CAAC,EAAGlb,IAAM8Z,GAAU,EAAE,KAAM9Z,EAAE,IAAI,CAAC,CAC/D,EACD,CAAC8b,EAAkC,EAAE5yB,EAAOizB,EAAW,CACrDjzB,EAAM,0BAA4BizB,CACnC,EACD,CAACJ,EAAqC,EAAE7yB,EAAO,CAC7CA,EAAM,0BAA4B,CAACA,EAAM,yBAC1C,EACD,CAAC8yB,EAAqC,EAAE9yB,EAAOkzB,EAAU,CACvDlzB,EAAM,0BAA4BkzB,CACnC,EACD,CAACH,EAAyC,EAAE/yB,EAAOkzB,EAAU,CAC3DlzB,EAAM,6BAA+BkzB,CACtC,EACD,CAACF,EAA8C,EAAEhzB,EAAOizB,EAAW,CACjEjzB,EAAM,4BAA8BizB,CACrC,CACH,EAEe5Z,GAAA,CACb,WAAY,GACd,MAAErZ,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECtIMpB,GAAQ,CACZ,KAAM,CACJ,GAAI,GACJ,UAAW,GACX,SAAU,GACV,SAAU,GACV,OAAQ,GACR,UAAW,CAAC,CACd,EACA,MAAO,CAAC,EACR,WAAY,CAAC,EACb,iBAAkB,CAAC,CACrB,EAEaC,GAAU,CACrB,gBAAkBD,GAAUA,EAAM,KAClC,SAAWA,GAAUA,EAAM,MAC3B,cAAgBA,GAAUA,EAAM,WAChC,oBAAsBA,GAAUA,EAAM,iBACtC,QAAUA,GAAW2C,GACZ3C,EAAM,MAAM,KAAMmzB,GAAMA,EAAE,KAAOxwB,CAAM,EAEhD,eAAiB3C,GAEbA,EAAM,KAAK,WACXA,EAAM,KAAK,UAAU,OAAS,GAC9BA,EAAM,KAAK,UAAU,KAAM3f,GAAMA,EAAE,KAAO,sCAAiC,CAGjF,EACa6f,GAAU,CACrB,gBAAiB,CAAC,CAAE,OAAAC,GAAU3e,IAAS,CAC9B2e,EAAAizB,GAAgB5xC,CAAI,CAC7B,EACA,UAAW,CAAC,CAAE,OAAA2e,GAAUwC,IAAW,CAC3B,MAAA/V,EAAM,+CAA+C+V,CAAM,6BACjE,OAAOtC,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMjL,EAAOiL,EAAS,KAAK,KAAK,QAAQ,OAAO,CAAC,EACzC,OAAA0T,EAAAizB,GAAgB5xC,CAAI,EACpBA,CAAA,CACR,CACH,EACA,WAAY,MAAO,CAAE,OAAA2e,EAAQ,YAAAioB,CAAA,EAAejM,IAAY,CACtD,MAAM0V,EAAQ,MAAMM,GAAA,EAAkB,SAAS,CAAE,QAAAhW,EAAS,EAE1D,GAAIiM,EAAY,kBAAkB,cAAc,EAAE,QAAS,CACzD,MAAM4J,EAAS5J,EAAY,UAErByJ,EAAA,QAASrwC,GAAS,CAClBA,EAAK,WAAa,MAAQA,EAAK,SAAS,OAAS,IAC9CA,EAAA,WAAawwC,EAAO,OAAQqB,GAAM7xC,EAAK,SAAS,QAAQ6xC,EAAE,EAAE,EAAI,EAAE,EACzE,CACD,CACH,CAEO,OAAAlzB,EAAAmzB,GAAoBzB,CAAK,EACzBA,CACT,EACA,gBAAiB,CAAC,CAAE,OAAA1xB,GAAU8b,IAAW,CACvC,IAAIrvB,EAAM,uDACV,OAAIqvB,GAAU,MAAQA,EAAO,OAAS,IACpCrvB,GAAO,kBAAkBqvB,CAAM,IAE1B5b,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAozB,GAA2BxzC,CAAI,EAC/BA,CAAA,CACR,CACH,EACA,mBAAoB,CAAC,CAAE,OAAAogB,GAAU3e,IAExB6e,EAAI,IAAI,sCAAuC7e,CAAI,EAAE,KAAMiL,GAAa,CAC7E,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAmzB,GAAoBvzC,CAAI,EACxBA,CAAA,CACR,EAEH,WAAY,CAAC,CAAE,OAAAogB,EAAQ,YAAAioB,CAAA,EAAe5mC,IAAS,OAGvC,MAAAoL,EAAM,wCADStL,EAAA8mC,EAAY,kBAAZ,YAAA9mC,EAAgC,KAAM,EACG,cAE9D,OAAO+e,EAAI,IAAIzT,EAAKpL,CAAI,EAAE,KAAMiL,GAAa,CAC3C,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAmzB,GAAoBvzC,CAAI,EACxBA,CAAA,CACR,CACH,EACA,WAAY,CAAC,CAAE,OAAAogB,GAAUwC,IAChBtC,EACJ,IAAI,qDAAqDsC,CAAM,EAAE,EACjE,KAAMlW,GAAa,CAClB,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAmzB,GAAoBvzC,CAAI,EACxBA,CAAA,CACR,EAEL,iBAAkB,CAAC,CAAE,OAAAogB,GAAUU,IAAW,CACxC,MAAMoxB,EAAUpxB,EAAO,MAAM,IAAKsyB,GAAMA,EAAE,EAAE,EAE5C,OAAO9yB,EACJ,IACC,qDAAqDQ,EAAO,MAAM,WAAWoxB,EAAQ,KACnF,IACD,IAEF,KAAMxlC,GAAa,CAClB,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAmzB,GAAoBvzC,CAAI,EACxBA,CAAA,CACR,CACL,EACA,WAAY,CAAC,CAAE,OAAAogB,GAAU3e,IAChB6e,EAAI,KAAK,sCAAuC7e,CAAI,EAAE,KAAMiL,GAAa,CAC9E,MAAM1M,EAAO0M,EAAS,KAAK,KAAK,QAAQ,OACjC,OAAA0T,EAAAmzB,GAAoBvzC,CAAI,EACxBA,CAAA,CACR,EAEH,6BAA8B,CAAC,CAAE,OAAAogB,GAAUkZ,IAAU,CAC5ClZ,EAAAqzB,GAAgCna,CAAK,CAC9C,EACA,6BAA8B,CAAC,CAAE,OAAAlZ,GAAUszB,IAAY,CAC9CtzB,EAAAuzB,GAA+BD,CAAO,CAC/C,EACA,aAAc,CAACrwB,EAAGuH,IAAY,CACtB,MAAE,OAAAhI,EAAQ,SAAAgB,CAAa,EAAAgH,EACvBgpB,EAAc,qDAAqDhxB,EAAO,aAAa,GACtF,OAAAiB,EAAU,KAAK+vB,EAAahwB,CAAQ,CAC7C,CACF,EACavC,GAAY,CACvB,CAACgyB,EAAc,EAAEpzB,EAAOxe,EAAM,CAC5Bwe,EAAM,KAAK,GAAKxe,EAAK,GACrBwe,EAAM,KAAK,UAAYxe,EAAK,UAC5Bwe,EAAM,KAAK,SAAWxe,EAAK,SAC3Bwe,EAAM,KAAK,SAAW,GAAGxe,EAAK,SAAS,IAAIA,EAAK,QAAQ,GACxDwe,EAAM,KAAK,OACTxe,EAAK,WACL,4CAA4CA,EAAK,SAAS,IAAIA,EAAK,QAAQ,GAC7Ewe,EAAM,KAAK,SAAWxe,EAAK,SAC3Bwe,EAAM,KAAK,UAAYxe,EAAK,UAC5Bwe,EAAM,KAAK,WAAaxe,EAAK,WAC7Bwe,EAAM,KAAK,UAAYxe,EAAK,UAC5Bwe,EAAM,KAAK,SAAWxe,EAAK,SAC3Bwe,EAAM,KAAK,YAAcxe,EAAK,YAC9Bwe,EAAM,KAAK,eAAiBxe,EAAK,eACjCwe,EAAM,KAAK,MAAQxe,EAAK,KAC1B,EACA,CAACoyC,EAAiB,EAAE5zB,EAAOxe,EAAM,CAC/Bwe,EAAM,KAAK,GAAKxe,EAAK,GACrBwe,EAAM,KAAK,UAAYxe,EAAK,UAC5Bwe,EAAM,KAAK,SAAWxe,EAAK,SAC3Bwe,EAAM,KAAK,SAAW,GAAGxe,EAAK,SAAS,IAAIA,EAAK,QAAQ,GACxDwe,EAAM,KAAK,OACTxe,EAAK,WACL,4CAA4CA,EAAK,SAAS,IAAIA,EAAK,QAAQ,GAC7Ewe,EAAM,KAAK,SAAWxe,EAAK,SAC3Bwe,EAAM,KAAK,UAAYxe,EAAK,UAC5Bwe,EAAM,KAAK,WAAaxe,EAAK,UAC/B,EACA,CAAC8xC,EAAkB,EAAEtzB,EAAO6xB,EAAO,CAE3BA,EAAA,QAASsB,GAAM,CACjBA,EAAA,UACAA,EAAE,WAAa,MACfA,EAAE,YACA,uGAAuGA,EAAE,SAAS,IAAIA,EAAE,QAAQ,GAC9H,4CAA4CA,EAAE,SAAS,IAAIA,EAAE,QAAQ,GACrEA,EAAE,UACT,EAEDnzB,EAAM,MAAQ6xB,CAChB,EACA,CAAC0B,EAAyB,EAAEvzB,EAAO6xB,EAAO,CACpC,GAAAA,GAASA,EAAM,OAAS,EAAG,CAC7BA,EAAM,KAAK,CAAC/D,EAAGhX,IAAMgX,EAAE,UAAU,cAAchX,EAAE,UAAW,KAAM,CAAE,YAAa,OAAQ,CAAC,EAC1F9W,EAAM,WAAa6xB,EAAM,OAAQsB,GAAMA,EAAE,SAAS,EAC5C,MAAAU,EAA0B,CAAC,GAAGhC,CAAK,EACzC7xB,EAAM,iBAAmB6zB,EAAwB,OAAQR,GAAMA,EAAE,WAAa,EAAK,CACrF,CACF,EAEA,CAACV,EAAqB,EAAE3yB,EAAO2K,EAAS,CACtC,MAAMqnB,EAASrnB,EAAQ,OAAO,OAAQ0oB,GAAM1oB,EAAQ,SAAS,MAAM,GAAG,EAAE,QAAQ0oB,EAAE,EAAE,EAAI,EAAE,EAC5ErzB,EAAM,MAAM,OAAQmzB,GAAMxoB,EAAQ,QAAQ,MAAM,GAAG,EAAE,QAAQwoB,EAAE,EAAE,EAAI,EAAE,EAE/E,QAAS3xC,GAAS,CACfwwC,EAAA,QAAS3Y,GAAU,CACpB73B,EAAK,aAAe,KACtBA,EAAK,WAAa,GACTA,EAAK,WAAW,OAAQ6xC,GAAMA,EAAE,KAAOha,EAAM,EAAE,EAAE,SAAW,GACrE73B,EAAK,WAAW,KAAK,CACnB,GAAI63B,EAAM,GACV,KAAMA,EAAM,KACb,CACH,CACD,EACF,CACH,EACA,CAACqZ,EAAwB,EAAE1yB,EAAO2K,EAAS,CACzC,MAAMqnB,EAASrnB,EAAQ,OAAO,OAAQ0oB,GAAM1oB,EAAQ,SAAS,MAAM,GAAG,EAAE,QAAQ0oB,EAAE,EAAE,EAAI,EAAE,EAC5ErzB,EAAM,MAAM,OAAQmzB,GAAMxoB,EAAQ,QAAQ,MAAM,GAAG,EAAE,QAAQwoB,EAAE,EAAE,EAAI,EAAE,EAE/E,QAAS3xC,GAAS,CACtB,MAAMsyC,EAAetyC,EAAK,WAAW,IAAK6xC,GAAMA,EAAE,EAAE,EAC7CrB,EAAA,QAAS3Y,GAAU,CACpB,GAAA73B,EAAK,YAAc,KACrBA,EAAK,WAAa,OACb,CACL,MAAMuyC,EAAaD,EAAa,QAAQza,EAAM,EAAE,EAC5C0a,GAAc,GACXvyC,EAAA,WAAW,OAAOuyC,EAAY,CAAC,CAExC,EACD,EACF,CACH,EACA,CAACP,EAA8B,EAAExzB,EAAOqZ,EAAO,CAC7CrZ,EAAM,MAAM,QAASxe,GAAS,CAC5B,GAAIA,EAAK,YAAc,MAAQA,EAAK,WAAW,OAAS,EAAG,CACnD,MAAAwyC,EAAkBxyC,EAAK,WAAW,IAAK6xC,GAAMA,EAAE,EAAE,EAAE,QAAQha,EAAM,EAAE,EACrE2a,GAAmB,IAChBxyC,EAAA,WAAWwyC,CAAe,EAAI3a,EAEvC,EACD,CACH,EACA,CAACqa,EAA6B,EAAE1zB,EAAOyzB,EAAS,CAC9CzzB,EAAM,MAAM,QAASxe,GAAS,CAC5B,GAAIA,EAAK,YAAc,MAAQA,EAAK,WAAW,OAAS,EAAG,CACnD,MAAAwyC,EAAkBxyC,EAAK,WAAW,IAAK6xC,GAAMA,EAAE,EAAE,EAAE,QAAQI,CAAO,EACpEO,GAAmB,GAChBxyC,EAAA,WAAW,OAAOwyC,EAAiB,CAAC,CAE7C,EACD,CACH,CACF,EACexyC,GAAA,CACb,WAAY,SACZwe,GAAA,QACAC,GAAA,QACAC,GAAA,UACAkB,EACF,ECtPapB,GAAQ,CACnB,WAAY,CAAE,EACd,YAAa,CAAE,CACjB,EAEaC,GAAU,CACrB,cAAgBD,GAAUA,EAAM,WAChC,eAAiBA,GAAUA,EAAM,WACnC,EACaE,GAAU,CACrB,iBAAkB,CAAC,CAAE,OAAAC,KAEZE,EAAI,IADC,yDACM,EAAE,KAAM5T,GAAa,CACrC,MAAMwnC,EAAQxnC,EAAS,KAAK,KAAK,cAAc,OAC/C,OAAA0T,EAAO+zB,GAAwBD,CAAK,EAC7BA,CACb,CAAK,EAEH,gBAAiB,CAAC,CAAE,OAAA9zB,CAAQ,EAAEg0B,IAAiB,CAC7C,MAAMvnC,EAAM,2DAA2DunC,CAAY,IACnF,OAAO9zB,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAM2nC,EAAa3nC,EAAS,KAAK,KAAK,cAAc,OACpD,OAAA0T,EAAOk0B,GAAuBD,CAAU,EACjCA,CACb,CAAK,CACF,EACD,eAAgB,CAAChxB,EAAGtB,IAEXzB,EAAI,KADC,yDACSyB,CAAK,EAAE,KAAMrV,GAAaA,EAAS,IAAI,EAE9D,gBAAiB,CAAC2W,EAAGtB,IAEZzB,EAAI,KADC,yEACSyB,CAAK,EAAE,KAAMrV,GAEzB,CAAC,KADgBA,EAAS,IACJ,CAC9B,CAEL,EACa2U,GAAY,CACvB,CAAC8yB,EAAsB,EAAEl0B,EAAOi0B,EAAO,CACrCj0B,EAAM,YAAci0B,CACrB,EACD,CAACI,EAAqB,EAAEr0B,EAAOmsB,EAAM,CACnCnsB,EAAM,WAAamsB,CACpB,CACH,EAEemI,GAAA,CACb,WAAY,GACd,MAAEt0B,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECrDMpB,GAAQ,CACZ,oBAAqB,KACrB,qBAAsB,KACtB,8BAA+B,KAC/B,yBAA0B,IAC5B,EAEaC,GAAU,CACrB,oCAAsCD,GAAUA,EAAM,oBACtD,sCAAwCA,GAAUA,EAAM,qBACxD,2CAA6CA,GAAUA,EAAM,8BAC7D,4BAA8BA,GAAUA,EAAM,wBAChD,EAEaE,GAAU,CACrB,0CAA2C,CAAC,CAAE,OAAAC,CAAQ,EAAEo0B,IAAa,CACnE,MAAM3nC,EAAM,6FAGT2nC,EAAS,KAAK,iBAAiBA,EAAS,KAAK,sBAC9CA,EAAS,UACf,yBAA6BA,EAAS,aAAa,GAEzCzyB,EAAQ,CACZ,YAAayyB,EAAS,YACtB,iBAAkBA,EAAS,iBAC3B,gBAAiBA,EAAS,gBAC1B,MAAOA,EAAS,MAChB,KAAMA,EAAS,KACf,YAAaA,EAAS,YACtB,gBAAiBA,EAAS,gBAC1B,yBAA0BA,EAAS,yBACnC,YACEA,EAAS,cAAgB,MAAQA,EAAS,YAAY,OAAS,EAC3DA,EAAS,YACT,GACN,qBACEA,EAAS,uBAAyB,MAAQA,EAAS,qBAAqB,OAAS,EAC7EA,EAAS,qBACT,GACN,0CACEA,EAAS,6BAA+B,MACxCA,EAAS,2BAA2B,OAAS,EACzCA,EAAS,2BACT,EACP,EAED,OAAOl0B,EAAI,KAAKzT,EAAKkV,CAAK,EAAE,KAAMrV,GAAa,CAC7C,GAAIA,EAAS,KAAK,QAAU,EAAG,CAC7B,MAAM+nC,EAAuB/nC,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAErE,OAAA0T,EAAOs0B,GAA6CD,CAAoB,EACxEr0B,EACEu0B,GACAjoC,EAAS,KAAK,KAAK,aAAa,KACjC,EACMA,CACR,CACP,CAAK,CACF,EACD,wCAAyC,CAAC,CAAE,OAAA0T,CAAQ,EAAEo0B,IAAa,CACjE,MAAM3nC,EAAM,uFAET2nC,EAAS,QAAQ,qBAAqBA,EAAS,gBAAgB,sBAChEA,EAAS,UACf,yBAA6BA,EAAS,aAAa,GAE/C,OAAOl0B,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,GAAIA,EAAS,KAAK,QAAU,EAAG,CAC7B,MAAMkoC,EAAsBloC,EAAS,KAAK,KAAK,aAAa,OAAO,CAAC,EAEpE,OAAA0T,EAAOy0B,GAA2CD,CAAmB,EAE9DloC,CACR,CACP,CAAK,CACF,EACD,mBAAoB,CAAC2W,EAAG8K,IAAU,CAChC,MAAMthB,EAAM,6FAA6FshB,EAAM,QAAQ,UAAUA,EAAM,KAAK,GAC5I,OAAO7N,EAAI,IAAIzT,CAAG,CACnB,EACD,4BAA6B,CAAC,CAAE,OAAAuT,CAAQ,EAAE7Z,IAAS,CACjD6Z,EAAO00B,GAAkDvuC,CAAI,CAC9D,CACH,EAEa8a,GAAY,CACvB,CAACwzB,EAAyC,EAAE50B,EAAO20B,EAAqB,CACtE30B,EAAM,oBAAsB20B,CAC7B,EACD,CAACF,EAA2C,EAAEz0B,EAAOw0B,EAAsB,CACzEx0B,EAAM,qBAAuBw0B,CAC9B,EACD,CAACE,EAAuD,EAAE10B,EAAO80B,EAAO,CACtE90B,EAAM,8BAAgC80B,CACvC,EACD,CAACD,EAAgD,EAAE70B,EAAO1Z,EAAM,CAC9D0Z,EAAM,yBAA2B1Z,CAClC,CACH,EAEeyuC,GAAA,CACb,WAAY,GACd,MAAE/0B,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC3GapB,GAAQ,CACnB,oBAAqB,CAAE,EACvB,mBAAoB,KAEpB,4BAA6B,IAC/B,EACaC,GAAU,CACrB,uBAAyBD,GAAUA,EAAM,oBACzC,sBAAwBA,GAAUA,EAAM,mBACxC,+BAAiCA,GAAUA,EAAM,2BACnD,EACaE,GAAU,CACrB,gCAAiC,CAAC,CAAE,OAAAC,KAE3BE,EAAI,IADC,qEACM,EAAE,KAAM5T,GAAa,CACrC,IAAIuoC,EAAsB,CAAE,EAC5B,OAAIvoC,EAAS,KAAK,MAAQ,IACxBuoC,EAAsBvoC,EAAS,KAAK,KAAK,qBAAqB,OAC9D0T,EAAO80B,GAAkCD,CAAmB,GAEvDA,CACb,CAAK,EAEH,8BAA+B,CAAC,CAAE,OAAA70B,KAEzBE,EAAI,IADC,yEACM,EAAE,KAAM5T,GAAa,aACrC,MAAM1M,IAAOiC,GAAAD,GAAAD,GAAAR,EAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,EAAgB,OAAhB,YAAAQ,EAAsB,kBAAtB,YAAAC,EAAuC,SAAvC,YAAAC,EAAgD,KAAM,CAAE,EACrE,OAAAme,EAAO+0B,GAAsCn1C,CAAI,EAC1CA,CACb,CAAK,EAEH,iCAAkC,CAAC,CAAE,OAAAogB,KAE5BE,EAAI,IADC,sFACM,EAAE,KAAM5T,GAAa,aACrC,MAAM1M,IACJiC,GAAAD,GAAAD,GAAAR,EAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,EAAgB,OAAhB,YAAAQ,EAAsB,6CAAtB,YAAAC,EAAkE,SAAlE,YAAAC,EAA2E,KAAM,KACnF,GAAIjC,EAAM,CACR,KAAM,CAAE,aAAAo1C,EAAc,gBAAAC,CAAe,EAAKr1C,EAGtCo1C,EAAeC,EAAkB,GACnCj1B,EAAOk1B,GAAyCt1C,CAAI,CAEvD,CACD,OAAOA,CACb,CAAK,CAEL,EAEaqhB,GAAY,CACvB,CAAC6zB,EAAgC,EAAEj1B,EAAOs1B,EAAmB,CAC3Dt1B,EAAM,oBAAsBs1B,CAC7B,EACD,CAACJ,EAAoC,EAAEl1B,EAAOu1B,EAAoB,CAChEv1B,EAAM,mBAAqBu1B,CAC5B,EACD,CAACF,EAAuC,EAAEr1B,EAAOw1B,EAA6B,CAC5Ex1B,EAAM,4BAA8Bw1B,CACrC,CACH,EACeF,GAAA,CACf,MAAEt1B,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC/DA,IAAIq0B,GAAoBjQ,GAAM,YAAY,OAAQ,EAClD,MAAMxlB,GAAQ,CACZ,OAAQ,KACR,aAAc,CAAE,EAChB,kBAAmB,KACnB,cAAe,CAAE,EACjB,kCAAmC,CAAE,CACvC,EAEaC,GAAU,CACrB,UAAYD,GAAUA,EAAM,OAC5B,gBAAkBA,GAAUA,EAAM,aAClC,qBAAuBA,GAAUA,EAAM,kBACvC,iBAAmBA,GAAUA,EAAM,cACnC,qCAAuCA,GAAUA,EAAM,iCACzD,EACaE,GAAU,CACrB,YAAa,CAAC,CAAE,OAAAC,EAAQ,UAAA8S,CAAS,EAAIvS,IAAa,CAChD,MAAM9T,EAAM,gEAAgE8T,CAAQ,wBACpF,OAAOL,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,MAAMg0B,EAASh0B,EAAS,KAAK,KAAK,UAAU,OAAO,CAAC,EACpD,OAAA0T,EAAOu1B,GAAkB,CAAE,OAAAjV,EAAQ,UAAAxN,CAAS,CAAE,EACvCwN,CACb,CAAK,CACF,EACD,uBAAwB,CAAC,CAAE,OAAAtgB,CAAQ,EAAEO,IAAa,CAChD,MAAM9T,EAAM,kFAAkF8T,CAAQ,GAEtG,OAAOL,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,MAAMnF,EAASmF,EAAS,KAAK,KAAK,aAC9BA,EAAS,KAAK,KAAK,aAAa,OAChC,KACJ,OAAA0T,EAAOw1B,GAAkDruC,CAAM,EACxDA,CACf,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOw1B,GAAkD,IAAI,EACvD5zB,CACd,CAAO,CACJ,EACD,kBAAmB,CAAC,CAAE,OAAA5B,CAAQ,EAAEU,IAAW,CACzC,IAAIjU,EAAM,8DACN4jC,EAAmB,GAEnB3vB,EAAO,QACTjU,GAAO,gBAAgBiU,EAAO,KAAK,GACnC2vB,EAAmB,IAGjB3vB,EAAO,QACTjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,gBAAgB3vB,EAAO,KAAK,GACjE2vB,EAAmB,IAGjB3vB,EAAO,UAAYA,EAAO,SAAS,OAAS,IAC9CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,mBACnC3vB,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,EACpE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBACnC3vB,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,YAAW,EAAK,EAChE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBAAiB3vB,EAAO,MAAM,GACnE2vB,EAAmB,IAGjB3vB,EAAO,YAAcA,EAAO,WAAW,OAAS,IAClDjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB3vB,EAAO,UAAU,IAE7E,MAAM1f,EAAS,CAAE,YAAas0C,GAAkB,KAAO,EACvD,OAAOp1B,EACJ,IAAIzT,EAAKzL,CAAM,EACf,KAAMsL,GAAa,CAClB,MAAMnF,EAASmF,EAAS,KAAK,KAAK,aAC9BA,EAAS,KAAK,KAAK,aAAa,OAChC,KACJ,OAAA0T,EAAOy1B,GAAyBtuC,CAAM,EAC/BA,CACf,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOy1B,GAAyB,IAAI,EAC9B7zB,CACd,CAAO,CACJ,EAED,wBAAyB,CAAC,CAAE,OAAA5B,KAAa,CACnCs1B,IACFA,GAAkB,OAAO,0BAA0B,EAErDA,GAAoBjQ,GAAM,YAAY,OAAQ,EAC9CrlB,EAAOy1B,GAAyB,IAAI,CACrC,EAED,qCAAsC,CAAC,CAAE,OAAAz1B,CAAQ,EAAEU,IAAW,CAC5D,IAAIjU,EAAM,sFACN4jC,EAAmB,GAEvB,OAAI3vB,EAAO,UAAYA,EAAO,SAAS,OAAS,IAC9CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,mBACnC3vB,EAAO,SAAW,IAAI,KAAKA,EAAO,QAAQ,EAAE,YAAW,EAAK,EACpE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBACnC3vB,EAAO,OAAS,IAAI,KAAKA,EAAO,MAAM,EAAE,YAAW,EAAK,EAChE,GACM2vB,EAAmB,IAGjB3vB,EAAO,QAAUA,EAAO,OAAO,OAAS,IAC1CjU,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBAAiB3vB,EAAO,MAAM,GACnE2vB,EAAmB,IAErB5jC,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB3vB,EAAO,UAAU,GACpER,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,MAAMnF,EAASmF,EAAS,KAAK,KAAK,aAC9BA,EAAS,KAAK,KAAK,aAAa,OAChC,KACJ,OAAA0T,EAAOy1B,GAAyBtuC,CAAM,EAC/BA,CACf,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOy1B,GAAyB,IAAI,EAC9B7zB,CACd,CAAO,CACJ,EACD,uCAAwC,CAAC,CAAE,OAAA5B,KAGlCE,EAAI,IAFC,qFAEM,EAAE,KAAM5T,GAAa,WACrC,MAAMnF,IAASvF,GAAAD,GAAAR,EAAAmL,GAAA,YAAAA,EAAU,OAAV,YAAAnL,EAAgB,OAAhB,YAAAQ,EAAsB,uCAAtB,YAAAC,EAA4D,SAAU,CAAE,EAEvF,OAAAoe,EAAO01B,GAAgDvuC,CAAM,EACtDA,CACb,CAAK,EAEH,0BAA2B,CAAC,CAAE,OAAA6Y,CAAQ,EAAE2B,IAAU,CAChD,IAAIlV,EAAM,sEACN4jC,EAAmB,GAEvB,OAAI1uB,EAAM,QACRlV,GAAO,gBAAgBkV,EAAM,KAAK,GAClC0uB,EAAmB,IAGjB1uB,EAAM,QACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,gBAAgB1uB,EAAM,KAAK,GAChE0uB,EAAmB,IAGjB1uB,EAAM,aACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB1uB,EAAM,UAAU,GAC1E0uB,EAAmB,IAGjB1uB,EAAM,gBACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,wBAAwB1uB,EAAM,aAAa,GAChF0uB,EAAmB,IAGjB1uB,EAAM,UAAYA,EAAM,SAAS,OAAS,IAC5ClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,mBACnC1uB,EAAM,SAAW,IAAI,KAAKA,EAAM,QAAQ,EAAE,YAAW,EAAK,EAClE,GACM0uB,EAAmB,IAGjB1uB,EAAM,QAAUA,EAAM,OAAO,OAAS,IACxClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBACnC1uB,EAAM,OAAS,IAAI,KAAKA,EAAM,MAAM,EAAE,YAAW,EAAK,EAC9D,GACM0uB,EAAmB,IAGjB1uB,EAAM,QAAUA,EAAM,OAAO,OAAS,IACxClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBAAiB1uB,EAAM,MAAM,GAClE0uB,EAAmB,IAGjB1uB,EAAM,UAAYA,EAAM,SAAS,OAAS,IAC5ClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB1uB,EAAM,QAAQ,IAGnEzB,EACJ,KAAKzT,EAAKkV,CAAK,EACf,KAAMrV,GAAa,CAClB,MAAMnF,EAASmF,EAAS,KAAK,KAAK,aAC9BA,EAAS,KAAK,KAAK,aAAa,OAChC,KAEJ,OAAA0T,EAAOy1B,GAAyBtuC,CAAM,EAElCmF,EAAS,KAAK,QAAU,EAC1B0T,EAAO21B,GAA+BrpC,EAAS,KAAK,KAAK,aAAa,KAAK,EAE3E0T,EAAO21B,GAA+B,IAAI,EAGrC,IAAI,QAAQ,SAAUryC,EAAS,CACpCA,EAAQ6D,CAAM,CACxB,CAAS,CACT,CAAO,EACA,MAAOya,GAAQ,CACd,MAAA5B,EAAOy1B,GAAyB,IAAI,EAC9B7zB,CACd,CAAO,CACJ,EACD,2BAA4B,CAACqB,EAAGtB,IAAU,CACxC,IAAIlV,EAAM,kFACN4jC,EAAmB,GAEvB,OAAI1uB,EAAM,QACRlV,GAAO,gBAAgBkV,EAAM,KAAK,GAClC0uB,EAAmB,IAGjB1uB,EAAM,QACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,gBAAgB1uB,EAAM,KAAK,GAChE0uB,EAAmB,IAGjB1uB,EAAM,aACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB1uB,EAAM,UAAU,GAC1E0uB,EAAmB,IAGjB1uB,EAAM,gBACRlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,wBAAwB1uB,EAAM,aAAa,GAChF0uB,EAAmB,IAGjB1uB,EAAM,UAAYA,EAAM,SAAS,OAAS,IAC5ClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,mBACnC1uB,EAAM,SAAW,IAAI,KAAKA,EAAM,QAAQ,EAAE,YAAW,EAAK,EAClE,GACM0uB,EAAmB,IAGjB1uB,EAAM,QAAUA,EAAM,OAAO,OAAS,IACxClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBACnC1uB,EAAM,OAAS,IAAI,KAAKA,EAAM,MAAM,EAAE,YAAW,EAAK,EAC9D,GACM0uB,EAAmB,IAGjB1uB,EAAM,QAAUA,EAAM,OAAO,OAAS,IACxClV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,iBAAiB1uB,EAAM,MAAM,GAClE0uB,EAAmB,IAGjB1uB,EAAM,YAAcA,EAAM,WAAW,OAAS,IAChDlV,GAAO,GAAG4jC,EAAmB,IAAM,EAAE,qBAAqB1uB,EAAM,UAAU,IAGrEuB,EAAY,KAAKzW,EAAKkV,CAAK,EAAE,KAAK7U,EAAK,iBAAiB,CAChE,EACD,aAAc,CAACmW,EAAGqd,IAETpgB,EAAI,IADC,uDACQogB,CAAM,EAAE,KAAMh0B,GAAaA,EAAS,KAAK,KAAK,UAAU,OAAO,CAAC,CAAC,EAEvF,kBAAmB,CAAC,CAAE,OAAA0T,KAAa,CACjCA,EAAOy1B,GAAyB,IAAI,CACrC,CACH,EACax0B,GAAY,CACvB,CAACs0B,EAAgB,EAAE11B,EAAO,CAAE,OAAAygB,EAAQ,UAAAxN,CAAS,EAAI,CAE/C,IAAI8iB,EAA+C,KAC/CtV,EAAO,6CACTsV,EACEtV,EAAO,6CACAA,EAAO,oCAChBsV,EACEtV,EAAO,kCAAkC,aAG7CzgB,EAAM,OAAS,CACb,GAAIygB,EAASA,EAAO,GAAKxzB,EAAK,KAAM,EACpC,YAAawzB,EAASA,EAAO,YAAc,GAC3C,aAAcA,EAASA,EAAO,aAAe,GAC7C,SAAUA,EAASA,EAAO,SAAW,GACrC,SAAUA,EAASA,EAAO,SAAW,GACrC,KAAMA,EAASA,EAAO,KAAO,GAC7B,cAAeA,EAASA,EAAO,cAAgB,GAC/C,QAASA,EAASA,EAAO,QAAU,GACnC,WAAYA,EAASA,EAAO,WAAa,GACzC,YAAaA,EAASA,EAAO,YAAc,GAC3C,UAAWA,EAASA,EAAO,UAAY,GACvC,UAAWA,EAASA,EAAO,UAAY,GACvC,eAAgBA,EAASA,EAAO,eAAiB,KACjD,SAAUA,EAASA,EAAO,SAAW,KACrC,cAAeA,EAASA,EAAO,SAAW,KAC1C,QAASA,EAASA,EAAO,QAAU,KACnC,oBAAqBA,GAAUA,EAAO,oBAAsBA,EAAO,oBAAsB,CAAE,EAC3F,cAAeA,EAAO,cAAgBA,EAAO,cAAgB,GAC7D,kBAAmBA,EAASA,EAAO,gBAAkB,KACrD,aAAcA,EAASA,EAAO,sBAAwB,KACtD,UAAWA,EAASA,EAAO,UAAY,KACvC,oBAAqBA,EAASA,EAAO,oBAAsB,KAC3D,WAAYA,EAASA,EAAO,WAAa,KACzC,oBAAqBA,EAASA,EAAO,oBAAsB,KAC3D,cAAexN,EAAU,eAAe,kBAAoB,IAAI,IAAM,GACtE,yBAA0BwN,EAASA,EAAO,yBAA2B,KACrE,6CAAAsV,EACA,wBACEtV,GAAUA,EAAO,wBAA0BA,EAAO,wBAA0B,CAAE,EAChF,0BACEA,GAAUA,EAAO,0BAA4BA,EAAO,0BAA4B,GAClF,SAAUA,GAAUA,EAAO,SAAWA,EAAO,SAAW,GACxD,UAAWA,GAAUA,EAAO,UAAYA,EAAO,UAAY,GAC3D,WAAYA,GAAUA,EAAO,WAAaA,EAAO,WAAa,GAC9D,gBAAiBA,GAAUA,EAAO,gBAAkBA,EAAO,gBAAkB,EAC9E,CACF,EACD,CAACmV,EAAuB,EAAE51B,EAAOg2B,EAAS,CACxCh2B,EAAM,aAAeg2B,CACtB,EACD,CAACF,EAA6B,EAAE91B,EAAOi2B,EAAU,CAC/Cj2B,EAAM,kBAAoBi2B,CAC3B,EACD,CAACN,EAAgD,EAAE31B,EAAOk2B,EAAS,CACjEl2B,EAAM,cAAgBk2B,CACvB,EACD,CAACL,EAA8C,EAAE71B,EAAOm2B,EAAmC,CACzFn2B,EAAM,kCAAoCm2B,CAC3C,CACH,EACe1V,GAAA,CACb,WAAY,GACd,MAAEzgB,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,EC7ValB,GAAU,CACrB,qBAAqBkD,EAAG+L,EAAU,CAChC,MAAMviB,EAAM,wEAAwEuiB,CAAQ,GAE5F,OAAO9O,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAaA,EAAS,KAAK,KAAK,wBAAwB,MAAM,CACzF,EACD,qBAAqB2W,EAAG,CAAE,eAAAgzB,EAAgB,eAAAC,CAAc,EAAI,CAC1D,MAAMzpC,EAAM,8EAA8EypC,CAAc,GAExG,OAAOh2B,EAAI,IAAIzT,EAAKwpC,CAAc,EAAE,KAAM3pC,GACjBA,EAAS,KAAK,KAAK,wBAAwB,OAAO,CAAC,CAE3E,CACF,EACD,qBAAqB2W,EAAGgzB,EAAgB,CAGtC,OAAO/1B,EAAI,KAFC,8DAES+1B,CAAc,EAAE,KAAM3pC,GAClBA,EAAS,KAAK,KAAK,wBAAwB,OAAO,CAAC,CAE3E,CACF,CACH,EAEe6pC,GAAA,CACb,WAAY,GACd,QAAEp2B,EACF,EC1BaF,GAAQ,CACnB,gBAAiB,CAAE,CACrB,EACaC,GAAU,CACrB,mBAAqBD,GAAUA,EAAM,eACvC,EACaE,GAAU,CACrB,qBAAsB,CAAC,CAAE,OAAAC,CAAQ,EAAEO,IAAa,CAC9C,MAAM9T,EAAM,sDAAsD8T,CAAQ,mBAC1E,OAAOL,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAI8pC,EAAkB,CAAE,EAExB,OAAI9pC,EAAS,KAAK,MAAQ,IACxB8pC,EAAkB9pC,EAAS,KAAK,KAAK,kBAAkB,OACvD0T,EAAOq2B,GAA4BD,CAAe,GAE7CA,CACb,CAAK,CACF,EACD,sBAAuB,CAACnzB,EAAGtB,IAAU,CACnC,MAAMlV,EAAM,sDAAsDkV,EAAM,QAAQ,mBAChF,OAAO8B,EAAU,KAAKhX,EAAKkV,EAAM,QAAQ,CAC1C,EACD,qBAAsB,CAACsB,EAAGtB,IAAU,CAClC,MAAMlV,EAAM,sDAAsDkV,EAAM,QAAQ,mBAChF,OAAOzB,EAAI,IAAIzT,EAAKkV,EAAM,KAAK,CAChC,EACD,qBAAsB,CAACsB,EAAGtB,IAAU,CAClC,MAAMlV,EAAM,sDAAsDkV,EAAM,QAAQ,oBAAoBA,EAAM,gBAAgB,GAC1H,OAAOzB,EAAI,OAAOzT,CAAG,CACtB,CACH,EACawU,GAAY,CACvB,CAACo1B,EAA0B,EAAEx2B,EAAOu2B,EAAiB,CACnDv2B,EAAM,gBAAkBu2B,CACzB,CACH,EACeE,GAAA,CACb,WAAY,GACd,MAAEz2B,GACF,QAAEC,GACF,QAAEC,GACF,UAAEkB,EACF,ECzCapB,GAAQ,CACnB,yBAA0B,KAC1B,4BAA6B,CAAE,EAC/B,2BAA4B,KAC5B,kCAAmC,CAAE,CACvC,EACaC,GAAU,CACrB,4BAA8BD,GAAUA,EAAM,yBAC9C,+BAAiCA,GAAUA,EAAM,4BACjD,8BAAgCA,GAAUA,EAAM,2BAChD,qCAAuCA,GAAUA,EAAM,iCACzD,EACaE,GAAU,CACrB,8BAA+B,CAAC,CAAE,OAAAC,CAAQ,EAAEO,IAAa,CACvD,MAAM9T,EAAM,uGAAuG8T,CAAQ,GAE3H,OAAOL,EACJ,IAAIzT,CAAG,EACP,KAAMH,GAAa,CAClB,GAAIA,EAAS,KAAK,MAAQ,EAAG,CAC3B,MAAMiqC,EAAcjqC,EAAS,KAAK,KAAK,4BAA4B,OAAO,CAAC,EAC3E,OAAA0T,EAAOw2B,GAAsCD,CAAW,EACjDA,CACR,CACT,CAAO,EACA,MAAO30B,GAAQ,CACd,MAAA5B,EAAOw2B,GAAsC,IAAI,EAC3C50B,CACd,CAAO,CACJ,EACD,iCAAkC,CAAC,CAAE,OAAA5B,CAAQ,EAAEO,IAAa,CAC1D,MAAM9T,EAAM,iGAAiG8T,CAAQ,GACrH,OAAOL,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAImqC,EAA8B,CAAE,EACpC,OAAInqC,EAAS,KAAK,MAAQ,IACxBmqC,EAA8BnqC,EAAS,KAAK,KAAK,kBAAkB,OACnE0T,EAAO02B,GAA0BD,CAA2B,GAEvDA,CACb,CAAK,CACF,EAED,gCAAiC,CAAC,CAAE,OAAAz2B,CAAQ,EAAEU,IAAW,CACvD,MAAMjU,EAAM,4FAA4FiU,EAAO,QAAQ,aAAaA,EAAO,QAAQ,GACnJ,OAAOR,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAI6oC,EAAoB,KACxB,OAAI7oC,EAAS,KAAK,MAAQ,IACxB6oC,EAAoB7oC,EAAS,KAAK,KAAK,8BAA8B,OAAO,CAAC,GAG/E0T,EAAO22B,GAAyCxB,CAAiB,EAC1DA,CACb,CAAK,CACF,EACD,8BAA+B,CAAC,CAAE,OAAAn1B,CAAQ,EAAE42B,IAEnC12B,EAAI,KADC,0EACS02B,CAAS,EAAE,KAAMtqC,GAAa,CACjD,MAAMhK,EAASgK,EAAS,KAAK,KAAK,8BAA8B,OAAO,CAAC,EACxE,OAAA0T,EAAO22B,GAAyCr0C,CAAM,EAC/CA,CACb,CAAK,EAEH,iCAAkC,CAAC,CAAE,OAAA0d,CAAM,EAAI,CAAE,UAAA42B,EAAW,YAAAC,CAAW,IAAO,CAC5E,MAAMpqC,EAAM,uFAAuFoqC,CAAW,GAC9G,OAAO32B,EAAI,IAAIzT,EAAKmqC,CAAS,EAAE,KAAMtqC,GAAa,CAChD,MAAMhK,EAASgK,EAAS,KAAK,KAAK,8BAA8B,OAAO,CAAC,EACxE,OAAA0T,EAAO22B,GAAyCr0C,CAAM,EAE/CA,CACb,CAAK,CACF,EACD,uCAAwC,CAAC,CAAE,OAAA0d,CAAQ,EAAEO,IAAa,CAChE,MAAM9T,EAAM,4FAA4F8T,CAAQ,GAEhH,OAAOL,EAAI,IAAIzT,CAAG,EAAE,KAAMH,GAAa,CACrC,IAAI6oC,EAAoB,CAAE,EAC1B,OAAI7oC,EAAS,KAAK,MAAQ,IACxB6oC,EAAoB7oC,EAAS,KAAK,KAAK,8BAA8B,QAGvE0T,EAAO82B,GAAqD3B,CAAiB,EACtEA,CACb,CAAK,CACF,EACD,wCAAyC,CAAC,CAAE,OAAAn1B,CAAQ,EAAE+2B,IAA+B,CACnF/2B,EAAO,oBAAqB,CAAE,2BAAA+2B,EAA4B,CAC3D,CACH,EAEa91B,GAAY,CACvB,CAACu1B,EAAoC,EAAE32B,EAAO02B,EAAa,CACzD12B,EAAM,yBAA2B02B,CAClC,EACD,CAACG,EAAwB,EAAG,CAAC72B,EAAO42B,IAAgC,CAClE52B,EAAM,4BAA8B42B,CACrC,EACD,CAACE,EAAuC,EAAG,CAAC92B,EAAOk3B,IAA+B,CAChFl3B,EAAM,2BAA6Bk3B,CACpC,EACD,CAACD,EAAmD,EAAG,CACrDj3B,EACAm3B,IACG,CACHn3B,EAAM,kCAAoCm3B,CAC3C,EACD,kBAAmB,CAACn3B,EAAO,CAAE,2BAAAk3B,KAAiC,CAC5D,KAAM,CAAE,GAAA3zB,EAAI,SAAA6zB,CAAQ,EAAKF,EAEzB,GAAIE,EAGF,GAFep3B,EAAM,kCAAkC,KAAM9d,GAAMA,EAAE,KAAOqhB,CAAE,EAElE,CACV,MAAM1iB,EAAQ8hC,GAAU3iB,EAAM,kCAAmC,CAAE,GAAAuD,CAAE,CAAE,EACvEja,EAAI,IAAI0W,EAAM,kCAAmCnf,EAAOq2C,CAA0B,CAC1F,MACQl3B,EAAM,kCAAkC,QAAQk3B,CAA0B,MAEvE,CACL,MAAMhB,EAAUl2B,EAAM,kCAAkC,OAAQ9d,GAAMA,EAAE,KAAOqhB,CAAE,EACjFvD,EAAM,kCAAoCk2B,CAC3C,CACF,EACD,CAACjvB,EAA+B,EAAG,CAACjH,EAAOuD,IAAO,CAChD,MAAMkE,EAAyBzH,EAAM,4BAA4B,OAC9D9d,GAAMA,EAAE,eAAiBqhB,CAC3B,EAEDvD,EAAM,4BAA8ByH,CACrC,CACH,EACe4vB,GAAA,CACb,WAAY,GACZ,MAAAr3B,GACA,QAAAC,GACA,QAAAC,GACA,UAAAkB,EACF,ECjDMk2B,GAAWrqC,EAAK,uBAChBsqC,GAAK,IAAIC,GAAS,CAAE,aAAc,KAAO,GAE/CluC,EAAI,IAAImuC,EAAI,EAEZ,MAAMhM,GAAe,KAAO,IAGtBiM,GAAQ,GAER/a,EAAQ,IAAI8a,GAAK,MAAM,CAC3B,MAAOhM,GACP,UAAW,CACT,MAAQzrB,GAAU,CACT,cAAOA,EAAOyrB,GAAc,EACrC,CACF,EACA,QAAS,CACP,MAAAhqB,GACA,KAAAgB,GACA,eAAAS,GACA,YAAAW,GACA,gBAAAO,GACA,qBAAAQ,GACA,yBAAAG,GACA,iBAAAa,GACA,eAAAiC,GACA,2BAAAW,GACA,uBAAAR,GACA,SAAA2E,GACA,aAAAS,GACA,MAAAsB,GACA,WAAAyD,GACA,SAAAkI,GACA,OAAA9G,GACA,MAAA8F,GACA,UAAA3Q,GACA,cAAAO,GACA,MAAA2K,GACA,QAAAkL,GACA,SAAAlG,GACA,WAAAJ,GAAA,SACAnJ,GACA,SAAAqI,GACA,eAAAmD,GACA,kBAAAF,GACA,OAAAkO,GACA,eAAAO,GACA,oBAAA5O,GACA,mBAAAuO,GACA,iBAAAtE,GACA,iBAAAE,GACA,iBAAApL,GACA,gBAAA6B,GACA,OAAApE,GACA,IAAA4N,GACA,OAAAvP,GACA,WAAA6a,GACA,SAAA/X,GACA,YAAA8X,GACA,kBAAAlC,GACA,eAAAmB,GACA,qBAAAZ,GACA,KAAA9sC,GACA,iBAAAuzC,GACA,qBAAAT,GACA,eAAAmC,GACA,kBAAAY,GACA,KAAArS,GACA,UAAAnX,GACA,WAAAuF,GACA,UAAAsB,GACA,YAAAU,GACA,WAAAmX,GACA,OAAA9L,GACA,eAAA6V,GACA,YAAAzhB,GACA,aAAAnI,GACA,eAAAT,GACA,cAAAI,GACA,gBAAAugB,GACA,gBAAAf,GACA,WAAAxX,GACA,cAAA6P,GACA,eAAA9B,GACA,YAAAmC,GACA,eAAA/B,GACA,uBAAAS,GACA,MAAA9O,GACA,gBAAA5G,GACA,6BAAAjD,GACA,eAAAgiB,GACA,QAAAf,GACA,cAAAI,GACA,0BAAA7hB,GACA,oBAAAG,GACA,oBAAAC,GACA,oBAAAxC,GACA,kBAAAsD,GACA,kBAAAsqB,GAAA,4BACA9rB,GACA,oBAAAqO,GACA,oCAAAtS,GACA,cAAAjC,GACA,+BAAAgG,EACF,EACA,QAAS,CACPquB,GAAqB,CACnB,IAAKL,GACL,MAAO,CAAC,OAAQ,iBAAkB,gBAAiB,iBAAiB,EACpE,QAAS,CACP,QAAUtvC,GAAQuvC,GAAG,IAAIvvC,CAAG,EAC5B,QAAS,CAACA,EAAKhD,IAAUuyC,GAAG,IAAIvvC,EAAKhD,CAAK,EAC1C,WAAagD,GAAQuvC,GAAG,OAAOvvC,CAAG,CACpC,EACD,CACH,EACA,QAAS,CAAC,EACV,QAAS,CAAC,EACV,OAAQ0vC,EAEV,CAAC,EAIY7a,GAAW,IAAMF,+cCtN9B,IAAIib,GAAa,CACf,eAAgB,kBAClB,EAEItS,GAA4B,CAC9B,eAAgB,qBAClB,EAEID,GAAgB,GAG0B1L,GAAgB,gBAC5C0L,GAAA,CAEd,qBAAsB1L,GAAgB,qBAGxCie,GAAa,CAAE,GAAGA,GAAY,GAAGvS,EAAc,EAC/CC,GAA4B,CAAE,GAAGA,GAA2B,GAAGD,EAAc,GAGlE,MAAAhlB,EAAMmlB,GAAM,OAAO,CAE9B,QAAS,qCAET,QAAS,IACT,gBAAiB,GACjB,QAASoS,EACX,CAAC,EAEYh0B,EAAY4hB,GAAM,OAAO,CAEpC,QAAS,qCAET,QAAS,KACT,YAAa,GACb,gBAAiB,GACjB,YAAa,GACb,QAASH,EACX,CAAC,EAEYza,GAAqB4a,GAAM,OAAO,CAE7C,QAAS,qCAET,QAAS,KACT,YAAa,GACb,gBAAiB,GACjB,YAAa,GACb,QAASF,EACX,CAAC,EAEYjiB,EAAcmiB,GAAM,OAAO,CAEtC,QAAS,qCAET,QAAS,KACT,gBAAiB,GACjB,YAAa,GACb,aAAc,OACd,QAASH,EACX,CAAC,EAED,SAASwS,GAAcC,EAAYp1B,EAAYE,EAAQ,CACrD,OAAOk1B,EACJ,QAAQ,+BAAgCp1B,CAAU,EAClD,QAAQ,2BAA4BE,CAAM,CAC/C,CAEA,SAASm1B,GAAc52C,EAAQ62C,EAAmB,CAChD,MAAMt1B,GAAcia,EAAM,QAAQ,iBAAmB,IAAI,IAAM,GACzD/Z,GAAU+Z,EAAM,QAAQ,mBAAqB,IAAI,IAAM,GAG7D,OAAAx7B,EAAO,IAAM02C,GAAc12C,EAAO,IAAKuhB,EAAYE,CAAM,EAGrDo1B,GAAqB72C,EAAO,OACvBA,EAAA,KAAO,KAAK,MAAM02C,GAAc,KAAK,UAAU12C,EAAO,IAAI,EAAGuhB,EAAYE,CAAM,CAAC,GAGlFzhB,CACT,CAEAkf,EAAI,aAAa,QAAQ,IAAKlf,GAAW42C,GAAc52C,EAAQ,EAAI,CAAC,EAEpEyiB,EAAU,aAAa,QAAQ,IAAKziB,GAAW42C,GAAc52C,CAAM,CAAC,EAEpEkiB,EAAY,aAAa,QAAQ,IAAKliB,GAAW42C,GAAc52C,CAAM,CAAC,EAEtEypB,GAAmB,aAAa,QAAQ,IAAKzpB,GAAW42C,GAAc52C,CAAM,CAAC,EAGtE,MAAM82C,GAAmB,CAC9B,CAAC,MAAO,aAAa,CAGvB,EAEaC,GAAqBp0C,GAChCm0C,GAAiB,KAAME,GAEnBr0C,EAAM,OAAO,OAAO,gBAAkBq0C,EAAS,CAAC,GAAKr0C,EAAM,OAAO,IAAI,SAASq0C,EAAS,CAAC,CAAC,CAE7F,EAGH93B,EAAI,aAAa,SAAS,IACvB5T,IACC,aAAa,QAAQ,kBAAmB,KAAK,IAAK,GAC3CA,GAER3I,GAAU,WACT,OAAIA,EAAM,QAAUA,EAAM,SAAW,KACnC,aAAa,QAAQ,kBAAmB,KAAK,IAAK,IAEhDxC,EAAAwC,EAAM,WAAN,MAAAxC,EAAgB,QAAUwC,EAAM,SAAS,SAAW,KAAOo0C,GAAkBp0C,CAAK,GAEpF,aAAa,QAAQ,kBAAmB,KAAK,IAAK,KAGhD/B,GAAAD,EAAAgC,GAAA,YAAAA,EAAO,WAAP,YAAAhC,EAAiB,OAAjB,YAAAC,EAAuB,UAAW,GAAK+B,EAAM,SAAS,KAAK,CAAC,IAAM,mBACpEA,EAAM,QAAUA,EAAM,SAAS,KAAK,CAAC,GAEhC,QAAQ,OAAOA,CAAK,CAC7B,CACF,EC1HA,SAASs0C,GAAc72C,EAASw4B,EAAS,CACvCx4B,EAAQ,QAAQ,CACd,MAAOA,EAAQ,GAAG,0CAA0C,EAC5D,QAASw4B,EACT,KAAM,OACV,CAAG,CACH,CAEA,SAASse,GAAgB92C,EAASw4B,EAAS,CACzCx4B,EAAQ,QAAQ,CACd,MAAOA,EAAQ,GAAG,0CAA0C,EAC5D,QAASw4B,EACT,KAAM,SACV,CAAG,CACH,CACA,SAASue,GAAe/2C,EAASuC,EAAO4F,EAAW,GAAI,CACrD,MAAM6uC,EAAQh3C,EAAQ,GAAG,0CAA0C,EACnE,IAAIw4B,EAAUj2B,EAAM,QACpB,GAAIA,GAASA,EAAM,SACjB,GAAIA,EAAM,SAAS,SAAW,KAAO,CAACo0C,GAAkBp0C,CAAK,EAAG,CAC9D,IAAI00C,EAAM,GACN10C,EAAM,SAAS,MAAQA,EAAM,SAAS,KAAK,OAAS,EACtD00C,EAAM10C,EAAM,SAAS,KAAK,CAAC,EAE3B00C,EAAM,uBAERj3C,EAAQ,OAAO,SAAS,gBAAgB,EACxC,MAAMk3C,EAAQl3C,EAAQ,OAAO,KACzBk3C,GAAS,OAAOA,GAAU,UAAY,CAACA,EAAM,SAAS,QAAQ,GAChEl3C,EAAQ,QAAQ,KAAK,CACnB,KAAM,cAAci3C,CAAG,EACjC,CAAS,CAET,KAAW,CACL,KAAM,CAAE,OAAA/1C,GAAWqB,EAAM,SACrB4F,EAAS,QAAUA,EAASjH,CAAM,IACpCqB,EAAM,QAAU4F,EAASjH,CAAM,GAEjCs3B,EAAUx4B,EAAQ,GAAGuC,EAAM,OAAO,CACnC,MAEG4F,GAAYA,EAAS,OAAS,IAChCqwB,EAAUrwB,EAAS,KAAM,GAIzBqwB,GAAWA,EAAQ,OAAS,GAC9Bx4B,EAAQ,QAAQ,CACd,MAAAg3C,EACA,QAAAxe,EACA,KAAM,OACZ,CAAK,EAECx4B,EAAQ,UACVA,EAAQ,SAAU,EAAC,MAAO,CAE9B,CAEO,MAAMwiC,WAAsB,KAAM,CACvC,YAAYhK,EAAU,eAAgBlZ,EAAQ,CAC5C,MAAMA,CAAM,EAER,MAAM,mBACR,MAAM,kBAAkB,KAAMkjB,EAAa,EAG7C,KAAK,KAAO,kBACZ,KAAK,QAAUhK,EACf,KAAK,OAAS,IACd,KAAK,KAAO,IAAI,IACjB,CACH,CAEO,MAAM8J,WAAwB,KAAM,CACzC,YAAY9J,EAAU,iBAAkBlZ,EAAQ,CAC9C,MAAMA,CAAM,EAER,MAAM,mBACR,MAAM,kBAAkB,KAAMgjB,EAAe,EAG/C,KAAK,KAAO,oBACZ,KAAK,QAAU9J,EACf,KAAK,OAAS,IACd,KAAK,KAAO,IAAI,IACjB,CACH,CAEO,SAAS2e,IAAuB,CACrC,MAAM9b,EAASC,GAAU,EACnB8b,EAASC,GAAU,EACnBC,EAAUC,GAAW,EAE3B,SAASC,EAAej1C,EAAO4F,EAAUvI,EAAS,GAAI,OACpD,MAAMo3C,EAAQ1uC,GAAK,EAAE,0CAA0C,EACzDkwB,EAAU71B,EAAI,EAAE,EAEtB,GAAIJ,GAASA,EAAM,SACjB,GAAIA,EAAM,SAAS,SAAW,IAAK,CACjC,IAAI00C,EAAM,GACN10C,EAAM,SAAS,MAAQA,EAAM,SAAS,KAAK,OAAS,EACtD00C,EAAM10C,EAAM,SAAS,KAAK,CAAC,EAE3B00C,EAAM,uBAER5b,EAAO,SAAS,gBAAgB,EAChC,MAAM6b,EAAQE,EAAO,KACjBF,GAAS,OAAOA,GAAU,UAAY,CAACA,EAAM,SAAS,QAAQ,GAChEI,EAAQ,KAAK,CACX,KAAM,cAAcL,CAAG,EACnC,CAAW,CAEX,KAAa,CACL,KAAM,CAAE,OAAA/1C,GAAWqB,EAAM,SACrB4F,EAAS,QAAUA,EAASjH,CAAM,IACpCqB,EAAM,QAAU4F,EAASjH,CAAM,GAEjCs3B,EAAQ,MAAQlwB,GAAK,EAAE/F,EAAM,OAAO,CACrC,MAEG4F,GAAYA,EAAS,OAAS,EAChCqwB,EAAQ,MAAQrwB,EAAS,OAAQsvC,IAAMA,GAAA,YAAAA,EAAG,QAAS,CAAC,EAAE,KAAK,IAAI,EAE/Djf,EAAQ,MAAQlwB,GAAK,EAAE,gCAAgC,IAIvDvI,EAAAy4B,EAAQ,QAAR,YAAAz4B,EAAe,QAAS,GAC1B23C,gBAAa,CACX,MAAAV,EACA,QAAAxe,EACA,KAAM,QACN,GAAG54B,CACX,CAAO,CAEJ,CAED,MAAO,CACL,eAAA43C,CACD,CACH,CAEA,MAAeG,EAAA,CACb,eAAAZ,GACA,cAAAF,GACA,gBAAAC,EACF,ECzJac,GAAa,CAACvzC,EAAK5F,IAAY,CAc1C,GAZ6BA,GAAY,OACvCA,EAAU,CACR,QAAS,GACT,UAAW,EACZ,GAIC4F,IAAQ,MAAQ,CAAC5F,EAAQ,YACpB4F,IAAQ,MAAQ5F,EAAQ,YAAW4F,EAAM,IAG9C,CAAC5F,EAAQ,YAAc4F,IAAQ,MAAQA,EAAI,OAAO,SAAW,IAAI,MAAO,GAE5E,MAAMwzC,EAAoB,IAAI,OAC5B,0FACD,EACD,IAAIC,EACF,CAACzzC,EAAI,SAAS,IAAI,GAAK,CAACA,EAAI,SAAS,IAAI,GAAK,CAACA,EAAI,SAAS,IAAI,GAAK,CAACA,EAAI,SAAS,IAAI,EAEzF,GAAI,CAACyzC,EAAS,MAAO,GAErB,GAAIr5C,EAAQ,QAAS,CACnB,MAAMs5C,EAAW1zC,EAAI,MAAM,SAAS,EAEpC,QAAS2zC,EAAK,EAAGA,EAAKD,EAAS,OAAQC,IAAM,CAE3C,MAAMC,EADWF,EAASC,CAAE,EACF,QAAQ,MAAO,EAAE,EAI3C,GAFAF,GAAW,CAACG,GAAYJ,EAAkB,KAAKI,CAAQ,IAAMA,EAAS,OAAS,EAE3E,CAACH,EACH,KAEH,CACL,MACIA,EAAUD,EAAkB,KAAKxzC,CAAG,EAGtC,OAAOyzC,CACT,EAEeI,GAAA,CACb,WAAAN,EACF,EC3CA,SAASO,GAAYn4C,EAASgoB,EAAQ,GAAO,EACvChoB,EAAQ,UAAYgoB,IACtBhoB,EAAQ,SAAS,CACf,WAAY,GACZ,KAAM,GACN,KAAM,aACZ,CAAK,CAEL,CAEA,SAASo4C,GAAYp4C,EAAS,CACxBA,EAAQ,UACVA,EAAQ,SAAU,EAAC,MAAO,CAE9B,CAEO,SAASq4C,GACd55C,EAAU,CACR,WAAY,GACZ,KAAM,GACN,KAAM,aACP,EACD,CACA,MAAMwD,EAASU,EAAI,IAAI,EAEvB,SAASw1C,GAAc,CACrBl2C,EAAO,MAAQq2C,GAAQ,QAAQ75C,CAAO,CACvC,CAED,eAAe25C,GAAc,CAC3Bn2C,EAAO,MAAM,MAAO,EACpB,MAAMs2C,EAAU,EAChBt2C,EAAO,MAAQ,IAChB,CAED,MAAO,CACL,YAAAk2C,EACA,YAAAC,EACA,OAAAn2C,CACD,CACH,CAEO,SAASu2C,GAAoBC,EAAMC,EAAU,CAClD,MAAMC,EAAU,CACd,GAAGF,EACH,SAAAC,CACD,EACD,OAAID,EAAK,WACPE,EAAQ,SAAWA,EAAQ,SAAS,IAAKC,GAAUJ,GAAoBI,EAAOF,CAAQ,CAAC,GAElFC,CACT,CAEA,MAAeE,EAAA,CACb,YAAAV,GACA,YAAAC,EACF,ECxDeU,GAAA,CACb,MAAO,CACL,KAAM,CACJ,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,CACV,CACF,EACD,OAAQ,CAAC,YAAa,YAAY,EAClC,SAAU,CACR,GAAGn5C,EAAW,CACZ,cACA,0BACA,sBACA,qBACN,CAAK,EACD,aAAc,CACZ,OAAO,KAAK,IACb,EACD,OAAQ,CACN,OAAO,KAAK,WACb,EACD,mBAAoB,CAClB,IAAIo5C,EAAiB,KAAK,wBAE1B,OAAIA,GAAkBA,EAAe,SAAW,IAC9CA,EAAiBA,EAAe,OAAQj5C,GAAMA,GAAKA,EAAE,MAAQA,EAAE,KAAK,WAAa,EAAK,GAGjFi5C,CACR,EACD,eAAgB,CACd,MAAMC,EAAsB,KAAK,oBAI3BC,EAHW,KAAK,oBAGY,OAC/B70C,GAAM,CAAC40C,EAAoB,KAAME,GAAOA,EAAG,QAAQ,KAAO90C,EAAE,QAAQ,EAAE,CACxE,EAED,OAAO40C,EACJ,OAAOC,CAAgB,EACvB,KAAK,CAAC1M,EAAGhX,IAAMgX,EAAE,KAAK,cAAchX,EAAE,IAAI,CAAC,CAC/C,CACF,EACD,MAAO,CACL,MAAO,CACL,WAAY,2CACZ,YAAa,CACX,IAAK,EACL,MAAO,CACR,CACF,CACF,EACD,QAAS,CACP,GAAG4jB,EAAW,CAAC,gBAAgB,CAAC,EAChC,YAAYC,EAAU31C,EAAO,CAC3B,MAAM41C,EAAcve,EAAU,KAAK,KAAK,EACxCue,EAAYD,CAAQ,EAAI31C,EACxB,KAAK,eAAe41C,CAAW,CAChC,CACF,CACH,EChEaC,GAAS,CAEpB,CAAE,MAAO,eAAgB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EAClE,CAAE,MAAO,iBAAkB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACpE,CAAE,MAAO,mBAAoB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACtE,CAAE,MAAO,mBAAoB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACtE,CAAE,MAAO,wBAAyB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EAC3E,CAAE,MAAO,qBAAsB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACxE,CAAE,MAAO,aAAc,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EAChE,CAAE,MAAO,kBAAmB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACrE,CAAE,MAAO,eAAgB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EAClE,CAAE,MAAO,iBAAkB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACpE,CAAE,MAAO,wBAAyB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EAC3E,CAAE,MAAO,oBAAqB,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACvE,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChE,CAAE,MAAO,eAAgB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAClE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,sBAAuB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACzE,CAAE,MAAO,wBAAyB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAC3E,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChE,CAAE,MAAO,gBAAiB,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAClE,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChE,CAAE,MAAO,qBAAsB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACxE,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC/D,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC/D,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC/D,CAAE,MAAO,YAAa,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC9D,CAAE,MAAO,SAAU,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC3D,CAAE,MAAO,eAAgB,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EACjE,CAAE,MAAO,oBAAqB,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EACtE,CAAE,MAAO,2BAA4B,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC7E,CAAE,MAAO,cAAe,KAAM,KAAM,UAAW,IAAK,MAAO,IAAM,EACjE,CAAE,MAAO,cAAe,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAChE,CAAE,MAAO,cAAe,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAChE,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC/D,CAAE,MAAO,UAAW,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,EAC5D,CAAE,MAAO,aAAc,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChE,CAAE,MAAO,WAAY,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAC9D,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,gBAAiB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACnE,CAAE,MAAO,gBAAiB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACnE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,iBAAkB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACpE,CAAE,MAAO,kBAAmB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACrE,CAAE,MAAO,6BAA8B,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChF,CAAE,MAAO,6BAA8B,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAChF,CAAE,MAAO,sBAAuB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACzE,CAAE,MAAO,yBAA0B,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAC5E,CACE,MAAO,oEACP,KAAM,IACN,UAAW,KACX,MAAO,IACR,EACD,CACE,MACE,kGACF,KAAM,IACN,UAAW,KACX,MAAO,IACR,EACD,CACE,MAAO,wEACP,KAAM,IACN,UAAW,KACX,MAAO,IACR,EACD,CAAE,MAAO,2CAA4C,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAC9F,CAAE,MAAO,gBAAiB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACnE,CAAE,MAAO,+BAAgC,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAClF,CAAE,MAAO,+BAAgC,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EAClF,CAAE,MAAO,qBAAsB,KAAM,IAAK,UAAW,KAAM,MAAO,IAAM,EACxE,CAAE,MAAO,kBAAmB,KAAM,IAAK,UAAW,IAAK,MAAO,IAAM,CACtE,EAEaC,GAAa,CACxB,CACE,WAAY,QACZ,MAAO,OACR,EACD,CACE,WAAY,OACZ,MAAO,MACR,EACD,CACE,WAAY,YACZ,MAAO,WACR,EACD,CACE,WAAY,QACZ,MAAO,OACR,CACH,EC1FeC,GAAA,CACb,KAAM,4BACN,OAAQ,CAACV,EAAiB,EAC1B,MAAO,CACL,iBAAiBz0C,EAAK,CACpB,GAAIA,GAAOA,IAAQ,KAAK,iBAAiB,GAAI,CAC3C,MAAMo1C,EAAc,KAAK,kBAAkB,KAAMC,GAAOA,EAAG,KAAOr1C,CAAG,EAKrE,GAHA,KAAK,WAAao1C,EAAY,OAC9B,KAAK,OAASA,EAAY,GAC1B,KAAK,QAAUA,EAAY,IACvBA,EAAY,YAAc,iBAAkB,CAC9C,MAAM7U,EAAM,KAAK,iBACjB,KAAK,QAAU,GAAGA,EAAI,SAAS,IAAI,MAAM6U,EAAY,OAAO,KAAK7U,EAAI,WAAW,EAC1F,MACU,KAAK,QAAU6U,EAAY,QAE7B,KAAK,QAAUA,EAAY,KAC3B,KAAK,WACN,CACF,CACF,EACD,SAAU,CACR,GAAG95C,EAAW,CACZ,oBACA,cACA,mBACA,qBACA,kBACN,CAAK,EACD,cAAe,CACb,IAAIwoB,EAAY,KAAK,kBAAkB,OAAQuxB,GAAOA,EAAG,MAAM,EAC/D,OAAAvxB,EAAYA,EAAU,KAAK,CAACokB,EAAGhX,IACtBgX,EAAE,MAAQ,MAAQA,EAAE,KAAK,cAAchX,EAAE,IAAI,CACrD,EAEMpN,CACR,EACD,WAAY,CACV,KAAM,CACJ,OAAO,KAAK,OACb,EACD,IAAI9jB,EAAK,CACP,KAAK,QAAUA,EACf,KAAK,YAAY,SAAUA,CAAG,CAC/B,CACF,EACD,OAAQ,CACN,KAAM,CACJ,OAAO,KAAK,OACb,EACD,IAAIA,EAAK,CACP,KAAK,QAAUA,EAEf,MAAMumC,EAAQvmC,GAAOA,EAAI,QAAQ,OAAQ,GAAG,EAAE,KAAM,EAAC,MAAM,OAAO,GAAM,GACxE,KAAK,YAAY,KAAMumC,CAAI,CAC5B,CACF,EACD,QAAS,CACP,KAAM,CACJ,OAAO,KAAK,QACb,EACD,IAAIvmC,EAAK,CACP,KAAK,SAAWA,EAEhB,MAAMumC,EAAQvmC,GAAOA,EAAI,QAAQ,OAAQ,GAAG,EAAE,KAAM,EAAC,MAAM,OAAO,GAAM,GACxE,KAAK,YAAY,MAAOumC,CAAI,CAC7B,CACF,EACD,QAAS,CACP,KAAM,CACJ,OAAO,KAAK,MAAM,OACnB,EACD,IAAIvmC,EAAK,CACP,KAAK,YAAY,UAAWA,IAAQ,MAAQA,EAAMA,EAAM,EAAE,CAC3D,CACF,EACD,QAAS,CACP,KAAM,CACJ,OAAO,KAAK,MAAM,IACnB,EACD,IAAIA,EAAK,CACP,KAAK,YAAY,OAAQA,IAAQ,MAAQA,EAAMA,EAAM,EAAE,CACxD,CACF,EACD,gBAAiB,CAAE,EACnB,iBAAkB,CAChB,OAAO,KAAK,UAAU,KAAK,WAAY,GAAO,EAAI,CACnD,EACD,uBAAwB,CACtB,OAAO,KAAK,UAAU,KAAK,WAAY,GAAO,EAAI,CACnD,EACD,cAAe,CACb,OAAO,KAAK,iBAAiB,KAAK,OAAO,CAC1C,EACD,cAAe,CACb,OAAO,KAAK,iBAAiB,KAAK,OAAO,CAC1C,EACD,cAAe,CASb,OAPE,KAAK,iBACL,KAAK,uBACL,KAAK,cACL,KAAK,cACL,KAAK,UACL,KAAK,OAGR,EACD,UAAW,CACT,OAAO,KAAK,UAAU,KAAK,QAAS,GAAM,EAAK,CAChD,EACD,SAAU,CACR,OAAO,KAAK,UAAU,KAAK,OAAQ,GAAM,EAAK,CAC/C,CACF,EACD,MAAO,CACL,MAAO,CACL,UAAW,CAAE,EACb,SAAU,CAAE,EACZ,iBAAkB,KAClB,aAAc,GACd,WAAY,GACZ,OAAAi1C,GACA,WAAAC,GACA,UAAW,EACX,QAAS,GACT,SAAU,GACV,QAAS,EACV,CACF,EACD,SAAU,CAAE,EACZ,QAAS,CACP,GAAGJ,EAAW,CAAC,iBAAkB,wBAAyB,gBAAgB,CAAC,EAC3E,oBAAqB,CAEnB,GAAI,KAAK,UAAY,KAAK,SAAS,OAAS,GAAK,CAAC,KAAK,aAAc,CACnE,KAAK,QAAQ,CACX,QAAS,KAAK,GAAG,GAAG,KAAK,UAAU,qBAAqB,EACxD,KAAM,SAChB,CAAS,EACD,MACD,CAGI,KAAK,cAEV,KAAK,UAAU,MAAM,MAAM,CAC5B,EACD,iBAAkB,CAChB,KAAK,UAAU,MAAM,UAAU,CAChC,EACD,eAAelyC,EAAM,CACnB,OAAOA,EAAK,QAAQ,KAAM,GAAG,CAC9B,EACD,uBAAwB,CACtB,KAAK,WAAa,EACnB,EACD,mBAAoB,CAClB,KAAK,WAAa,EACnB,EACD,cAAe,CAAE,EACjB,iBAAiB3C,EAAO,CACtB,GAAIA,GAASA,EAAM,OAAS,EAAG,CAO7B,GALI,KAAK,MAAM,aAAe,KAAK,MAAM,YAAY,OAAS,IAC5D,KAAK,eAAe,KAAK,MAAM,YAAY,CAAC,EAAE,EAAE,EAChD,KAAK,YAAY,cAAe,EAAE,GAGhCA,EAAM,CAAC,EAAE,KAAO,QAAS,CAC3B,KAAK,QAAQ,MAAM,CACjB,QAAS,KAAK,GAAG,0CAA0C,CACvE,CAAW,EACD,MACD,CAED,MAAM8d,EAAW,IAAI,SACrBA,EAAS,OAAO,OAAQ9d,EAAM,CAAC,CAAC,EAChC8d,EAAS,OAAO,cAAe9d,EAAM,CAAC,EAAE,IAAI,EAExC,KAAK,mBAAqB,MAAQ,KAAK,iBAAiB,OAAS,EACnE8d,EAAS,OAAO,cAAe,KAAK,gBAAgB,EAC3C,KAAK,qBAAuB,MAAQ,KAAK,mBAAmB,OAAS,GAC9EA,EAAS,OAAO,cAAe,KAAK,kBAAkB,EAExDy2B,EAAU,YAAY,IAAI,EAC1B,KAAK,sBAAsBz2B,CAAQ,EAChC,KAAMlX,GAAa,CAClB,KAAK,aAAe,GACpB2tC,EAAU,YAAY,IAAI,EAC1B,KAAK,YAAY,cAAe,CAAC3tC,CAAQ,CAAC,EAC1C,KAAK,QAAQ,CACX,QAAS,KAAK,GAAG,GAAG,KAAK,UAAU,uBAAuB,EAC1D,KAAM,SACpB,CAAa,CACb,CAAW,EACA,MAAM,IAAM,CACX,KAAK,MAAM,YAAY,MAAO,EAC9B,KAAK,YAAY,cAAe,EAAE,EAClC2tC,EAAU,YAAY,IAAI,EAC1B,KAAK,QAAQ,MAAM,CACjB,QAAS,KAAK,GAAG,GAAG,KAAK,UAAU,iBAAiB,CAClE,CAAa,CACb,CAAW,CACJ,CACF,EACD,uBAAwB,CACtB,KAAK,aAAe,GACpB,KAAK,SAAW,CAAE,EACd,KAAK,MAAM,aAAe,KAAK,MAAM,YAAY,OAAS,IAC5D,KAAK,eAAe,KAAK,MAAM,YAAY,CAAC,EAAE,EAAE,EAChD,KAAK,YAAY,cAAe,EAAE,EAErC,EACD,iBAAiB7K,EAAM,CACrB,OAAI,MAAM,QAAQA,CAAI,EAAUA,IAAS,MAAQA,EAAK,OAAS,EACxDA,IAAS,MAAQA,IAAS,IAAMA,IAAS,eACjD,EACD,cAAc3pC,EAAK,CACjB,OAAOA,IAAQ,IAAMA,IAAQ,IAC9B,EACD,UAAUA,EAAKs1C,EAAQ,GAAMC,EAAO,GAAO,CACzC,OAAO1B,GAAU,WAAW7zC,EAAK,CAAE,QAASs1C,EAAO,UAAWC,EAAM,CACrE,CACF,CACH,i3JC7MMC,GAAiB,CACrB,KAAM,wBACN,MAAO,CACL,WAAY,CACV,KAAM,MACN,QAAS,IAAM,CAAC,CAClB,CACF,EACA,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAmBZ,EAKeC,GAAA,CACb,WAAY,CACV,eAAAD,EACF,EACA,SAAU,CACR,gBAAiB,CACf,MAAME,EAAa,KAAK,KAAK,KAAK,cAAgB,KAAK,YAAY,EAEnE,OAAO,KAAK,KAAKA,EAAa,EAAIA,EAAa,CAAC,CAClD,EACA,eAAgB,CACd,OAAO,KAAK,kBAAkB,MAChC,EACA,gBAAiB,CACf,OAAK,KAAK,WAAW,OACd,KAAK,WAAW,OACpBC,GAAW,CAACA,EAAO,eAAe,SAAS,GAAKA,EAAO,UAAY,IAFlC,EAItC,EACA,YAAa,CACX,MAAO,EACT,EACA,mBAAoB,OAClB,OAAKj6C,EAAA,KAAK,aAAL,MAAAA,EAAiB,OAEf,KAAK,WAAW,OAAO,KAAK,gBAAgB,EAFd,EAGvC,EACA,WAAY,CACV,MAAMk6C,EAAe,KAAK,kBAEpBC,GAAc,KAAK,gBAAkB,GAAK,KAAK,aAC/CC,EAAWD,EAAa,KAAK,aAE5B,OAAAD,EAAa,MAAMC,EAAYC,CAAQ,CAChD,CACF,EACA,MAAO,CACE,OACL,WAAY,CAAC,EACb,aAAc,GACd,gBAAiB,EAErB,EACA,SAAU,CACH,KAAK,WAAW,SACd,gBAAa,KAAK,uBAE3B,EACA,SAAU,CAkBV,EACA,QAAS,CACP,kBAAmB,CAEV,QACT,EACA,iBAAkB,CACX,sBACP,EACA,iBAAkB,CACX,sBACP,EACA,yBAAyBj2C,EAAM,CAC7B,KAAK,gBAAkB,EAClB,kBAAe,OAAOA,CAAI,CACjC,EACA,aAAa5E,EAAO,CACb,gBAAWA,CAAK,EAAE,QAAU,CAAC,KAAK,WAAWA,CAAK,EAAE,OAC3D,EACA,sBAAuB,CACrB,OAAK,KAAK,UAAU,OAEb,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,EAAE,IAAKmH,IAClC,CACL,cAAeA,EACf,MAAOA,EACP,QAAS,IAEZ,EARkC,EASrC,EACA,0BAA0B2zC,EAAK57C,EAAM67C,EAAe,GAAI,CACtD,OAAOvf,EAAUt8B,CAAI,EAAE,KAAK,CAAC+tC,EAAGhX,IAAM,CAC9B,MAAC+kB,EAAIC,CAAE,EAAI,KAAK,cAAcH,EAAI,KAAM7N,EAAGhX,EAAG8kB,CAAY,EAK5D,OAAAC,IAAO,KAAa,EACpBC,IAAO,KAAa,GAEjBH,EAAI,QAAU,YACjB,OAAOE,GAAO,SACZA,EAAKC,EACL,GAAGD,CAAE,GAAG,cAAcC,CAAE,EAC1B,OAAOD,GAAO,SACdC,EAAKD,EACL,GAAGC,CAAE,GAAG,cAAcD,CAAE,EAC7B,CACH,EACA,cAAcE,EAAYjO,EAAGhX,EAAG8kB,EAAc,CACtC,MAAAC,EAAK/N,EAAEiO,CAAU,EACjBD,EAAKhlB,EAAEilB,CAAU,EACnB,OAAAH,EAAa,SAASG,CAAU,EAC3B,CACL,CAACF,GAAMA,IAAO,MAAQ,KAAO5yC,EAAM4yC,CAAE,EAAE,WAAa,EACpD,CAACC,GAAMA,IAAO,MAAQ,KAAO7yC,EAAM6yC,CAAE,EAAE,WAAa,GAG/C,CAAC,CAACD,GAAMA,IAAO,MAAQ,KAAOA,EAAI,CAACC,GAAMA,IAAO,MAAQ,KAAOA,CAAE,CAE5E,EACA,gBAAgB,CAAE,IAAA9zC,EAAK,IAAApC,GAAO,CACrB,YAAK,WAAW,KAAMvF,GAAMA,EAAE2H,CAAG,IAAMpC,CAAG,CACnD,CACF,CACF,EC3Leo2C,GAAA,CACb,KAAM,6BACN,OAAQ,CAAC3B,GAAmB4B,EAAW,EACvC,SAAU,CACR,oBAAqB,CACnB,KAAM,CACJ,OAAO,KAAK,MAAM,mBACnB,EACD,IAAIr2C,EAAK,CACP,KAAK,YAAY,sBAAuBA,CAAG,EACvCA,EACF,KAAK,YAAY,eAAgB,CAAC,GAAG,KAAK,iBAAiB,CAAC,EAE5D,KAAK,YAAY,eAAgB,EAAE,CAEtC,CACF,EACD,iBAAkB,CAChB,OAAO,KAAK,mBAAqB,KAAK,kBAAkB,OAAS,CAClE,CACF,EACD,MAAO,CACL,MAAO,CACL,UAAW,CAAE,EACb,mBAAoB,CAAE,EACtB,uBAAwB,CAAE,EAC1B,qBAAsB,CAAE,EACxB,gBAAiB,EACjB,aAAc,EACd,WAAY,CACV,CACE,WAAY,KAAK,GAAG,wDAAwD,EAC5E,MAAO,OACP,QAAS,EACV,EACD,CACE,WAAY,KAAK,GAAG,wDAAwD,EAC5E,MAAO,UACP,QAAS,EACV,CACF,CACF,CACF,EACD,SAAU,CACR,KAAK,mBAAqB,CAAC,GAAG,KAAK,aAAa,CACjD,EACD,QAAS,CACP,mBAAmB+c,EAAQ,CAEzB,MAAMu5B,EAAe,KAAK,MAAM,aAAa,OAAQC,GAAOA,EAAG,KAAK,KAAOx5B,CAAM,EACjF,KAAK,YAAY,eAAgBu5B,CAAY,EAEzCA,EAAa,SAAW,IAC1B,KAAK,oBAAsB,GAE9B,EACD,sBAAsBE,EAAc,CAClC,KAAK,YAAY,WAAYA,CAAY,CAC1C,EAED,oBAAqB,CACnB,KAAK,UAAU,MAAM,MAAM,CAC5B,EACD,sBAAsBC,EAAS,CAC7B,OAAIA,EAAQ,MAAQA,EAAQ,OAAS,KAC5BA,EAAQ,KAERA,EAAQ,KAElB,CACF,CACH,g6ECrEM,CAAEl8C,mBAAkB,EAAGN,GAAmB,EAEjCy8C,GAAA,CACb,KAAM,4BACN,OAAQ,CAACjC,EAAiB,EAC1B,MAAO,CACL,UAAW,MACZ,EACD,MAAO,CACL,MAAO,CAAE,CACV,EACD,SAAU,CACR,aAAc,CACZ,KAAM,CACJ,MAAMkC,EAAU,GAAG,cAAc,KAAK,MAAM,OAAO,qBAA0B,GAC3E,KAAK,MAAM,IACrB,GACQ,OAAOp8C,GAAiBo8C,CAAO,CAChC,EACD,KAAM,CAEJ,MAAO,EACR,CACF,EACD,aAAc,CACZ,OAAO,KAAK,WAAa,KAAK,YAAY,KAC3C,EACD,WAAY,CACV,OAAO,KAAK,WAAa,KAAK,YAAY,KAAQ,KAAK,aAAe,KAAK,WAAa,IACzF,EACD,SAAU,CACR,KAAM,CACJ,OAAO,KAAK,MAAM,QACnB,EACD,IAAI32C,EAAK,CACP,KAAK,YAAY,WAAYA,CAAG,CACjC,CACF,EACD,SAAU,CACR,KAAM,CACJ,OAAO,KAAK,MAAM,QACnB,EACD,IAAIA,EAAK,CACP,KAAK,YAAY,WAAYA,CAAG,CACjC,CACF,EACD,GAAG1E,EAAW,CACZ,sBACA,mBACA,qBACA,kBACN,CAAK,CACF,EACD,SAAU,CAAE,EACZ,QAAS,CACP,iBAAkB,CAChB,IAAIs7C,EACA,KAAK,WAAa,KAAK,YAAY,IACrCA,EAAc,KAEdA,EAAcvzC,EAAM,CAClB,KAAK,SAAS,YAAa,EAC3B,KAAK,SAAS,SAAU,EACxB,KAAK,SAAS,QAAS,EACvB,KAAK,SAAS,SAAU,EACxB,KAAK,SAAS,WAAY,EAC1B,KAAK,SAAS,WAAY,CACpC,CAAS,EACE,GAAG,KAAK,oBAAqB,EAAI,EACjC,IAAK,EACL,YAAa,EAElB,MAAMwzC,EAAiB,CACrB,eAAgB,KAAK,MAAM,aAAa,IAAKN,GAAOA,EAAG,EAAE,EACzD,WAAY,KAAK,MAAM,SACpB,OAAQ97C,GAAMA,EAAE,QAAQ,KAAO,IAAI,EACnC,IAAKA,GAAMA,EAAE,QAAQ,EAAE,EAC1B,cAAe,KAAK,MAAM,SACvB,OAAQA,GAAMA,EAAE,QAAQ,KAAO,IAAI,EACnC,IAAKA,GAAMA,EAAE,YAAY,EAC5B,IAAK,KAAK,MAAM,GAChB,KAAM,KAAK,MAAM,IACjB,cAAe,KAAK,MAAM,YAAY,IAAK,GAAM,EAAE,EAAE,EACrD,OAAQ,KAAK,MAAM,OACnB,QAAS,KAAK,MAAM,MACpB,QAAS,KAAK,MAAM,QACpB,KAAM,KAAK,MAAM,KACjB,YAAam8C,EACb,WAAY,KAAK,mBACjB,SAAU,KAAK,iBACf,UAAW,KAAK,UAChB,SAAU,KAAK,gBAChB,EAEDpC,EAAU,YAAY,IAAI,EAC1B,KAAK,iBAAiBqC,CAAc,EACjC,KAAK,IAAM,CACVrC,EAAU,YAAY,IAAI,EAC1B,KAAK,UAAU,MAAM,MAAM,CACrC,CAAS,EACA,MAAOr4B,GAAQ,CAEd,GADAq4B,EAAU,YAAY,IAAI,EACtBr4B,EAAI,UAAYA,EAAI,SAAS,MAAQA,EAAI,SAAS,KAAK,OAAS,EAAG,CACrE,IAAIy2B,EAAM,OACVz2B,EAAI,SAAS,KAAK,QAAS7f,GAAM,CAC/Bs2C,EAAM,GAAGA,CAAG,OAAOt2C,CAAC,OAClC,CAAa,EACDs2C,EAAM,GAAGA,CAAG,QAEZ,KAAK,QAAQ,MAAM,CACjB,yBAA0B,GAC1B,QAASA,EACT,SAAU,CACxB,CAAa,CACF,CACX,CAAS,CACJ,EACD,iBAAkB,CAChB,KAAK,UAAU,MAAM,UAAU,CAChC,EACD,GAAGkC,EAAW,CAAC,kBAAkB,CAAC,CACnC,CACH,w+DC/HegC,GAAA,wCCAAC,GAAA,6CCAAC,GAAA,8CCAAC,GAAA,0CCAAC,GAAA,oDCAAC,GAAA,0CCOA,SAASC,IAAY,CAUlC,MAAO,CACL,GAVa,CACb,iBAAAN,GACJ,eAAIO,GACA,sBAAAL,GACA,mBAAAC,GACA,4BAAAC,GACA,oBAAAC,EACD,CAIA,CACH,CCaA,qBAAAE,EAAA,EAAAD,GAAA,EAEA58C,GAAA,CACA,8BACA,QAAAi6C,EAAA,EACA,OACA,OACA,eAAA4C,EACA,CACA,EACA,UACA,WAEA,0BACA,EACA,cACA,iDACA,CACA,EACA,SACA,mBACA,mBACA,CACA,CACA,07BChDMC,GAAY,IAAI5zC,EAEP6zC,GAAA,CACb,KAAM,eACN,OAAQ,CAACrzC,EAAY,EACrB,WAAY,CACV,wBAAAszC,GACA,uBAAAC,GACA,uBAAAC,GACA,oBAAAC,EACD,EACD,MAAO,CACL,QAAS,QACT,WAAY,MACZ,aAAc,MACd,SAAU,MACV,UAAW,OACX,SAAU,OACV,WAAY,OACZ,SAAU,MACX,EACD,SAAU,CACR,MAAO,CACL,UAAAL,GACA,WAAY,KAAK,eAAiB,CACnC,CACF,EACD,MAAO,CACL,WAAWvb,EAAK,CACd,KAAK,oBAAoB,KAAK,YAAYA,CAAG,CAAC,CAC/C,EACD,aAAa/7B,EAAK,CAChB,KAAK,wBAAwBA,CAAG,CACjC,EACD,SAAS43C,EAAM,CACb,KAAK,oBAAoB,KAAK,YAAYA,CAAI,CAAC,CAChD,EACD,SAAS53C,EAAK,CACZ,KAAK,oBAAoBA,CAAG,CAC7B,EACD,WAAWA,EAAK,CACd,KAAK,sBAAsBA,CAAG,CAC/B,EACD,SAASA,EAAK,CACZ,KAAK,oBAAoBA,CAAG,CAC7B,CACF,EACD,SAAU,CACR,gBAAiB,CACf,MAAO,EACR,EACD,GAAG1E,EAAW,CAAC,oBAAqB,aAAa,CAAC,CACnD,EACD,MAAO,CACL,MAAO,CACL,WAAY,2CACZ,KAAM,OACP,CACF,EACD,SAAU,CACJ,KAAK,WAAa,KAAK,UAAU,OAAS,GAC5C,KAAK,oBAAoB,KAAK,SAAS,EAAE,MAAO6gB,GAC9Cm3B,EAAa,eAAe,KAAMn3B,CAAG,CACtC,EAGC,KAAK,WACP,KAAK,oBAAoB,KAAK,YAAY,KAAK,UAAU,CAAC,EAE1D,KAAK,oBAAoB,EAAE,EAGzB,KAAK,SACP,KAAK,oBAAoB,KAAK,YAAY,KAAK,QAAQ,CAAC,EAExD,KAAK,oBAAoB,EAAE,EAG7B,KAAK,wBAAwB,KAAK,aAAe,KAAK,aAAe,EAAE,EACvE,KAAK,oBAAoB,KAAK,SAAW,KAAK,SAAW,EAAE,EAC3D,KAAK,sBAAsB,KAAK,WAAa,KAAK,WAAa,EAAE,EACjE,KAAK,oBAAoB,KAAK,SAAW,KAAK,SAAW,EAAE,CAC5D,EACD,SAAU,CACRm7B,GAAU,IAAI,OAAQ,KAAK,eAAe,EAC1CA,GAAU,IAAI,WAAY,KAAK,mBAAmB,EAClD,KAAK,YAAa,CACnB,EACD,QAAS,CACP,GAAGxC,EAAW,CACZ,iBACA,sBACA,0BACA,sBACA,sBACA,wBACA,iBACA,qBACN,CAAK,EACD,OAAQ,CACN,KAAK,kBAAoB,EACzB,KAAK,YAAa,CACnB,EACD,YAAY/Y,EAAK,CACf,MAAMrN,EAAa,CAAE,EAErB,OAAIqN,IAAQ,MACVA,EAAI,QAASF,GAAO,CACdA,EAAG,SAAW,MAAQA,EAAG,OAAO,WAAa,MAC/CA,EAAG,OAAO,SAAS,QAASphC,GAAM,CAChCi0B,EAAW,KAAK,CACd,GAAImN,EAAG,OAAO,GACd,KAAMA,EAAG,OAAO,YAChB,QAAS,CACP,GAAIphC,EAAE,GACN,KAAM,GAAGA,EAAE,SAAS,IAAIA,EAAE,QAAQ,GAClC,MAAOA,EAAE,KACV,CACjB,CAAe,CACf,CAAa,CAEb,CAAS,EAGIi0B,CACR,EACD,YAAYkpB,EAAM,CAChB,MAAMxuB,EAAW,CAAE,EACnB,OAAAwuB,EAAK,QAASC,GAAQ,CACpBzuB,EAAS,KAAK,CACZ,GAAIyuB,EAAI,OAAO,GACf,aAAcA,EAAI,GAClB,KAAMA,EAAI,OAAO,YACjB,QAAS,CACP,GAAIA,EAAI,UACR,KAAMA,EAAI,YACV,MAAOA,EAAI,KACZ,CACX,CAAS,CACT,CAAO,EACMzuB,CACR,EACD,gBAAiB,CACf,MAAO,CACL,oBAAqB,GACrB,aAAc,CAAE,EAChB,SAAU,CAAE,EACZ,SAAU,KACV,MAAO,KACP,OAAQ,KACR,GAAI,CAAE,EACN,IAAK,CAAE,EACP,YAAa,CAAE,EACf,QAAS,KACT,KAAM,GACN,SAAU,KACV,SAAU,IACX,CACF,EACD,aAAc,CACZ,MAAMN,EAAQ,KAAK,eAAgB,EACnC,KAAK,eAAeA,CAAK,CAC1B,EACD,GAAGgsB,EAAW,CAAC,qBAAqB,CAAC,CACtC,CACH,u1CC9KegD,GAAA,yCC2Cft9C,GAAA,CACA,4BACA,QAAAa,EAAA,EACA,OACA,KACA,aACA,UACA,EACA,QACA,aACA,UACA,CACA,EACA,OACA,OACA,mFACA,CACA,EACA,UACA,WACA,wBACA,EACA,iBACA,8BACA,EACA,aACA,0BACA,EACA,aACA,yDACA,CACA,EACA,UAEA,+BACA,qCAAA08C,GAAA,CACA,8BAAAA,CAAA,GACA,oCAAAA,CAAA,CACA,EAEA,CACA,o1CClFe,SAASC,GAAgBC,EAAYC,EAAU,CAC5D,MAAMC,EAAiB75C,EAAI,EAAK,EAE1B85C,EAAoB,MAAOt4C,GAAU,CACrCm4C,EAAW,OAAS,CAACA,EAAW,MAAM,SAASn4C,EAAM,MAAM,GAC7Do4C,EAASp4C,CAAK,EACdq4C,EAAe,MAAQ,IAEvBA,EAAe,MAAQ,GAEzB,MAAMjE,EAAU,CACjB,EAED,OAAAmE,GAAU,IAAM,CACd,SAAS,iBAAiB,QAASD,EAAmB,EAAI,CAC9D,CAAG,EAEDE,GAAY,IAAM,CAChB,SAAS,oBAAoB,QAASF,EAAmB,EAAI,CACjE,CAAG,EAEM,CAAE,eAAAD,CAAgB,CAC3B,qYCfMI,EAAWj6C,EAAI,IAAI,EACnBk6C,EAAOl6C,EAAI,IAAI,EACf2vB,EAAS3vB,EAAI,EAAK,EAClBm6C,EAAen6C,EAAI,EAAE,EAErBo6C,EAASxF,GAAW,EACpBL,EAAQG,GAAU,EAgClB2F,EAAiBz5C,EAAS,IACvB,CAACN,EAAM,cAAc,CAC7B,EAEKg6C,EAAc15C,EAAS,IAAM,CACjC,MAAM25C,EAAU,CAACj6C,EAAM,WAAW,EAClC,OAAIqvB,EAAO,OACT4qB,EAAQ,KAAK,SAAS,EAEjBA,CACT,CAAC,EAED,eAAeC,GAAqB,CAClC,MAAM5E,EAAU,EACZsE,EAAK,OAASvqB,IAChBuqB,EAAK,MAAM,MAAM,IAAM,GAAGD,EAAS,MAAM,sBAAqB,EAAG,MAAM,KAEnE35C,EAAM,eAAiB,OACzB45C,EAAK,MAAM,MAAM,KAAO,GAAGD,EAAS,MAAM,sBAAqB,EAAG,IAAI,KAGtEC,EAAK,MAAM,MAAM,KAAO,GACtBD,EAAS,MAAM,wBAAwB,MAAQC,EAAK,MAAM,sBAAqB,EAAG,KAC1F,KAGA,CAEA,MAAMO,EAAe/1C,GAAS,gBAAkB,CAC9C,MAAM81C,EAAoB,CAC5B,EAAG,GAAG,EAEAE,EAAiBh2C,GAAS,gBAAkB,CAChDirB,EAAO,MAAQ,CAACA,EAAO,MACvBwqB,EAAa,MAAQ,GACrB,MAAMvE,EAAU,EAChB4E,EAAoB,CACtB,EAAG,GAAG,EAEN,SAASG,EAAa38C,EAAG48C,EAAW,SAClC,GAAKjrB,EAAO,MAIZ,IAFA,MAAM,eAAgB,EAElB,MAAM,SACR,GAAIwqB,EAAa,MAAQ,EAAG,CAC1BA,EAAa,SACb/8C,EAAAw9C,EAAUT,EAAa,KAAK,IAA5B,MAAA/8C,EAA+B,QAC/B,MACN,KAAW,CACL68C,EAAS,MAAM,cAAc,WAAW,EAAE,MAAO,EACjDtqB,EAAO,MAAQ,GACf,MACD,CAGH,GAAIwqB,EAAa,MAAQS,EAAU,OAAS,EAAG,CAC7CT,EAAa,SACbv8C,EAAAg9C,EAAUT,EAAa,KAAK,IAA5B,MAAAv8C,EAA+B,QAC/B,MACJ,KAAS,CACLq8C,EAAS,MAAM,cAAc,WAAW,EAAE,MAAO,EACjDtqB,EAAO,MAAQ,GACf,MACD,EACH,CACA,SAASkrB,EAAcr5C,EAAO,OAC5B,MAAMo5C,EAAYV,EAAK,MAAM,iBAC3B,mEACD,EACD,OAAQ14C,EAAM,IAAG,CACf,IAAK,YACHA,EAAM,eAAgB,EAClB24C,EAAa,MAAQS,EAAU,OAAS,EAC1CT,EAAa,QAEbA,EAAa,MAAQ,GAEvB/8C,EAAAw9C,EAAUT,EAAa,KAAK,IAA5B,MAAA/8C,EAA+B,QAC/B,MACF,IAAK,UACHoE,EAAM,eAAgB,EAClB24C,EAAa,MAAQ,EACvBA,EAAa,QAEbA,EAAa,MAAQS,EAAU,OAAS,EAE1CA,EAAUT,EAAa,KAAK,EAAE,MAAO,EACrC,MACF,IAAK,MACHQ,EAAan5C,EAAOo5C,CAAS,EAC7B,MACF,IAAK,SACCT,EAAa,MAAQ,IAEvBF,EAAS,MAAM,cAAc,WAAW,EAAE,MAAO,EAEnDtqB,EAAO,MAAQ,GACf,KACH,CACH,CAEA,eAAemrB,EAAgBt5C,EAAO,CAEpC,IAAIu5C,EAAgBv5C,EAAM,OAG1B,KACEu5C,GAAiB,MACjBA,IAAkBv5C,EAAM,eACxB,EACEu5C,aAAyB,mBACzBA,EAAc,UAAY,eAC1BA,EAAc,UAAY,WAG5BA,EAAgBA,EAAc,WAIhC,GAAIA,GAAiBA,IAAkBv5C,EAAM,cAAe,CAE1DA,EAAM,eAAgB,EAEtBmuB,EAAO,MAAQ,GAEf,MAAMimB,EAAU,EAChB,MAAMoF,EAAKD,EAAc,aAAa,IAAI,EACtCC,GAAMA,IAAOzG,EAAM,KAErB6F,EAAO,KAAKW,EAAc,aAAa,IAAI,CAAC,EACnCA,EAAc,aAAa,MAAM,IAE1C,OAAO,SAAS,KAAOA,EAAc,aAAa,MAAM,EAE3D,CACH,CAEA,SAASE,EAAuBj9C,EAAG,CAC7Bi8C,EAAS,MAAM,SAASj8C,EAAE,MAAM,IAIpC2xB,EAAO,MAAQ,GACjB,CAEA,OAAA+pB,GAAgBQ,EAAMe,CAAsB,EAE5ClB,GAAU,IAAM,CACd,OAAO,iBAAiB,SAAUU,CAAY,CAChD,CAAC,EAEDS,GAAgB,IAAM,CACpB,OAAO,oBAAoB,SAAUT,CAAY,CACnD,CAAC,2vCCxLKU,EAASr7C,GAAU,EAEnBs7C,EAAmBx6C,EAAS,IAAM,CACtC,GAAI,CAACN,EAAM,UAAW,MAAO,MAC7B,OAAQA,EAAM,UAAS,CACrB,IAAK,WACH,OAAO+6C,GACT,IAAK,SACH,OAAOC,GACT,IAAK,OACH,OAAOC,GACT,QACE,OAAOj7C,EAAM,SAChB,CACH,CAAC,EAEKk7C,EAAkB56C,EAAS,IAAM,CACrC,MAAM66C,EAAQ,CAAE,EAEhB,OAAIn7C,EAAM,OACRm7C,EAAM,KAAOn7C,EAAM,MAEjBA,EAAM,YAAc,aACtBm7C,EAAM,YAAc,qBACpBA,EAAM,eAAiB,yBAGlBA,CACT,CAAC,8hBCvCD,MAAMhH,EAASC,GAAU,EACnBC,EAAUC,GAAW,EACrBlc,EAASC,GAAU,EAEnB+iB,EAAW17C,EAAI,CACnB,CACE,KAAM,YACN,OAAQ,IACR,KAAM,YACN,cAAe,mDACf,SAAU,IACX,EACD,CACE,KAAM,WACN,OAAQ,YACR,KAAM,SACN,cAAe,kDACf,SAAU,CACR,CACE,KAAM,mBACN,OAAQ,YACR,KAAM,SAEN,WAAY27C,EACZ,cAAe,iDACf,SAAU,gCACX,EACD,CACE,KAAM,mBACN,OAAQ,gBACR,KAAM,YACN,cAAe,gDACf,SAAU,mCACX,CACF,CACF,EACD,CACE,KAAM,YACN,OAAQ,aACR,KAAM,OACN,cAAe,kDAChB,EACD,CACE,KAAM,UACN,OAAQ,WACR,KAAM,OACN,cAAe,iDACf,SAAU,CACR,CACE,KAAM,gBACN,OAAQ,kBACR,KAAM,cACN,cAAe,kDACf,SAAU,qBACX,EACD,CACE,KAAM,iBACN,OAAQ,mBACR,KAAM,cACN,cAAe,mDACf,SAAU,sBACX,CACF,CACF,CACH,CAAC,EAEKC,EAAuB57C,EAAI,EAAI,EAE/B67C,EAA2Bj7C,EAAS,IAAM,OAC9C,OAAOxD,EAAAs7B,EAAO,QAAQ,gBAAf,YAAAt7B,EAA8B,qBACvC,CAAC,EAED,SAAS0+C,EAAoBvH,EAAO,CAClC,OAAIA,IAAU,IAAYE,EAAO,OAASF,EACnCE,EAAO,KAAK,OAAS,GAAKA,EAAO,KAAK,MAAMF,CAAK,CAC1D,CAEA,SAASoH,GAA2B,CAClChH,EAAQ,KAAK,WAAW,CAC1B,CAEA,SAASoH,GAA+B,CAClC,CAACH,EAAqB,OAAS,CAACC,EAAyB,QAC7DH,EAAS,MAAM,CAAC,EAAE,SAAW,CAC3B,CACE,KAAM,YACN,OAAQ,IACR,cAAe,kDAChB,EACD,CACE,KAAM,qBACN,OAAQ,sBACR,cAAe,0DAChB,CACF,EACH,CAEA,OAAAM,GAAc,SAAY,CACxB,MAAMpG,EAAU,EAChBmG,EAA8B,CAChC,CAAC,g1CCjGD,MAAMrjB,EAASC,GAAU,EACnBgc,EAAUC,GAAW,EACrB,CAAE,eAAAC,CAAgB,EAAGL,GAAsB,EAC3C,CAAE,OAAAl1C,EAAQ,YAAAk2C,EAAa,YAAAC,CAAW,EAAKC,GAAmB,EAE1DuG,EAAej8C,GAAK04B,EAAO,QAAQ,iBAAmB,CAAE,GAAE,IAAM,EAAE,EAClEwjB,EAAoBl8C,EAAI,IAAI,EAE5Bm8C,EAAcv7C,EAAS,IACpB83B,EAAO,QAAQ,cACvB,EAEKp7B,EAAOsD,EAAS,IACb83B,EAAO,QAAQ,eACvB,EAEK0jB,EAAsBx7C,EAAS,IAEjC83B,EAAO,QAAQ,wBACfA,EAAO,QAAQ,2BACfA,EAAO,QAAQ,0CAA0C,CAE5D,EAEK2jB,EAAcz7C,EAAS,IACpB83B,EAAO,QAAQ,gBAAkB,CAAE,CAC3C,EAEK4jB,EAAe17C,EAAS,IAErB,qBADS83B,EAAO,QAAQ,aAAe,IAAI,IAAM,EACvB,EAClC,EAED,SAAS6jB,EAAmB76C,EAAKF,EAAO,OACtC,GAAI46C,EAAoB,MAAO,CAC7BvH,EAAe,CACb,MAAO,GACP,QAASlvC,GAAK,EAAE,yCAAyC,EACzD,KAAM,SACZ,CAAK,EACD,MACD,CAEDs2C,EAAa,MAAQz6C,EACrB,MAAMinB,GAAWrrB,EAAAi/C,EAAY,QAAZ,YAAAj/C,EAAmB,OAAQqrB,GAAaA,EAAS,aAAejnB,GAAO,GAGlFoc,EAAQ,CACZ,WAAY6K,EAAS,WACrB,QAASiQ,EAAO,QAAQ,aAAe,IAAI,IAAM,GACjD,eAAgBjQ,EAAS,eACzB,OAAQA,EAAS,YAClB,EACDiQ,EAAO,SAAS,qBAAsB9a,CAAK,EAG3C,KAAK,QAAQ,KAAK,GAAG,EAGrB,KAAK,QAAQ,GAAI,CACnB,CAEA,eAAe4+B,GAAa,CAC1B,MAAM5G,EAAU,EAChBld,EAAO,SAAS,kCAAkC,EAElD8c,EAAa,EACb,GAAI,CACF,MAAM9c,EAAO,SAAS,QAAQ,EAC9Bic,EAAQ,KAAK,QAAQ,CACtB,OAAQ32C,EAAG,CACV62C,EAAe72C,CAAC,CACpB,QAAY,CACJsB,EAAO,OAAOm2C,EAAa,CAChC,CACH,ugFCtEMgH,EAAc/3C,GAAS,UAAY,CACvC3D,EAAK,SAAU,CAACT,EAAM,QAAQ,CAChC,EAAG,EAAE,wxBCfCm4B,GAAQE,GAAU,EAGjB,SAAS+jB,GAAkBC,EAAalkB,GAAO,CACpD,MAAMmkB,EAAa58C,EAAI28C,GAAclkB,EAAK,EAEpCokB,EAAkB,IAAI,MAAM,2BAA2B,EAC7DA,EAAgB,KAAO,wBAEvB,SAASC,EAAiBnnB,EAAW,CACnC,OAAOinB,EAAW,MAAM,QAAQ,kBAAkBjnB,CAAS,EAAE,OAC9D,CAED,SAASonB,EAAgBpnB,EAAWG,EAAU,CAC5C,OAAO8mB,EAAW,MAAM,QAAQ,iBAAiBjnB,EAAWG,CAAQ,EAAE,OACvE,CAED,SAASknB,EAAiBrnB,EAAW,CACnC,MAAO,CAACqlB,EAAIiC,EAAMC,IAAS,CACzB,KAAM,CAAE,QAAAtnB,CAAO,EAAKgnB,EAAW,MAAM,QAAQ,kBAAkBjnB,CAAS,EACxE,GAAIC,EACFsnB,EAAM,MACD,CACL,MAAMC,EAAWF,EAAK,OAAS,SAAWJ,EAAkB,SAC5DK,EAAKC,CAAQ,CACd,CACF,CACF,CAED,SAASC,EAAgBznB,EAAWG,EAAU,CAC5C,MAAO,CAACklB,EAAIiC,EAAMC,IAAS,CACzB,KAAM,CAAE,QAAAtnB,CAAS,EAAGgnB,EAAW,MAAM,QAAQ,iBAAiBjnB,EAAWG,CAAQ,EACjF,GAAIF,EACFsnB,EAAM,MACD,CACL,MAAMC,EAAWF,EAAK,OAAS,SAAWJ,EAAkB,SAC5DK,EAAKC,CAAQ,CACd,CACF,CACF,CAED,MAAO,CACL,iBAAAH,EACA,gBAAAI,EACA,gBAAAP,EACA,iBAAAC,EACA,gBAAAC,CACD,CACH,2HCvCA,SAASN,GAAc,CACrB17C,EAAK,OAAO,CACd,ykBCZM26C,GAAW,CACf,CACE,KAAM,kCACN,MAAO,gDACR,EACD,CACE,KAAM,YACN,MAAO,+CACR,EACD,CACE,KAAM,YACN,MAAO,kDACP,SAAU,EACX,EACD,CACE,KAAM,+FACN,MAAO,2CACP,OAAQ,SACR,IAAK,GACN,EACD,CACE,KAAM,+DACN,MAAO,yCACP,OAAQ,SACR,IAAK,GACN,EACD,CACE,KAAM,4DACN,MAAO,2CACP,OAAQ,SACR,IAAK,GACN,EACD,CACE,KAAM,mDACN,MAAO,+CACP,OAAQ,SACR,IAAK,GACN,EACD,CACE,KAAM,8BACN,MAAO,sEACP,eAAgB,EACjB,CACH,yCC7BM,MAAE,iBAAAoB,GAAqBJ,KACvBtC,EAASxF,KAETnc,EAAQE,KACR0kB,EAASr9C,EAAI,eAAe,EAC5Bs9C,EAAmBt9C,EAAI,EAAK,EAC5Bu9C,EAAiBv9C,EAAI,IAAI,EACzBw9C,EAAwBx9C,EAAI,IAAI,EAChCy9C,EAAQz9C,EAAI,IAAI,EAChB09C,EAAS19C,EAAI,IAAI,EACjB29C,EAAW39C,EAAI,EAAE,EAEjB49C,EAAcl6C,GAAS,gBAAkB,CAC7C,MAAMkyC,EAAS,EACN+H,EAAA,MAAQ,CAAC,GAAG,SAAS,iBAAiB,IAAIN,EAAO,KAAK,oBAAoB,CAAC,EAE9E,MAAAQ,EAAcF,EAAS,MAAM,KAAMr5C,GACvCA,EAAK,UAAU,SAAS,gCAAgC,GAEtDu5C,IACOF,EAAA,MAAQA,EAAS,MAAM,OAC7Br5C,GAAS,CAACA,EAAK,UAAU,SAAS,gCAAgC,GAE5Dq5C,EAAA,MAAM,KAAKE,CAAW,GAI7BF,EAAS,MAAM,OAASjC,GAAS,OAAS,GAChCkC,KAEb,GAAG,EAEAE,EAAmBp6C,GAAS,gBAAkB,CAClD45C,EAAiB,MAAQ,GACzB,MAAM1H,EAAS,EACf,SAAS,cAAc,QACtB,GAAG,EAEN,SAASmI,GAAkB,CACrB,IAACT,EAAiB,MAAO,OAE7B,MAAMU,EAAgB,SAAS,cACzBC,EAAqBN,EAAS,MAAM,QAAQK,CAAa,EAE3DC,IAAuBN,EAAS,MAAM,OAAS,GAAKM,IAAuB,GACpEN,EAAA,MAAM,CAAC,EAAE,MAAM,EAExBA,EAAS,MAAMM,EAAqB,CAAC,EAAE,MAAM,CAEjD,CAEA,SAASC,GAAgB,CACnB,IAACZ,EAAiB,MAAO,OAE7B,MAAMU,EAAgB,SAAS,cACzBC,EAAqBN,EAAS,MAAM,QAAQK,CAAa,EAE3DC,IAAuB,GAAKA,IAAuB,GACrDN,EAAS,MAAMA,EAAS,MAAM,OAAS,CAAC,EAAE,QAE1CA,EAAS,MAAMM,EAAqB,CAAC,EAAE,MAAM,CAEjD,CAEe,eAAAE,EAAwBC,EAAiB,GAAO,SAC7Dd,EAAiB,MAAQ,GACzB,MAAM1H,EAAS,EACXwI,IACF,MAAM,IAAI,QAAS7+C,GAAY,WAAWA,EAAS,GAAG,CAAC,GACjC3B,GAAAR,EAAAogD,EAAA,oBAAApgD,EAAO,MAAP,MAAAQ,EAAY,QAEtC,CAEA,eAAeygD,EAAe78C,EAAO,CAM/B,GALCm8C,EAAS,MAAM,SACNC,IACZ,MAAMhI,EAAS,GAGbp0C,EAAM,UAAY,GAAI,CACxB,GAAI,CAAC87C,EAAiB,OAAS97C,EAAM,OAAO,SAAU,OAEtD28C,EAAwB,EAAI,OACnB38C,EAAM,UAAY,GACXu8C,IACPv8C,EAAM,UAAY,IACb08C,IAIZ,GAAA18C,EAAM,UAAY,IAAMm8C,EAAS,MAAM,SAASn8C,EAAM,MAAM,EAAG,CAEjE,MAAM88C,EAAWX,EAAS,MAAMA,EAAS,MAAM,OAAS,CAAC,EAEzD,MAAM/H,EAAS,EACSuI,EAAAG,IAAa98C,EAAM,MAAM,CACnD,CACF,CAEA44C,EAAO,WAAW,CAACY,EAAIiC,EAAMC,IAAS,CACZiB,IACnBjB,GAAA,CACN,EAED,SAASqB,GAAc,CACrB,MAAMC,EAAO9C,GAAS,OACnBl4C,GACC,cAACA,EAAQ,kBACTpG,EAAAq7B,EAAM,QAAQ,cAAd,YAAAr7B,EAA2B,GAAG,iBAC5B,uCAAmC,YAAY,IAGrD,OAAIk4B,GAAQ,GAAKwnB,EAAiB,YAAY,GAC5C0B,EAAK,KAAK,CACR,KAAM,cACN,MAAO,wBACP,eAAgB,GACjB,EAGIA,CACT,CAEA,SAASC,GAAwB,CAEzB,MAAA/1C,EAAM,mEADI+vB,EAAM,QAAQ,mBAAqB,IAAI,IAAM,EAC4B,GACzF,OAAO,SAAW/vB,CACpB,CAEA,SAASg2C,GAAe,CACb,0BAAiB,UAAWL,EAAgB,EAAI,CAC3D,CAEM,MAAAM,EAA4Bj7C,GAAS,gBAAkB,CACtD45C,EAAiB,QACEa,IACxB,MAAMvI,EAAS,IACd,GAAG,EAEN,OAAA8D,GAAgB6D,EAAgBoB,CAAyB,EAEzD5E,GAAU,SAAY,CACpB,MAAMnE,EAAS,EACF8I,IACWP,IACZP,GAAA,CACb,EAED5D,GAAY,IAAM,CACP,6BAAoB,UAAWqE,CAAc,EAC9BF,GAAA,CACzB,8uFCrKcS,GAAA,+CC4Bf1iD,GAAA,CACA,eACA,YACA,WAAA2iD,GACA,WAAAC,GACA,eAAAC,EACA,EACA,OACA,WACA,EACA,OACA,OACA,aACA,WACA,cACA,CACA,EACA,UACA,GAAA/hD,EAAA,8BACA,cACA,MAAAyrB,EAAA,gCACA,OAAAA,IAAA,cACA,EACA,iBACA,0BACA,EACA,UACA,iFACA,EACA,YACA,0CACA,CACA,EACA,UAEA,sCACA,mBACA,MACA,EACA,gBACA,mBACA,CACA,yhBC9DO,SAASu2B,GAA0CC,EAAer7C,EAAMkC,EAAM,CACnF,MAAMo5C,EAASnK,GAAY,aAAC,QAAQ,CAClC,MAAOkK,EAAc,GAAG,8CAA8C,EACtE,QAAS,GAAGA,EAAc,GACxB,kDACN,CAAK,IAAIr7C,CAAI,IAAIq7C,EAAc,GAAG,mDAAmD,CAAC,GAClF,SAAU,EACV,UAAW,GACX,SAAU,WACV,QAAS,gBAAkB,CAEzB/I,EAAU,YAAY+I,CAAa,EACnC,GAAI,CACF,MAAMA,EAAc,gCAAgC,KAAK,UAAU,CACpE,OAAQjhD,EAAG,CACVg3C,EAAa,eAAeiK,EAAejhD,CAAC,CAC7C,CACDk4C,EAAU,YAAY+I,CAAa,EAEnC,KAAK,MAAO,CACb,CACL,CAAG,EAEDC,EAAO,WAAap5C,EAEpBm5C,EAAc,8BAA8B,CAAE,QAASC,EAAO,MAAO,WAAYp5C,EAAM,CACzF,8cCjBA,IAAAm5C,EAEA,MAAA/iD,GAAA,CACA,WACA,mBAAAijD,EAAA,EACA,QAAApiD,EAAA,EACA,OACA,OACA,WACA,kBACA,kBACA,mBACA,iBAEA,EACA,UACA,GAAAC,EAAA,CACA,kBACA,sBACA,2BACA,cACA,iBACA,EACA,mBACA,+BACA,EACA,wBACA,oCACA,EACA,aACA,wCACA,CACA,EACA,OACA,OAAAoiD,EAAA,CAEA,IAAAC,EAAA,KACAC,EAAA,GACAF,EAAA,SAAAA,EAAA,iBACAC,EAAAD,EAAA,gBACAE,EAAA,CAAAD,EAAA,oBAGAC,GACA,oBAEA,yBACA,6BAEA,CACA,EACA,UACAL,EAAA,KACA,mCAEA,oBAIAxpB,GAAA,gBACA,mBACA,wBACA,uBAGA,WACA,EACA,SAEA,GAAA+gB,EAAA,CACA,eACA,gBACA,mBACA,gBACA,sBACA,aACA,kCACA,kCACA,gCACA,6BACA,gCACA,iCACA,qCACA,EACA,qBAAAn5C,EAAA,CACAA,EAAA,OACA,6BACA,UACA64C,EAAA,kBACA74C,EAAA,8BACA,EACA,aAEA,yBACA,CACA,EACA,aAAAW,EAAA,CACAA,EAAA,gDACAA,EAAA,qCAEA,mBACA,+BACA,uBAEA,iCACAA,EAAA,4CACA,gBACAA,EAAA,+DACA,MACA,IACA,EACA,OAEA,YACA,4BACA,UACAk4C,EAAA,kBAEA,MAAAz3B,GAAA,4CACAD,GAAA,gDACA0tB,GAAA,kDACAvtB,GAAA,oDAEAF,GAAAD,EAEA,aACA,6CACA,iCAAAC,CAAA,EACA,oCACA,qCAAAD,CAAA,EACA,uCAAA0tB,CAAA,EACA,yCAAAvtB,CAAA,EACA,EACA,UACA,kBACA,qBACA,wBAEA,MAAA8J,EAAA,iBACA,yBAAAA,EAAA,qBAEA,mDACAytB,EAAA,kBACA,EACA,MAAAl4C,GAAA,CACAk4C,EAAA,kBACAlB,EAAA,oBAAAh3C,CAAA,EACA,EACA,aACA,uBACA,EAEA,+BACA,CACA,EACA,WACA,uBACA,CACA,EACA,cAGA,MAAAuhD,EAAA,kBACAA,EAAA,gCACAA,EAAA,iDAEAA,EAAA,eAAA3/C,EAAA,CAEA,8BAAAA,CAAA,IACA,EAEA2/C,EAAA,wBAEA,oCAEAA,EAAA,gDACA,gBAEA,oDAAAA,EAAA,MAGAC,EAAA,gBACA,EACA,gBAEA,yCACA,EACA,EAEA,MAAAA,EAAAD,EAAA,6BA2FA,GAvFAC,EAAA,0BAAA15C,EAAAlC,EAAA,CACAq7C,EAAA,sBAAA3wB,KAAA,KAAAxoB,CAAA,IACAm5C,EAAA,gCAAAn5C,CAAA,EAEAk5C,GAAAC,EAAAr7C,EAAAkC,CAAA,EACA,CACA,EAGA05C,EAAA,0CAAA9gC,EAAAF,EAAA,CACA,MAAAihC,GAAAR,EAAA,2CACAS,GAAAT,EAAA,6CAIA,GAAAQ,IAAAjhC,GAAAkhC,IAAAhhC,EACA,IACA,MAAAugC,EAAA,mDACAjhD,EAAA,CACAg3C,EAAA,oBAAAh3C,CAAA,CACA,CACA,CACA,EAGAwhD,EAAA,yCAAA9gC,EAAAF,EAAA,CACA,MAAAihC,GAAAR,EAAA,2CACAS,GAAAT,EAAA,6CAIA,GAAAQ,IAAAjhC,GAAAkhC,IAAAhhC,EACA,IACA,MAAAugC,EAAA,4CACAjhD,EAAA,CACAg3C,EAAA,oBAAAh3C,CAAA,CACA,CACA,CACA,EAGAwhD,EAAA,+BAAAhhC,EAAA,CACA,MAAAihC,GAAAR,EAAA,2CACAxgC,GAAAwgC,EAAA,uCAGAQ,IAAAjhC,IACA03B,EAAA,kBAEA,aACA+I,EAAA,+BACAA,EAAA,4BAAAxgC,CAAA,EACA,EACA,UAEAwgC,EAAA,qBAAAA,EAAA,OAAAA,EAAA,OACA,GACA,MAAAjhD,GAAAg3C,EAAA,oBAAAh3C,CAAA,GACA,YAAAk4C,EAAA,mBACA,CACA,EAGAsJ,EAAA,sCAAAhhC,EAAA,GACAygC,EAAA,8CAGAzgC,GACAygC,EAAA,sCACA,CACA,EAIAM,EAAA,QACA,gBAEA,oDAAAA,EAAA,MAEAC,EAAA,gBACA,EACA,gBAEA,yCACA,EAGA,wCAEA,sCACA,4BAEA,UAAApxB,KAAA,2BACA4wB,GACAC,EACA7wB,EAAA,KACAA,EAAA,GAKA,EACA,mBAIA,IAAAuxB,EACAC,EAAA,GAGAC,EAAA,aACA,MAAAC,EAAA,2BACAC,EAAA,+BAEAD,EAAA,4BAAAC,EAAA,8BACAF,EAAA,eAEAA,IAAA,cACAD,IACAD,EAAA,wBACA,mYAIAC,IACAD,EAAA,wBACA,8XAIA,MAAAK,EAAA,iCACAA,EAAA,YAAAL,CAAA,EAEA,2CAAAK,CAAA,EACAJ,EAAA,EACA,EACA,iBAEA,MAAAK,EAAA,iCACAA,EAAA,IACA,+UACA,MAAAh8C,EAAA,2CACAA,EAAA,wBAAAg8C,EAAAh8C,CAAA,CACA,EACA,kBAEA,MAAAi8C,EAAA,iCACAA,EAAA,gCACAA,EAAA,IACA,sFACA,2CAAAA,CAAA,CACA,EACA,eASA,MAAAC,EAAA,aAEA,wBACA,+BAEA,uCAEAA,EAAA,uBACA,CAEA,EACA,yBAGA,kCAEA,MAAA3hC,GAAA,gDACAA,GAAA,mBAAAA,CAAA,CACA,CACA,CACA,oNCvYe4hC,GAAA,8CCWflkD,GAAA,CACA,6BACA,OACA,OACA,KAAAmkD,EACA,CACA,CACA,sXClBeC,GAAA,q2CCOfpkD,GAAA,CACA,6BACA,OACA,OACA,KAAAmkD,EACA,CACA,CACA,8RCUAnkD,GAAA,CACA,8BACA,OACA,MACA,YACA,qBACA,CACA,EACA,SACA,kBAAAqkD,EAAA,CACA,oBAAAA,CAAA,CACA,CACA,CACA,g1BChBArkD,GAAA,CACA,gCACA,OACA,YACA,CACA,okBCnBAA,GAAA,CACA,kBACA,gNC+CAskD,GAAA,sBAEAtkD,GAAA,CACA,mCACA,YACA,WAAAukD,EACA,EACA,OACA,MACA,YACA,UACA,CACA,EACA,OACA,OACA,WAAAD,GACA,YACA,WACA,CACA,EACA,UACA,cACA,kBACA,cACA,sBACA,cACA,qBACA,CACA,QACA,EACA,aACA,kBACA,cACA,qBACA,cACA,gBACA,CACA,QACA,EACA,YACA,8CACA,EACA,UACA,oDACA,CACA,EACA,OACA,KAAA9+C,EAAA,CACAA,GAAA,mBACA,8DACA,cAAAA,IAAA,IACA,CACA,EACA,UACA,oBACA,oDACA,EACA,EACA,SACA,YAAAo9B,EAAA,IACA,cAAAA,CACA,EACA,eACA,cAEA,0DACA,EACA,cACA,iBACA,oBACA,+BACA,CACA,CACA,ypDCjIa4hB,GAAQ,CACnB,QAAS,CACP,cAAe,CACb,OAAK,KAAK,SAAS,KACZ,oBAAoB,KAAK,SAAS,IAAI,GADb,EAEjC,CACF,CACH,ECqBAC,GAAA,MACA,GAAAjgD,GAAA,EACA,WACA,oBACA,WACA,GAEAxE,GAAA,CACA,0BACA,QAAAwkD,EAAA,EACA,OACA,UACA,YACA,QAAAC,EACA,EACA,UACA,YACA,WACA,CACA,EACA,SACA,qBACA,mCACA,CACA,CACA,guBCnCAzkD,GAAA,CACA,8BACA,OACA,MACA,YACA,qBACA,CACA,EACA,SACA,oBACA,mCACA,CACA,CACA,woBChBAA,GAAA,CACA,YACA,YAAA0kD,EACA,EACA,OACA,WACA,EACA,OACA,QACA,EACA,UACA,eACA,iBACA,CACA,CACA,oWC8BAC,GAAA,KACA,CACA,KACA,iBACA,YACA,UACA,GAGA3kD,GAAA,CACA,kCACA,YACA,gBAAA4kD,EACA,EACA,QAAAJ,EAAA,EACA,OACA,UACA,YACA,QAAAG,GACA,WACA,EACA,uBACA,+BACA,sBACA,EACA,OACA,OACA,gBACA,aACA,YACA,uBACA,6BACA,0BACA,CACA,EACA,UACA,oBAGA,SADA,YACA,4EAKA,EACA,qBACA,oCACA,EACA,oBACA,iDACA,8BAGA,6BAEA,6BACA,EACA,mBACA,kCACA,CACA,EACA,SACA,GAAArK,EAAA,CACA,yCACA,yCACA,GACA,yBACAN,EAAA,kBAEA,8CACA,qCACA,qDACA,qCACA,2BACA,GACA,MAAAl4C,GAAAg3C,EAAA,oBAAAh3C,CAAA,GACA,YAAAk4C,EAAA,kBACA,EACA,8BACAA,EAAA,kBAEA,+BACA,yDACA,mCAGA,IACA,gFACA,qCACA,qDACA,qCACA,2BACA,GAEA,wCACAA,EAAA,iBACA,OAAAl4C,EAAA,CACAg3C,EAAA,oBAAAh3C,CAAA,EACAk4C,EAAA,iBACA,CACA,CACA,CACA,8xDC1JAh6C,GAAA,CACA,kCACA,OACA,OACA,8BACA,CACA,CACA,2XCfa6kD,GAAgB,CAC3B,UAAW,YACX,aAAc,eACd,UAAW,YACX,SAAU,WACV,QAAS,SACX,EAEaC,GAAgB,CAC3B,OAAQ,SACR,cAAe,eACjB,EAEaC,GAAiB,CAC5B,WAAY,aACZ,SAAU,WACV,MAAO,QACP,iBAAkB,mBAClB,WAAY,aACZ,WAAY,aACZ,SAAU,WACV,UAAW,YACX,OAAQ,QACV,EAEaC,GAAoB,CAC/B,YAAa,cACb,MAAO,OACT,ECwDAhlD,GAAA,CACA,qBACA,YACA,oBAAAilD,GACA,oBAAAC,GACA,qBAAAC,GACA,sBAAAC,GACA,iBAAAC,GACA,qBAAAC,GACA,yBAAAC,GACA,wBAAAC,GACA,mBAAAC,GACA,WAAAlB,EACA,EACA,OACA,OACA,iBACA,qBACA,YACA,qBACA,uBACA,YACA,CACA,EACA,UACA,GAAAzjD,EAAA,gCACA,wBACA,OAAAI,EAAA,gCAAAA,EAAA,GACA,EACA,wBACA,OAAAA,EAAA,iCAAAA,EAAA,eACA,EACA,gC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,EACvB,KACH,CACF,CACF,CACH,mrECyBA7lD,GAAA,CACA,wCACA,QAAAi7C,EAAA,EACA,OACA,OACA,sDACA,YACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,oFACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,aACA,6EACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,wBACA,wFACA,UACA,EACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,oFACA,UACA,CACA,EACA,OACA,CACA,EACA,UACA,GAAAn6C,EAAA,CACA,WACA,oBACA,+BACA,iCACA,qBACA,GACA,aACA,gBACA,CACA,EACA,UACA,yBAEA,MAAAglD,EAAA,qCACA,sBACAA,EAAA,wBAEA,4CACAA,EAAA,8CAEA,0CACAA,EAAA,4CAEA,+BACAA,EAAA,iCAGA,YAAAA,CAAA,EACA,UACA,iBACA,sBACA,GACA,kCACA,qCACA,EACA,SACA,GAAAxL,EAAA,CACA,8BACA,aACA,mCACA,iCACA,qBACA,GACA,YACA,MAAAyL,EAAA,SACAC,EAAA/pB,EAAA,0BACAwV,EAAAxV,EAAA,eACAtT,EAAAsT,EAAA,wBACAgqB,EAAAhqB,EAAA,mCACAiqB,EAAAjqB,EAAA,qCAEAkqB,EAAAx9B,EAAA,OAAAs9B,EAAAC,CAAA,EAEAE,EAAA,GACAJ,GACAA,EAAA,QAAAjgB,GAAA,CACA,IAAAsgB,EAAA,GACAtgB,EAAA,cAAAsgB,EAAA5U,EAAA,OAAArwC,KAAA,KAAA2kC,EAAA,oBACA,IAAAugB,EAAA,KACAC,EAAA,KACAC,EAAA,GACAC,EAAA,GAEA1gB,EAAA,wCACAugB,EAAA,cACAE,EAAA,CAAAJ,EAAA,KACAh+C,GACAA,EAAA,WAAAk+C,GACAl+C,EAAA,WAAA29B,EAAA,aACA39B,EAAA,YAAA29B,EAAA,SACA,GACAA,EAAA,iCACAugB,EAAA,QACAvgB,EAAA,iCACAugB,EAAA,qBACAC,EAAAJ,EAAA,KAAAO,KAAA,KAAA3gB,EAAA,MACAygB,EAAA,CAAAJ,EAAA,KACAh+C,GACAA,EAAA,WAAAk+C,GACAl+C,EAAA,OAAAm+C,EAAA,MACAn+C,EAAA,WAAA29B,EAAA,aACA39B,EAAA,YAAA29B,EAAA,SACA,GACAA,EAAA,2CACAugB,EAAA,oBACAC,EAAAJ,EAAA,KAAAO,KAAA,KAAA3gB,EAAA,MACAygB,EAAA,CAAAJ,EAAA,KACAh+C,GACAA,EAAA,WAAAk+C,GACAl+C,EAAA,OAAAm+C,EAAA,MACAn+C,EAAA,WAAA29B,EAAA,aACA39B,EAAA,YAAA29B,EAAA,SACA,GACAA,EAAA,uCACAugB,EAAA,YACAC,EAAAJ,EAAA,KAAAO,KAAA,KAAA3gB,EAAA,MACAygB,EAAA,CAAAJ,EAAA,KACAh+C,GACAA,EAAA,WAAAk+C,GACAl+C,EAAA,OAAAm+C,EAAA,MACAn+C,EAAA,WAAA29B,EAAA,aACA39B,EAAA,YAAA29B,EAAA,SACA,EACA0gB,EAAA,CAAAT,EAAA,KACA59C,GACAA,EAAA,WAAAk+C,GACAl+C,EAAA,OAAAm+C,EAAA,MACAn+C,EAAA,WAAA29B,EAAA,aACA39B,EAAA,YAAA29B,EAAA,WACA,WAAA39B,EAAA,uBAAA29C,CAAA,CACA,GAGA,IAAAY,EAAA,GACA,GAAAL,EAAA,CACA,GAAAvgB,EAAA,iBAEA,MAAA6gB,EADA7gB,EAAA,2BACA,GACA4gB,EAAAlV,EAAA,OAAArwC,KAAA,KAAAwlD,EAAA,cACA,CAEAJ,GAAAC,GAAA,WAAAV,CAAA,aAAAhgB,EAAA,aACAqgB,EAAA,MACA,YAAArgB,EAAA,mBACA,UAAAA,EAAA,iBACA,cAAAA,EAAA,qBACA,SAAAugB,EACA,MAAAC,GAAA,YAAAA,EAAA,aACA,SAAAxgB,EAAA,mBACA,iBAAAsgB,GAAA,YAAAA,EAAA,WACA,eAAAM,GAAA,YAAAA,EAAA,WACA,YAAA5gB,EAAA,WACA,WAAAA,EAAA,UACA,EAEA,CACA,GACA,UAAAqgB,CACA,EACA,SAAAt7B,EAAA,CACA,OAAAA,EAAA,CACA,WACA,eACA,eACA,eACA,QACA,YACA,CACA,EACA,oBAAAywB,EAAA,CACA,OAAAA,EAAA,MACA,sBACA,oBACA,0BAAA7N,EAAAhX,IAAA,SACA,MAAA+kB,IAAAv6C,EAAAwsC,EAAA6N,EAAA,oBAAAr6C,EAAA,YAAAwsC,EAAA6N,EAAA,MACAG,IAAAh6C,EAAAg1B,EAAA6kB,EAAA,oBAAA75C,EAAA,YAAAg1B,EAAA6kB,EAAA,MACA,OAAAA,EAAA,oBAAAE,EAAA,cAAAC,CAAA,EAAAA,EAAA,cAAAD,CAAA,CACA,GACA,MACA,QACA,yCAAAF,EAAA,0BACA,CACA,CACA,CACA,q7ECrJAv7C,GAAA,CACA,wCACA,QAAAi7C,EAAA,EACA,OACA,OACA,qCACA,sDACA,YACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,oFACA,UACA,EACA,CACA,aACA,6EACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,wBACA,wFACA,UACA,EACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,oFACA,UACA,EACA,CACA,aACA,oFACA,WACA,SACA,CACA,EACA,mBACA,cACA,CACA,EACA,UACA,GAAAn6C,EAAA,uBACA,aACA,uBACA,EACA,qBACA,iCACA,iEAEA,0EACA,CACA,EACA,UACA,MAAA+lD,EAAA,CACA,UACA,WACA,cACA,mBACA,EAEA,yBACA,yBAAAA,CAAA,EACA,UACA,2BACA,sBACA,GACA,oCACA,qCACA,EACA,SACA,GAAAvM,EAAA,yBACA,SAAAxvB,EAAA,CACA,OAAAA,EAAA,CACA,WACA,eACA,eACA,eACA,QACA,YACA,CACA,EACA,iBAAAg8B,EAAA,CACA,6BACA,OAAAA,EAAA,mBACA,CACA,kBAAAC,CAAA,EAAAD,EACAE,EAAA,GAAAn+C,EAAA,OAAAk+C,EAAA,QACA,OAAAD,EAAA,oBAAAE,GAAA,GAAAA,EAAA,qBACA,CACA,EACA,iCAAAxhD,EAAA,CACA,sBAAAA,CACA,EACA,sBACA,kCAAAy2B,EAAA,wBACA,EACA,YAAA+E,EAAA,CACA,OAAAA,EAAA,IAAA8lB,IAAA,CACA,SAAAA,EAAA,UACA,UAAAA,EAAA,GACA,YAAAA,EAAA,KACA,cAAAA,EAAA,OACA,KAAAA,EAAA,oBACA,SAAAA,EAAA,gCACA,SAAAA,EAAA,qBACA,gBAAAA,EAAA,YACA,cAAAA,EAAA,4BACA,YAAAA,EAAA,yBACA,OAAAA,EAAA,iCACA,GACA,EACA,aAAA1lD,EAAA,CACA,GACAA,EAAA,kBACAA,EAAA,YACA,uGAAAA,EAAA,aAAAA,EAAA,WAEA,kDAAAA,EAAA,aAAAA,EAAA,WACA,IAAA6lD,EAAA7lD,EAAA,UACA,OAAA6lD,EAAA,oBACAA,EAAA,2CAAAA,CAAA,IAEAA,CACA,EACA,oBAAA1L,EAAA,CACA,gDAAAA,EAAA,iCACA,EACA,YAAA96B,EAAA,CACA,OAAAA,IAAA,KACA,GAAAA,EAAA,aAAAA,EAAA,WAEA,KACA,CACA,CACA,guICrNAzgB,GAAA,CACA,yCACA,QAAAi7C,EAAA,EACA,OACA,OACA,8BACA,0BACA,mDACA,sDACA,YACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,qFACA,UACA,EACA,CACA,kBACA,+EACA,UACA,EACA,CACA,sBACA,qFACA,UACA,EACA,CACA,oBACA,mFACA,UACA,EACA,CACA,uBACA,uFACA,UACA,CACA,EACA,cACA,CACA,EACA,UACA,GAAAn6C,EAAA,mBACA,aACA,uBACA,EACA,gBACA,4CACA,qCAEA,iFACA,CACA,EACA,UACA,uBACA,EACA,SACA,GAAAw5C,EAAA,qBACA,4BAAA90C,EAAA,CACA,6BAAAA,EACA,MAAA0hD,EAAA,SACAC,EAAA3hD,IAAA,WAAA0hD,EAAA,QAAAA,EAAA,UAAA1hD,CAAA,EACA,aAAA2hD,EACA,uBACA,EACA,mBACA,yBAEA,sBACA,iDACA,wBACA,yBACA,iCACA,kBACA,oBACA,uCACA,GACA,UACA,iBACA,sBACA,GACA,oCACA,qCACA,EACA,YACA,iBAAAlrB,EAAA,4BAAA6qB,IAAA,CACA,UAAAA,EAAA,UACA,cAAAA,EAAA,oCAAAA,EAAA,iBACA,YAAAA,EAAA,qCAAAA,EAAA,kBACA,YAAAA,EAAA,YACA,cAAAA,EAAA,cACA,UAAAA,EAAA,UACA,eAAAA,EAAA,cACA,GACA,EACA,iBAAAA,EAAA,CACA,wCACA,SACA,CACA,MAAAE,EAAA,GAAAn+C,EAAA,OAAAi+C,EAAA,oBACA,OAAAE,GAAA,GAAAA,EAAA,4BACA,CACA,EACA,kBACA,uBACA,uBACA,EACA,kBACA,uBACA,uBACA,EAEA,yBAAA3hD,EAAA,CACA,uBACA,qBACA,sBACA,yBAAAA,CAAA,EACA,uBACA,EACA,SAAAylB,EAAA,CACA,OAAAA,EAAA,CACA,qBACA,cACA,gBACA,eACA,QACA,YACA,CACA,CACA,CACA,o7FClIA9qB,GAAA,CACA,wCACA,QAAAi7C,EAAA,EACA,OACA,OACA,sDACA,aACA,YACA,CACA,sBACA,sFACA,UACA,EACA,CACA,oBACA,oFACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,aACA,6EACA,UACA,EACA,CACA,iBACA,iFACA,UACA,EACA,CACA,wBACA,wFACA,UACA,EACA,CACA,sBACA,sFACA,UACA,EACA,CACA,qBACA,qFACA,UACA,EACA,CACA,iBACA,gFACA,WACA,SACA,EACA,CACA,iBACA,iFACA,WACA,SACA,CACA,EACA,OACA,CACA,EACA,UACA,GAAAn6C,EAAA,CACA,WACA,sBACA,oBACA,+BACA,iCACA,uBACA,4BACA,0BACA,gBACA,GACA,aACA,gBACA,CACA,EACA,UACA,yBAEA,MAAAglD,EAAA,qCACA,sBACAA,EAAA,wBAEA,4CACAA,EAAA,8CAEA,0CACAA,EAAA,4CAEA,+BACAA,EAAA,iCAGA,YAAAA,CAAA,EACA,UACA,iBACA,sBACA,GACA,kCACA,qCACA,EACA,SACA,SAAAh7B,EAAA,CACA,OAAAA,EAAA,CACA,WACA,eACA,eACA,eACA,QACA,YACA,CACA,EACA,YACA,MAAAs8B,EAAAnrB,EAAA,0BACAwV,EAAAxV,EAAA,eACAtT,EAAAsT,EAAA,wBACAgqB,EAAAhqB,EAAA,mCACAiqB,EAAAjqB,EAAA,qCAEAkqB,EAAAx9B,EAAA,OAAAs9B,EAAAC,CAAA,EACAmB,EAAA,GACAD,GAAA,MAAAA,EAAA,QACAA,EAAA,QAAArhB,GAAA,OACA,IAAAsgB,EAAA,GACAtgB,EAAA,YAAAsgB,EAAA5U,EAAA,OAAArwC,KAAA,KAAA2kC,EAAA,oBACA,IAAAugB,EAAA,KACAC,EAAA,KACA,MAAApjC,EAAA4iB,EAAA,WACAA,EAAA,uCACAugB,EAAA,cACAvgB,EAAA,iCACAugB,EAAA,qBACAC,EAAAJ,EAAA,OAAAO,KAAA,KAAA3gB,EAAA,OACAA,EAAA,2CACAugB,EAAA,oBACAC,EAAAJ,EAAA,OAAAO,KAAA,KAAA3gB,EAAA,OACAA,EAAA,uCACAugB,EAAA,YACAC,EAAAJ,EAAA,OAAAO,KAAA,KAAA3gB,EAAA,OAGA,IAAA4gB,EAAA,GACA,GAAAL,GACAvgB,EAAA,iBAEA,MAAA6gB,EADA7gB,EAAA,2BACA,GACA4gB,EAAAlV,EAAA,OAAArwC,KAAA,KAAAwlD,EAAA,cACA,CAGA7gB,EAAA,eACAshB,EAAA,MACA,YAAAthB,EAAA,mBACA,UAAAA,EAAA,iBACA,cAAAA,EAAA,qBACA,SAAAugB,EACA,OAAAplD,EAAAqlD,GAAA,YAAAA,EAAA,iBAAArlD,EAAA,aACA,SAAA6kC,EAAA,YACA,gBAAAsgB,EAAA,SAAAA,EAAA,SACA,cAAAtgB,EAAA,gBAAA4gB,EAAA,SACA,aAAA5gB,EAAA,QACA,WAAAA,EAAA,WACA,MAAA5iB,EACA,SAAA4iB,EAAA,SACA,WAAAA,EAAA,WACA,SAAAA,EAAA,QACA,EAEA,GAEA,UAAAshB,CACA,EACA,oBAAA9L,EAAA,CACA,OAAAA,EAAA,MACA,sBACA,oBACA,0BAAA7N,EAAAhX,IAAA,SACA,MAAA+kB,IAAAv6C,EAAAwsC,EAAA6N,EAAA,oBAAAr6C,EAAA,YAAAwsC,EAAA6N,EAAA,MACAG,IAAAh6C,EAAAg1B,EAAA6kB,EAAA,oBAAA75C,EAAA,YAAAg1B,EAAA6kB,EAAA,MACA,OAAAA,EAAA,oBAAAE,EAAA,cAAAC,CAAA,EAAAA,EAAA,cAAAD,CAAA,CACA,GACA,MACA,QACA,yCAAAF,EAAA,0BACA,CACA,EACA,oBAAAA,EAAA,CACA,yBAEA,uBACA,WAAAA,EAAA,WACA,SAAAA,EAAA,QACA,GACA,4BACA,SAAAzC,EAAA,wBACA,qCACA,EACA,mBAAAyC,EAAA,CACA,GAAAA,EAAA,cACA,oBAAAA,CAAA,MACA,CACA,MAAA+L,EAAA,eACA,aAAAl/C,EAAA,CACA,OAAAA,EAAA,KACA,GACA,QAAAmzC,EAAA,OACA,sBAAA+L,EAAA,EACA,CACA,EACA,aACA,MAAAxB,EAAA,GAEA,uBAAAvK,GAAA,CACA,IAAAgM,EAAA,KACAC,EAAA,KACAC,EAAA,KACA,OAAAlM,EAAA,UACA,gBACAgM,EAAA,4BACAC,EAAA,0BACAC,EAAA,6BACA,MACA,wBACAF,EAAA,iCACAC,EAAA,+BACAC,EAAA,kCACA,MACA,yBACAF,EAAA,+BACAC,EAAA,6BACAC,EAAA,iCACA,MACA,QACAF,EAAA,sBACAC,EAAA,oBACAC,EAAA,sBACA,CAEA3B,EAAA,KACAyB,EAAAhM,EAAA,MAAAA,EAAA,YACA,UACA,MAAAxV,EAAA9J,EAAAurB,EAAAjM,EAAA,QACA,OAAAxV,EAAA,SAAAwV,EAAA,SACAkM,EAAA,CACA,MAAA1hB,EACA,WAAAwV,EAAA,UACA,EACA,GACA,MAAAz5C,GAAAg3C,EAAA,oBAAAh3C,CAAA,EACA,CACA,GAEA,yBAEA,YAAAgkD,CAAA,EACA,6CACA,4BACA,2BACA,SAAAhN,EAAA,wBACA,qCACA,EACA,GAAAwB,EAAA,CACA,mBACA,yBACA,0BACA,8BACA,+BACA,4BACA,8BACA,mBACA,oBACA,8BACA,aACA,mCACA,iCACA,qBACA,EACA,CACA,+6FC9XeoN,GAAA,CACb,KAAM,2BACN,WAAY,CACV,mBAAAC,GACA,iBAAAC,GACA,wBAAAC,GACA,uBAAAC,GACA,oBAAAC,EACD,EACD,MAAO,CACL,UAAW,QACX,SAAU,MACX,EACD,MAAO,CACL,MAAO,CACL,UAAW,WACX,eAAgB,GAChB,WAAY,2CACZ,iBAAkB,qCAClB,SAAU,CAAC,WAAY,UAAW,UAAW,QAAQ,EACrD,aAAc,CAAE,CACjB,CACF,EACD,SAAU,CACR,KAAK,kBAAmB,CACzB,EACD,QAAS,CACP,cAAclC,EAAS,CACrB,OAAQA,EAAO,CACb,IAAK,SACH,KAAK,MAAM,QAAQ,EACnB,MACF,IAAK,aACH,KAAK,MAAM,YAAY,EACvB,KACH,CACF,EACD,mBAAoB,CAClB,MAAM9Z,EAAO,CAAE,EACf,KAAK,SAAS,QACXic,GACEjc,EAAKic,CAAG,EAAI,CACX,QAAS,GACT,MAAO,EACnB,CACO,EACD,KAAK,aAAe/rB,EAAU8P,CAAI,CACnC,EACD,cAAcvmC,EAAK,CACjB,KAAK,aAAa,KAAK,SAAS,EAAE,QAAUA,CAC7C,EACD,YAAYA,EAAK,CACf,KAAK,aAAa,KAAK,SAAS,EAAE,MAAQA,CAC3C,CACF,CACH,o+DCtBAxF,GAAA,CACA,qCACA,OACA,KACA,YACA,YACA,EACA,YACA,QACA,aACA,UACA,EACA,gBACA,EACA,UACA,UACA,uBACA,EACA,WACA,wBACA,EACA,UACA,uBACA,EACA,YACA,qBACA,CACA,CACA,itCCxBAA,GAAA,CACA,0BACA,OACA,KACA,YACA,YACA,EACA,YACA,QACA,aACA,UACA,EACA,gBACA,EACA,UACA,UACA,uBACA,EACA,WACA,wBACA,EACA,UACA,uBACA,EACA,UACA,uBACA,EACA,YACA,qBACA,CACA,CACA,04CCvEeioD,GAAA,CACb,KAAM,iBACN,WAAY,CACV,SAAAC,GACA,SAAAC,EACD,EACD,MAAO,CACL,KAAM,CACJ,KAAM,MACN,QAAS,IAAM,CAAE,CAClB,EACD,KAAM,OACN,IAAK,MACN,EACD,SAAU,CACR,GAAGrnD,EAAW,CAAC,WAAY,SAAS,CAAC,EACrC,iBAAkB,CAChB,OAAO,KAAK,IACb,EACD,aAAc,CACZ,OAAO,KAAK,OAAS,WAAa,KAAK,OAAS,YAAc,KAAK,OAAS,QAC7E,EACD,YAAa,CACX,OAAO,KAAK,OAAO,OACpB,EACD,UAAW,CACT,OAAO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ACA,EACA,aAAAn3B,EAAA,CACA,yCACAxY,KAAA,KAAAwY,CACA,KAEA,kBACA,cACA,gBACA,qDACA,cACA,GAEA,2EACAxY,KAAA,KAAAwY,CACA,CAEA,EACA,wBACA,UAAA3e,GAAA,iDACA,CACA,CACA,qwECjGAxE,GAAA,CACA,uBACA,QAAA67C,EAAA,EACA,OACA,kBACA,cACA,WACA,cACA,CACA,EACA,OACA,OACA,+BACA,kBACA,gBACA,YACA,CACA,iFACA,aACA,UACA,EACA,CACA,iFACA,aACA,UACA,EACA,CACA,qFACA,iBACA,UACA,CACA,CACA,CACA,EACA,UACA,gBACA,+BACA,EACA,iBACA,4DACA,EACA,mBACA,MAAA6V,GAAA,0CACA,+BAAAA,IAAA,kBACA,EACA,qBACA,8BAAAb,KAAA,QACA,CACA,EACA,SACA,iBAAAtV,EAAA,CACA,iDAAAA,EAAA,2BACA,EACA,eACA+P,GAAA,wDACA,CACA,CACA,8+CChDAtrD,GAAA,CACA,+BACA,QAAA67C,EAAA,EACA,OACA,kBACA,mBACA,WACA,cACA,CACA,EACA,OACA,OACA,yCACA,kBACA,gBACA,YACA,CACA,mFACA,eACA,UACA,EACA,CACA,sBACA,qEACA,EACA,kBACA,UACA,EACA,CACA,sBACA,mEACA,EACA,gBACA,UACA,EACA,CACA,sFACA,kBACA,UACA,EACA,CACA,sBACA,0EACA,EACA,wBACA,UACA,EACA,CACA,sFACA,kBACA,UACA,CACA,CACA,CACA,EACA,UACA,gBACA,oCACA,EACA,iBACA,iEACA,EACA,mBACA,MAAA6V,GAAA,0CACA,oCAAAA,IAAA,kBACA,EACA,qBACA,8BAAAb,KAAA,QACA,CACA,EACA,SACA,iBAAAtV,EAAA,CACA,sDAAAA,EAAA,wBACA,YACA,SACA,EACA,EACA,eACA+P,GAAA,4DACA,CACA,CACA,uxDCxFAtrD,GAAA,CACA,iCACA,YACA,cAAA2xD,GACA,eAAAC,GACA,gBAAAC,EACA,EACA,OACA,kBACA,gBACA,qBACA,eACA,YACA,gBA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AAAvuB,GACA,GAAGu6C,EAAW,CACZ,YACA,cACA,sBACA,qBACA,gBACA,kBACA,kBACA,gBACA,mBACA,cACA,iCACA,kCACA,gCACA,eACA,uBACA,6BACD,CACH,CACF,24OC1TAt6C,GAAA,CACA,UACAg6C,EAAA,iBACA,EACA,gBACAA,EAAA,iBACA,CACA,oJCbewd,GAAA,CACb,KAAM,iBACN,KAAM,mBACN,UAAW,IAAKC,EAAA,IAAC,OAAO,kCAAiE,iIACzF,KAAM,CAAE,KAAM,GAAM,UAAW,EAAM,EACrC,MAAO,GACP,SAAU,CACR,CACE,KAAM,sBACN,KAAM,gBACN,UAAW,IACVA,EAAA,IAAC,OACE,wCACV,sHACK,EACD,CACE,KAAM,mBACN,KAAM,oBACN,UAAW,IACVA,EAAA,IAAC,OACE,4CACV,yHACK,EACD,CACE,KAAM,kBACN,KAAM,mBACN,UAAW,IACVA,EAAA,IAAC,OACE,2CACV,yHACK,EACD,CACE,KAAM,kBACN,KAAM,mBACN,UAAW,IACVA,EAAA,IAAC,OACE,2CACV,+HACK,EACD,CACE,KAAM,sBACN,KAAM,uBACN,UAAW,IACVA,EAAA,IAAC,OACE,+CACV,yHACK,EACD,CACE,KAAM,oBACN,KAAM,qBACN,UAAW,IACVA,EAAA,IAAC,OACE,6CACV,yHACK,EACD,CACE,KAAM,oBACN,KAAM,qBACN,UAAW,IACVA,EAAA,IAAC,OACE,6CACV,4HACK,EACD,CACE,KAAM,sBACN,KAAM,2BACN,UAAW,IACVA,EAAA,IAAC,OACE,+CACV,sHACK,EACD,CACE,KAAM,iBACN,KAAM,sBACN,UAAW,IACVA,EAAA,IAAC,OACE,0CACV,mHACK,EACD,CACE,KAAM,kBACN,KAAM,uBACN,UAAW,IACVA,EAAA,IAAC,OACE,2CACV,mHACK,EACD,CACE,KAAM,eACN,KAAM,gBACN,UAAW,IACVA,EAAA,IAAC,OACE,wCACV,yHACK,EACD,CACE,KAAM,mBACN,KAAM,oBACN,UAAW,IACVA,EAAA,IAAC,OACE,4CACV,sHACK,CACF,CACH,ECvGM,CAAE3W,mBAAkB,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","names":["nukeConfig","useDataSanitizing","sanitizeData","data","options","optionsToUse","DOMPurify","sanitizeHTMLData","_sfc_main","c","innerStyle","mw","usePermissionLevels","permissionLevels","getPermissionLevels","acc","level","index","getPermissionLevelName","permissions","routes","PermissionsMixins","mapGetters","config","targetRoute","r","_a","context","user","routePermissionConfig","routePermissionFiltered","routePermissionSectionFiltered","hasSubSectionPermission","hasSubSectionPermissionToAction","_b","_c","_d","_e","e","_f","_g","_h","_i","_j","control","status","routePermissions","userPermissions","userEmail","p","up","InputPermissionMixins","wrapper","ElCheckbox","isChecked","newValue","mockEvent","fontBackgroundColor","fontColor","UploadAdapter","loader","resolve","reject","file","reader","base64String","error","slots","useSlots","wrapperEl","ref","editorData","defaultToolbar","MyCustomUploadAdapterPlugin","editor","editorConfig","props","buildToolbar","isDirty","EditorId","uuid","isDisabled","computed","watch","value","emit","resizeEditor","editorEl","onEditorReady","toolbarItems","getPlainText","span","expose","size","event","i","val","files","postFiles","f","uploadFile","sizeClass","staticClass","currencyClass","d","time","date","el","evt","code","currentLength","charPressed","isDash","isDot","amountString","keyCode","charCode","input","ariaLabel","before","after","tail","result","rebuilt","isNegative","panelClone","element","fullscreenToggle","throttle","scrollTop","name","location","key","selects","createdId","s","htmlList","visible","elem","sibs","item","elTransitionTime","elMargin","backdrop","debounce","style","capitalize","str","currencyComma","dayjs","utc","timezone","arraySupport","dateFilter","Vue","VueI18n","loadLocaleMessages","locales","messages","matched","locale","i18n","WizardMixins","stepClasses","guid","crypto","sleep","ms","getDateAsUtc","temp","getDateParts","compareObjects","object","base","transform","isEqual","isObject","getTimeString","pTime","period","hours","minutes","year","month","day","monthNames","fullMonthNames","getMonthName","full","hasValue","stringToDate","getDateFromDelta","days","currDate","getMergedDateFromInput","inputDateComponent","inputTimeComponent","currYear","createAuthGuidIfNeed","btAuthGuid","itemsAreNotNull","arr","valueOrNA","dataField","forceFileDownload","response","blobInput","blob","url","link","getBlobUrlFomApiResponse","currencyStringToFloat","currencyString","util","AUDIT_AGGREGATE_TYPES_SET","AUDIT_AGGREGATE_SORTED_TYPES_SET","AUDIT_AGGREGATE_VENDORS_SET","AUDIT_AGGREGATE_USERS_SET","AUDIT_SEARCH_RESULTS_SET","AUDIT_SEARCH_RESULTS_TOTAL_SET","AUDIT_VENDOR_SEARCH_RESULTS_SET","AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET","AUDIT_VENDOR_AGGREGATE_TYPES_SET","AUTH_SET_TYPE","AUTH_SET_OPTION","AUTH_SET_ISAUTH","AUTH_SET_CUSTOMER","AUTH_SET_CUSTOMERNODE","AUTH_SET_HOST","AUTH_SET_USER","AUTH_SET_NODE","CERTIFICATES_SET","CERTIFICATE_DELETE","CERTIFICATE_UPDATE_OR_ADD","CERTIFICATE_TYPES_SET","CONTRACTPOTYPES_TYPES_SET","CONTRACT_DOCUMENTS_SET","CONTRACT_VENDOR_DOCUMENT_TYPES_SET","CONTRACT_VENDOR_DOCUMENT_TYPE_SET","CONTRACT_DOCUMENTS_DELETE","CONTRACT_DOCUMENT_UPDATE_OR_ADD","CONTRACT_VENDOR_DOCUMENTS_SET","CONTRACT_VENDOR_DOCUMENTS_DELETE","CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD","CONTRACT_BOND_DOCUMENT_TYPE_SET","CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL","CONTRACT_BOND_DOCUMENTS_SET","CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD","CONTRACT_BOND_DOCUMENTS_DELETE","CONTRACT_PERFORMANCE_STATISTIC_SET","CONTRACT_PERFORMANCE_RATING_SET","CONTRACT_PERFORMANCE_ADD","CONTRACT_PERFORMANCE_REMOVE","CONTRACT_PERFORMANCE_EVALUATION","CONTRACT_PERFORMANCE_FINAL_RATING_SET","CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET","CONTRACT_SIGNATURE_SET","CONTRACT_SIGNATURES_SET","CONTRACT_SIGNATURES_FETCH_REQUIRED_SET","CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET","CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET","CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET","CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET","CUSTOMER_SET","CUSTOMERNODE_SET","CUSTOMER_SET_TIMEZONE","CUSTOMER_ALL_SET","EMAIL_PROJECT_SET","SCHEDULED_EMAIL_PROJECT_SET","EMAIL_VENDOR_SET","EMAIL_AGGREGATES_SET","EMAIL_SCHEDULED_AGGREGATES_SET","EMAIL_UPDATE_NEW_EMAIL","EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS","EMAIL_SET_NEW_EMAIL_PROJECT_USERS","EMAIL_SET_NEW_EMAIL_INVITEES","EMAIL_SET_EMAIL_TEMPLATES","EMAIL_UPDATE_EMAIL_TEMPLATES","EMAIL_SET_NEW_EMAIL_CONTRACT_ID","EMAIL_SET_NEW_EMAIL_TENDER_ID","EMAIL_SET_EMAIL_RESTRICTED_DOMAINS","EMAIL_UPDATE_EMAIL_RESTRICTED_DOMAINS","EMAIL_SET_NEW_EMAIL_DOCUMENT","EMAIL_RESEND","CONTROL_PANEL_SAVE_REQUIRED","CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM","CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM","CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM","CONTROL_PANEL_DROPDOWNS_SET","CONTROL_PANEL_ERROR_SET","CONTROL_PANEL_ERROR_UNSET","CONTROL_PANEL_ERROR_UNSET_ALL","TIMEZONE_ALL_SET","LANGUAGE_ALL_SET","RESOURCE_MESSAGE_ALL_SET","GROUP_SET_GROUPS","USER_REMOVE_GROUPS","GROUP_SET_SIDEBAR_VISIBILITY","GROUP_TOGGLE_SIDEBAR_VISIBILITY","GROUP_SET_ACTIVE_USERS_IN_GROUP","GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP","GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY","INVITATION_SET_SEARCH_TENDER_RESULT","INVITATION_SET_SEARCH_CRITERIA_RESULT","INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT","INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE","INSURANCE_DOCUMENTS_SET","INSURANCE_DOCUMENT_DELETE","INSURANCE_UPDATE_OR_ADD","INSURANCE_TYPES_SET","PERFORMANCE_EVALUATION_DOCUMENTS_SET","PERFORMANCE_EVALUATION_DOCUMENT_UPDATE","PLANTAKER_SET","EXPORTFILE_ADD","EXPORTFILE_REMOVE","EXPORTFILE_READY","EXPORTFILE_RESTORE","EXPORTFILE_NOTIFICATIONADD","EXPORTFILE_NOTIFICATIONCLEAR","REPORTS_ADDTHUMBNAIL","REPORTS_THUMBNAILNAMES","REPORTS_REPORTCATEGORIES","REPORTS_THUMBNAILCATEGORY","REPORTS_SUBSCRIBED","REPORTS_REMOVE_RECIPIENT","REPORTS_SCHEDULED","REPORTS_REMOVE_SCHEDULED","REPORTS_UPDATE_SCHEDULED","REPORTS_DATA","REPORTS_CUSTOM","REPORTS_CUSTOM_PENDING","REPORTS_REMOVE_CUSTOM","REPORTS_UPDATE_CUSTOM","PROJECT_SET_ALL","PROJECT_ENDING_SET_ALL","MY_PROJECTS_SET_ALL","PROJECT_SET_NEW","PROJECT_SET","PROJECT_UPDATE_NEW","PROJECT_RESET_NEW","PROJECT_SET_FETCH_STATUS","PROJECTS_SET_PROJECTSPROPERTIES","PROJECT_UPDATE_AWARD_PHASE_STATUS","GLOBAL_PROJECT_SAVE_SUCCESS","PROJECT_UPDATE_CLOSING_DATE_CHANGED","DIVISION_SET_ALL","DEPARTMENT_SET","DEPARTMENT_SET_ALL","DEPARTMENTS_SET","DOCUMENT_SET_ALL","EXPIRED_DOCS_ALL","PENDING_DOCS_ALL","EMAIL_DOCS_ALL","DOCUMENT_EDIT","LEAD_AGENCY_NAME_SET_ALL","LEAD_AGENCY_NAME_SET","IRREVOCABLE_PERIOD_SET_ALL","IRREVOCABLE_PERIOD_SET","TERM_SET_ALL","CONTRACT_CATEGORY_SET_ALL","CONTRACT_CATEGORIES_SET","SOURCE_CATEGORY_SET_ALL","TRADE_AGREEMENT_SET_ALL","TRADE_AGREEMENT_SPA_SET_ALL","CONTRACT_CATEGORY_SET_STATUS","SOURCE_CATEGORY_SET_STATUS","COMMODITY_CATEGORIES_SET_STATUS","COMMODITY_CATEGORIES_SET","INSTRUCTION_TEMPLATES_SET_ALL","TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL","QUESTION_TEMPLATES_SET_ALL","SECUITY_TEMPLATES_SET_ALL","DOCUMENT_TEMPLATES_SET_ALL","TAX_SET_ALL","TAXES_SET_ALL","PROCUREMENT_TYPE_SET_ALL","PROCUREMENT_TYPE_SET","AWARD_EXCEPTIONS_SET_ALL","AWARD_EXCEPTION_SET","AWARDED_SET_ALL","AWARD_PROJECT_SUMMARY_SET","AWARD_ALL_APPROVALS_SET","AWARD_CURRENT_APPROVAL_SET","AWARD_SELECTED_SUPPLIERS_SET","AWARD_SELECTED_SUPPLIERS_UPDATE","AWARD_WORKFLOW_TYPE_SET","AWARD_APPROVAL_PUBLIC_SET","PROJECT_ERROR_SET","PROJECT_ERROR_UNSET","PROJECT_ERROR_UNSET_ALL","PROJECT_SET_SAVE_REQUIRED","PROJECT_BACKUP_SET","PROJECT_SET_LAST_SAVE","PROJECT_SET_LOCKED","PROJECT_ROLE_SET_ALL","PROJECT_VALIDATION_ERROR_SET","PROJECT_UPDATE_SUBMISSIONS","PROJECT_UPDATE_ADDENDUMS","PROJECT_UPDATE_VENDOR_QUESTIONS","PROJECT_UPDATE_PLANTAKERS","PROJECT_UPDATE_DOCUMENT","PROJECT_USER_SET_ALL","PROJECT_USER_ROLE_SET_ALL","PROJECT_UPDATE_SUPPLIERS","PROJECT_COMMENT_SET_ALL","PROJECT_SET_FORCE_VALIDATE_BACKDATE","PROJECT_TO_COPY_SET","PROJECT_TO_SAVE_AS_TEMPLATE_SET","USER_PROJECT_COMMENT_SET_ALL","PROJECT_TASK_SET_ALL","PROJECT_TASK_SET_ALL_BY_USER","PROJECT_USER_FETCH_STATUS_SET","PROJECT_JOURNAL_ENTRY_SET_ALL","PROJECT_JOURNAL_ENTRY_SET","PROJECT_JOURNAL_ENTRY_COMMENT_ADD","EVALUATION_SET_PROJECT_EVALUATION","EVALUATION_SET_EVALUATIONS","EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES","EVALUATION_SET_NON_DISCLOSURE_TEMPLATES","EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES","EVALUATION_SET_SCORE_CARD_TEMPLATES","INTAKE_SET_PROJECT_DATA","INTAKE_UPDATE_PROJECT_DATA","INTAKE_SET_PENDING_REQUESTS","INTAKE_SET_NEW_PROJECT_DATA","INTAKE_SET_REQUESTERS","INTAKE_SET_PROJECTS_ALL","SAVED_SEARCH_FILTERS_SET","PROJECT_SEARCH_SAVED_SET","PROJECT_SEARCH_FILTERS_SET","PROJECT_SEARCH_COLUMNS_SET","PROJECT_SEARCH_FILTERS_ACTIVE_SET","PROJECT_CAN_SAVE_SET","SAVED_PROJECT_SEARCH_SET_ALL","SAVED_SEARCH_SET_ACTIVE","TENDER_SET","TENDERNODE_SET","TENDERNODE_SAVE_REQUIRED","TENDER_SET_SEARCH","TENDERTABLE_SET_FROMDTO","TENDERTABLE_SET","TENDERTABLE_SET_SUMMARY","TENDERTABLE_ADD_OR_REPLACE_SUMMARY","TENDERTABLE_REMOVE_SUMMARY","TENDERTABLE_UPDATE","TENDERTABLE_CLEAR","TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL","TENDERTABLEROW_SET","TENDERTABLEROW_SET_FROMDTO","TENDERTABLEROW_CREATE","TENDERTABLEROW_REORDER","TENDERTABLEROW_DELETE","TENDERTABLEROW_CLEAR","TENDERTABLECOLUMN_SET","TENDERTABLECOLUMN_SET_FROMDTO","TENDERTABLECOLUMN_CREATE","TENDERTABLECOLUMN_REORDER","TENDERTABLECOLUMN_DELETE","TENDERTABLECOLUMN_CLEAR","TENDERTABLEROWCOLUMN_SET","TENDERTABLEROWCOLUMN_SET_FROMDTO","TENDERTABLEROWCOLUMN_CREATE","TENDERTABLEROWCOLUMN_DELETE","TENDERTABLEROWCOLUMN_CLEAR","TENDER_TYPE_SET_ALL","CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL","CONTRACT_DATELIST_SET_ALL","TERMS_SET_ALL","USER_SET","USER_SET_ALL","USER_SET_PURCHASERS","USER_CREATE","USER_ADD_GROUPS","USER_REPLACE_USERS_GROUP","USER_DELETE_USERS_GROUP","VENDOR_SET","VENDOR_SET_SEARCH","VENDOR_LISTS_SET","VENDOR_SET_SEARCH_TOTAL","VENDOR_LIST_SET","VENDOR_DOCUMENTS_SET","VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET","VENDOR_PERFORMANCE_SUMMARY_SET","VENDOR_PERFORMANCE","VENDOR_PERFORMANCE_REMOVE","VENDOR_PERFORMANCE_STATUS_LOG_SET","VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL","PERFORMANCE_STATUS_SET_SUMMARY","PERFORMANCE_STATUS_EVALUATION_SET","DASHBOARD_WIDGET_SET","DASHBOARD_USER_WIDGET_SET","DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET","DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET","SUPPLIER_SEARCH_RESULTS_SET","SUPPLIER_SEARCH_TERM_SET","SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET","PERMISSION_SET","ROUTEPERMISSION_SET","ROUTEPERMISSION_USER_SET","SSO_ACTIVE_SET","PROCUREMENT_METHOD_LIMITED_TYPES_SET","PROCUREMENT_METHOD_LIMITED_TYPE_SET","PERFORMANCE_EVALUATION_TYPE_SET_ALL","PERFORMANCE_TEMPLATE_SET_ALL","PERFORMANCE_WORKFLOW_SET","PERFORMANCE_STATUS_SET_ALL","PERFORMANCE_EVALUATION_STATUS_SET_ALL","SNAPSHOT_LAYOUT_SET_LIST","FEATURES_SET","SHOW_APP_BAR","USER_NAV_MENU_SET","ACTIVITY_FEED_MENU_SET","MESSAGE_CENTRE_MENU_SET","PROJECT_SNAPSHOT_SET","PROJECT_SNAPSHOT_TOGGLE","NO_REDIRECT_SET","state","getters","actions","commit","projectId","api","auditAggs","types.AUDIT_AGGREGATE_TYPES_SET","types.AUDIT_AGGREGATE_VENDORS_SET","types.AUDIT_AGGREGATE_USERS_SET","vendorId","types.AUDIT_VENDOR_AGGREGATE_TYPES_SET","types.AUDIT_AGGREGATE_SORTED_TYPES_SET","params","results","total","types.AUDIT_SEARCH_RESULTS_SET","types.AUDIT_SEARCH_RESULTS_TOTAL_SET","types.AUDIT_VENDOR_SEARCH_RESULTS_SET","types.AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET","mutations","auditAggSortedTypes","auditAggTypes","auditAggVendors","auditAggUsers","audit","isAuth","types.AUTH_SET_ISAUTH","types.AUTH_SET_TYPE","types.AUTH_SET_OPTION","model","err","types.AUTH_SET_HOST","types.AUTH_SET_CUSTOMER","types.AUTH_SET_USER","types.AUTH_SET_NODE","types.AUTH_SET_CUSTOMERNODE","istimeOut","isLocalAuth","hasLocalAuthOption","authHost","auth","customerId","userId","nodeId","customerNodeId","authCustomer","authUser","authTenderNode","authCustomerNode","authCredential","types.AWARD_APPROVAL_PUBLIC_SET","_","downloadApi","awardApproval","id","contractId","certificates","types.CERTIFICATES_SET","formData","uploadApi","certificate","types.CERTIFICATE_UPDATE_OR_ADD","types.CERTIFICATE_DELETE","matchedIndex","certificateId","certificateTypes","types.CERTIFICATE_TYPES_SET","certificateType","contractBondDocuments","types.CONTRACT_BOND_DOCUMENTS_SET","contractBondsDocument","types.CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD","types.CONTRACT_BOND_DOCUMENTS_DELETE","contractBondDocumentsId","cbd","contractBondDocument","contractBondDocumentTypes","types.CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL","contractBondDocumentType","types.CONTRACT_BOND_DOCUMENT_TYPE_SET","types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET","types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET","types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET","types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET","contractBuilderLicenseConfigurationDTO","isRequired","contractBuilderLicenseConfiguration","contractBuilderLicenseConfigurations","contractBuilderLicenseConfigurationsContractSignatures","documents","types.CONTRACT_DOCUMENTS_SET","contractDocument","types.CONTRACT_DOCUMENT_UPDATE_OR_ADD","types.CONTRACT_DOCUMENTS_DELETE","contractDocumentId","cd","performanceRatingDTO","types.CONTRACT_PERFORMANCE_RATING_SET","types.CONTRACT_PERFORMANCE_ADD","contractPerformanceEvaluation","performanceEvaluationId","types.CONTRACT_PERFORMANCE_EVALUATION","performanceFinalRatingDTO","types.CONTRACT_PERFORMANCE_FINAL_RATING_SET","performanceEvaluationStatusDTO","types.CONTRACT_PERFORMANCE_STATISTIC_SET","previewLinkDTO","v","role","newRole","types.CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET","types.CONTRACT_PERFORMANCE_REMOVE","types.VENDOR_PERFORMANCE_REMOVE","generalInputId","documentId","contractPerformanceRating","contractPerformanceFinalRating","contractPerformanceStatistics","performanceEvaluation","contractPerformancePreviewLinks","performanceEvaluations","contractPerformance","contractPOTypes","types.CONTRACTPOTYPES_TYPES_SET","contractPOType","contractVendorDocuments","types.CONTRACT_VENDOR_DOCUMENTS_SET","contractVendorDocument","types.CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD","types.CONTRACT_VENDOR_DOCUMENTS_DELETE","contractVendorDocumentId","vendorDocumentTypes","types.CONTRACT_VENDOR_DOCUMENT_TYPES_SET","vendorDocumentType","types.CONTRACT_VENDOR_DOCUMENT_TYPE_SET","contractVendorDocumentType","types.INSURANCE_DOCUMENTS_SET","insurance","types.INSURANCE_UPDATE_OR_ADD","types.INSURANCE_DOCUMENT_DELETE","insuranceDocument","insuranceId","insuranceTypes","types.INSURANCE_TYPES_SET","insuranceType","types.PERFORMANCE_EVALUATION_DOCUMENTS_SET","projectDocument","types.PERFORMANCE_EVALUATION_DOCUMENT_UPDATE","performanceDoc","performanceEvaluationDocuments","force","performanceEvaluationStatus","types.PERFORMANCE_EVALUATION_STATUS_SET_ALL","templates","performanceEvaluationStatus$1","performanceEvaluationTypes","types.PERFORMANCE_EVALUATION_TYPE_SET_ALL","performanceEvaluationType","performanceTemplates","types.PERFORMANCE_TEMPLATE_SET_ALL","performanceTemplate","performanceWorkflow","types.PERFORMANCE_WORKFLOW_SET","procurementMethodLimitedTypes","types.PROCUREMENT_METHOD_LIMITED_TYPES_SET","procurementMethodLimitedType","types.PROCUREMENT_METHOD_LIMITED_TYPE_SET","types.CONTRACT_SIGNATURE_SET","types.CONTRACT_SIGNATURES_FETCH_REQUIRED_SET","types.CONTRACT_SIGNATURES_SET","payload","uploadApiMultipart","details","signer","signers","contractSignature","contractSignatures","field","has","get","types.CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM","set","accountInfo","sectionName","section","items","types.CONTROL_PANEL_DROPDOWNS_SET","dropdownSettings","groupName","types.CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM","res","libraryContentTemplateDTO","libraryContent","types.CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM","resourceMessage","types.RESOURCE_MESSAGE_ALL_SET","systemContent","types.CONTROL_PANEL_SAVE_REQUIRED","types.CONTROL_PANEL_ERROR_SET","types.CONTROL_PANEL_ERROR_UNSET","types.CONTROL_PANEL_ERROR_UNSET_ALL","controlPanel","customer","types.CUSTOMER_SET","timeZone","types.CUSTOMER_SET_TIMEZONE","types.CUSTOMER_ALL_SET","timezones","types.TIMEZONE_ALL_SET","languages","types.LANGUAGE_ALL_SET","customerNode","types.CUSTOMERNODE_SET","types.SSO_ACTIVE_SET","customerSsoSaml","widgetType","types.DASHBOARD_WIDGET_SET","types.DASHBOARD_USER_WIDGET_SET","types.DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET","types.DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET","dashboard","newEmail","emailAggs","types.EMAIL_AGGREGATES_SET","types.EMAIL_SCHEDULED_AGGREGATES_SET","param","dateFrom","dateTo","emailProject","types.EMAIL_PROJECT_SET","types.SCHEDULED_EMAIL_PROJECT_SET","emailVendor","types.EMAIL_VENDOR_SET","email","types.EMAIL_UPDATE_NEW_EMAIL","projectUsers","types.EMAIL_SET_NEW_EMAIL_PROJECT_USERS","contacts","types.EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS","invitees","types.EMAIL_SET_NEW_EMAIL_INVITEES","types.EMAIL_SET_NEW_EMAIL_CONTRACT_ID","tenderId","types.EMAIL_SET_NEW_EMAIL_TENDER_ID","document","types.EMAIL_SET_NEW_EMAIL_DOCUMENT","types.EMAIL_SET_EMAIL_TEMPLATES","emailTemplateDTO","types.EMAIL_UPDATE_EMAIL_TEMPLATES","newEmailRequest","restrictedDomains","types.EMAIL_SET_EMAIL_RESTRICTED_DOMAINS","vendorEmailManagementDTOList","emailId","noteDTO","types.EMAIL_RESEND","forwardParam","template","types.EMAIL_UPDATE_EMAIL_RESTRICTED_DOMAINS","restrictedDomain","note","EvaluationService","evaluationApi","validateCredentials","getProjectEvaluation","createProjectEvaluation","getAllTemplates","getAllEvaluations","postProjectEvaluation","putProjectEvaluation","evaluationId","deleteProjectEvaluation","postCreateEvaluationCriteria","putEvaluationCriteria","criteriaId","getEvaluationCriteria","deleteEvaluationCriteria","reorderEvaluationCriteria","getEvaluationSection","sectionId","postCreateEvaluationSection","putEvaluationSection","deleteEvaluationSection","reorderEvaluationSections","types.EVALUATION_SET_PROJECT_EVALUATION","types.EVALUATION_SET_EVALUATIONS","types.EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES","types.EVALUATION_SET_NON_DISCLOSURE_TEMPLATES","types.EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES","types.EVALUATION_SET_SCORE_CARD_TEMPLATES","evaluation","commonDownload","types.EXPORTFILE_ADD","tenderStatus","types.EXPORTFILE_REMOVE","t","types.EXPORTFILE_READY","types.EXPORTFILE_RESTORE","tenders","types.EXPORTFILE_NOTIFICATIONADD","notification","types.EXPORTFILE_NOTIFICATIONCLEAR","tenderGuid","n","rootState","exportParam","planTakerSubmissionId","exportFile","types.SHOW_APP_BAR","types.NO_REDIRECT_SET","global","token","sanitizedEmail","sanitizedToken","sanitizedNewPassword","login","isOpen","types.USER_NAV_MENU_SET","types.ACTIVITY_FEED_MENU_SET","types.MESSAGE_CENTRE_MENU_SET","types.PROJECT_SNAPSHOT_SET","types.PROJECT_SNAPSHOT_TOGGLE","menus","types.PERMISSION_SET","permission","plantakers","types.PLANTAKER_SET","plantakerModel","plantakerSubmissionId","plantaker","projectRoles","types.PROJECT_ROLE_SET_ALL","projectRole","types.PROJECT_USER_FETCH_STATUS_SET","types.PROJECT_USER_SET_ALL","roleId","types.PROJECT_USER_ROLE_SET_ALL","projectUserId","projectUsersRole","projectUser","tender","awarded","types.AWARDED_SET_ALL","exceptions","types.AWARD_EXCEPTIONS_SET_ALL","awardException","types.AWARD_EXCEPTION_SET","awardSummary","types.AWARD_PROJECT_SUMMARY_SET","allApprovals","types.AWARD_ALL_APPROVALS_SET","newApproval","types.AWARD_CURRENT_APPROVAL_SET","approval","fileType","hasApprovalReport","workflowId","workflows","approvalId","types.AWARD_SELECTED_SUPPLIERS_UPDATE","types.AWARD_SELECTED_SUPPLIERS_SET","types.AWARD_WORKFLOW_TYPE_SET","exception","summary","currentApproval","b","sup","awards","forceUpate","types.CONTRACT_CATEGORY_SET_ALL","types.CONTRACT_CATEGORY_SET_STATUS","contractCategories","types.CONTRACT_CATEGORIES_SET","types.SOURCE_CATEGORY_SET_ALL","types.SOURCE_CATEGORY_SET_STATUS","sourceCategories","contractCategoriesAll","category","types.COMMODITY_CATEGORIES_SET","types.COMMODITY_CATEGORIES_SET_STATUS","commodityCategories","uri","suppliers","types.CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL","contractDateList","types.CONTRACT_DATELIST_SET_ALL","contract","forceUpdate","types.DEPARTMENTS_SET","departments","types.DEPARTMENT_SET_ALL","department","types.DEPARTMENT_SET","divisions","types.DIVISION_SET_ALL","division","types.DOCUMENT_SET_ALL","types.EXPIRED_DOCS_ALL","types.PENDING_DOCS_ALL","documentToDownload","documentList","types.EMAIL_DOCS_ALL","types.DOCUMENT_EDIT","document$1","group","types.DOCUMENT_TEMPLATES_SET_ALL","documentTemplate","isDevQA","FEATURE_CODES","buildFeatures","define_import_meta_env_default","defaultFeatures","featureId","enabled","message","moduleId","feature","module","types.FEATURES_SET","newFeatures","features","dispatch","types.INSTRUCTION_TEMPLATES_SET_ALL","instructionTemplate","irrevocablePeriods","types.IRREVOCABLE_PERIOD_SET_ALL","irrevocablePeriod","types.IRREVOCABLE_PERIOD_SET","leadAgencyName","types.LEAD_AGENCY_NAME_SET_ALL","types.LEAD_AGENCY_NAME_SET","procurementTypes","types.PROCUREMENT_TYPE_SET_ALL","procurementType","types.PROCUREMENT_TYPE_SET","procurementtype","projectPhases","sourceStatuses","sourceDateTypes","procurementMethods","procurementClassifications","contractStatuses","contractDateTypes","awardStatuses","filterDictionary","filterDictionaryMapper","projectSearchApi","buildSearchFilters","filter","getModifiedFiltersForApi","filters","clonedFilters","cloneDeep","intakeFilterKeys","entry","intakeObj","useVersionedApi","defaultApi","store","$store","useStore","getEndpointVersion","mapSearchResults","version","returnedData","errors","ProjectService","searchProjects","modifiedCriteriaForApi","projectTypes","projectStatus","sourceMethods","sourceClosingMethods","vendorSubmissionMethods","submissionMethod","submissionType","unsealManuallyType","projectSubmissionRequirements","bluePrintTypes","classifications","defaultState","numProjects","searchActive","types.PROJECT_SET_ALL","types.PROJECT_SEARCH_FILTERS_SET","types.PROJECT_SEARCH_FILTERS_ACTIVE_SET","types.PROJECT_ENDING_SET_ALL","myProjects","types.MY_PROJECTS_SET_ALL","types.PROJECT_SET_FETCH_STATUS","types.PROJECT_BACKUP_SET","types.PROJECT_SET_SAVE_REQUIRED","types.PROJECT_SET_FORCE_VALIDATE_BACKDATE","project","types.PROJECT_SET","match","jsonModel","intakeData","types.PROJECT_SET_NEW","types.PROJECT_UPDATE_NEW","types.PROJECT_RESET_NEW","newProject","types.GLOBAL_PROJECT_SAVE_SUCCESS","types.PROJECT_SET_LAST_SAVE","canSave","types.PROJECT_CAN_SAVE_SET","types.PROJECT_ERROR_SET","types.PROJECT_ERROR_UNSET","types.PROJECT_ERROR_UNSET_ALL","locked","types.PROJECT_SET_LOCKED","types.PROJECT_VALIDATION_ERROR_SET","types.PROJECTS_SET_PROJECTSPROPERTIES","submissions","types.PROJECT_UPDATE_SUBMISSIONS","addendums","types.PROJECT_UPDATE_ADDENDUMS","types.PROJECT_UPDATE_DOCUMENT","planTakers","types.PROJECT_UPDATE_PLANTAKERS","vendor","types.PROJECT_UPDATE_SUPPLIERS","vendorQuestions","types.PROJECT_UPDATE_VENDOR_QUESTIONS","projectToCopy","types.PROJECT_TO_COPY_SET","projectToSaveAsTemplate","types.PROJECT_TO_SAVE_AS_TEMPLATE_SET","types.PROJECT_UPDATE_AWARD_PHASE_STATUS","isChanged","types.PROJECT_UPDATE_CLOSING_DATE_CHANGED","projects","projectsEnding","merge","projectSaveRequired","updatedSub","pt","matchedPlantaker","pts","matchedSubIndex","sub","projectForceValidateBackDate","projectsProperties","success","types.PROJECT_COMMENT_SET_ALL","types.USER_PROJECT_COMMENT_SET_ALL","projectComments","projectComment","entries","types.PROJECT_JOURNAL_ENTRY_SET_ALL","newEntry","projectJournal","types.PROJECT_JOURNAL_ENTRY_SET","pinned","findIndex","comment","types.PROJECT_JOURNAL_ENTRY_COMMENT_ADD","projectJournalId","commentId","comments","projectJournalDocument","types.SAVED_SEARCH_FILTERS_SET","columns","clonedColumns","types.PROJECT_SEARCH_COLUMNS_SET","saved","types.PROJECT_SEARCH_SAVED_SET","parsedSearches","types.SAVED_PROJECT_SEARCH_SET_ALL","searches","idtl","x","NotAllowedError","search","NotFoundError","types.SAVED_SEARCH_SET_ACTIVE","isActive","projectSearch","types.PROJECT_TASK_SET_ALL","types.PROJECT_TASK_SET_ALL_BY_USER","projectTasks","projectTasksbyUser","projectTask","types.QUESTION_TEMPLATES_SET_ALL","questionTemplate","types.SECUITY_TEMPLATES_SET_ALL","securityTemplate","tax","types.TAX_SET_ALL","types.TAXES_SET_ALL","taxes","term","types.TERM_SET_ALL","terms","types.TERMS_SET_ALL","IntakeService","accessHeaders","uploadApiMultipartHeaders","accessApi","axios","formatter","IsCustomerNodeAssigned","mapIntakePutData","contactDetails","projectDetail","financialDetails","mapIntakeFetchData","mapIntakePostData","baseIntakeRequest","mappedData","doc","MapIntakePendingRequests","fields","getIntakeGuide","intakeGuideUrl","getIntakeContextData","intakeContextUrl","getIntakeProjectData","intakeId","intakeProjectUrl","getIntakeProjectDataModifier","postIntakeData","intakePostUrl","approveDeclineIntakeProject","reason","updateIntakeProject","updatedIntakeProject","uploadIntakeDocuments","getIntakeRequests","intakePendingRequestsUrl","downloadPdf","getIntakeRequesters","getSearchResults","getIntakeToken","fileName","projectClassifications","sourceLabels","baseProjectDetailsModel","baseContactDetailsModel","baseProjectValueModel","types.INTAKE_SET_PROJECT_DATA","updateResponse","types.INTAKE_UPDATE_PROJECT_DATA","rootGetters","types.INTAKE_SET_PENDING_REQUESTS","types.INTAKE_SET_NEW_PROJECT_DATA","types.INTAKE_SET_REQUESTERS","types.INTAKE_SET_PROJECTS_ALL","intakeProjectData","intakePendingRequests","newProjectData","requesters","intake","types.TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL","termsAndConditions","tradeAgreements","types.TRADE_AGREEMENT_SET_ALL","tradeAgreementsSPA","types.TRADE_AGREEMENT_SPA_SET_ALL","tradeagreement","MAX_THUMBNAIL_CACHE_TIME","types.REPORTS_ADDTHUMBNAIL","thumbnail","types.REPORTS_THUMBNAILNAMES","names","types.REPORTS_REPORTCATEGORIES","categories","types.REPORTS_SUBSCRIBED","subscribed","types.REPORTS_REMOVE_RECIPIENT","recipientId","types.REPORTS_SCHEDULED","scheduled","types.REPORTS_REMOVE_SCHEDULED","scheduledReportId","types.REPORTS_UPDATE_SCHEDULED","scheduledReport","report","types.REPORTS_THUMBNAILCATEGORY","opts","types.REPORTS_DATA","types.REPORTS_CUSTOM","custom","types.REPORTS_REMOVE_CUSTOM","customReportId","types.REPORTS_UPDATE_CUSTOM","customReport","types.REPORTS_CUSTOM_PENDING","customReports","reportType","reportName","testReportInfo","reportUrl","reportData","reports","defaultPerformanceReport","initialState","update","reportsWizard","types.ROUTEPERMISSION_SET","routePermission","routePermissionUser","types.ROUTEPERMISSION_USER_SET","l","layoutList","types.SNAPSHOT_LAYOUT_SET_LIST","list","serverList","getResp","snapshotLayout","submission","searchTerm","types.SUPPLIER_SEARCH_TERM_SET","searchResults","types.SUPPLIER_SEARCH_RESULTS_SET","suppliersSearch","ttc","tenderTableId","types.TENDERTABLECOLUMN_SET_FROMDTO","types.TENDERTABLECOLUMN_CREATE","types.TENDERTABLECOLUMN_SET","types.TENDERTABLECOLUMN_REORDER","tenderTableColumnId","types.TENDERTABLECOLUMN_DELETE","types.TENDERTABLECOLUMN_CLEAR","vals","updatedCol","colIndex","nextSortOrder","newTargetIndex","movedElems","newIndex","matchedCol","a","tendertablecolumn","types.TENDERTABLEROWCOLUMN_SET_FROMDTO","types.TENDERTABLEROWCOLUMN_CREATE","types.TENDERTABLEROWCOLUMN_SET","types.TENDERTABLEROWCOLUMN_DELETE","types.TENDERTABLEROWCOLUMN_CLEAR","ttrc","tendertablerowcolumn","types.TENDERTABLEROW_CLEAR","types.TENDERTABLEROW_SET_FROMDTO","types.TENDERTABLEROW_CREATE","types.TENDERTABLEROW_SET","types.TENDERTABLEROW_REORDER","tenderTableRowId","types.TENDERTABLEROW_DELETE","ttr","updatedRow","rowIndex","matchedRow","tendertablerow","types.TENDERTABLE_CLEAR","tenderTable","types.TENDERTABLE_SET_FROMDTO","types.TENDERTABLE_SET_SUMMARY","prop","types.TENDERTABLE_SET","tenderTableSummary","types.TENDERTABLE_UPDATE","types.TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL","types.TENDERTABLE_ADD_OR_REPLACE_SUMMARY","tenderTableIds","types.TENDERTABLE_REMOVE_SUMMARY","tenderTableList","tts","tendertable","tenderNode","types.TENDERNODE_SET","tenderNodeId","newTenderNode","types.TENDERNODE_SAVE_REQUIRED","types.TENDER_SET","connectAmpersand","types.TENDER_SET_SEARCH","tenderTypes","types.TENDER_TYPE_SET_ALL","alphaSort","getDate","getString","sortDateBy","dateField","dateA","dateB","sortStringBy","compA","compB","aSortDateBy","reverse","arrCopy","aSortStringBy","CustomerMapper","mapUsersFromVersionedEndpoint","userData","users","mapGroupsFromVersionedEndpoint","groupsData","groups","userIds","rest","CustomerService","getUsers","reqParams","getUserGroups","forceRefresh","types.GROUP_SET_GROUPS","groupIds","types.USER_REMOVE_GROUPS","types.USER_ADD_GROUPS","types.GROUP_SET_SIDEBAR_VISIBILITY","types.GROUP_TOGGLE_SIDEBAR_VISIBILITY","types.GROUP_SET_ACTIVE_USERS_IN_GROUP","types.GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP","types.GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY","isVisible","userList","u","types.USER_SET","g","types.USER_SET_ALL","types.USER_SET_PURCHASERS","types.USER_REPLACE_USERS_GROUP","groupId","types.USER_DELETE_USERS_GROUP","avatarRoute","types.USER_CREATE","updatedProcurementLeads","userGroupIds","groupIndex","groupMatchIndex","lists","types.VENDOR_LISTS_SET","vendorListId","vendorlist","types.VENDOR_LIST_SET","vendorInvitationList","criteria","searchCriteraResults","types.INVITATION_SET_SEARCH_CRITERIA_RESULT","types.INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT","searchTenderResults","types.INVITATION_SET_SEARCH_TENDER_RESULT","types.INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE","count","vendorInvitation","performanceStatuses","types.PERFORMANCE_STATUS_SET_ALL","types.PERFORMANCE_STATUS_SET_SUMMARY","satisfactory","nonSatisfactory","types.PERFORMANCE_STATUS_EVALUATION_SET","performanceStatus","performanceSummary","performanceStatusEvaluation","cancelTokenSource","types.VENDOR_SET","types.SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET","types.VENDOR_SET_SEARCH","types.VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET","types.VENDOR_SET_SEARCH_TOTAL","vendorDiversityClassificationTypeDescription","vendors","rowCount","history","vendorDiversityClassificationType","vendorQuestion","answerViaEmail","vendorquestion","vendorDocuments","types.VENDOR_DOCUMENTS_SET","vendorDocument","performance","types.VENDOR_PERFORMANCE_SUMMARY_SET","vendorPerformanceEvaluation","types.VENDOR_PERFORMANCE","types.VENDOR_PERFORMANCE_STATUS_LOG_SET","statusLog","fromHistory","types.VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL","vendorPerformanceStatusLog","vendorPerformanceStatusLogHistory","complete","vendorPerformance","authGuid","ls","SecureLS","Vuex","debug","createPersistedState","apiHeaders","replaceString","baseString","processConfig","replaceTagsInData","allowedEndpoints","isAllowedEndpoint","endpoint","handleUiError","handleUiWarning","handleApiError","title","msg","route","useErrorNotification","$route","useRoute","$router","useRouter","notifyApiError","m","Notification","errorHandler","validEmail","emailRegexPattern","isValid","splitVal","ii","cleanVal","emailUtil","showLoading","hideLoading","useElementLoading","Loading","nextTick","setTreeNodeDisabled","node","disabled","newNode","child","uiHandler","emailWizardMixins","emailProjUsers","registeredCompanies","filteredInvitees","rc","mapActions","property","clonedEmail","tokens","columnDefs","_sfc_main$12","newTemplate","et","multi","mand","columnDropdown","TableMixins","totalPages","column","filteredData","startIndex","endIndex","row","dateTypeCols","a1","b1","columnName","_sfc_main$11","tableMixins","filteredList","tm","selectedRows","contact","_sfc_main$10","preview","sendDateUtc","newMailRequest","accountInfoImage","emailSentImage$1","intakeUnvailableImage","projectSearchImage","projectValidationErrorImage","uploadDocumentImage","UseImages","emailSentImage","WizardBus","_sfc_main$_","EmailWizardStepContacts","EmailWizardStepCompose","EmailWizardStepPreview","EmailWizardStepSent","invs","inv","__$_require_7c6ae7a0__","className","useClickOutside","elementRef","callback","isClickOutside","checkClickOutside","onMounted","onUnmounted","dropdown","menu","focusedIndex","router","controlClasses","menuClasses","classes","moveMenuToDropdown","handleResize","toggleDropdown","handleTabKey","focusable","handleKeydown","handleClickMenu","targetElement","to","handleClickOutsideMenu","onBeforeUnmount","$slots","dynamicComponent","AppDropdown","AppButton","RouterLink","additionalAttrs","attrs","navItems","handleClickProjectSearch","hasSupplierDashboard","hasContractorPerformance","checkIsCurrentRoute","configureDropdownNavChildren","onBeforeMount","switchAgency","drpSwitchAgencyEl","isSiteAdmin","switchAgencyBlocked","customerAll","myProfileUrl","switchAgencyAction","logoutUser","handleClick","useFeatureHelpers","givenStore","storeToUse","navBlockedError","isFeatureEnabled","isModuleEnabled","featureGateRoute","from","next","nextPath","moduleGateRoute","menuId","settingsMenuOpen","settingsMenuEl","settingsMenuControlEl","navEl","listEl","linkList","setLinkList","closeButton","openSettingsMenu","handleArrowDown","activeElement","activeElementIndex","handleArrowUp","handleCloseSettingsMenu","focusOnControl","handleKeyPress","lastItem","getNavItems","navs","handleEvaluatorPortal","bindKeyEvent","handleClickOutsideNavMenu","__$_require_06894fb0__","AppUserNav","AppMainNav","AppSettingsNav","createCompletedSubmissionsAllNotification","thisComponent","notify","AppBar","newPath","path","clearProject","connection","signalrHubProxy","localStorageCustomerId","localStorageNodeId","walkmeCode","walkmeAdded","currentEnvironment","devURL","stageURL","walkmeScript","jiraScript","zenvaScript","proxied","logo$2","logo","logo$1","action","modalModes","AppLoading","Icons","IDoc","VuePdfEmbed","IDocument","DocumentPreview","wizardStepDef","approvalTypes","approvalStatus","addNewMemberTypes","AwardApprovalHeader","AwardApprovalFooter","AwardApprovalActions","AwardApprovalDocsList","AwardApprovalDoc","AwardApprovalSummary","AwardApprovalUnavailable","AwardApprovalDocPreview","AwardApprovalModal","errorMessages","docIndex","_sfc_main$C","command","promises","currentDate","docsWithExpiry","bondTypes","vendorDocTypes","docTypes","feedItems","procLead","docType","docCategory","isNew","noReplacement","type","docContractAdmin","admin","projEndingsParams","proj","expiresDate","closeDiff","avatar","today","endingDate","docs","pendingDocs","removeIndex","fetcher","getter","updater","_sfc_main$x","DashboardComponent","OverviewProjects","OverviewDocumentUploads","OverviewProjectsEnding","OverviewExpiredDocs","tab","_sfc_main$u","Activity","FeedItem","phase","__$_require_9670b070__","eventTypes","calendarViews","statusTypes","statusColorsMap","statusTextColorsMap","_sfc_main$s","VueCal","CalendarEvent","eventMap","newArr","startDate","endDate","eventType","NULL_DATE","NULL_GUID","StructNewProjectData","MeetingLocationStruct","TeamMemberStruct","UseIntakeNewProject","intakeService","hasIntakeNewProjectData","getMappedProcurementType","procurementTypeText","getUserOrTeamMember","firstName","lastName","userInStore","mapLocationsToSiteMeetings","locations","city","country","postalCode","province","streetAddress","unit","tempId","locationString","mapIntakeDataToProjectData","emails","dataFromIntake","bidClassification","sourceDataFromIntake","requestor","contractDataFromIntake","getIntakeDataById","createProjectFromIntakeData","transformData","dto","exportTableToXLS","exportData","exportFromJSON","viewString","closeDialog","approveDialog","customToolBar","formatDate","dateString","declineDetails","declineRequest","dateModified","_sfc_main$o","ApproveModal","DeclineModal","showVal","dept","members","aFN","bFN","a2","c1","c2","columnDef","fullIntakeData","ui","statusCode","exportAll","__$_require_07cdd3fa__","dashboardListComponent","_l","_k","_o","_n","_m","_r","_q","_p","_u","_t","_s","_sfc_main$l","_sfc_main$k","closingDate","daysLeft","obj","userObj","range","statusString","__$_require_8ae070e8__","DashboardFeed","filterText","widget","clonedWidgetsToAdd","myTasksWidgetId","w","intakeSVG","buyerDashboardWidgets","LAYOUT_COLUMNS","ROW_HEIGHT","MARGIN_SIZE","MAX_HEIGHT","_sfc_main$g","AppTag","DashboardStat","DashboardList","DashboardProjectsBuyers","DashboardImportantDates","DashboardProjectCounter","DashboardBuyerOverview","DashboardTasksFeed","DashboardProjectsTeamMembers","DashboardIntakeEssentials","DashboardIntakeEssentialsButton","AddWidgetModal","VueGridLayout","widgetList","userWidgets","layoutDTO","featureGateComponents","projCommentParams","widgetsArray","widgetMinWidth","widgetMinHeight","maxHeights","startCol","startHeight","col","curHeight","isRoom","layout","widgetName","comp","clone","newX","newY","appIcon","AgencyDetailsBilling","customerList","check","start","AgencyDetails","AgencyActivity","PurchaseHistory","valid","previousEndDate","_sfc_main$a","AgencyTransactionsModal","bPeriod","configList","periods","activityList","currentPeriod","auditEvent","sortBy","ChartJS","Title","Tooltip","Legend","ArcElement","CategoryScale","Pie","performanceRatingScales","expired","inprogress","interim","final","toRefs","hasSubtext","marker","markerClass","chartColors","totalEvaluations","satisfactoryPct","nonSatisfactoryPct","datasets","chartData","labelSatisfactory","labelUnsatisfactory","pctFormat","numFormat","_sfc_main$5","PieChart","PctSatisfactoryChart","OverviewDataCard","ChartDataCard","foreground","background","textColor","heroImage","logoColorFallback","TooltipTypes","useStandardInput","overrides","touched","firstPass","tooltip","hiddenEl","contentOverflowing","errorMessage","tooltipType","showRequiredError","EstablishEvents","OnBlur","OnInputChanged","ValidateValue","UseAppropriateValidation","checkOverflow","ManageTooltip","AssignTooltipText","CreateOverflowCheck","inputEl","transformedValue","svg","proflag","showFallbackImage","Logo","text","externalURLPrivacy","externalURLContactUs","copyright","externalURLBids","_sfc_main$1","VueForm","AppLogo","AppInputText","LoginFooter","newval","oldval","domain","min","max","markup","letter","ControlPanelRoutes","__vitePreload","docsRoutes","ProjectAwardRoutes","ProtectLockedProjectSubreq","isLocked","ProjectBuildRoutes","ProjectContractRoutes","ProjectEvaluateRoutes","ProjectIntakeRoutes","ProjectIntakeViewRoutes","ProjectSourceRoutes","ProjectRoutes","ReportsRoutes","SupplierRoutes","TeamRoutes","Router","DocsDevRedirect","UseDocsRoutes","DocsRoutes","ApprovalView","LoginView","BuyerDashboardView","SupplierDashboardView","ContractBuilderDashboardView","ProjectBusView","zenvaVerticalPosition","zenvaHorizontalPosition","record","passthrough","extendElementUIComponents","extendedDropdown","Dropdown","extendedTable","Table","lang","ElementUI","VueDraggable","CKEditor","AppGrid","AppEmpty","AppGridPagination","AppGridActions","AppSidebar","AppPanel","AppPanelHeader","AppPanelContent","AppTitle","AppReveal","AppToolbar","AppToolbarGroup","AppListGroup","AppListGroupItem","AppAvatar","AppInput","AppField","AppCheckbox","AppDialogBox","AppRadio","AppIcon","AppInputFile","AppEditor","AppColumnButton","AppSelect","EmailWizard","ProjectViewWrapper","AppSwitch","AppPermissionTooltip","AppPublicVisibilityWarning","AppPublicVisibilityLabel","AppPrivateFieldWarning","AppPrivateFieldLabel","AppWidget","AppVerifiedCheckmark","Trap","DateStringFilter","DateStringFilterShort","CurrencyCommaFilter","CapitalizeFilter","App","h"],"ignoreList":[],"sources":["../../../src/utils/dataSanitizing.js","../../../src/components/app-avatar/app-avatar.vue","../../../src/components/app-button/app-button.vue","../../../src/composables/permissions/permissionLevels.js","../../../src/security/permissions/permissions-definitions.js","../../../src/security/permissions/permissions-mixins.js","../../../src/mixins/input-permission-mixins.js","../../../src/components/app-checkbox/app-checkbox.vue","../../../src/components/app-dialog/app-dialogbox.vue","../../../src/components/app-permission-tooltip/app-permission-tooltip.vue","../../../src/components/app-editor/colors.js","../../../src/components/app-editor/app-editor.vue","../../../src/components/app-empty/app-empty.vue","../../../src/components/app-field/app-field.vue","../../../src/components/app-grid/app-grid.vue","../../../src/components/app-grid/app-grid-actions/app-grid-actions.vue","../../../src/components/app-grid/app-grid-pagination/app-grid-pagination.vue","../../../src/components/app-icon/app-icon.vue","../../../src/components/app-input-file/app-input-file.vue","../../../src/components/app-input/app-input.vue","../../../src/components/app-listgroup/app-listgroup.vue","../../../src/components/app-listgroup/app-listgroup-item.vue","../../../src/components/app-panel/app-panel.vue","../../../src/components/app-panel/app-panel-header.vue","../../../src/components/app-panel/app-panel-content.vue","../../../src/components/app-private-field-warning/app-private-field-warning.vue","../../../src/components/app-public-visibility-warning/app-public-visibility-warning.vue","../../../src/components/app-radio/app-radio.vue","../../../src/components/app-reveal/app-reveal.vue","../../../src/components/app-select/app-select.vue","../../../src/components/app-sidebar/app-sidebar.vue","../../../src/components/app-switch/app-switch.vue","../../../src/components/app-title/app-title.vue","../../../src/components/app-toolbar/app-toolbar.vue","../../../src/components/app-toolbar/app-toolbar-group.vue","../../../src/components/app-verified-checkmark/app-verified-checkmark.vue","../../../src/components/app-widget/app-widget.vue","../../../src/filters/capitalize.js","../../../src/filters/currencyComma.js","../../../src/utils/dayjs.js","../../../src/filters/dateString.js","../../../src/filters/dateStringShort.js","../../../src/plugins/i18n.js","../../../src/mixins/wizard-mixins.js","../../../src/utils/utility.js","../../../src/store/mutation-types.js","../../../src/store/modules/audit/audit.js","../../../src/store/modules/auth.js","../../../src/store/modules/authCredential.js","../../../src/store/modules/awards/award-approval.js","../../../src/store/modules/contract/certificate.js","../../../src/store/modules/contract/certificateType.js","../../../src/store/modules/contract/contractBondDocument.js","../../../src/store/modules/contract/contractBondDocumentType.js","../../../src/store/modules/contract/contractBuilderLicenseConfiguration.js","../../../src/store/modules/contract/contractDocument.js","../../../src/store/modules/contract/contractPerformance.js","../../../src/store/modules/contract/contractPOType.js","../../../src/store/modules/contract/contractVendorDocument.js","../../../src/store/modules/contract/contractVendorDocumentType.js","../../../src/store/modules/contract/insurance.js","../../../src/store/modules/contract/insuranceType.js","../../../src/store/modules/contract/performanceEvaluationDocuments.js","../../../src/store/modules/contract/performanceEvaluationStatus.js","../../../src/store/modules/contract/performanceEvaluationType.js","../../../src/store/modules/contract/performanceTemplate.js","../../../src/store/modules/contract/performanceWorkflow.js","../../../src/store/modules/contract/procurementMethodLimitedType.js","../../../src/store/modules/contract/signature.js","../../../src/store/modules/control-panel/account-info.js","../../../src/store/modules/control-panel/dropdown-settings.js","../../../src/store/modules/control-panel/library-content.js","../../../src/store/modules/control-panel/system-content.js","../../../src/store/modules/control-panel/control-panel.js","../../../src/store/modules/customer/customer.js","../../../src/store/modules/customer/node/customerNode.js","../../../src/store/modules/customerSsoSaml/customerSsoSaml.js","../../../src/store/modules/dashboard/dashboard.js","../../../src/store/modules/email/email.js","../../../src/services/evaluation/evaluation.service.js","../../../src/store/modules/evaluation/evaluation.module.js","../../../src/store/modules/exportFile/exportFile.js","../../../src/store/modules/global.js","../../../src/store/modules/login/login.js","../../../src/store/modules/menus/menus.js","../../../src/store/modules/permission/permission.js","../../../src/store/modules/plantaker/plantaker.js","../../../src/store/modules/project-role/project-role.js","../../../src/store/modules/project-user/project-user.js","../../../src/store/modules/project/awards.js","../../../src/store/modules/project/category.js","../../../src/store/modules/project/commodityCategories.js","../../../src/store/modules/project/contract.js","../../../src/store/modules/project/department.js","../../../src/store/modules/project/division.js","../../../src/store/modules/project/document.js","../../../src/store/modules/project/documentTemplate.js","../../../src/utils/environments.js","../../../src/store/modules/features/features.js","../../../src/store/modules/project/instructionTemplate.js","../../../src/store/modules/project/irrevocablePeriod.js","../../../src/store/modules/project/leadAgencyName.js","../../../src/store/modules/project/procurementtype.js","../../../src/views/projects/project-search-view/project-search-definitions.js","../../../src/composables/api/projectSearchApi.js","../../../src/composables/api/useVersionedApi.js","../../../src/services/project/project.service.js","../../../src/views/projects/project-new-wizard-view/project-wizard-defs.js","../../../src/store/modules/project/project.js","../../../src/store/modules/project/ProjectComment.js","../../../src/store/modules/project/projectJournal.js","../../../src/store/modules/project/projectJournalDocument.js","../../../src/store/modules/project/projectSearch.js","../../../src/store/modules/project/ProjectTask.js","../../../src/store/modules/project/questionTemplate.js","../../../src/store/modules/project/securityTemplate.js","../../../src/store/modules/project/tax.js","../../../src/store/modules/project/term.js","../../../src/services/intake/intake.service.js","../../../src/store/modules/intake/intakeStoreConstants.js","../../../src/store/modules/intake/intake.module.js","../../../src/store/modules/project/termsAndConditions.js","../../../src/store/modules/project/tradeagreement.js","../../../src/store/modules/reports/reports.js","../../../src/store/modules/reports/reports-wizard.js","../../../src/store/modules/routePermission/routePermission.js","../../../src/store/modules/snapshot/layout.js","../../../src/store/modules/submission/submission.js","../../../src/store/modules/suppliers/suppliers-search.js","../../../src/store/modules/tender-table-column/tender-table-column.js","../../../src/store/modules/tender-table-row-column/tender-table-row-column.js","../../../src/store/modules/tender-table-row/tender-table-row.js","../../../src/store/modules/tender-table/tender-table.js","../../../src/store/modules/tender/node/tenderNode.js","../../../src/store/modules/tender/tender.js","../../../src/utils/array.js","../../../src/services/customer/customer.service.js","../../../src/store/modules/user/group.js","../../../src/store/modules/user/user.js","../../../src/store/modules/vendor-invitation-list/vendor-invitation-list.js","../../../src/store/modules/vendor/invitation.js","../../../src/store/modules/vendor/performanceStatus.js","../../../src/store/modules/vendor/vendor.js","../../../src/store/modules/vendor/vendor-question.js","../../../src/store/modules/vendor/vendorDocument.js","../../../src/store/modules/vendor/vendorPerformance.js","../../../src/store/index.js","../../../src/api/api.js","../../../src/utils/error.js","../../../src/utils/email.js","../../../src/utils/ui.js","../../../src/views/email-wizard/email-wizard-mixins.js","../../../src/views/email-wizard/email-wizard-steps/email-wizard-step-compose/tokens.js","../../../src/views/email-wizard/email-wizard-steps/email-wizard-step-compose/email-wizard-step-compose.js?vue&type=script&src=true&lang.js","../../../src/mixins/table-mixins.js","../../../src/views/email-wizard/email-wizard-steps/email-wizard-step-contacts/email-wizard-step-contacts.js?vue&type=script&src=true&lang.js","../../../src/views/email-wizard/email-wizard-steps/email-wizard-step-preview/email-wizard-step-preview.js?vue&type=script&src=true&lang.js","../../../src/assets/images/SVGs/account-info.svg","../../../src/assets/images/SVGs/email-wizard-sent.svg","../../../src/assets/images/SVGs/intake-unavailable.svg","../../../src/assets/images/SVGs/project-search.svg","../../../src/assets/images/SVGs/project-validation-error.svg","../../../src/assets/images/SVGs/uploadDocument.svg","../../../src/composables/useImages.js","../../../src/views/email-wizard/email-wizard-steps/email-wizard-step-sent/email-wizard-step-sent.vue","../../../src/views/email-wizard/email-wizard-view.js?vue&type=script&src=true&lang.js","../../../src/assets/images/SVGs/access_denied.svg","../../../src/views/projects/project-view/project-components/project-view-wrapper.vue","../../../src/composables/clickOutside.js","../../../src/components/app-dropdown/app-dropdown.vue","../../../src/components/app-bar/app-bar-item.vue","../../../src/components/app-mainnav/app-main-nav.vue","../../../src/components/app-user-nav/app-user-nav.vue","../../../src/components/app-button/app-hamburger-button.vue","../../../src/utils/featureHelpers.js","../../../src/components/app-button/app-close-button.vue","../../../src/components/app-settings-nav/app-settings-nav-items.js","../../../src/components/app-settings-nav/app-settings-nav.vue","../../../src/assets/images/logo/B&T_Logo_Name_White.svg","../../../src/components/app-bar/app-bar.vue","../../../src/utils/notification.js","../../../src/App.vue","../../../src/assets/images/bandt-logo-inverse.svg","../../../src/views/award-approval/layout/award-approval-header.vue","../../../src/assets/images/logo-small-inverse.svg","../../../src/views/award-approval/layout/award-approval-footer.vue","../../../src/views/award-approval/actions/award-approval-actions.vue","../../../src/views/award-approval/docs/award-approval-docs-list.vue","../../../src/components/app-loading/app-loading.vue","../../../src/views/award-approval/actions/award-approval-action-modal.vue","../../../src/views/award-approval/mixins/award-approval-mixins.js","../../../src/views/award-approval/docs/award-approval-doc.vue","../../../src/views/award-approval/award-approval-summary.vue","../../../src/components/document-preview/document-preview.vue","../../../src/views/award-approval/docs/award-approval-doc-preview.vue","../../../src/views/award-approval/award-approval-unavailable.vue","../../../src/views/projects/project-view/project-sub-views/award/award-approval-view/award-approval-wizard/approval-wizard-defs.js","../../../src/views/award-approval/award-approval-view.vue","../../../src/components/app-tag/app-tag.vue","../../../src/views/dashboard/components/dashboard-component/dashboard-component.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/components/dashboard-buyer-overview/overview-expired-docs/overview-expired-docs.vue","../../../src/views/dashboard/components/dashboard-buyer-overview/overview-projects-ending/overview-projects-ending.vue","../../../src/views/dashboard/components/dashboard-buyer-overview/overview-projects/overview-projects.vue","../../../src/views/dashboard/components/dashboard-buyer-overview/overview-uploads/overview-uploads.vue","../../../src/views/dashboard/components/dashboard-buyer-overview/dashboard-buyer-overview.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/components/dashboard-feed-component/dashboard-feed-component-item.vue","../../../src/views/dashboard/components/dashboard-item-activity.vue","../../../src/views/dashboard/components/dashboard-feed-component/dashboard-feed-component.js?vue&type=script&src=true&lang.js","../../../src/assets/images/SVGs/NoComment.svg","../../../src/views/dashboard/dashboard-defs.js","../../../src/views/dashboard/components/dashboard-important-dates/dashboard-important-dates-event.vue","../../../src/views/dashboard/components/dashboard-important-dates/dashboard-important-dates.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/components/dashboard-intake-essentials/dashboard-intake-essentials-button.vue","../../../src/utils/constants.js","../../../src/composables/project/newIntakeProject.js","../../../src/utils/exportTable.js","../../../src/views/projects/project-view/project-sub-views/intake/modals/intake-view-approve-modal.vue","../../../src/views/projects/project-view/project-sub-views/intake/modals/intake-view-decline-modal.vue","../../../src/views/dashboard/components/dashboard-intake-essentials/dashboard-intake-essentials-component.js?vue&type=script&src=true&lang.js","../../../src/assets/images/SVGs/intake-no-requests.svg","../../../src/views/dashboard/components/dashboard-list-component.vue","../../../src/views/dashboard/components/dashboard-project-counter-component/dashboard-project-counter-component.vue","../../../src/views/dashboard/components/dashboard-projects-buyers-component/dashboard-projects-buyers-component.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/components/dashboard-projects-team-members-component/dashboard-projects-team-members-component.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/components/dashboard-stat-component.vue","../../../src/assets/images/SVGs/NoTask.svg","../../../src/views/dashboard/components/dashboard-tasks-feed/dashboard-tasks-feed.vue","../../../src/views/dashboard/buyer-dashboard-view/add-widget-modal/add-widget-modal.vue","../../../src/assets/images/icon-intake.svg","../../../src/views/dashboard/buyer-dashboard-view/buyer-dashboard-widgets.js","../../../src/views/dashboard/buyer-dashboard-view/buyer-dashboard-view.js?vue&type=script&src=true&lang.js","../../../src/views/dashboard/contract-builder-dashboard-view/agency-details/agency-details-billing-period.vue","../../../src/views/dashboard/contract-builder-dashboard-view/agency-details/agency-details-section.vue","../../../src/views/dashboard/contract-builder-dashboard-view/agency-activity/agency-activity-section.vue","../../../src/views/dashboard/contract-builder-dashboard-view/agency-purchase-history/agency-purchase-history-section.vue","../../../src/views/dashboard/contract-builder-dashboard-view/agency-transactions-modal.vue","../../../src/views/dashboard/contract-builder-dashboard-view/contract-builder-dashboard-view.js?vue&type=script&src=true&lang.js","../../../src/components/pie-chart/pie-chart.vue","../../../src/views/projects/project-view/project-sub-views/contract/contract-performance-view/contract-performance-view-definitions.js","../../../src/views/dashboard/supplier-dashboard-view/supplier-dashboard-components/chart-data-card.vue","../../../src/views/dashboard/supplier-dashboard-view/supplier-dashboard-components/overview-data-card.vue","../../../src/views/dashboard/supplier-dashboard-view/supplier-dashboard-components/pct-satisfactory-chart.vue","../../../src/views/dashboard/supplier-dashboard-view/supplier-dashboard-view.js?vue&type=script&src=true&lang.js","../../../src/assets/images/SVGs/heroLarge@2x.svg","../../../src/assets/images/BTLogos/PNG/B&T_Logo_Name_Colour.png","../../../src/assets/images/BTLogos/SVG/B&T_Logo_Name_Colour.svg","../../../src/composables/input.js","../../../src/components/app-input-text/app-input-text.vue","../../../src/components/app-logo/app-logo.vue","../../../src/views/login/login-view/login-view-footer.vue","../../../src/views/login/login-view/login-view.js?vue&type=script&src=true&lang.js","../../../src/views/projects/project-view/project-bus-view/project-bus-view.vue","../../../src/router/control-panel/control-panel-routes.js","../../../src/router/docs/routes-docs.js","../../../src/router/project/project-award-routes.js","../../../src/router/project/project-build-routes.js","../../../src/router/project/project-contract-routes.js","../../../src/router/project/project-evaluate-routes.js","../../../src/router/project/project-intake-routes.js","../../../src/router/project/project-intake-view-routes.js","../../../src/router/project/project-source-routes.js","../../../src/router/project/project-routes.js","../../../src/router/reports/reports-routes.js","../../../src/router/supplier/supplier-routes.js","../../../src/router/team/team-routes.js","../../../src/router/index.js","../../../src/utils/accessibilityPatches.js","../../../src/main.js"],"sourcesContent":["/* eslint-disable no-useless-escape */\r\nimport DOMPurify from 'dompurify'\r\n\r\n// default implicitly blocked tags\r\nexport const FORBID_TAGS = [\r\n 'base',\r\n 'basefont',\r\n 'command',\r\n 'embed',\r\n 'frame',\r\n 'frameset',\r\n 'iframe',\r\n 'keygen',\r\n 'link',\r\n 'meta',\r\n 'noframes',\r\n 'noscript',\r\n 'object',\r\n 'param',\r\n 'script',\r\n 'title'\r\n]\r\n// default implicitly blocked attributes\r\nexport const FORBID_ATTR = [\r\n 'accept-charset',\r\n 'accesskey',\r\n 'allow',\r\n 'async',\r\n 'autocapitalize',\r\n 'autofocus',\r\n 'autoplay',\r\n 'buffered',\r\n 'challenge',\r\n 'charset',\r\n 'code',\r\n 'codebase',\r\n 'content',\r\n 'contenteditable',\r\n 'contextmenu',\r\n 'codebase',\r\n 'content',\r\n 'contenteditable',\r\n 'contextmenu',\r\n 'controls',\r\n 'data',\r\n 'decoding',\r\n 'defer',\r\n 'dirname',\r\n 'draggable',\r\n 'dropzone',\r\n 'form',\r\n 'formaction',\r\n 'http-equiv',\r\n 'icon',\r\n 'importance',\r\n 'itemprop',\r\n 'keytype',\r\n 'kind',\r\n 'language',\r\n 'lazyload',\r\n 'manifest',\r\n 'minlength',\r\n 'muted',\r\n 'ping',\r\n 'sandbox',\r\n 'scoped',\r\n 'slot',\r\n 'spellcheck',\r\n 'srcdoc',\r\n 'srclang',\r\n 'start',\r\n 'target',\r\n 'translate',\r\n 'wrap'\r\n]\r\n\r\nconst nukeConfig = {\r\n ALLOWED_TAGS: [],\r\n ALLOWED_ATTR: [],\r\n ALLOW_DATA_ATTR: false,\r\n ALLOWED_URI_REGEXP:\r\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|feed|git|svn|ssh|telnet|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i,\r\n ALLOWED_SOURCES: [],\r\n ALLOWED_SVG_ATTR: false,\r\n ALLOWED_TAGS_REGEXP: /^$/,\r\n FORBID_ATTR: [],\r\n FORBID_TAGS: ['all'],\r\n RETURN_DOM: false,\r\n RETURN_DOM_FRAGMENT: false,\r\n RETURN_DOM_IMPORT: false,\r\n RETURN_TRUSTED_TYPE: false,\r\n SANITIZE_DOM: false,\r\n WHOLE_DOCUMENT: false\r\n}\r\n\r\nexport function useDataSanitizing() {\r\n function sanitizeData(data, options = {}) {\r\n const optionsToUse = { ...nukeConfig, ...options }\r\n // default to no tags or attrs allowed\r\n return DOMPurify.sanitize(data, optionsToUse)\r\n }\r\n\r\n function sanitizeHTMLData(data, options = {}) {\r\n const optionsToUse = {\r\n ALLOWED_URI_REGEXP:\r\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|feed|git|svn|ssh|telnet):|data:image\\/[^;]+;base64)/i,\r\n // FORBID_TAGS: [],\r\n // FORBID_ATTR: [],\r\n // WHOLE_DOCUMENT: true,\r\n // SANITIZE_DOM: false,\r\n FORCE_BODY: true,\r\n ADD_TAGS: ['head', 'meta', 'title'],\r\n ADD_ATTR: [\r\n 'content',\r\n 'Content',\r\n 'http-equiv',\r\n 'property',\r\n 'name',\r\n 'charset',\r\n 'initial-scale',\r\n 'viewport'\r\n ],\r\n ALLOW_DATA_ATTR: true,\r\n ALLOW_UNKNOWN_PROTOCOLS: true,\r\n ...options\r\n }\r\n\r\n return DOMPurify.sanitize(data, optionsToUse)\r\n }\r\n\r\n return { sanitizeData, sanitizeHTMLData }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","export function usePermissionLevels() {\r\n const permissionLevels = ['ERROR', 'ALL', 'VIEW', 'NONE']\r\n\r\n // getAdminLevels returns keys of adminLevels\r\n function getPermissionLevels() {\r\n // return an object with keys that match permissions levels and values that match their index\r\n return permissionLevels.reduce((acc, level, index) => {\r\n acc[level] = index\r\n return acc\r\n }, {})\r\n }\r\n\r\n // function that takes a number and returns the corresponding permission level at that index\r\n function getPermissionLevelName(level) {\r\n return permissionLevels[level]\r\n }\r\n\r\n return { permissionLevels, getPermissionLevels, getPermissionLevelName }\r\n}\r\n","export const permissions = {\r\n PROJECT_PUBLIC_APPROVER: {\r\n permissionId: 'DA31A4DB-3A4B-4EDB-BFE2-F8FCE0240A35',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_PREQUAL_APPROVER: {\r\n permissionId: 'AFCBA1C1-EA58-46FF-8765-7FAFCB42AF18',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_INVITATIONAL_APPROVER: {\r\n permissionId: '9D967882-91CD-494D-9DC6-14D59C0C191C',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_LIMITED_APPROVER: {\r\n permissionId: '4D8388DF-6EDB-4F7F-A16D-C5D436752099',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_PUBLIC_CREATE: {\r\n permissionId: '9680826B-8133-4190-956C-B78CBE0398B5',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_PREQUAL_CREATE: {\r\n permissionId: '49E64021-B51B-4F9F-A2F4-4D69B573C18A',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_INVITATIONAL_CREATE: {\r\n permissionId: 'F1545AF2-C1F0-4C78-AF99-CB0FA540CEB3',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_LIMITED_CREATE: {\r\n permissionId: 'A64C34DF-B543-4B1F-B26D-B16C2F9A80FF',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n },\r\n PROJECT_CONTRACT_BUILDER_EDIT: {\r\n permissionId: '65B2EDA4-5032-425D-A1B0-517683D2087D',\r\n permissionGroupId: 'ED4F1D59-BACF-422C-AD84-F18F263681F2'\r\n },\r\n PROJECT_INFORMAL_CREATE: {\r\n permissionId: 'D1D0650A-D913-46AE-B55D-53F5A7C19630',\r\n permissionGroupId: '09F57C52-A96E-428C-AD9F-1AED9D59A0FC'\r\n }\r\n}\r\n\r\nexport const routes = {\r\n PROJECT_TOP_LEVEL_ROUTE: { id: '3b06c651-5b06-49db-ab93-de79a0299dfd' }\r\n}\r\n","import { usePermissionLevels } from '@/composables/permissions/permissionLevels'\r\nimport { routes } from '@/security/permissions/permissions-definitions'\r\nimport { mapGetters } from 'vuex'\r\n\r\nconst { getPermissionLevels } = usePermissionLevels()\r\nconst permissionLevels = getPermissionLevels()\r\n\r\nexport default {\r\n data() {\r\n return {\r\n permissionLevels\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'getRoutePermission',\r\n 'getLoggedInUser',\r\n 'getIsSiteAdmin',\r\n 'getRoutePermissionUser'\r\n ]),\r\n routePermissions() {\r\n return this.getRoutePermission || []\r\n },\r\n user() {\r\n return this.getLoggedInUser\r\n },\r\n currentRoute() {\r\n return this.$route\r\n },\r\n hasRoutePermissionToView() {\r\n // if route store is empty, it means no permissions configured, then give access\r\n if (!this.getRoutePermissionUser) return true\r\n\r\n return this.getRoutePermissionUser.hasRoutePermissionToView\r\n },\r\n hasRoutePermissionToAction() {\r\n // if route store is empty, it means no permissions configured, then give access\r\n if (!this.getRoutePermissionUser) return true\r\n\r\n return this.getRoutePermissionUser.hasRoutePermissionToAction\r\n }\r\n },\r\n methods: {\r\n filterPermissions(config, targetRoute) {\r\n return config.filter((r) => r.routeName.toLowerCase() === targetRoute.name?.toLowerCase())\r\n },\r\n checkRoutePermission(context, targetRoute) {\r\n if (!context) return\r\n const user = context.getters.getLoggedInUser\r\n const routePermissionConfig = context.getters.getRoutePermission\r\n let routePermissionFiltered = []\r\n let routePermissionSectionFiltered = []\r\n let hasSubSectionPermission = false\r\n let hasSubSectionPermissionToAction = false\r\n\r\n // Site Admin has full access\r\n if (context.getters.getIsSiteAdmin === true) {\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: true\r\n })\r\n return this.permissionLevels?.ALL || 0\r\n }\r\n\r\n if (\r\n !routePermissionConfig ||\r\n routePermissionConfig === null ||\r\n // eslint-disable-next-line no-undefined\r\n routePermissionConfig === undefined ||\r\n routePermissionConfig === 'undefined' ||\r\n routePermissionConfig.length === 0\r\n ) {\r\n // if route store is empty, it means no permissions configured, then give access\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: true\r\n })\r\n return this.permissionLevels?.ALL || 0\r\n }\r\n\r\n if (targetRoute.matched.filter((r) => r.name === targetRoute.name)[0]?.parent) {\r\n routePermissionFiltered = this.filterPermissions(\r\n routePermissionConfig,\r\n targetRoute.matched.filter((r) => r.name === targetRoute.name)[0]?.parent\r\n )\r\n\r\n routePermissionSectionFiltered = this.filterPermissions(routePermissionConfig, targetRoute)\r\n } else {\r\n routePermissionFiltered = this.filterPermissions(routePermissionConfig, targetRoute)\r\n }\r\n\r\n // remove permissions for control, it will be handled by checkRouteControlPermission()\r\n routePermissionFiltered = routePermissionFiltered.filter(\r\n // eslint-disable-next-line no-undefined\r\n (r) => r.controlId === null || r.controlId === undefined || r.controlId === 'undefined'\r\n )\r\n\r\n // remove permissions for control, it will be handled by checkRouteControlPermission()\r\n routePermissionSectionFiltered = routePermissionSectionFiltered.filter(\r\n // eslint-disable-next-line no-undefined\r\n (r) => r.controlId === null || r.controlId === undefined || r.controlId === 'undefined'\r\n )\r\n\r\n if (routePermissionFiltered.length === 0 && routePermissionSectionFiltered.length === 0) {\r\n // if the route has no permissions configured, then give access\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: true\r\n })\r\n return this.permissionLevels?.ALL || 0\r\n }\r\n\r\n // promote section permissions to parent route permissions if no parent route permissions\r\n if (routePermissionFiltered.length === 0 && routePermissionSectionFiltered.length !== 0) {\r\n routePermissionFiltered = routePermissionSectionFiltered\r\n routePermissionSectionFiltered = []\r\n }\r\n\r\n // check if the user has any permissions set for the parent route then give View access as a minimum\r\n if (\r\n user.proPermissions &&\r\n user.proPermissions.length !== 0 &&\r\n routePermissionFiltered[0].permissions.some(\r\n (r) =>\r\n user.proPermissions.filter((e) => e.id.toLowerCase() === r.id.toLowerCase()).length > 0\r\n )\r\n ) {\r\n // when a user has any of the permissions set for the parent route then give View access as a minimum\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: false\r\n })\r\n\r\n // when user has permission based on parent route, then check if there are permissions set on the sub area/section\r\n if (routePermissionSectionFiltered.length !== 0) {\r\n // this block means there are permissions set for sub area/section\r\n hasSubSectionPermission = true\r\n\r\n // check if the user has any permissions set for the sub area/section then give View access as a minimum\r\n if (\r\n user.proPermissions &&\r\n user.proPermissions.length !== 0 &&\r\n routePermissionSectionFiltered.some((e) =>\r\n e.permissions.some(\r\n (r) =>\r\n user.proPermissions.filter((e) => e.id.toLowerCase() === r.id.toLowerCase())\r\n .length > 0\r\n )\r\n )\r\n ) {\r\n // when a user has any of the permissions set for the sub area/serction then give View access as a minimum\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: false\r\n })\r\n } else {\r\n // when user has no access to sub area/section\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: false,\r\n hasRoutePermissionToAction: false\r\n })\r\n\r\n return this.permissionLevels?.NONE || 0\r\n }\r\n\r\n // check for actions permissions, such as ability to Edit, canPerformAction=tue\r\n if (\r\n routePermissionSectionFiltered[0].permissions.some(\r\n (r) =>\r\n r.canPerformAction &&\r\n user.proPermissions.filter((e) => e.id.toLowerCase() === r.id.toLowerCase())\r\n .length > 0\r\n )\r\n ) {\r\n hasSubSectionPermissionToAction = true\r\n\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: hasSubSectionPermissionToAction\r\n })\r\n }\r\n }\r\n\r\n // parent route check for actions permissions, such as ability to Edit, canPerformAction=tue\r\n // this also overrides the permission granted on sub area/section, parent permission should take over\r\n if (\r\n routePermissionFiltered[0].permissions.some(\r\n (r) =>\r\n r.canPerformAction &&\r\n user.proPermissions.filter((e) => e.id.toLowerCase() === r.id.toLowerCase()).length >\r\n 0\r\n )\r\n ) {\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction:\r\n !hasSubSectionPermission ||\r\n (hasSubSectionPermission && hasSubSectionPermissionToAction)\r\n })\r\n } else {\r\n // give View access if no edit permission\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: false\r\n })\r\n }\r\n\r\n // check current routePermissionUser and return the correct admin level\r\n if (context.getters.getRoutePermissionUser.hasRoutePermissionToAction === true) {\r\n return this.permissionLevels?.ALL || 0\r\n } else if (context.getters.getRoutePermissionUser.hasRoutePermissionToView === true) {\r\n return this.permissionLevels?.VIEW || 0\r\n } else {\r\n return this.permissionLevels?.NONE || 0\r\n }\r\n }\r\n\r\n // end check permissions\r\n\r\n // when it reach this point, it means that there are permissions set for the route and the user does not have it\r\n context.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: false,\r\n hasRoutePermissionToAction: false\r\n })\r\n\r\n return this.permissionLevels?.NONE || 0\r\n },\r\n checkRouteControlPermission(context, targetRoute, control) {\r\n const user = context.getters.getLoggedInUser\r\n let routePermissionConfig = context.getters.getRoutePermission\r\n\r\n // Site Admin has full access\r\n if (context.getters.getIsSiteAdmin === true) {\r\n return true\r\n }\r\n\r\n if (\r\n !routePermissionConfig ||\r\n routePermissionConfig === null ||\r\n // eslint-disable-next-line no-undefined\r\n routePermissionConfig === undefined ||\r\n routePermissionConfig === 'undefined' ||\r\n routePermissionConfig.length === 0\r\n ) {\r\n // if route store is empty, it means no permissions configured, then give access\r\n return true\r\n }\r\n\r\n if (\r\n !control ||\r\n control.id === null ||\r\n // eslint-disable-next-line no-undefined\r\n control.id === undefined ||\r\n control.id === 'undefined'\r\n ) {\r\n // if control has no ID, by default give everyone permission\r\n return true\r\n }\r\n\r\n routePermissionConfig = this.filterPermissions(routePermissionConfig, targetRoute)\r\n\r\n if (routePermissionConfig.length === 0) {\r\n // if the route has no permissions configured, then give access\r\n return true\r\n }\r\n\r\n if (\r\n routePermissionConfig.filter(\r\n // eslint-disable-next-line no-undefined\r\n (r) => r.controlId !== null && r.controlId !== undefined && r.controlId !== 'undefined'\r\n ).length === 0\r\n ) {\r\n // if control has no permissions configured, then give access\r\n return true\r\n } else {\r\n // get permission set for control\r\n routePermissionConfig = routePermissionConfig.filter(\r\n (r) =>\r\n r.controlId !== null &&\r\n // eslint-disable-next-line no-undefined\r\n r.controlId !== undefined &&\r\n r.controlId !== 'undefined' &&\r\n r.controlId.toLowerCase() === control.id.toLowerCase()\r\n )\r\n }\r\n\r\n if (routePermissionConfig.length === 0) {\r\n // if no control permissions configured, then give access\r\n return true\r\n }\r\n\r\n if (\r\n user.proPermissions &&\r\n user.proPermissions.length !== 0 &&\r\n routePermissionConfig[0].permissions.some(\r\n (r) =>\r\n r.canPerformAction &&\r\n user.proPermissions.filter((e) => e.id.toLowerCase() === r.id.toLowerCase()).length > 0\r\n )\r\n ) {\r\n // if the user has permission over the Control and canPerformAction, canPerformAction=tue\r\n return true\r\n }\r\n\r\n // when it reach this point, it means that there are permissions set for the route and the user does not have it\r\n return false\r\n },\r\n checkTemplatePermissions(status, routePermissions, userPermissions, userEmail) {\r\n if (status === 'template' && routePermissions.length > 0) {\r\n routePermissions = routePermissions.filter(\r\n (p) => p.id === routes.PROJECT_TOP_LEVEL_ROUTE.id.toLowerCase()\r\n )\r\n userPermissions = userPermissions.filter((up) =>\r\n routePermissions[0].permissions.some((p) => p.id === up.id)\r\n )\r\n\r\n if (userPermissions && userPermissions.length > 0) {\r\n // if they can edit templates they have access. if they only have create, and this isn't their template: they can only view\r\n if (\r\n userPermissions.some(\r\n (up) =>\r\n up.name === 'titleEditTemplates' ||\r\n (up.name === 'titleCreateTemplates' && this.project.createdBy === userEmail)\r\n )\r\n ) {\r\n this.$store.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: true\r\n })\r\n return this.permissionLevels?.All || 0\r\n }\r\n // if they have any permissions at all, they can view\r\n this.$store.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: true,\r\n hasRoutePermissionToAction: false\r\n })\r\n\r\n return this.permissionLevels?.VIEW || 0\r\n } else {\r\n // the user doesn't have any permission, so they can't view or edit\r\n this.$store.dispatch('setRoutePermissionUser', {\r\n hasRoutePermissionToView: false,\r\n hasRoutePermissionToAction: false\r\n })\r\n return this.permissionLevels?.NONE || 0\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import PermissionsMixins from '@/security/permissions/permissions-mixins'\r\n\r\nexport default {\r\n mixins: [PermissionsMixins],\r\n props: {\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n permissionParentSelector: {\r\n type: String,\r\n default: '.project-view-wrapper'\r\n }\r\n },\r\n computed: {\r\n hasRoutePermissionToView() {\r\n if (!this.hasParentSelector) return true\r\n\r\n return this.hasRoutePermissionToView\r\n },\r\n hasPermissionToEdit() {\r\n if (!this.hasParentSelector) return true\r\n\r\n return this.hasRoutePermissionToAction\r\n },\r\n hasControlPermission() {\r\n return this.checkRouteControlPermission(this.$store, this.$route, this)\r\n }\r\n },\r\n data() {\r\n return {\r\n hasParentSelector: false\r\n }\r\n },\r\n mounted() {\r\n this.checkParentSelector()\r\n },\r\n methods: {\r\n checkParentSelector() {\r\n if (!this.$refs.wrapper) return false\r\n\r\n const wrapper = this.$refs.wrapper\r\n this.hasParentSelector = wrapper.closest(this.permissionParentSelector)\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","// Colors for ckeditor\r\nexport const fontBackgroundColor = {\r\n colors: [\r\n {\r\n color: '#e64c4c',\r\n label: 'Red'\r\n },\r\n {\r\n color: '#e6994c',\r\n label: 'Orange'\r\n },\r\n {\r\n color: '#e6e64c',\r\n label: 'Yellow'\r\n },\r\n {\r\n color: '#99e64c',\r\n label: 'Light green'\r\n },\r\n {\r\n color: '#4ce64c',\r\n label: 'Green'\r\n }\r\n ]\r\n}\r\n\r\nexport const fontColor = {\r\n colors: [\r\n {\r\n color: '#000000',\r\n label: 'black'\r\n },\r\n {\r\n color: '#4d4d4d',\r\n label: 'Dark Grey'\r\n },\r\n {\r\n color: '#999999',\r\n label: 'Grey'\r\n },\r\n {\r\n color: '#e6e6e6',\r\n label: 'Light Grey'\r\n },\r\n {\r\n color: '#FFFFFF',\r\n label: 'White'\r\n },\r\n {\r\n color: '#e64c4c',\r\n label: 'Red'\r\n },\r\n {\r\n color: '#e6994c',\r\n label: 'Orange'\r\n },\r\n {\r\n color: '#e6e64c',\r\n label: 'Yellow'\r\n },\r\n {\r\n color: '#99e64c',\r\n label: 'Light Green'\r\n },\r\n {\r\n color: '#4ce64c',\r\n label: 'Green'\r\n },\r\n {\r\n color: '#4ce699',\r\n label: 'Aquamarine'\r\n },\r\n {\r\n color: '#4ce6e6',\r\n label: 'Turquoise'\r\n },\r\n {\r\n color: '#4c99e6',\r\n label: 'Light Blue'\r\n },\r\n {\r\n color: '#4c4ce6',\r\n label: 'Blue'\r\n },\r\n {\r\n color: '#994ce6',\r\n label: 'Purple'\r\n }\r\n ]\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","const capitalize = (val) => {\r\n if (!val) return ''\r\n const str = val.toString()\r\n return str.charAt(0).toUpperCase() + str.slice(1)\r\n}\r\n\r\nexport default capitalize\r\n","const currencyComma = (val) => {\r\n if (!val) return ''\r\n return parseInt(val)\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\r\n}\r\n\r\nexport default currencyComma\r\n","import dayjs from 'dayjs'\r\n\r\n// Add any plugins you want to use with Day.js\r\nimport 'dayjs/locale/en'\r\nimport arraySupport from 'dayjs/plugin/arraySupport'\r\nimport timezone from 'dayjs/plugin/timezone'\r\nimport utc from 'dayjs/plugin/utc'\r\n\r\ndayjs.extend(utc)\r\ndayjs.extend(timezone)\r\ndayjs.extend(arraySupport)\r\ndayjs.locale('en')\r\n\r\nexport default dayjs\r\n","import dayjs from '@/utils/dayjs'\r\n\r\nconst dateFilter = (val) => {\r\n if (!val) return ''\r\n return dayjs(val).format('ddd, MMM D, YYYY h:mm A')\r\n}\r\n\r\nexport default dateFilter\r\n","import dayjs from '@/utils/dayjs'\r\n\r\nconst dateFilter = (val) => {\r\n if (!val) return ''\r\n return dayjs(val).format('ddd, DD MMM YYYY')\r\n}\r\n\r\nexport default dateFilter\r\n","import Vue from 'vue'\r\nimport VueI18n from 'vue-i18n'\r\n\r\nVue.use(VueI18n)\r\n\r\nfunction loadLocaleMessages() {\r\n const locales = import.meta.glob('../localization/locales/*.json', { eager: true })\r\n const messages = {}\r\n for (const key in locales) {\r\n if (locales.hasOwnProperty(key)) {\r\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\r\n if (matched && matched.length > 1) {\r\n const locale = matched[1]\r\n messages[locale] = locales[key].default\r\n }\r\n }\r\n }\r\n return messages\r\n}\r\n\r\nconst messages = loadLocaleMessages()\r\n\r\nexport default new VueI18n({\r\n locale: 'en',\r\n fallbackLocale: 'en',\r\n silentTranslationWarn: true,\r\n messages\r\n})\r\n","export default {\r\n props: {\r\n visible: Boolean\r\n },\r\n computed: {\r\n transitionName() {\r\n return this.dir > 0 ? 'slideleft' : 'slideright'\r\n },\r\n onFirstStep() {\r\n return this.currentStepNumber === 1\r\n },\r\n onLastStep() {\r\n return this.currentStepNumber === this.totalSteps\r\n },\r\n getStepClass() {\r\n const stepClasses = [`is-step-${this.currentStepNumber}`]\r\n if (this.onLastStep) stepClasses.push('is-last-step')\r\n return stepClasses.join(' ')\r\n },\r\n isVisible: {\r\n get() {\r\n return this.visible\r\n },\r\n set() {\r\n this.handleClickClose()\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n currentStepNumber: 1,\r\n dir: 1,\r\n totalSteps: 4\r\n }\r\n },\r\n methods: {\r\n handleClickNext() {\r\n if (this.onLastStep) return\r\n this.dir = 1\r\n this.$nextTick(() => {\r\n this.currentStepNumber = parseInt(this.currentStepNumber) + 1\r\n })\r\n },\r\n handleClickPrevious() {\r\n if (this.onFirstStep) return\r\n this.dir = -1\r\n this.$nextTick(() => {\r\n this.currentStepNumber = parseInt(this.currentStepNumber) - 1\r\n })\r\n },\r\n handleClickClose() {\r\n this.reset()\r\n this.$emit('close')\r\n }\r\n }\r\n}\r\n","import dayjs from '@/utils/dayjs'\r\nimport isEqual from 'lodash/isEqual'\r\nimport isObject from 'lodash/isObject'\r\nimport transform from 'lodash/transform'\r\nimport { useDataSanitizing } from './dataSanitizing.js'\r\n\r\nconst { sanitizeData } = useDataSanitizing()\r\n\r\nfunction guid() {\r\n // check crypto for compatibility with IE 11\r\n const crypto = window.crypto || window.msCrypto\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\r\n // eslint-disable-next-line no-bitwise\r\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\r\n )\r\n}\r\n\r\nfunction sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n// Takes a date meant to represent a UTC date and returns it as a proper utc date\r\nexport const getDateAsUtc = (date) => {\r\n const temp = new Date(date)\r\n return Date.UTC(\r\n temp.getFullYear(),\r\n temp.getMonth(),\r\n temp.getDate(),\r\n temp.getHours(),\r\n temp.getMinutes(),\r\n temp.getSeconds()\r\n )\r\n}\r\n\r\nexport const getDateParts = (date) => {\r\n const temp = new Date(date)\r\n return [\r\n temp.getFullYear(),\r\n temp.getMonth(),\r\n temp.getDate(),\r\n temp.getHours(),\r\n temp.getMinutes(),\r\n temp.getSeconds()\r\n ]\r\n}\r\n\r\nexport const compareObjects = (object, base) => {\r\n return transform(object, (result, value, key) => {\r\n if (base && !isEqual(value, base[key])) {\r\n result[key] =\r\n isObject(value) && isObject(base[key]) ? compareObjects(value, base[key]) : value\r\n }\r\n })\r\n}\r\n\r\nexport const getTimeString = (date, time = '00:00 PM') => {\r\n // make ie and ff behave\r\n const [pTime, period] = time.split(' ')\r\n // eslint-disable-next-line prefer-const\r\n let [hours, minutes] = pTime.split(':')\r\n\r\n if (period && period.toLowerCase() === 'pm' && parseInt(hours) < 12)\r\n hours = (parseInt(hours) + 12).toString()\r\n if (period && period.toLowerCase() === 'am' && hours === '12') hours = '0'\r\n\r\n // eslint-disable-next-line prefer-const\r\n let [year, month, day] = date.split('-')\r\n month = parseInt(month) - 1\r\n return [year, month, day, hours, minutes]\r\n}\r\n\r\nexport const monthNames = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec'\r\n]\r\n\r\nexport const fullMonthNames = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n]\r\n\r\nexport const getMonthName = (month, full = false) => {\r\n if (full) return fullMonthNames[month]\r\n return monthNames[month]\r\n}\r\n\r\nexport const hasValue = (element) => {\r\n return (\r\n // eslint-disable-next-line no-undefined\r\n element !== undefined &&\r\n element !== null &&\r\n ((typeof element === 'string' && element.length > 0) || typeof element !== 'string')\r\n )\r\n}\r\n\r\nexport const stringToDate = (val) => {\r\n // eslint-disable-next-line prefer-const\r\n let [year, month, day] = val.split('-')\r\n day = day.substring(0, 2)\r\n\r\n return new Date(year, month - 1, day)\r\n}\r\n\r\nexport const getDateFromDelta = (val, days) => {\r\n const currDate = new Date(val.getFullYear(), val.getMonth(), val.getDate())\r\n\r\n const result = new Date(currDate)\r\n result.setDate(result.getDate() + days)\r\n\r\n return result\r\n}\r\n\r\nexport const getMergedDateFromInput = (inputDateComponent, inputTimeComponent, timezone) => {\r\n const currYear = new Date(Date.now()).getFullYear()\r\n\r\n if (inputDateComponent == null) {\r\n return null\r\n }\r\n const time = inputTimeComponent != null ? inputTimeComponent : new Date(currYear, 0, 1, 0, 0, 0)\r\n return dayjs([\r\n inputDateComponent.getFullYear(),\r\n inputDateComponent.getMonth(),\r\n inputDateComponent.getDate(),\r\n time.getHours(),\r\n time.getMinutes(),\r\n 0\r\n ]).tz(timezone, true)\r\n}\r\n\r\nexport const createAuthGuidIfNeed = () => {\r\n let btAuthGuid = localStorage.getItem('btAuthGuid')\r\n if (btAuthGuid === null) {\r\n btAuthGuid = guid()\r\n localStorage.setItem('btAuthGuid', btAuthGuid)\r\n }\r\n return sanitizeData(btAuthGuid)\r\n}\r\n\r\n// Prop validation\r\nexport const onlyValues = (values) => (str) => values.indexOf(str.toLowerCase()) !== -1\r\n\r\n// check nulls\r\nexport const itemsAreNotNull = (arr) => {\r\n return !arr.some((item) => item === null)\r\n}\r\n\r\nexport const valueOrNA = (dataField) => {\r\n return (!!dataField && dataField) || 'N/A'\r\n}\r\n\r\nexport const forceFileDownload = (response, blobInput, name) => {\r\n const blob = blobInput || new Blob([response.data], { type: response.data.type })\r\n const url = window.URL.createObjectURL(blob)\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', name || response?.headers?.filename || 'download')\r\n document.body.appendChild(link)\r\n link.click()\r\n link.remove()\r\n window.URL.revokeObjectURL(url)\r\n return response\r\n}\r\n\r\nexport const getBlobUrlFomApiResponse = (response) => {\r\n const blob = new Blob([response.data], { type: response.data.type })\r\n return window.URL.createObjectURL(blob)\r\n}\r\n\r\nexport const currencyStringToFloat = (value) => {\r\n const currencyString = value.replace(/[^0-9.-]+/g, '')\r\n return parseFloat(currencyString)\r\n}\r\n\r\nexport default {\r\n guid,\r\n sleep,\r\n getDateAsUtc,\r\n createAuthGuidIfNeed,\r\n getMergedDateFromInput,\r\n forceFileDownload,\r\n getBlobUrlFomApiResponse,\r\n currencyStringToFloat\r\n}\r\n","export const AUDIT_AGGREGATE_TYPES_SET = 'AUDIT_AGGREGATE_TYPES_SET'\r\nexport const AUDIT_AGGREGATE_SORTED_TYPES_SET = 'AUDIT_AGGREGATE_SORTED_TYPES_SET'\r\nexport const AUDIT_AGGREGATE_VENDORS_SET = 'AUDIT_AGGREGATE_VENDORS_SET'\r\nexport const AUDIT_AGGREGATE_USERS_SET = 'AUDIT_AGGREGATE_USERS_SET'\r\nexport const AUDIT_SEARCH_RESULTS_SET = 'AUDIT_SEARCH_RESULTS_SET'\r\nexport const AUDIT_SEARCH_RESULTS_TOTAL_SET = 'AUDIT_SEARCH_RESULTS_TOTAL_SET'\r\nexport const AUDIT_VENDOR_SEARCH_RESULTS_SET = 'AUDIT_VENDOR_SEARCH_RESULTS_SET'\r\nexport const AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET = 'AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET'\r\nexport const AUDIT_VENDOR_AGGREGATE_TYPES_SET = 'AUDIT_VENDOR_AGGREGATE_TYPES_SET'\r\n\r\nexport const AUTH_SET_TYPE = 'AUTH_SET_TYPE'\r\nexport const AUTH_SET_OPTION = 'AUTH_SET_OPTION'\r\nexport const AUTH_SET_ISAUTH = 'AUTH_SET_ISAUTH'\r\nexport const AUTH_SET_CUSTOMER = 'AUTH_SET_CUSTOMER'\r\nexport const AUTH_SET_CUSTOMERNODE = 'AUTH_SET_CUSTOMERNODE'\r\nexport const AUTH_SET_HOST = 'AUTH_SET_HOST'\r\nexport const AUTH_SET_PERMISSION = 'AUTH_SET_PERMISSION'\r\nexport const AUTH_SET_USER = 'AUTH_SET_USER'\r\nexport const AUTH_SET_NODE = 'AUTH_SET_NODE'\r\n\r\nexport const CERTIFICATES_SET = 'CERTIFICATES_SET'\r\nexport const CERTIFICATE_DELETE = 'CERTIFICATE_DELETE'\r\nexport const CERTIFICATE_UPDATE_OR_ADD = 'CERTIFICATE_UPDATE_OR_ADD'\r\n\r\nexport const CERTIFICATE_TYPES_SET = 'CERTIFICATE_TYPES_SET'\r\nexport const CONTRACTPOTYPES_TYPES_SET = 'CONTRACTPOTYPES_TYPES_SET'\r\n\r\nexport const CONTRACT_DOCUMENTS_SET = 'CONTRACT_DOCUMENTS_SET'\r\nexport const CONTRACT_VENDOR_DOCUMENT_TYPES_SET = 'CONTRACT_VENDOR_DOCUMENT_TYPES_SET'\r\nexport const CONTRACT_VENDOR_DOCUMENT_TYPE_SET = 'CONTRACT_VENDOR_DOCUMENT_TYPE_SET'\r\n\r\nexport const CONTRACT_DOCUMENTS_DELETE = 'CONTRACT_DOCUMENTS_DELETE'\r\nexport const CONTRACT_DOCUMENT_UPDATE_OR_ADD = 'CONTRACT_DOCUMENT_UPDATE_OR_ADD'\r\n\r\nexport const CONTRACT_VENDOR_DOCUMENTS_SET = 'CONTRACT_VENDOR_DOCUMENTS_SET'\r\nexport const CONTRACT_VENDOR_DOCUMENTS_DELETE = 'CONTRACT_VENDOR_DOCUMENTS_DELETE'\r\nexport const CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD = 'CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD'\r\n\r\nexport const CONTRACT_BOND_DOCUMENT_TYPE_SET = 'CONTRACT_BOND_DOCUMENT_TYPE_SET'\r\nexport const CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL = 'CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL'\r\nexport const CONTRACT_BOND_DOCUMENTS_SET = 'CONTRACT_BOND_DOCUMENTS_SET'\r\nexport const CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD = 'CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD'\r\nexport const CONTRACT_BOND_DOCUMENTS_DELETE = 'CONTRACT_BOND_DOCUMENTS_DELETE'\r\n\r\nexport const CONTRACT_PERFORMANCE_SET = 'CONTRACT_PERFORMANCE_SET'\r\nexport const CONTRACT_PERFORMANCE_SET_ALL = 'CONTRACT_PERFORMANCE_SET_ALL'\r\nexport const CONTRACT_PERFORMANCE_DELETE = 'CONTRACT_PERFORMANCE_DELETE'\r\nexport const CONTRACT_PERFORMANCE_STATISTIC_SET = 'CONTRACT_PERFORMANCE_STATISTIC_SET'\r\n\r\nexport const CONTRACT_PERFORMANCE_RATING_SET = 'CONTRACT_PERFORMANCE_RATING_SET'\r\nexport const CONTRACT_PERFORMANCE_ADD = 'CONTRACT_PERFORMANCE_ADD'\r\nexport const CONTRACT_PERFORMANCE_REMOVE = 'CONTRACT_PERFORMANCE_REMOVE'\r\nexport const CONTRACT_PERFORMANCE_EVALUATION = 'CONTRACT_PERFORMANCE_EVALUATION'\r\nexport const CONTRACT_PERFORMANCE_FINAL_RATING_SET = 'CONTRACT_PERFORMANCE_FINAL_RATING_SET'\r\nexport const CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET =\r\n 'CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET'\r\n\r\nexport const CONTRACT_SIGNATURE_SET = 'CONTRACT_SIGNATURE_SET'\r\nexport const CONTRACT_SIGNATURES_SET = 'CONTRACT_SIGNATURES_SET'\r\nexport const CONTRACT_SIGNATURES_FETCH_REQUIRED_SET = 'CONTRACT_SIGNATURES_FETCH_REQUIRED_SET'\r\n\r\nexport const CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET =\r\n 'CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET'\r\nexport const CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET =\r\n 'CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET'\r\nexport const CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET =\r\n 'CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET'\r\nexport const CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET =\r\n 'CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET'\r\n\r\nexport const CUSTOMER_SET = 'CUSTOMER_SET'\r\nexport const CUSTOMERNODE_SET = 'CUSTOMERNODE_SET'\r\nexport const CUSTOMER_SET_TIMEZONE = 'CUSTOMER_SET_TIMEZONE'\r\nexport const CUSTOMER_ALL_SET = 'CUSTOMER_ALL_SET'\r\n\r\nexport const EMAIL_PROJECT_SET = 'EMAIL_PROJECT_SET'\r\nexport const SCHEDULED_EMAIL_PROJECT_SET = 'SCHEDULED_EMAIL_PROJECT_SET'\r\nexport const EMAIL_VENDOR_SET = 'EMAIL_VENDOR_SET'\r\nexport const EMAIL_AGGREGATES_SET = 'EMAIL_AGGREGATES_SET'\r\nexport const EMAIL_SCHEDULED_AGGREGATES_SET = 'EMAIL_SCHEDULED_AGGREGATES_SET'\r\nexport const EMAIL_UPDATE_NEW_EMAIL = 'EMAIL_UPDATE_NEW_EMAIL'\r\nexport const EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS = 'EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS'\r\nexport const EMAIL_SET_NEW_EMAIL_PROJECT_USERS = 'EMAIL_SET_NEW_EMAIL_PROJECT_USERS'\r\nexport const EMAIL_SET_NEW_EMAIL_INVITEES = 'EMAIL_SET_NEW_EMAIL_INVITEES'\r\nexport const EMAIL_SET_EMAIL_TEMPLATES = 'EMAIL_SET_EMAIL_TEMPLATES'\r\nexport const EMAIL_UPDATE_EMAIL_TEMPLATES = 'EMAIL_UPDATE_EMAIL_TEMPLATES'\r\nexport const EMAIL_SET_NEW_EMAIL_CONTRACT_ID = 'EMAIL_SET_NEW_EMAIL_CONTRACT_ID'\r\nexport const EMAIL_SET_NEW_EMAIL_TENDER_ID = 'EMAIL_SET_NEW_EMAIL_TENDER_ID'\r\nexport const EMAIL_SET_EMAIL_RESTRICTED_DOMAINS = 'EMAIL_SET_EMAIL_RESTRICTED_DOMAINS'\r\nexport const EMAIL_UPDATE_EMAIL_RESTRICTED_DOMAINS = 'EMAIL_UPDATE_EMAIL_RESTRICTED_DOMAINS'\r\nexport const EMAIL_SET_NEW_EMAIL_DOCUMENT = 'EMAIL_SET_NEW_EMAIL_DOCUMENT'\r\nexport const EMAIL_RESEND = 'EMAIL_RESEND'\r\n\r\nexport const CONTROL_PANEL_SET_ITEM = 'CONTROL_PANEL_SET_ITEM'\r\nexport const CONTROL_PANEL_SAVE_REQUIRED = 'CONTROL_PANEL_SAVE_REQUIRED'\r\nexport const CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM = 'CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM'\r\nexport const CONTROL_PANEL_EMAIL_NOTIFICATIONS_SET_ITEM =\r\n 'CONTROL_PANEL_EMAIL_NOTIFICATIONS_SET_ITEM'\r\nexport const CONTROL_PANEL_EMAIL_NOTIFICATIONS_SET_DOMAINS =\r\n 'CONTROL_PANEL_EMAIL_NOTIFICATIONS_SET_DOMAINS'\r\nexport const CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM = 'CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM'\r\nexport const CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM = 'CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM'\r\nexport const CONTROL_PANEL_DROPDOWNS_SET = 'CONTROL_PANEL_DROPDOWNS_SET'\r\nexport const CONTROL_PANEL_ERROR_SET = 'CONTROL_PANEL_ERROR_SET'\r\nexport const CONTROL_PANEL_ERROR_UNSET = 'CONTROL_PANEL_ERROR_UNSET'\r\nexport const CONTROL_PANEL_ERROR_UNSET_ALL = 'CONTROL_PANEL_ERROR_UNSET_ALL'\r\nexport const TIMEZONE_ALL_SET = 'TIMEZONE_ALL_SET'\r\nexport const LANGUAGE_ALL_SET = 'LANGUAGE_ALL_SET'\r\nexport const RESOURCE_MESSAGE_ALL_SET = 'RESOURCE_MESSAGE_ALL_SET'\r\n\r\nexport const GROUP_SET_GROUPS = 'GROUP_SET_GROUPS'\r\nexport const USER_REMOVE_GROUPS = 'USER_REMOVE_GROUPS'\r\nexport const GROUP_RENAME_USER_GROUPS = 'GROUP_RENAME_USER_GROUPS'\r\nexport const GROUP_SET_SIDEBAR_VISIBILITY = 'GROUP_SET_SIDEBAR_VISIBILITY'\r\nexport const GROUP_TOGGLE_SIDEBAR_VISIBILITY = 'GROUP_TOGGLE_SIDEBAR_VISIBILITY'\r\nexport const GROUP_SET_ACTIVE_USERS_IN_GROUP = 'GROUP_SET_ACTIVE_USERS_IN_GROUP'\r\nexport const GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP = 'GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP'\r\nexport const GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY = 'GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY'\r\n\r\nexport const INVITATION_SET_SEARCH_TENDER_RESULT = 'INVITATION_SET_SEARCH_TENDER_RESULT'\r\nexport const INVITATION_SET_SEARCH_CRITERIA_RESULT = 'INVITATION_SET_SEARCH_CRITERIA_RESULT'\r\nexport const INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT =\r\n 'INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT'\r\nexport const INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE =\r\n 'INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE'\r\n\r\nexport const INSURANCE_DOCUMENTS_SET = 'INSURANCE_DOCUMENTS_SET'\r\nexport const INSURANCE_DOCUMENT_DELETE = 'INSURANCE_DOCUMENT_DELETE'\r\nexport const INSURANCE_UPDATE_OR_ADD = 'INSURANCE_UPDATE_OR_ADD'\r\nexport const INSURANCE_TYPES_SET = 'INSURANCE_TYPES_SET'\r\n\r\nexport const PERFORMANCE_EVALUATION_DOCUMENTS_SET = 'PERFORMANCE_EVALUATION_DOCUMENTS_SET'\r\nexport const PERFORMANCE_EVALUATION_DOCUMENT_UPDATE = 'PERFORMANCE_EVALUATION_DOCUMENT_UPDATE'\r\n\r\nexport const PLANTAKER_SET = 'PLANTAKER_SET'\r\n\r\nexport const EXPORTFILE_ADD = 'EXPORTFILE_ADD'\r\nexport const EXPORTFILE_REMOVE = 'EXPORTFILE_REMOVE'\r\nexport const EXPORTFILE_READY = 'EXPORTFILE_READY'\r\nexport const EXPORTFILE_RESTORE = 'EXPORTFILE_RESTORE'\r\nexport const EXPORTFILE_NOTIFICATIONADD = 'EXPORTFILE_NOTIFICATIONADD'\r\nexport const EXPORTFILE_NOTIFICATIONCLEAR = 'EXPORTFILE_NOTIFICATIONCLEAR'\r\n\r\nexport const REPORTS_ADDTHUMBNAIL = 'REPORTS_ADDTHUMBNAIL'\r\nexport const REPORTS_THUMBNAILNAMES = 'REPORTS_THUMBNAILNAMES'\r\nexport const REPORTS_REPORTCATEGORIES = 'REPORTS_REPORTCATEGORIES'\r\nexport const REPORTS_THUMBNAILCATEGORY = 'REPORTS_THUMBNAILCATEGORY'\r\nexport const REPORTS_SUBSCRIBED = 'REPORTS_SUBSCRIBED'\r\nexport const REPORTS_REMOVE_RECIPIENT = 'REPORTS_REMOVE_RECIPIENT'\r\nexport const REPORTS_SCHEDULED = 'REPORTS_SCHEDULED'\r\nexport const REPORTS_REMOVE_SCHEDULED = 'REPORTS_REMOVE_SCHEDULED'\r\nexport const REPORTS_UPDATE_SCHEDULED = 'REPORTS_UPDATE_SCHEDULED'\r\nexport const REPORTS_DATA = 'REPORTS_DATA'\r\nexport const REPORTS_CUSTOM = 'REPORTS_CUSTOM'\r\nexport const REPORTS_CUSTOM_PENDING = 'REPORTS_CUSTOM_PENDING'\r\nexport const REPORTS_REMOVE_CUSTOM = 'REPORTS_REMOVE_CUSTOM'\r\nexport const REPORTS_UPDATE_CUSTOM = 'REPORTS_UPDATE_CUSTOM'\r\n\r\nexport const PROJECT_SET_ALL = 'PROJECT_SET_ALL'\r\nexport const PROJECT_ENDING_SET_ALL = 'PROJECT_ENDING_SET_ALL'\r\nexport const MY_PROJECTS_SET_ALL = 'MY_PROJECTS_SET_ALL'\r\nexport const PROJECT_SET_NEW = 'PROJECT_SET_NEW'\r\nexport const PROJECT_SET = 'PROJECT_SET'\r\nexport const PROJECT_UPDATE_NEW = 'PROJECT_UPDATE_NEW'\r\nexport const PROJECT_RESET_NEW = 'PROJECT_RESET_NEW'\r\nexport const PROJECT_UPDATE = 'PROJECT_UPDATE'\r\nexport const PROJECT_SET_FETCH_STATUS = 'PROJECT_SET_FETCH_STATUS'\r\nexport const PROJECTS_SET_PROJECTSPROPERTIES = 'PROJECTS_SET_PROJECTSPROPERTIES'\r\nexport const PROJECT_UPDATE_AWARD_PHASE_STATUS = 'PROJECT_UPDATE_AWARD_PHASE_STATUS'\r\nexport const GLOBAL_PROJECT_SAVE_SUCCESS = 'GLOBAL_PROJECT_SAVE_SUCCESS'\r\nexport const PROJECT_UPDATE_CLOSING_DATE_CHANGED = 'PROJECT_UPDATE_CLOSING_DATE_CHANGED'\r\n\r\nexport const DIVISION_SET_ALL = 'DIVISION_SET_ALL'\r\nexport const DEPARTMENT_SET = 'DEPARTMENT_SET'\r\nexport const DEPARTMENT_SET_ALL = 'DEPARTMENT_SET_ALL'\r\nexport const DEPARTMENTS_SET = 'DEPARTMENTS_SET'\r\nexport const DOCUMENT_SET_ALL = 'DOCUMENT_SET_ALL'\r\nexport const EXPIRED_DOCS_ALL = 'EXPIRED_DOCS_ALL'\r\nexport const PENDING_DOCS_ALL = 'PENDING_DOCS_ALL'\r\nexport const EMAIL_DOCS_ALL = 'EMAIL_DOCS_ALL'\r\nexport const DOCUMENT_EDIT = 'DOCUMENT_EDIT'\r\nexport const LEAD_AGENCY_NAME_SET_ALL = 'LEAD_AGENCY_NAME_SET_ALL'\r\nexport const LEAD_AGENCY_NAME_SET = 'LEAD_AGENCY_NAME_SET'\r\nexport const IRREVOCABLE_PERIOD_SET_ALL = 'IRREVOCABLE_PERIOD_SET_ALL'\r\nexport const IRREVOCABLE_PERIOD_SET = 'IRREVOCABLE_PERIOD_SET'\r\nexport const TERM_SET_ALL = 'TERM_SET_ALL'\r\nexport const CONTRACT_CATEGORY_SET_ALL = 'CONTRACT_CATEGORY_SET_ALL'\r\nexport const CONTRACT_CATEGORIES_SET = 'CONTRACT_CATEGORIES_SET'\r\nexport const SOURCE_CATEGORY_SET_ALL = 'SOURCE_CATEGORY_SET_ALL'\r\nexport const TRADE_AGREEMENT_SET_ALL = 'TRADE_AGREEMENT_SET_ALL'\r\nexport const TRADE_AGREEMENT_SET = 'TRADE_AGREEMENT_SET'\r\nexport const TRADE_AGREEMENT_SPA_SET_ALL = 'TRADE_AGREEMENT_SPA_SET_ALL'\r\nexport const CONTRACT_CATEGORY_SET_STATUS = 'CONTRACT_CATEGORY_SET_STATUS'\r\nexport const SOURCE_CATEGORY_SET_STATUS = 'SOURCE_CATEGORY_SET_STATUS'\r\nexport const COMMODITY_CATEGORIES_SET_STATUS = 'COMMODITY_CATEGORIES_SET_STATUS'\r\nexport const COMMODITY_CATEGORIES_SET = 'COMMODITY_CATEGORIES_SET'\r\nexport const INSTRUCTION_TEMPLATES_SET_ALL = 'INSTRUCTION_TEMPLATES_SET_ALL'\r\nexport const TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL = 'TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL'\r\nexport const QUESTION_TEMPLATES_SET_ALL = 'QUESTION_TEMPLATES_SET_ALL'\r\nexport const SECUITY_TEMPLATES_SET_ALL = 'SECUITY_TEMPLATES_SET_ALL'\r\nexport const DOCUMENT_TEMPLATES_SET_ALL = 'DOCUMENT_TEMPLATES_SET_ALL'\r\nexport const TAX_SET_ALL = 'TAX_SET_ALL'\r\nexport const TAXES_SET_ALL = 'TAXES_SET_ALL'\r\nexport const SUBMISSION_SET_ALL = 'SUBMISSION_SET_ALL'\r\nexport const PROJECT_DOCUMENTS_SET_ALL = 'PROJECT_DOCUMENTS_SET_ALL'\r\nexport const PROJECT_DOCUMENT_SET = 'PROJECT_DOCUMENT_SET'\r\nexport const PROJECT_DOCUMENT_UPDATE = 'PROJECT_DOCUMENT_UPDATE'\r\nexport const PROJECT_DOCUMENT_DELETE = 'PROJECT_DOCUMENT_DELETE'\r\nexport const PROJECT_DOCUMENT_EDIT = 'PROJECT_DOCUMENT_EDIT'\r\nexport const PROCUREMENT_TYPE_SET_ALL = 'PROCUREMENT_TYPE_SET_ALL'\r\nexport const PROCUREMENT_TYPE_SET = 'PROCUREMENT_TYPE_SET'\r\nexport const AWARD_EXCEPTIONS_SET_ALL = 'AWARD_EXCEPTIONS_SET_ALL'\r\nexport const AWARD_EXCEPTION_SET = 'AWARD_EXCEPTION_SET'\r\nexport const AWARDED_SET_ALL = 'AWARDED_SET_ALL'\r\nexport const AWARD_PROJECT_SUMMARY_SET = 'AWARD_PROJECT_SUMMARY_SET'\r\nexport const AWARD_ALL_APPROVALS_SET = 'AWARD_ALL_APPROVALS_SET'\r\nexport const AWARD_CURRENT_APPROVAL_SET = 'AWARD_CURRENT_APPROVAL_SET'\r\nexport const AWARD_SELECTED_SUPPLIERS_SET = 'AWARD_SELECTED_SUPPLIERS_SET'\r\nexport const AWARD_SELECTED_SUPPLIERS_UPDATE = 'AWARD_SELECTED_SUPPLIERS_UPDATE'\r\nexport const AWARD_WORKFLOW_TYPE_SET = 'AWARD_WORKFLOW_TYPE_SET'\r\nexport const AWARD_APPROVAL_PUBLIC_SET = 'AWARD_APPROVAL_PUBLIC_SET'\r\nexport const PROJECT_PHASES_SET_ALL = 'PROJECT_PHASES_SET_ALL'\r\nexport const PROJECT_ERROR_SET = 'PROJECT_ERROR_SET'\r\nexport const PROJECT_ERROR_UNSET = 'PROJECT_ERROR_UNSET'\r\nexport const PROJECT_ERROR_UNSET_ALL = 'PROJECT_ERROR_UNSET_ALL'\r\nexport const PROJECT_SET_SAVE_REQUIRED = 'PROJECT_SET_SAVE_REQUIRED'\r\nexport const PROJECT_BACKUP_SET = 'PROJECT_BACKUP_SET'\r\nexport const PROJECT_SET_LAST_SAVE = 'PROJECT_SET_LAST_SAVE'\r\nexport const PROJECT_SET_LOCKED = 'PROJECT_SET_LOCKED'\r\nexport const PROJECT_ROLE_SET_ALL = 'PROJECT_ROLE_SET_ALL'\r\nexport const PROJECT_VALIDATION_ERROR_SET = 'PROJECT_VALIDATION_ERROR_SET'\r\nexport const PROJECT_UPDATE_SUBMISSIONS = 'PROJECT_UPDATE_SUBMISSIONS'\r\nexport const PROJECT_UPDATE_ADDENDUMS = 'PROJECT_UPDATE_ADDENDUMS'\r\nexport const PROJECT_UPDATE_VENDOR_QUESTIONS = 'PROJECT_UPDATE_VENDOR_QUESTIONS'\r\nexport const PROJECT_UPDATE_PLANTAKERS = 'PROJECT_UPDATE_PLANTAKERS'\r\nexport const PROJECT_UPDATE_DOCUMENT = 'PROJECT_UPDATE_DOCUMENT'\r\nexport const PROJECT_USER_SET_ALL = 'PROJECT_USER_SET_ALL'\r\nexport const PROJECT_USER_ROLE_SET_ALL = 'PROJECT_USER_ROLE_SET_ALL'\r\nexport const PROJECT_UPDATE_SUPPLIERS = 'PROJECT_UPDATE_SUPPLIERS'\r\nexport const PROJECT_COMMENT_SET_ALL = 'PROJECT_COMMENT_SET_ALL'\r\nexport const PROJECT_SET_FORCE_VALIDATE_BACKDATE = 'PROJECT_SET_FORCE_VALIDATE_BACKDATE'\r\nexport const PROJECT_TO_COPY_SET = 'PROJECT_TO_COPY_SET'\r\nexport const PROJECT_TO_SAVE_AS_TEMPLATE_SET = 'PROJECT_TO_SAVE_AS_TEMPLATE_SET'\r\nexport const USER_PROJECT_COMMENT_SET_ALL = 'USER_PROJECT_COMMENT_SET_ALL'\r\nexport const PROJECT_TASK_SET_ALL = 'PROJECT_TASK_SET_ALL'\r\nexport const PROJECT_TASK_SET_ALL_BY_USER = 'PROJECT_TASK_SET_ALL_BY_USER'\r\nexport const PROJECT_USER_FETCH_STATUS_SET = 'PROJECT_USER_FETCH_STATUS_SET'\r\nexport const PROJECT_JOURNAL_ENTRY_SET_ALL = 'PROJECT_JOURNAL_ENTRY_SET_ALL'\r\nexport const PROJECT_JOURNAL_ENTRY_SET = 'PROJECT_JOURNAL_ENTRY_SET'\r\nexport const PROJECT_JOURNAL_ENTRY_COMMENT_ADD = 'PROJECT_JOURNAL_ENTRY_COMMENT_ADD'\r\nexport const PROJECT_JOURNAL_DOCUMENTS_SET = 'PROJECT_JOURNAL_DOCUMENTS_SET'\r\n\r\nexport const EVALUATION_SET_PROJECT_EVALUATION = 'EVALUATION_SET_PROJECT_EVALUATION'\r\nexport const EVALUATION_SET_EVALUATIONS = 'EVALUATION_SET_EVALUATIONS'\r\nexport const EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES = 'EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES'\r\nexport const EVALUATION_SET_NON_DISCLOSURE_TEMPLATES = 'EVALUATION_SET_NON_DISCLOSURE_TEMPLATES'\r\nexport const EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES =\r\n 'EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES'\r\nexport const EVALUATION_SET_SCORE_CARD_TEMPLATES = 'EVALUATION_SET_SCORE_CARD_TEMPLATES'\r\n\r\nexport const INTAKE_SET_PROJECT_DATA = 'INTAKE_SET_PROJECT_DATA'\r\nexport const INTAKE_UPDATE_PROJECT_DATA = 'INTAKE_UPDATE_PROJECT_DATA'\r\nexport const INTAKE_SET_PENDING_REQUESTS = 'INTAKE_SET_PENDING_REQUESTS'\r\nexport const INTAKE_SET_NEW_PROJECT_DATA = 'INTAKE_SET_NEW_PROJECT_DATA'\r\nexport const INTAKE_SET_REQUESTERS = 'INTAKE_SET_REQUESTERS'\r\nexport const INTAKE_SET_PROJECTS_ALL = 'INTAKE_SET_PROJECTS_ALL'\r\n\r\nexport const SAVED_SEARCH_FILTERS_SET = 'SAVED_SEARCH_FILTERS_SET'\r\nexport const PROJECT_SEARCH_SAVED_SET = 'PROJECT_SEARCH_SAVED_SET'\r\nexport const PROJECT_SEARCH_FILTERS_SET = 'PROJECT_SEARCH_FILTERS_SET'\r\nexport const PROJECT_SEARCH_COLUMNS_SET = 'PROJECT_SEARCH_COLUMNS_SET'\r\nexport const PROJECT_SEARCH_FILTERS_ACTIVE_SET = 'PROJECT_SEARCH_FILTERS_ACTIVE_SET'\r\nexport const PROJECT_SEARCH_RESULT_SET = 'PROJECT_SEARCH_RESULT_SET'\r\nexport const PROJECT_CAN_SAVE_SET = 'PROJECT_CAN_SAVE_SET'\r\nexport const SAVED_PROJECT_SEARCH_SET_ALL = 'SAVED_PROJECT_SEARCH_SET_ALL'\r\nexport const SAVED_PROJECT_SEARCH_SET = 'SAVED_PROJECT_SEARCH_SET'\r\nexport const SAVED_PROJECT_SEARCH_ADD = 'SAVED_PROJECT_SEARCH_ADD'\r\nexport const SAVED_SEARCH_SET_ACTIVE = 'SAVED_SEARCH_SET_ACTIVE'\r\n\r\nexport const TENDER_SET = 'TENDER_SET'\r\nexport const TENDERNODE_SET = 'TENDERNODE_SET'\r\nexport const TENDERNODE_UPDATE_OR_ADD = 'TENDERNODE_UPDATE_OR_ADD'\r\nexport const TENDERNODE_SAVE_REQUIRED = 'TENDERNODE_SAVE_REQUIRED'\r\n\r\nexport const TENDER_SET_SEARCH = 'TENDER_SET_SEARCH'\r\nexport const TENDERTABLE_SET_FROMDTO = 'TENDERTABLE_SET_FROMDTO'\r\nexport const TENDERTABLE_SET = 'TENDERTABLE_SET'\r\nexport const TENDERTABLE_SET_SUMMARY = 'TENDERTABLE_SET_SUMMARY'\r\nexport const TENDERTABLE_ADD_OR_REPLACE_SUMMARY = 'TENDERTABLE_ADD_OR_REPLACE_SUMMARY'\r\nexport const TENDERTABLE_REMOVE_SUMMARY = 'TENDERTABLE_REMOVE_SUMMARY'\r\nexport const TENDERTABLE_UPDATE = 'TENDERTABLE_UPDATE'\r\nexport const TENDERTABLE_CLEAR = 'TENDERTABLE_CLEAR'\r\nexport const TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL = 'TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL'\r\nexport const TENDERTABLEROW_SET = 'TENDERTABLEROW_SET'\r\nexport const TENDERTABLEROW_SET_FROMDTO = 'TENDERTABLEROW_SET_FROMDTO'\r\nexport const TENDERTABLEROW_CREATE = 'TENDERTABLEROW_CREATE'\r\nexport const TENDERTABLEROW_REORDER = 'TENDERTABLEROW_REORDER'\r\nexport const TENDERTABLEROW_DELETE = 'TENDERTABLEROW_DELETE'\r\nexport const TENDERTABLEROW_CLEAR = 'TENDERTABLEROW_CLEAR'\r\nexport const TENDERTABLECOLUMN_SET = 'TENDERTABLECOLUMN_SET'\r\nexport const TENDERTABLECOLUMN_SET_FROMDTO = 'TENDERTABLECOLUMN_SET_FROMDTO'\r\nexport const TENDERTABLECOLUMN_CREATE = 'TENDERTABLECOLUMN_CREATE'\r\nexport const TENDERTABLECOLUMN_REORDER = 'TENDERTABLECOLUMN_REORDER'\r\nexport const TENDERTABLECOLUMN_DELETE = 'TENDERTABLECOLUMN_DELETE'\r\nexport const TENDERTABLECOLUMN_CLEAR = 'TENDERTABLECOLUMN_CLEAR'\r\nexport const TENDERTABLEROWCOLUMN_SET = 'TENDERTABLEROWCOLUMN_SET'\r\nexport const TENDERTABLEROWCOLUMN_SET_FROMDTO = 'TENDERTABLEROWCOLUMN_SET_FROMDTO'\r\nexport const TENDERTABLEROWCOLUMN_CREATE = 'TENDERTABLEROWCOLUMN_CREATE'\r\nexport const TENDERTABLEROWCOLUMN_DELETE = 'TENDERTABLEROWCOLUMN_DELETE'\r\nexport const TENDERTABLEROWCOLUMN_CLEAR = 'TENDERTABLEROWCOLUMN_CLEAR'\r\nexport const TENDER_TYPE_SET_ALL = 'TENDER_TYPE_SET_ALL'\r\n\r\nexport const CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL = 'CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL'\r\nexport const CONTRACT_DATELIST_SET_ALL = 'CONTRACT_DATELIST_SET_ALL'\r\n\r\nexport const TERMS_SET_ALL = 'TERMS_SET_ALL'\r\n\r\nexport const USER_SET = 'USER_SET'\r\nexport const USER_SET_ALL = 'USER_SET_ALL'\r\nexport const USER_SET_PURCHASERS = 'USER_SET_PURCHASERS'\r\nexport const USER_CREATE = 'USER_CREATE'\r\nexport const USER_DELETE_USERS_FROM_GROUP = 'USER_DELETE_USERS_FROM_GROUP'\r\nexport const USER_ADD_GROUPS = 'USER_ADD_GROUPS'\r\nexport const USER_REPLACE_USERS_GROUP = 'USER_REPLACE_USERS_GROUP'\r\nexport const USER_DELETE_USERS_GROUP = 'USER_DELETE_USERS_GROUP'\r\n\r\nexport const VENDOR_SET = 'VENDOR_SET'\r\nexport const VENDOR_SET_SEARCH = 'VENDOR_SET_SEARCH'\r\nexport const VENDOR_LISTS_SET = 'VENDOR_LISTS_SET'\r\nexport const VENDOR_SET_SEARCH_TOTAL = 'VENDOR_SET_SEARCH_TOTAL'\r\nexport const VENDOR_LIST_SET = 'VENDOR_LIST_SET'\r\nexport const VENDOR_DOCUMENTS_SET = 'VENDOR_DOCUMENTS_SET'\r\nexport const VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET = 'VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET'\r\n\r\nexport const VENDOR_PERFORMANCE_SUMMARY_SET = 'VENDOR_PERFORMANCE_SUMMARY_SET'\r\nexport const VENDOR_PERFORMANCE = 'VENDOR_PERFORMANCE'\r\nexport const VENDOR_PERFORMANCE_REMOVE = 'VENDOR_PERFORMANCE_REMOVE'\r\nexport const VENDOR_PERFORMANCE_STATUS_LOG_SET = 'VENDOR_PERFORMANCE_STATUS_LOG_SET'\r\nexport const VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL =\r\n 'VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL'\r\nexport const PERFORMANCE_STATUS_SET_SUMMARY = 'PERFORMANCE_STATUS_SET_SUMMARY'\r\nexport const PERFORMANCE_STATUS_EVALUATION_SET = 'PERFORMANCE_STATUS_EVALUATION_SET'\r\n\r\nexport const LOCALIZATION_SET_LOCALE = 'LOCALIZATION_SET_LOCALE'\r\n\r\nexport const INITIALIZE_CLIENT = 'INITIALIZE_CLIENT'\r\n\r\nexport const GET_TEAM = 'GET_TEAM'\r\nexport const SET_TEAM_UPDATED = 'SET_TEAM_UPDATED'\r\n\r\nexport const DASHBOARD_WIDGET_SET = 'DASHBOARD_WIDGET_SET'\r\nexport const DASHBOARD_USER_WIDGET_SET = 'DASHBOARD_USER_WIDGET_SET'\r\nexport const DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET = 'DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET'\r\nexport const DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET = 'DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET'\r\n\r\nexport const SUPPLIER_SEARCH_RESULTS_SET = 'SUPPLIER_SEARCH_RESULTS_SET'\r\nexport const SUPPLIER_SEARCH_TERM_SET = 'SUPPLIER_SEARCH_TERM_SET'\r\n\r\nexport const SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET =\r\n 'SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET'\r\nexport const SUPPLIER_SUBMISSION_VENDORGUID_SET = 'SUPPLIER_SUBMISSION_VENDORGUID_SET'\r\n\r\nexport const PERMISSION_SET = 'PERMISSION_SET'\r\n\r\nexport const ROUTEPERMISSION_SET = 'ROUTEPERMISSION_SET'\r\nexport const ROUTEPERMISSION_USER_SET = 'ROUTEPERMISSION_USER_SET'\r\n\r\nexport const SSO_ACTIVE_SET = 'SSO_ACTIVE_SET'\r\nexport const SSO_CERT_SET = 'SSO_CERT_SET'\r\nexport const SSO_URL_SET = 'SSO_URL_SET'\r\n\r\nexport const APPROVAL_EXCEPTIONS_SET = 'APPROVAL_EXCEPTIONS_SET'\r\nexport const APPROVAL_EXCEPTION_SET = 'APPROVAL_EXCEPTION_SET'\r\n\r\nexport const PROCUREMENT_METHOD_LIMITED_TYPES_SET = 'PROCUREMENT_METHOD_LIMITED_TYPES_SET'\r\nexport const PROCUREMENT_METHOD_LIMITED_TYPE_SET = 'PROCUREMENT_METHOD_LIMITED_TYPE_SET'\r\n\r\nexport const PERFORMANCE_EVALUATION_TYPE_SET_ALL = 'PERFORMANCE_EVALUATION_TYPE_SET_ALL'\r\n\r\nexport const PERFORMANCE_TEMPLATE_SET_ALL = 'PERFORMANCE_TEMPLATE_SET_ALL'\r\nexport const PERFORMANCE_WORKFLOW_SET = 'PERFORMANCE_WORKFLOW_SET'\r\n\r\nexport const PERFORMANCE_STATUS_SET_ALL = 'PERFORMANCE_STATUS_SET_ALL'\r\nexport const PERFORMANCE_EVALUATION_STATUS_SET_ALL = 'PERFORMANCE_EVALUATION_STATUS_SET_ALL'\r\n\r\nexport const SNAPSHOT_LAYOUT_SET_LIST = 'SNAPSHOT_LAYOUT_SET_LIST'\r\n\r\nexport const FEATURES_SET = 'FEATURES_SET'\r\n\r\n// global\r\nexport const SHOW_APP_BAR = 'SHOW_APP_BAR'\r\nexport const USER_NAV_MENU_SET = 'USER_NAV_MENU_SET '\r\nexport const ACTIVITY_FEED_MENU_SET = 'ACTIVITY_FEED_MENU_SET'\r\nexport const MESSAGE_CENTRE_MENU_SET = 'MESSAGE_CENTRE_MENU_SET'\r\nexport const PROJECT_SNAPSHOT_SET = 'PROJECT_SNAPSHOT_SET'\r\nexport const PROJECT_SNAPSHOT_TOGGLE = 'PROJECT_SNAPSHOT_TOGGLE'\r\nexport const NO_REDIRECT_SET = 'NO_REDIRECT_SET'\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n auditAggregateTypes: [],\r\n auditVendorAggregateTypes: [],\r\n auditAggregateVendors: [],\r\n auditAggregateUsers: [],\r\n auditAggregateSortedTypes: [],\r\n auditSearchResults: [],\r\n auditSearchResultsTotal: 0,\r\n auditVendorSearchResults: {},\r\n auditVendorSearchResultsTotal: 0\r\n}\r\n\r\nexport const getters = {\r\n getAuditAggregateTypes: (state) => state.auditAggregateTypes,\r\n getAuditVendorAggregateTypes: (state) => state.auditVendorAggregateTypes,\r\n getAuditAggregateVendors: (state) => state.auditAggregateVendors,\r\n getAuditAggregateUsers: (state) => state.auditAggregateUsers,\r\n getAuditAggregateSortedTypes: (state) => state.auditAggregateSortedTypes,\r\n getAuditSearchResults: (state) => state.auditSearchResults,\r\n getAuditSearchResultsTotal: (state) => state.auditSearchResultsTotal,\r\n getAuditVendorSearchResults: (state) => state.auditVendorSearchResults,\r\n getAuditVendorSearchResultsTotal: (state) => state.auditVendorSearchResultsTotal\r\n}\r\nexport const actions = {\r\n fetchAuditAggregates: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AuditEvents/Aggregates?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n let auditAggs = []\r\n if (response.data.count > 0) {\r\n auditAggs = response.data.data.elasticAuditAggregateDTO.values[0]\r\n }\r\n commit(types.AUDIT_AGGREGATE_TYPES_SET, auditAggs.types)\r\n commit(types.AUDIT_AGGREGATE_VENDORS_SET, auditAggs.vendors)\r\n commit(types.AUDIT_AGGREGATE_USERS_SET, auditAggs.users)\r\n return auditAggs\r\n })\r\n },\r\n fetchAuditVendorAggregates: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AuditEvents/VendorAggregates?vendorId=${vendorId}`\r\n return api.get(url).then((response) => {\r\n let auditAggs = []\r\n if (response.data.count > 0) {\r\n auditAggs = response.data.data.elasticAuditAggregateDTO.values[0]\r\n }\r\n commit(types.AUDIT_VENDOR_AGGREGATE_TYPES_SET, auditAggs.types)\r\n return auditAggs\r\n })\r\n },\r\n fetchAuditTypeAggregates: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AuditEvents/ActivityAggregates?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n let auditAggs = []\r\n if (response.data.count > 0) {\r\n auditAggs = response.data.data.elasticAuditActivityAggregateDTO.values\r\n }\r\n\r\n commit(types.AUDIT_AGGREGATE_SORTED_TYPES_SET, auditAggs)\r\n return auditAggs\r\n })\r\n },\r\n fetchAuditResults: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AuditEvents/Search?projectId=${\r\n params.projectId\r\n }&keywords=${params.keywords !== null ? encodeURIComponent(params.keywords) : ''}&eventType=${\r\n params.eventType !== null ? encodeURIComponent(params.eventType) : ''\r\n }&companyName=${\r\n params.companyName !== null ? encodeURIComponent(params.companyName) : ''\r\n }&userName=${\r\n params.userName !== null ? encodeURIComponent(params.userName) : ''\r\n }&filter.dateFrom=${params.startDate}&filter.dateTo=${params.endDate}&filter.start=${\r\n params.start\r\n }&filter.limit=${params.limit}&filter.sortColumn=${params.sortColumn}&filter.sortDirection=${\r\n params.sortDirection\r\n }`\r\n return api.get(url).then((response) => {\r\n let results = []\r\n let total = 0\r\n if (response.data.count > 0) {\r\n results = response.data.data.searchResult.values[0]\r\n total = response.data.data.searchResult.total\r\n }\r\n commit(types.AUDIT_SEARCH_RESULTS_SET, results)\r\n commit(types.AUDIT_SEARCH_RESULTS_TOTAL_SET, total)\r\n return results\r\n })\r\n },\r\n fetchVendorAuditResults: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AuditEvents/SearchByVendor?vendorId=${\r\n params.vendorId\r\n }&keywords=${params.keywords !== null ? encodeURIComponent(params.keywords) : ''}&eventType=${\r\n params.eventType !== null ? encodeURIComponent(params.eventType) : ''\r\n }&companyName=${\r\n params.companyName !== null ? encodeURIComponent(params.companyName) : ''\r\n }&userName=${\r\n params.userName !== null ? encodeURIComponent(params.userName) : ''\r\n }&filter.dateFrom=${params.startDate}&filter.dateTo=${params.endDate}&filter.start=${\r\n params.start\r\n }&filter.limit=${params.limit}&filter.sortColumn=${params.sortColumn}&filter.sortDirection=${\r\n params.sortDirection\r\n }`\r\n return api.get(url).then((response) => {\r\n let results = {}\r\n let total = 0\r\n if (response.data.count > 0) {\r\n results = response.data.data.searchResult.values[0]\r\n total = response.data.data.searchResult.total\r\n }\r\n commit(types.AUDIT_VENDOR_SEARCH_RESULTS_SET, results)\r\n commit(types.AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET, total)\r\n return results\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.AUDIT_AGGREGATE_SORTED_TYPES_SET](state, auditAggSortedTypes) {\r\n state.auditAggregateSortedTypes = auditAggSortedTypes\r\n },\r\n [types.AUDIT_AGGREGATE_TYPES_SET](state, auditAggTypes) {\r\n state.auditAggregateTypes = auditAggTypes\r\n },\r\n [types.AUDIT_VENDOR_AGGREGATE_TYPES_SET](state, auditAggTypes) {\r\n state.auditVendorAggregateTypes = auditAggTypes\r\n },\r\n [types.AUDIT_AGGREGATE_VENDORS_SET](state, auditAggVendors) {\r\n state.auditAggregateVendors = auditAggVendors\r\n },\r\n [types.AUDIT_AGGREGATE_USERS_SET](state, auditAggUsers) {\r\n state.auditAggregateUsers = auditAggUsers\r\n },\r\n [types.AUDIT_SEARCH_RESULTS_SET](state, results) {\r\n state.auditSearchResults = results\r\n },\r\n [types.AUDIT_SEARCH_RESULTS_TOTAL_SET](state, total) {\r\n state.auditSearchResultsTotal = total\r\n },\r\n [types.AUDIT_VENDOR_SEARCH_RESULTS_SET](state, results) {\r\n state.auditVendorSearchResults = results\r\n },\r\n [types.AUDIT_VENDOR_SEARCH_RESULTS_TOTAL_SET](state, total) {\r\n state.auditVendorSearchResultsTotal = total\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport { useDataSanitizing } from '@/utils/dataSanitizing'\r\nimport * as types from '../mutation-types'\r\n\r\nconst { sanitizeData } = useDataSanitizing()\r\n\r\nconst state = {\r\n isLocalAuth: false,\r\n hasLocalAuthOption: false,\r\n authHost: null\r\n}\r\n\r\nexport const getters = {\r\n isLocalAuth: (state) => state.isLocalAuth,\r\n hasLocalAuthOption: (state) => state.hasLocalAuthOption,\r\n getAuthPublicUrl: () => {\r\n const item = localStorage.getItem('authPublicUrl')\r\n return sanitizeData(item)\r\n },\r\n getAuthLegacyAdminUrl: () => {\r\n const item = localStorage.getItem('authLegacyAdminUrl')\r\n return sanitizeData(item)\r\n }\r\n}\r\n\r\nexport const actions = {\r\n setAuthStatus: ({ commit }, isAuth) => {\r\n commit(types.AUTH_SET_ISAUTH, isAuth)\r\n },\r\n clearLoginType: ({ commit }) => {\r\n commit(types.AUTH_SET_TYPE, false)\r\n commit(types.AUTH_SET_OPTION, false)\r\n },\r\n getLoginType: async ({ commit, state }, model) => {\r\n try {\r\n const response = await api.post('/api/v1/login/loginType', model)\r\n if (response.status === 200 && response.data.data.searchResult.count === 1) {\r\n switch (response.data.data.searchResult.values[0]) {\r\n case 'local':\r\n commit(types.AUTH_SET_TYPE, true)\r\n commit(types.AUTH_SET_OPTION, false)\r\n break\r\n case 'sso':\r\n commit(types.AUTH_SET_TYPE, false)\r\n commit(types.AUTH_SET_OPTION, false)\r\n break\r\n case 'both':\r\n commit(types.AUTH_SET_TYPE, false)\r\n commit(types.AUTH_SET_OPTION, true)\r\n break\r\n }\r\n }\r\n return Promise.resolve(state.isLocalAuth)\r\n } catch (err) {\r\n commit(types.AUTH_SET_TYPE, false)\r\n commit(types.AUTH_SET_OPTION, false)\r\n throw err\r\n }\r\n },\r\n fetchHosts: async ({ commit }) => {\r\n try {\r\n const response = await api.get('/api/v1/customer/{customerId}/node/{nodeId}/Hosts')\r\n if (response.status === 200) {\r\n commit(types.AUTH_SET_HOST, response.data.data.hostDTO.values[0])\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n authorize: ({ commit, state }, model) => {\r\n return api\r\n .post('/api/v1/login', model)\r\n .then((response) => {\r\n commit(types.AUTH_SET_ISAUTH, response.status === 200)\r\n commit(types.AUTH_SET_CUSTOMER, response.data.data.customerDTO.values[0])\r\n commit(types.AUTH_SET_USER, response.data.data.userDTO.values[0])\r\n commit(types.AUTH_SET_NODE, response.data.data.tenderNodeDTO.values[0])\r\n commit(types.AUTH_SET_CUSTOMERNODE, response.data.data.customerNodeDTO.values[0])\r\n commit(types.AUTH_SET_HOST, response.data.data.hostDTO.values[0])\r\n return state.authCustomer\r\n })\r\n .catch((err) => {\r\n commit(types.AUTH_SET_ISAUTH, false)\r\n throw err\r\n })\r\n },\r\n validateSession: ({ commit, getters }) => {\r\n return api\r\n .post('/api/v1/login/validate')\r\n .then((response) => {\r\n if (!getters.isAuthorized) {\r\n commit(types.AUTH_SET_ISAUTH, response.status === 200)\r\n commit(types.AUTH_SET_CUSTOMER, response.data.data.customerDTO.values[0])\r\n commit(types.AUTH_SET_USER, response.data.data.userDTO.values[0])\r\n commit(types.AUTH_SET_NODE, response.data.data.tenderNodeDTO.values[0])\r\n commit(types.AUTH_SET_CUSTOMERNODE, response.data.data.customerNodeDTO.values[0])\r\n commit(types.AUTH_SET_HOST, response.data.data.hostDTO.values[0])\r\n }\r\n\r\n return response\r\n })\r\n .catch((err) => {\r\n commit(types.AUTH_SET_ISAUTH, false)\r\n throw err\r\n })\r\n },\r\n refreshSession: () => {\r\n return api.get('/api/v1/Utilities/RefreshSession')\r\n },\r\n logout: ({ commit }, istimeOut = false) => {\r\n localStorage.setItem('customerTimeZone', '')\r\n localStorage.setItem('authPublicUrl', '')\r\n localStorage.setItem('authLegacyAdminUrl', '')\r\n localStorage.setItem('session-timeout', '')\r\n\r\n commit(types.AUTH_SET_ISAUTH, false)\r\n commit(types.AUTH_SET_CUSTOMER, null)\r\n commit(types.AUTH_SET_USER, null)\r\n commit(types.AUTH_SET_NODE, null)\r\n commit(types.AUTH_SET_CUSTOMERNODE, null)\r\n return api.post('/api/v1/login/signoff').then((response) => {\r\n localStorage.setItem('session-timeout', '')\r\n if (\r\n istimeOut === false &&\r\n response.data.count !== 0 &&\r\n response.data.data.searchResult.values[0].redirectUrl\r\n ) {\r\n window.location.href = response.data.data.searchResult.values[0].redirectUrl\r\n }\r\n return response\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.AUTH_SET_TYPE](state, isLocalAuth) {\r\n state.isLocalAuth = isLocalAuth\r\n },\r\n [types.AUTH_SET_OPTION](state, hasLocalAuthOption) {\r\n state.hasLocalAuthOption = hasLocalAuthOption\r\n },\r\n [types.AUTH_SET_HOST](state, authHost) {\r\n state.authHost = authHost\r\n localStorage.setItem('authPublicUrl', `https://${authHost.hostname}`)\r\n localStorage.setItem('authLegacyAdminUrl', authHost.legacyAdminUrl)\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import * as types from '../mutation-types'\r\n\r\nconst state = {\r\n authorized: null,\r\n authCustomer: null,\r\n authCustomerNode: null,\r\n authUser: null,\r\n authTenderNode: null\r\n}\r\n\r\nexport const getters = {\r\n isAuthorized: (state) => state.authorized,\r\n getAuthCustomer: (state) => state.authCustomer,\r\n getAuthCustomerNode: (state) => state.authCustomerNode,\r\n getAuthUser: (state) => state.authUser,\r\n getAuthTenderNode: (state) => state.authTenderNode\r\n}\r\n\r\nexport const actions = {\r\n setAuthCredentials: ({ commit }, { customerId, userId, nodeId, customerNodeId }) => {\r\n commit(types.AUTH_SET_ISAUTH, true)\r\n commit(types.AUTH_SET_CUSTOMER, { id: customerId })\r\n commit(types.AUTH_SET_USER, { id: userId })\r\n commit(types.AUTH_SET_NODE, { id: nodeId })\r\n commit(types.AUTH_SET_CUSTOMERNODE, { id: customerNodeId })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.AUTH_SET_ISAUTH](state, isAuth) {\r\n state.authorized = isAuth\r\n },\r\n [types.AUTH_SET_CUSTOMER](state, authCustomer) {\r\n state.authCustomer = authCustomer\r\n },\r\n [types.AUTH_SET_USER](state, authUser) {\r\n state.authUser = authUser\r\n },\r\n [types.AUTH_SET_NODE](state, authTenderNode) {\r\n state.authTenderNode = authTenderNode\r\n },\r\n [types.AUTH_SET_CUSTOMERNODE](state, authCustomerNode) {\r\n state.authCustomerNode = authCustomerNode\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport * as types from './../../mutation-types.js'\r\n\r\nexport const state = {\r\n awardApproval: []\r\n}\r\n\r\nexport const getters = {\r\n getAwardApprovalPublicPage: (state) => state.awardApproval\r\n}\r\n\r\nexport const actions = {\r\n fetchAwardApprovalPublicPage: ({ commit }, params) => {\r\n const url = `api/v1/Awards/approvals/${params.approvalId}/approver/${params.workflowId}?uat=${params.uat}`\r\n\r\n return api.get(url).then((response) => {\r\n let result = []\r\n\r\n if (response.data.count !== 0) {\r\n result = response.data.data.awardApprovalDTO.values[0]\r\n }\r\n\r\n commit(types.AWARD_APPROVAL_PUBLIC_SET, result)\r\n\r\n return result\r\n })\r\n },\r\n awardApprovalPublicPageDocumentPreview: (_, params) => {\r\n const url = `api/v1/Awards/approvals/${params.awardApprovalId}/approver/${params.awardApprovalWorkflowId}/document/${params.documentId}/download?uat=${params.userAccessToken}`\r\n\r\n return downloadApi.get(url).then(util.getBlobUrlFomApiResponse)\r\n },\r\n awardApprovalPublicPageDocumentDownload: (_, params) => {\r\n const url = `api/v1/Awards/approvals/${params.awardApprovalId}/approver/${params.awardApprovalWorkflowId}/document/${params.documentId}/download?uat=${params.userAccessToken}`\r\n\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n },\r\n awardApprovalPublicPageStatusSet: ({ commit }, params) => {\r\n const url = `api/v1/Awards/approvals/${params.approvalId}/approver/${params.workflowId}/status?uat=${params.uat}&status=${params.status}`\r\n\r\n return api.post(url, params.comments).then((response) => {\r\n const result = response?.data?.data?.awardApprovalDTO?.values?.[0] || []\r\n commit(types.AWARD_APPROVAL_PUBLIC_SET, result)\r\n return result\r\n })\r\n },\r\n awardApprovalPublicPageDocumentDownloadAll: (_, params) => {\r\n const url = `api/v1/Awards/approvals/${params.awardApprovalId}/approver/${params.awardApprovalWorkflowId}/document/download/all?uat=${params.userAccessToken}`\r\n\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.AWARD_APPROVAL_PUBLIC_SET](state, awardApproval) {\r\n state.awardApproval = awardApproval\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n certificates: []\r\n}\r\n\r\nexport const getters = {\r\n getCertificates: (state) => state.certificates,\r\n getCertificate: (state) => (id) => {\r\n return state.certificates.find((c) => c.id === id)\r\n }\r\n}\r\nexport const actions = {\r\n fetchCertificates: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Certificates?contractId=${contractId}&filter.fields=Vendor`\r\n return api.get(url).then((response) => {\r\n let certificates = []\r\n if (response.data.count > 0) {\r\n certificates = response.data.data.certificateDTO.values\r\n }\r\n commit(types.CERTIFICATES_SET, certificates)\r\n return certificates\r\n })\r\n },\r\n fetchCertificate: ({ commit }, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Certificates/${id}`\r\n return api.get(url).then((response) => {\r\n let certificates = []\r\n if (response.data.count > 0) {\r\n certificates = response.data.data.certificateDTO.values\r\n }\r\n commit(types.CERTIFICATES_SET, certificates)\r\n return certificates\r\n })\r\n },\r\n createCertificate: ({ commit }, formData) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Certificates/'\r\n return uploadApi.post(url, formData).then((response) => {\r\n let certificate = {}\r\n if (response.data.count > 0) {\r\n certificate = response.data.data.certificateDTO.values[0]\r\n commit(types.CERTIFICATE_UPDATE_OR_ADD, certificate)\r\n }\r\n return certificate\r\n })\r\n },\r\n updateCertificate: ({ commit }, model) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Certificates/'\r\n return api.put(url, model.model).then((response) => {\r\n let certificate = {}\r\n if (response.data.count > 0) {\r\n certificate = response.data.data.certificateDTO.values[0]\r\n commit(types.CERTIFICATE_UPDATE_OR_ADD, certificate)\r\n }\r\n return certificate\r\n })\r\n },\r\n deleteCertificate: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Certificates/${params.documentId}`\r\n return api.delete(url).then(() => {\r\n commit(types.CERTIFICATE_DELETE, params.documentId)\r\n return ''\r\n })\r\n },\r\n setCertificate: ({ commit }, model) => {\r\n commit(types.CERTIFICATES_SET, model)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CERTIFICATES_SET](state, certificates) {\r\n state.certificates = certificates\r\n },\r\n [types.CERTIFICATE_UPDATE_OR_ADD](state, certificate) {\r\n const matchedIndex = state.certificates.findIndex((c) => c.id === certificate.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.certificates.splice(matchedIndex, 1)\r\n state.certificates.push(certificate)\r\n } else {\r\n state.certificates.push(certificate)\r\n }\r\n },\r\n [types.CERTIFICATE_DELETE](state, certificateId) {\r\n const matchedIndex = state.certificates.findIndex((c) => c.id === certificateId)\r\n if (matchedIndex !== -1) {\r\n state.certificates.splice(matchedIndex, 1)\r\n } else {\r\n const err = 'Mismatch certificate id'\r\n throw err\r\n }\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n certificateTypes: []\r\n}\r\n\r\nexport const getters = {\r\n getCertificateTypes: (state) => state.certificateTypes\r\n}\r\nexport const actions = {\r\n fetchCertificateTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/CertificateTypes'\r\n return api.get(url).then((response) => {\r\n const certificateTypes = response?.data?.data?.nodeCertificateTypeDTO?.values || []\r\n commit(types.CERTIFICATE_TYPES_SET, certificateTypes)\r\n return certificateTypes\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CERTIFICATE_TYPES_SET](state, certificateTypes) {\r\n state.certificateTypes = certificateTypes\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractBondDocuments: []\r\n}\r\n\r\nexport const getters = {\r\n getContractBondDocuments: (state) => state.contractBondDocuments,\r\n getContractBondDocument: (state) => (id) => {\r\n return state.contractBondDocuments.find((i) => i.id === id)\r\n }\r\n}\r\nexport const actions = {\r\n fetchContractBondDocuments: ({ commit }, contractId) => {\r\n const url =\r\n `/api/v1/customer/{customerId}/node/{nodeId}/contract/${contractId}/ContractBondsDocuments` +\r\n `?filter.fields=Vendor,ContractBondsDocumentType`\r\n return api.get(url).then((response) => {\r\n let contractBondDocuments = []\r\n if (response.data.count > 0) {\r\n contractBondDocuments = response.data.data.contractBondsDocumentDTO.values\r\n commit(types.CONTRACT_BOND_DOCUMENTS_SET, contractBondDocuments)\r\n }\r\n return contractBondDocuments\r\n })\r\n },\r\n fetchContractBondDocument: ({ commit }, id, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${contractId}/ContractBondsDocuments/${id}`\r\n return api.get(url).then((response) => {\r\n let contractBondDocuments = []\r\n if (response.data.count > 0) {\r\n contractBondDocuments = response.data.data.contractBondsDocumentDTO.values\r\n commit(types.CONTRACT_BOND_DOCUMENTS_SET, contractBondDocuments)\r\n }\r\n return contractBondDocuments\r\n })\r\n },\r\n createContractBondsDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${model.contractId}/ContractBondsDocuments`\r\n return uploadApi.post(url, model.formData).then((response) => {\r\n let contractBondsDocument = {}\r\n if (response.data.count > 0) {\r\n contractBondsDocument = response.data.data.contractBondsDocumentDTO.values[0]\r\n commit(types.CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD, contractBondsDocument)\r\n }\r\n return contractBondsDocument\r\n })\r\n },\r\n updateContractBondsDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${model.contractId}/ContractBondsDocuments`\r\n return api.put(url, model.model).then((response) => {\r\n let contractBondsDocument = {}\r\n if (response.data.count > 0) {\r\n contractBondsDocument = response.data.data.contractBondsDocumentDTO.values[0]\r\n commit(types.CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD, contractBondsDocument)\r\n }\r\n\r\n return contractBondsDocument\r\n })\r\n },\r\n deleteContractBondDocument: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${params.contractId}/ContractBondsDocuments/${params.documentId}`\r\n return api.delete(url).then(() => {\r\n commit(types.CONTRACT_BOND_DOCUMENTS_DELETE, params.documentId)\r\n return ''\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_BOND_DOCUMENTS_SET](state, contractBondDocuments) {\r\n state.contractBondDocuments = contractBondDocuments\r\n },\r\n [types.CONTRACT_BOND_DOCUMENTS_DELETE](state, contractBondDocumentsId) {\r\n state.contractBondDocuments = state.contractBondDocuments.filter(\r\n (cbd) => cbd.id !== contractBondDocumentsId\r\n )\r\n },\r\n [types.CONTRACT_BONDS_DOCUMENT_UPDATE_OR_ADD](state, contractBondsDocument) {\r\n const matchedIndex = state.contractBondDocuments.findIndex(\r\n (i) => i.id === contractBondsDocument.id\r\n )\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.contractBondDocuments.splice(matchedIndex, 1)\r\n }\r\n state.contractBondDocuments.push(contractBondsDocument)\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractBondDocumentTypes: [],\r\n contractBondDocumentType: null\r\n}\r\n\r\nexport const getters = {\r\n getContractBondDocumentTypes: (state) => state.contractBondDocumentTypes,\r\n getContractBondDocumentType: (state) => (id) => {\r\n return state.contractBondDocumentTypes.find((c) => c.id === id)\r\n },\r\n getContractBondDocumentTypeNew: (state) => state.contractBondDocumentType\r\n}\r\nexport const actions = {\r\n fetchContractBondDocumentTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/ContractBondsDocumentTypes'\r\n return api.get(url).then((response) => {\r\n const contractBondDocumentTypes =\r\n response.data?.data?.contractBondsDocumentTypeDTO?.values || []\r\n commit(types.CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL, contractBondDocumentTypes)\r\n return contractBondDocumentTypes\r\n })\r\n },\r\n saveContractBondDocumentType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBondsDocumentTypes`\r\n return api.post(url, model).then((response) => {\r\n const contractBondDocumentType = response.data.data.contractBondsDocumentTypeDTO.values[0]\r\n commit(types.CONTRACT_BOND_DOCUMENT_TYPE_SET, contractBondDocumentType)\r\n return contractBondDocumentType\r\n })\r\n },\r\n updateContractBondDocumentType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBondsDocumentTypes`\r\n return api.put(url, model).then((response) => {\r\n const contractBondDocumentType = response.data.data.contractBondsDocumentTypeDTO.values[0]\r\n commit(types.CONTRACT_BOND_DOCUMENT_TYPE_SET, contractBondDocumentType)\r\n return contractBondDocumentType\r\n })\r\n },\r\n deleteContractBondDocumentType: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBondsDocumentTypes?contractBondsDocumentTypeId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_BOND_DOCUMENT_TYPES_SET_ALL](state, contractBondDocumentTypes) {\r\n state.contractBondDocumentTypes = contractBondDocumentTypes\r\n },\r\n [types.CONTRACT_BOND_DOCUMENT_TYPE_SET](state, contractBondDocumentType) {\r\n state.contractBondDocumentType = contractBondDocumentType\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractBuilderLicenseConfiguration: null, // single Agency\r\n contractBuilderLicenseConfigurations: [], // all Agencies\r\n contractBuilderLicenseConfigurationsContractSignatures: [],\r\n fetchRequired: false\r\n}\r\n\r\nexport const getters = {\r\n getContractBuilderLicenseConfiguration: (state) => state.contractBuilderLicenseConfiguration,\r\n getContractBuilderLicenseConfigurations: (state) => state.contractBuilderLicenseConfigurations,\r\n getContractBuilderLicenseConfigurationsContractSignatures: (state) =>\r\n state.contractBuilderLicenseConfigurationsContractSignatures,\r\n contractBuilderLicenseConfigurationFetchRequired: (state) => state.fetchRequired\r\n}\r\n\r\nexport const actions = {\r\n fetchContractBuilderLicenseConfiguration: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBuilderLicenseConfiguration`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.contractBuilderLicenseConfigurationDTO?.values?.[0] || []\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET, result)\r\n return result\r\n })\r\n },\r\n fetchContractBuilderLicenseConfigurationAll: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBuilderLicenseConfiguration/All`\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET, false)\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.contractBuilderLicenseConfigurationDTO?.values || []\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET, result)\r\n return result\r\n })\r\n },\r\n fetchContractBuilderLicenseConfigurationsContractSignatures: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBuilderLicenseConfiguration/ContractSignatures`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || []\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET, result)\r\n return result\r\n })\r\n },\r\n saveContractBuilderLicenseConfiguration: ({ commit }, contractBuilderLicenseConfigurationDTO) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractBuilderLicenseConfiguration`\r\n\r\n return api.post(url, contractBuilderLicenseConfigurationDTO).then((response) => {\r\n const result = response?.data?.data?.contractBuilderLicenseConfigurationDTO?.values?.[0] || []\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET, result)\r\n return result\r\n })\r\n },\r\n setContractBuilderLicenseConfigurationFetchRequired: ({ commit }, isRequired) => {\r\n commit(types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET, isRequired)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_SET](state, contractBuilderLicenseConfiguration) {\r\n state.contractBuilderLicenseConfiguration = contractBuilderLicenseConfiguration\r\n },\r\n [types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_SET](state, contractBuilderLicenseConfigurations) {\r\n state.contractBuilderLicenseConfigurations = contractBuilderLicenseConfigurations\r\n },\r\n [types.CONTRACT_BUILDER_LICENSE_CONFIGURATION_FETCH_REQUIRED_SET](state, isRequired) {\r\n state.fetchRequired = isRequired\r\n },\r\n [types.CONTRACT_BUILDER_LICENSE_CONFIGURATIONS_CONTRACT_SIGNATURES_SET](\r\n state,\r\n contractBuilderLicenseConfigurationsContractSignatures\r\n ) {\r\n state.contractBuilderLicenseConfigurationsContractSignatures =\r\n contractBuilderLicenseConfigurationsContractSignatures\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractDocuments: []\r\n}\r\n\r\nexport const getters = {\r\n getContractDocuments: (state) => state.contractDocuments,\r\n getContractDocument: (state) => (id) => {\r\n return state.contractDocuments.find((c) => c.id === id)\r\n }\r\n}\r\nexport const actions = {\r\n fetchContractDocuments: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contract/${contractId}/ContractDocuments`\r\n return api.get(url).then((response) => {\r\n let documents = []\r\n if (response.data.count > 0) {\r\n documents = response.data.data.contractDocumentDTO.values\r\n commit(types.CONTRACT_DOCUMENTS_SET, documents)\r\n }\r\n return documents\r\n })\r\n },\r\n createContractDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contract/${model.contractId}/ContractDocuments`\r\n return uploadApi.post(url, model.formData).then((response) => {\r\n let contractDocument = {}\r\n if (response.data.count > 0) {\r\n contractDocument = response.data.data.contractDocumentDTO.values[0]\r\n commit(types.CONTRACT_DOCUMENT_UPDATE_OR_ADD, contractDocument)\r\n }\r\n return contractDocument\r\n })\r\n },\r\n updateContractDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contract/${model.contractId}/ContractDocuments`\r\n return api.put(url, model.model).then((response) => {\r\n let contractDocument = {}\r\n if (response.data.count > 0) {\r\n contractDocument = response.data.data.contractDocumentDTO.values[0]\r\n commit(types.CONTRACT_DOCUMENT_UPDATE_OR_ADD, contractDocument)\r\n }\r\n return contractDocument\r\n })\r\n },\r\n deleteContractDocument: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contract/${params.contractId}/ContractDocuments/${params.documentId}`\r\n return api.delete(url).then(() => {\r\n commit(types.CONTRACT_DOCUMENTS_DELETE, params.documentId)\r\n return ''\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_DOCUMENTS_SET](state, documents) {\r\n state.contractDocuments = documents\r\n },\r\n [types.CONTRACT_DOCUMENTS_DELETE](state, contractDocumentId) {\r\n state.contractDocuments = state.contractDocuments.filter((cd) => cd.id !== contractDocumentId)\r\n },\r\n [types.CONTRACT_DOCUMENT_UPDATE_OR_ADD](state, contractDocument) {\r\n const matchedIndex = state.contractDocuments.findIndex((c) => c.id === contractDocument.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.contractDocuments.splice(matchedIndex, 1)\r\n }\r\n state.contractDocuments.push(contractDocument)\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport i18n from '@/plugins/i18n.js'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractPerformanceRating: [],\r\n contractPerformanceFinalRating: [],\r\n contractPerformanceStatistics: [],\r\n contractPerformanceEvaluation: [],\r\n contractPerformancePreviewLinks: [],\r\n performanceEvaluation: []\r\n}\r\n\r\nexport const getters = {\r\n getContractPerformanceRating: (state) => state.contractPerformanceRating,\r\n getContractPerformanceFinalRating: (state) => state.contractPerformanceFinalRating,\r\n getContractPerformanceStatistics: (state) => state.contractPerformanceStatistics,\r\n getContractPerformanceEvaluation: (state) => state.contractPerformanceEvaluation,\r\n getContractPerformancePreviewLinks: (state) => state.contractPerformancePreviewLinks,\r\n getPerformanceEvaluation: (state) => state.performanceEvaluation\r\n}\r\nexport const actions = {\r\n createContractPerformance(_, model) {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation`\r\n return api.post(url, model).then((response) => {\r\n const performanceEvaluationDTO = response.data.data.performanceEvaluationDTO.values[0]\r\n return performanceEvaluationDTO\r\n })\r\n },\r\n updateContractPerformance(_, model) {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation`\r\n return api.put(url, model).then((response) => {\r\n const performanceEvaluationDTO = response.data.data.performanceEvaluationDTO.values[0]\r\n return performanceEvaluationDTO\r\n })\r\n },\r\n fetchContractVendorsPerformanceRating: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/ContractVendorsPerformanceRating?contractId=${contractId}`\r\n return api.get(url).then((response) => {\r\n let performanceRatingDTO = []\r\n if (response.data.count > 0) {\r\n performanceRatingDTO = response.data.data.performanceEvaluationDTO.values\r\n commit(types.CONTRACT_PERFORMANCE_RATING_SET, performanceRatingDTO)\r\n }\r\n return performanceRatingDTO\r\n })\r\n },\r\n fetchContractPerformanceEvaluation: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/PerformanceEvaluation?contractId=${contractId}`\r\n commit(types.CONTRACT_PERFORMANCE_ADD, [])\r\n return api.get(url).then((response) => {\r\n const contractPerformanceEvaluation = response?.data?.data?.evaluationSummary?.values || []\r\n commit(types.CONTRACT_PERFORMANCE_ADD, contractPerformanceEvaluation)\r\n return contractPerformanceEvaluation\r\n })\r\n },\r\n fetchPerformanceEvaluation: ({ commit }, performanceEvaluationId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/?performanceEvaluationId=${performanceEvaluationId}`\r\n return api.get(url).then((response) => {\r\n const contractPerformanceEvaluation =\r\n response?.data?.data?.performanceEvaluationDTO?.values || []\r\n commit(types.CONTRACT_PERFORMANCE_EVALUATION, contractPerformanceEvaluation)\r\n return contractPerformanceEvaluation\r\n })\r\n },\r\n fetchContractVendorsPerformanceFinalRating: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/ContractVendorsPerformanceFinalRating?contractId=${contractId}`\r\n return api.get(url).then((response) => {\r\n const performanceFinalRatingDTO =\r\n response?.data?.data?.performanceFinalRatingDTO?.values || []\r\n commit(types.CONTRACT_PERFORMANCE_FINAL_RATING_SET, performanceFinalRatingDTO)\r\n return performanceFinalRatingDTO\r\n })\r\n },\r\n fetchPerformanceEvaluationsStatistics: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/PerformanceEvaluationStatistic?contractId=${contractId}`\r\n return api.get(url).then((response) => {\r\n const performanceEvaluationStatusDTO =\r\n response?.data?.data?.performanceEvaluationStatusDTO?.values || []\r\n commit(types.CONTRACT_PERFORMANCE_STATISTIC_SET, performanceEvaluationStatusDTO)\r\n return performanceEvaluationStatusDTO\r\n })\r\n },\r\n fetchContractPerformanceEvaluationPreviewLinks: ({ commit }, performanceEvaluationId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/PreviewLinks?performanceEvaluationId=${performanceEvaluationId}`\r\n return api.get(url).then((response) => {\r\n let previewLinkDTO = []\r\n if (response?.data?.data?.searchResult?.values?.length) {\r\n previewLinkDTO = response.data.data.searchResult.values.map((v) => {\r\n const { role } = v\r\n let newRole = role\r\n if (role.toLowerCase() === 'purchasing representative') {\r\n newRole = i18n.t('ui.common.procurementLead')\r\n }\r\n if (role.toLowerCase() === 'vendor') {\r\n newRole = i18n.t('ui.common.vendor')\r\n }\r\n\r\n return Object.assign(v, { role: newRole })\r\n })\r\n commit(types.CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET, previewLinkDTO)\r\n }\r\n return previewLinkDTO\r\n })\r\n },\r\n deletePerformanceEvaluation: ({ commit }, performanceEvaluationId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation?performanceEvaluationId=${performanceEvaluationId}`\r\n return api.delete(url).then(() => {\r\n commit(types.CONTRACT_PERFORMANCE_REMOVE, performanceEvaluationId)\r\n commit(types.VENDOR_PERFORMANCE_REMOVE, performanceEvaluationId)\r\n return ''\r\n })\r\n },\r\n handleUpdateAppeal: (_, model) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/PerformanceEvaluationGeneralInput`\r\n return uploadApi.post(url, model)\r\n },\r\n handleDeleteGeneralInternalDocument: (_, model) => {\r\n const { generalInputId, documentId } = model\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/PerformanceEvaluationGeneralInput/${generalInputId}/Document/${documentId}`\r\n return api.delete(url)\r\n },\r\n performanceEvaluationSendEmail: (_, performanceEvaluationId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/SendEmail?performanceEvaluationId=${performanceEvaluationId}`\r\n\r\n return api.post(url).then((response) => response?.data?.data?.searchResult?.values?.[0] || [])\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_PERFORMANCE_RATING_SET](state, contractPerformanceRating) {\r\n state.contractPerformanceRating = contractPerformanceRating\r\n },\r\n [types.CONTRACT_PERFORMANCE_FINAL_RATING_SET](state, contractPerformanceFinalRating) {\r\n state.contractPerformanceFinalRating = contractPerformanceFinalRating\r\n },\r\n [types.CONTRACT_PERFORMANCE_ADD]: (state, contractPerformanceEvaluation) => {\r\n state.contractPerformanceEvaluation = contractPerformanceEvaluation\r\n },\r\n [types.CONTRACT_PERFORMANCE_STATISTIC_SET]: (state, contractPerformanceStatistics) => {\r\n state.contractPerformanceStatistics = contractPerformanceStatistics\r\n },\r\n [types.CONTRACT_PERFORMANCE_EVALUATION]: (state, performanceEvaluation) => {\r\n state.performanceEvaluation = performanceEvaluation\r\n },\r\n [types.CONTRACT_PERFORMANCE_EVALUATION_PREVIEW_LINKS_SET](\r\n state,\r\n contractPerformancePreviewLinks\r\n ) {\r\n state.contractPerformancePreviewLinks = contractPerformancePreviewLinks\r\n },\r\n [types.CONTRACT_PERFORMANCE_REMOVE]: (state, id) => {\r\n const performanceEvaluations = state.contractPerformanceEvaluation.filter(\r\n (e) => e.evaluationId !== id\r\n )\r\n\r\n state.contractPerformanceEvaluation = performanceEvaluations\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractPOTypes: []\r\n}\r\n\r\nexport const getters = {\r\n getContractPOTypes: (state) => state.contractPOTypes\r\n}\r\nexport const actions = {\r\n fetchContractPOTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/ContractPOTypes'\r\n return api.get(url).then((response) => {\r\n const contractPOTypes = response?.data?.data?.contractPOTypeDTO?.values || []\r\n commit(types.CONTRACTPOTYPES_TYPES_SET, contractPOTypes)\r\n return contractPOTypes\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACTPOTYPES_TYPES_SET](state, contractPOTypes) {\r\n state.contractPOTypes = contractPOTypes\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractVendorDocuments: []\r\n}\r\n\r\nexport const getters = {\r\n getContractVendorDocuments: (state) => state.contractVendorDocuments,\r\n getContractVendorDocument: (state) => (id) => {\r\n return state.contractVendorDocuments.find((i) => i.id === id)\r\n }\r\n}\r\nexport const actions = {\r\n fetchContractVendorDocuments: ({ commit }, contractId) => {\r\n const url =\r\n `/api/v1/customer/{customerId}/node/{nodeId}/contract/${contractId}/ContractVendorDocuments` +\r\n `?filter.fields=Vendor,ContractVendorDocumentType&filter.limit=5000`\r\n return api.get(url).then((response) => {\r\n const contractVendorDocuments = response?.data?.data?.contractVendorDocumentDTO?.values || []\r\n commit(types.CONTRACT_VENDOR_DOCUMENTS_SET, contractVendorDocuments)\r\n return contractVendorDocuments\r\n })\r\n },\r\n\r\n fetchContractVendorDocument: ({ commit }, id, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${contractId}/ContractVendorDocuments/${id}`\r\n return api.get(url).then((response) => {\r\n const contractVendorDocuments = response?.data?.data?.contractVendorDocumentDTO?.values || []\r\n commit(types.CONTRACT_VENDOR_DOCUMENTS_SET, contractVendorDocuments)\r\n return contractVendorDocuments\r\n })\r\n },\r\n\r\n createContractVendorDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${model.contractId}/ContractVendorDocuments`\r\n return uploadApi.post(url, model.formData).then((response) => {\r\n const contractVendorDocument =\r\n response?.data?.data?.contractVendorDocumentDTO?.values?.[0] || []\r\n commit(types.CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD, contractVendorDocument)\r\n return contractVendorDocument\r\n })\r\n },\r\n updateContractVendorDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${model.contractId}/ContractVendorDocuments`\r\n return api.put(url, model.model).then((response) => {\r\n const contractVendorDocument =\r\n response?.data?.data?.contractVendorDocumentDTO?.values?.[0] || []\r\n commit(types.CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD, contractVendorDocument)\r\n return contractVendorDocument\r\n })\r\n },\r\n deleteContractVendorDocument: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/contract/${params.contractId}/ContractVendorDocuments/${params.documentId}`\r\n return api.delete(url).then(() => {\r\n commit(types.CONTRACT_VENDOR_DOCUMENTS_DELETE, params.documentId)\r\n return ''\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_VENDOR_DOCUMENTS_SET](state, contractVendorDocuments) {\r\n state.contractVendorDocuments = contractVendorDocuments\r\n },\r\n [types.CONTRACT_VENDOR_DOCUMENTS_DELETE](state, contractVendorDocumentId) {\r\n state.contractVendorDocuments = state.contractVendorDocuments.filter(\r\n (c) => c.id !== contractVendorDocumentId\r\n )\r\n },\r\n [types.CONTRACT_VENDOR_DOCUMENT_UPDATE_OR_ADD](state, contractVendorDocument) {\r\n const matchedIndex = state.contractVendorDocuments.findIndex(\r\n (i) => i.id === contractVendorDocument.id\r\n )\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.contractVendorDocuments.splice(matchedIndex, 1)\r\n }\r\n state.contractVendorDocuments.push(contractVendorDocument)\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractVendorDocumentTypes: [],\r\n contractVendorDocumentType: null\r\n}\r\n\r\nexport const getters = {\r\n getContractVendorDocumentTypes: (state) => state.contractVendorDocumentTypes,\r\n getContractVendorDocumentType: (state) => (id) => {\r\n return state.contractVendorDocumentTypes.find((c) => c.id === id)\r\n },\r\n getContractVendorDocumentTypeNew: (state) => state.contractVendorDocumentType\r\n}\r\n\r\nexport const actions = {\r\n fetchContractVendorDocumentTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorDocumentTypes'\r\n return api.get(url).then((response) => {\r\n const vendorDocumentTypes = response?.data?.data?.contractVendorDocumentTypeDTO?.values\r\n commit(types.CONTRACT_VENDOR_DOCUMENT_TYPES_SET, vendorDocumentTypes)\r\n return vendorDocumentTypes\r\n })\r\n },\r\n saveContractVendorDocumentType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorDocumentTypes`\r\n return api.post(url, model).then((response) => {\r\n const vendorDocumentType = response.data.data.contractVendorDocumentTypeDTO.values[0]\r\n commit(types.CONTRACT_VENDOR_DOCUMENT_TYPE_SET, vendorDocumentType)\r\n return vendorDocumentType\r\n })\r\n },\r\n updateContractVendorDocumentType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorDocumentTypes`\r\n return api.put(url, model).then((response) => {\r\n const vendorDocumentType = response.data.data.contractVendorDocumentTypeDTO.values[0]\r\n commit(types.CONTRACT_VENDOR_DOCUMENT_TYPE_SET, vendorDocumentType)\r\n return vendorDocumentType\r\n })\r\n },\r\n deleteContractVendorDocumentType: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorDocumentTypes?contractVendorDocumentTypeId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CONTRACT_VENDOR_DOCUMENT_TYPES_SET](state, vendorDocumentTypes) {\r\n state.contractVendorDocumentTypes = vendorDocumentTypes\r\n },\r\n [types.CONTRACT_VENDOR_DOCUMENT_TYPE_SET](state, vendorDocumentType) {\r\n state.contractVendorDocumentType = vendorDocumentType\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n insuranceDocuments: []\r\n}\r\n\r\nexport const getters = {\r\n getInsuranceDocuments: (state) => state.insuranceDocuments,\r\n getInsuranceDocument: (state) => (id) => {\r\n return state.insuranceDocuments.find((i) => i.id === id)\r\n }\r\n}\r\nexport const actions = {\r\n fetchInsuranceDocuments: ({ commit }, contractId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Insurance?contractId=${contractId}&filter.fields=Vendor,InsuranceType,Contract`\r\n return api.get(url).then((response) => {\r\n const documents = response?.data?.data?.insuranceDTO?.values || []\r\n commit(types.INSURANCE_DOCUMENTS_SET, documents)\r\n return documents\r\n })\r\n },\r\n fetchInsuranceDocument: ({ commit }, documentId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Insurance/InsuranceDocument?documentId=${documentId}&filter.fields=Vendor,InsuranceType,Contract`\r\n return api.get(url).then((response) => {\r\n const documents = response?.data?.data?.insuranceDTO?.values\r\n commit(types.INSURANCE_DOCUMENTS_SET, documents)\r\n return documents\r\n })\r\n },\r\n createInsuranceDocument: ({ commit }, formData) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Insurance'\r\n\r\n return uploadApi.post(url, formData).then((response) => {\r\n const insurance = response?.data?.data?.insuranceDTO?.values?.[0] || []\r\n commit(types.INSURANCE_UPDATE_OR_ADD, insurance)\r\n return insurance\r\n })\r\n },\r\n updateInsuranceDocument: ({ commit }, model) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Insurance'\r\n return api.put(url, model.model).then((response) => {\r\n const insurance = response?.data?.data?.insuranceDTO?.values?.[0]\r\n commit(types.INSURANCE_UPDATE_OR_ADD, insurance)\r\n return insurance\r\n })\r\n },\r\n\r\n deleteInsurance: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Insurance/${params.documentId}`\r\n return api.delete(url).then(() => {\r\n commit(types.INSURANCE_DOCUMENT_DELETE, params.documentId)\r\n return ''\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.INSURANCE_DOCUMENTS_SET](state, documents) {\r\n state.insuranceDocuments = documents\r\n },\r\n [types.INSURANCE_UPDATE_OR_ADD](state, insuranceDocument) {\r\n const matchedIndex = state.insuranceDocuments.findIndex((i) => i.id === insuranceDocument.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.insuranceDocuments.splice(matchedIndex, 1)\r\n }\r\n state.insuranceDocuments.push(insuranceDocument)\r\n },\r\n [types.INSURANCE_DOCUMENT_DELETE](state, insuranceId) {\r\n state.insuranceDocuments = state.insuranceDocuments.filter((c) => c.id !== insuranceId)\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n insuranceTypes: [],\r\n insuranceType: null\r\n}\r\n\r\nexport const getters = {\r\n getInsuranceTypes: (state) => state.insuranceTypes,\r\n getInsuranceType: (state) => (id) => {\r\n return state.insuranceTypes.find((c) => c.id === id)\r\n },\r\n getInsuranceTypeNew: (state) => state.insuranceType\r\n}\r\n\r\nexport const actions = {\r\n fetchInsuranceTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/InsuranceTypes/All'\r\n return api.get(url).then((response) => {\r\n const insuranceTypes = response?.data?.data?.insuranceTypeDTO?.values || []\r\n commit(types.INSURANCE_TYPES_SET, insuranceTypes)\r\n return insuranceTypes\r\n })\r\n },\r\n saveInsuranceType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/InsuranceTypes`\r\n return api.post(url, model).then((response) => {\r\n const insuranceType = response?.data?.data?.insuranceTypeDTO?.values?.[0] || null\r\n commit(types.INSURANCE_UPDATE_OR_ADD, insuranceType)\r\n return insuranceType\r\n })\r\n },\r\n updateInsuranceType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/InsuranceTypes`\r\n return api.put(url, model).then((response) => {\r\n const insuranceType = response?.data?.data?.insuranceTypeDTO?.values?.[0] || null\r\n commit(types.INSURANCE_UPDATE_OR_ADD, insuranceType)\r\n return insuranceType\r\n })\r\n },\r\n deleteInsuranceType: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/InsuranceTypes?insuranceTypeId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.INSURANCE_TYPES_SET](state, insuranceTypes) {\r\n state.insuranceTypes = insuranceTypes\r\n },\r\n [types.INSURANCE_UPDATE_OR_ADD](state, insuranceType) {\r\n state.insuranceType = insuranceType\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n performanceEvaluationDocuments: []\r\n}\r\n\r\nconst getters = {\r\n getPerformanceEvaluationDocuments: (state) => {\r\n return state.performanceEvaluationDocuments\r\n },\r\n getPerformanceEvaluationDocument: (state) => (id) => {\r\n return state.performanceEvaluationDocuments.find((i) => i.id === id)\r\n }\r\n}\r\n\r\nconst actions = {\r\n fetchPerformanceEvaluationDocuments({ commit }, projectId) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectDocuments/project/${projectId}`\r\n return api.get(url).then((response) => {\r\n const documents = response?.data?.data?.projectDocumentDTO?.values || []\r\n commit(types.PERFORMANCE_EVALUATION_DOCUMENTS_SET, documents)\r\n return documents\r\n })\r\n },\r\n updatePerformanceEvaluationDocument: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectDocuments/`\r\n return api.put(url, model.model).then((response) => {\r\n let projectDocument = {}\r\n if (response.data.count > 0) {\r\n projectDocument = response.data.data.projectDocumentDTO.values[0]\r\n commit(types.PERFORMANCE_EVALUATION_DOCUMENT_UPDATE, projectDocument)\r\n }\r\n return projectDocument\r\n })\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.PERFORMANCE_EVALUATION_DOCUMENTS_SET](state, documents) {\r\n state.performanceEvaluationDocuments = documents\r\n },\r\n [types.PERFORMANCE_EVALUATION_DOCUMENT_UPDATE](state, performanceDoc) {\r\n const matchedIndex = state.performanceEvaluationDocuments.findIndex(\r\n (c) => c.id === performanceDoc.id\r\n )\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.performanceEvaluationDocuments.splice(matchedIndex, 1)\r\n }\r\n state.performanceEvaluationDocuments.push(performanceDoc)\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n actions,\r\n getters,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n performanceEvaluationStatus: []\r\n}\r\nexport const getters = {\r\n getPerformanceEvaluationStatuses: (state) => state.performanceEvaluationStatus\r\n}\r\nexport const actions = {\r\n fetchPerformanceEvaluationStatuses: ({ commit, state }, force = false) => {\r\n // cache these where possible\r\n if (!force && state.performanceEvaluationStatus.length) {\r\n return Promise.resolve(state.performanceEvaluationStatus)\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluation/Statuses`\r\n\r\n return api.get(url).then((response) => {\r\n const performanceEvaluationStatus = response.data.data.performanceEvaluationStatusDTO.values\r\n commit(types.PERFORMANCE_EVALUATION_STATUS_SET_ALL, performanceEvaluationStatus)\r\n return performanceEvaluationStatus\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PERFORMANCE_EVALUATION_STATUS_SET_ALL]: (state, templates) => {\r\n state.performanceEvaluationStatus = templates\r\n }\r\n}\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n performanceEvaluationTypes: []\r\n}\r\nexport const getters = {\r\n getPerformanceEvaluationTypes: (state) => state.performanceEvaluationTypes\r\n}\r\nexport const actions = {\r\n fetchPerformanceEvaluationTypes: ({ commit, state }, force = false) => {\r\n // cache these where possible\r\n if (!force && state.performanceEvaluationTypes.length) {\r\n return Promise.resolve(state.performanceEvaluationTypes)\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceEvaluationType`\r\n\r\n return api.get(url).then((response) => {\r\n const performanceEvaluationTypes = response.data.data.performanceEvaluationTypeDTO.values\r\n commit(types.PERFORMANCE_EVALUATION_TYPE_SET_ALL, performanceEvaluationTypes)\r\n return performanceEvaluationTypes\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PERFORMANCE_EVALUATION_TYPE_SET_ALL]: (state, templates) => {\r\n state.performanceEvaluationTypes = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n performanceTemplates: []\r\n}\r\nexport const getters = {\r\n getPerformanceTemplates: (state) => state.performanceTemplates\r\n}\r\nexport const actions = {\r\n fetchPerformanceTemplates: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceTemplate`\r\n\r\n return api.get(url).then((response) => {\r\n const performanceTemplates = response.data.data.performanceTemplateDTO.values\r\n commit(types.PERFORMANCE_TEMPLATE_SET_ALL, performanceTemplates)\r\n return performanceTemplates\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PERFORMANCE_TEMPLATE_SET_ALL]: (state, templates) => {\r\n state.performanceTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n performanceWorkflow: []\r\n}\r\nexport const getters = {\r\n getPerformanceWorkflow: (state) => state.performanceWorkflow\r\n}\r\nexport const actions = {\r\n fetchPerformanceWorkflow: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceWorkflow`\r\n\r\n return api.get(url).then((response) => {\r\n const performanceWorkflow = response?.data?.data?.performanceWorkflowDTO?.values || []\r\n commit(types.PERFORMANCE_WORKFLOW_SET, performanceWorkflow)\r\n return performanceWorkflow\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PERFORMANCE_WORKFLOW_SET]: (state, templates) => {\r\n state.performanceWorkflow = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n procurementMethodLimitedTypes: [],\r\n procurementMethodLimitedType: null\r\n}\r\n\r\nexport const getters = {\r\n getProcurementMethodLimitedTypes: (state) => state.procurementMethodLimitedTypes,\r\n getProcurementMethodLimitedTypeNew: (state) => state.procurementMethodLimitedType\r\n}\r\nexport const actions = {\r\n fetchProcurementMethodLimitedTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/ProcurementMethodLimitedTypes'\r\n return api.get(url).then((response) => {\r\n const procurementMethodLimitedTypes =\r\n response?.data?.data?.procurementMethodLimitedTypeDTO?.values || []\r\n commit(types.PROCUREMENT_METHOD_LIMITED_TYPES_SET, procurementMethodLimitedTypes)\r\n return procurementMethodLimitedTypes\r\n })\r\n },\r\n saveProcurementMethodLimitedType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProcurementMethodLimitedTypes`\r\n return api.post(url, model).then((response) => {\r\n const procurementMethodLimitedType =\r\n response.data.data.procurementMethodLimitedTypeDTO.values[0]\r\n commit(types.PROCUREMENT_METHOD_LIMITED_TYPE_SET, procurementMethodLimitedType)\r\n return procurementMethodLimitedType\r\n })\r\n },\r\n updateProcurementMethodLimitedType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProcurementMethodLimitedTypes`\r\n return api.put(url, model).then((response) => {\r\n const procurementMethodLimitedType =\r\n response.data.data.procurementMethodLimitedTypeDTO.values[0]\r\n commit(types.PROCUREMENT_METHOD_LIMITED_TYPE_SET, procurementMethodLimitedType)\r\n return procurementMethodLimitedType\r\n })\r\n },\r\n deleteProcurementMethodLimitedType: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProcurementMethodLimitedTypes?procurementMethodLimitedTypeId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PROCUREMENT_METHOD_LIMITED_TYPES_SET](state, procurementMethodLimitedTypes) {\r\n state.procurementMethodLimitedTypes = procurementMethodLimitedTypes\r\n },\r\n [types.PROCUREMENT_METHOD_LIMITED_TYPE_SET](state, procurementMethodLimitedType) {\r\n state.procurementMethodLimitedType = procurementMethodLimitedType\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi, uploadApiMultipart } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractSignature: null, // sigle Contract Signature\r\n contractSignatures: [], // all Contract Signature\r\n fetchRequired: false\r\n}\r\n\r\nexport const getters = {\r\n getContractSignature: (state) => state.contractSignature,\r\n getContractSignatures: (state) => state.contractSignatures,\r\n contractSignaturesFetchRequired: (state) => state.fetchRequired\r\n}\r\n\r\nexport const actions = {\r\n lookupEmailRecipient: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/LookupEmailRecipient?email=${params.email}`\r\n return api.get(url)\r\n },\r\n fetchContractSignature: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n fetchContractSignatures: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/All`\r\n\r\n commit(types.CONTRACT_SIGNATURES_FETCH_REQUIRED_SET, false)\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || []\r\n commit(types.CONTRACT_SIGNATURES_SET, result)\r\n return result\r\n })\r\n },\r\n fetchContractSignatureDesigner: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Designer`\r\n\r\n return api.get(url).then((response) => {\r\n const contractSignature = response?.data?.data?.searchResult?.values?.[0] || ''\r\n return contractSignature\r\n })\r\n },\r\n saveContractSignature: ({ commit }, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${payload.contractId}/ContractSignatures`\r\n const { formData } = payload\r\n\r\n return uploadApiMultipart.post(url, formData).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureDetailsUpdate: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Details`\r\n const { details } = params\r\n\r\n return api.put(url, details).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureSignerAdd: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Signers`\r\n const { signer } = params\r\n\r\n return api.post(url, signer).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureSignerUpdate: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Signers`\r\n const { signer } = params\r\n\r\n return api.put(url, signer).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureSignerDelete: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Signers/${params.contractSignatureSignerId}`\r\n\r\n return api.delete(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureSignerSortOrder: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Signers/SortOrder`\r\n const { signers } = params\r\n\r\n return api.put(url, signers).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureSignerEmailResend: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Signers/${params.contractSignatureSignerId}/Email/Resend`\r\n\r\n return api.post(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n return result\r\n })\r\n },\r\n contractSignatureDocumentAdd: ({ commit }, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${payload.contractId}/ContractSignatures/${payload.contractSignatureId}/Documents`\r\n const { formData } = payload\r\n\r\n return uploadApiMultipart.post(url, formData).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureDocumentDelete: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Documents/${params.contractSignatureDocumentId}`\r\n\r\n return api.delete(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n contractSignatureDocumentSortOrder: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Documents/SortOrder`\r\n const { documents } = params\r\n\r\n return api.put(url, documents).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n deleteContractSignature: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}`\r\n\r\n return api.delete(url)\r\n },\r\n contractSignatureDocumentDownloadAll: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Documents/Download/All`\r\n\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n },\r\n contractSignatureDocumentPreview: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Documents/${params.documentId}/Preview`\r\n\r\n return downloadApi.get(url).then(util.getBlobUrlFomApiResponse)\r\n },\r\n contractSignatureDocumentDownloadSummary: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Documents/Download/Summary`\r\n\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n },\r\n contractSignatureStatusUpdate: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/ContractSignatures/${params.contractSignatureId}/Status/${params.status}`\r\n\r\n return api.put(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values?.[0] || []\r\n commit(types.CONTRACT_SIGNATURE_SET, result)\r\n return result\r\n })\r\n },\r\n resetContractSignatures: ({ commit }) => {\r\n commit(types.CONTRACT_SIGNATURES_SET, [])\r\n },\r\n setContractSignature: ({ commit }, contractSignature) => {\r\n commit(types.CONTRACT_SIGNATURE_SET, contractSignature)\r\n },\r\n setContractSignaturesFetchRequired: ({ commit }, isRequired) => {\r\n commit(types.CONTRACT_SIGNATURES_FETCH_REQUIRED_SET, isRequired)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTRACT_SIGNATURE_SET](state, contractSignature) {\r\n state.contractSignature = contractSignature\r\n },\r\n [types.CONTRACT_SIGNATURES_SET](state, contractSignatures) {\r\n state.contractSignatures = contractSignatures\r\n },\r\n [types.CONTRACT_SIGNATURES_FETCH_REQUIRED_SET](state, isRequired) {\r\n state.fetchRequired = isRequired\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport get from 'lodash/get'\r\nimport has from 'lodash/has'\r\nimport set from 'lodash/set'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n accountName: null,\r\n displayName: null,\r\n address1: null,\r\n address2: null,\r\n postalCode: null,\r\n language: null,\r\n timezone: null,\r\n country: null,\r\n provinceState: null,\r\n city: null,\r\n industry: null,\r\n sourceOfTender: null,\r\n allowSendToSPAOnProject: null,\r\n spaEndpointType: null\r\n}\r\n\r\nconst getters = {\r\n // requires field eg: getAccountInfo('accountName')\r\n getAccountInfo: (state) => (field) => {\r\n // if no field, return entire state\r\n if (!field) return state\r\n if (has(state, field)) return get(state, field)\r\n return null\r\n }\r\n}\r\n\r\nexport const actions = {\r\n /**\r\n * takes [field to update, value to assign]\r\n * returns [error, response]\r\n */\r\n createCustomer(_, model) {\r\n const url = `api/v1/customer/{customerId}`\r\n return api.post(url, model).then((response) => {\r\n const customerDTO = response.data.data.customerDTO.values[0]\r\n return customerDTO\r\n })\r\n },\r\n updatesCustomer(_, model) {\r\n const url = `api/v1/customer/{customerId}`\r\n return api.put(url, model).then((response) => {\r\n const customerDTO = response.data.data.customerDTO.values[0]\r\n return customerDTO\r\n })\r\n },\r\n updateAccountInfo: ({ commit, state }, params) => {\r\n if (!Array.isArray(params) || params.length < 2) {\r\n // incorrect format, structure\r\n return Promise.resolve([`updateAccountInfo argument must be array`, null])\r\n }\r\n\r\n const [field, value] = params\r\n\r\n if (!has(state, field)) {\r\n // incorrect format, structure\r\n return Promise.resolve([`no such field: [${field}]`, null])\r\n }\r\n\r\n commit(types.CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM, { field, value })\r\n return Promise.resolve([null, [field, value]])\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTROL_PANEL_ACCOUNT_INFO_SET_ITEM]: (state, { field, value }) => {\r\n set(state, field, value)\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n sections: {\r\n insuranceTypes: [],\r\n terms: [],\r\n contractCategory: [],\r\n contractVendorType: [],\r\n bidTypes: [],\r\n departments: [],\r\n irrevocablePeriods: [],\r\n vendorDocTypes: [],\r\n securityTypes: [],\r\n approvalExceptions: [],\r\n awardExceptions: [],\r\n leadAgencyNames: [],\r\n methodLimitedTypes: [],\r\n tradeAgreement: [],\r\n description: []\r\n }\r\n}\r\n\r\nexport const getters = {\r\n getSectionNames: (state) => Object.keys(state.sections),\r\n getDropdownElements: (state) => (sectionName) => state.sections[sectionName]\r\n}\r\n\r\nexport const actions = {\r\n updateDropdownElement: ({ commit, state }, { section, items }) => {\r\n // don't set items that aren't an array\r\n if (!Array.isArray(items)) {\r\n return false\r\n }\r\n commit(types.CONTROL_PANEL_DROPDOWNS_SET, { section, items })\r\n return state.sections[section]\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTROL_PANEL_DROPDOWNS_SET](state, { section, items }) {\r\n state.sections[section] = items\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n libraryContentTemplates: []\r\n}\r\nexport const getters = {\r\n getLibraryContentTemplates: (state) => state.libraryContentTemplates,\r\n getActiveLibraryContentTemplates: (state) =>\r\n state.libraryContentTemplates.filter((temp) => temp.active)\r\n}\r\n\r\nexport const actions = {\r\n fetchLibraryContentTemplates: ({ commit }, groupName) => {\r\n if (!groupName) {\r\n commit(types.CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM, [])\r\n return Promise.resolve('')\r\n }\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/All?groupName=${groupName}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n commit(types.CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM, templates)\r\n return res\r\n })\r\n },\r\n createLibraryContentTemplate(_, libraryContentTemplateDTO) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate?groupName=${libraryContentTemplateDTO.groupName}`\r\n return api.post(url, libraryContentTemplateDTO).then((response) => {\r\n const template = response.data.data.onlineSubmissionTemplateDTO.values[0]\r\n return template\r\n })\r\n },\r\n updateLibraryContentTemplate(_, libraryContentTemplateDTO) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate?groupName=${libraryContentTemplateDTO.groupName}`\r\n return api.put(url, libraryContentTemplateDTO).then((response) => {\r\n const template = response.data.data.onlineSubmissionTemplateDTO.values[0]\r\n return template\r\n })\r\n },\r\n deleteLibraryContentTemplate: (_, libraryContentTemplateDTO) => {\r\n let url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate?`\r\n url = `${url}onlineSubmissionTemplateId=${libraryContentTemplateDTO.id}&groupName=${libraryContentTemplateDTO.groupName}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTROL_PANEL_LIBRARY_CONTENT_SET_ITEM]: (state, templates) => {\r\n state.libraryContentTemplates = templates\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport get from 'lodash/get'\r\nimport has from 'lodash/has'\r\nimport set from 'lodash/set'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n language: null,\r\n messageBody: '',\r\n message: null,\r\n resourceMessage: null\r\n}\r\n\r\nexport const getters = {\r\n getSystemContent: (state) => (field) => {\r\n if (!!field && has(state, field)) return get(state, field)\r\n return state\r\n },\r\n getResourceMessage: (state) => state.resourceMessage\r\n}\r\n\r\nexport const actions = {\r\n /**\r\n * takes [field to update, value to assign]\r\n * returns [error, response]\r\n */\r\n updateSystemContent: ({ commit, state }, params) => {\r\n if (!Array.isArray(params) || params.length < 2) {\r\n // incorrect format, structure\r\n return new Promise((resolve) => {\r\n resolve([`updateSystemContent argument must be array`, null])\r\n })\r\n }\r\n\r\n const [field, value] = params\r\n\r\n if (!has(state, field)) {\r\n // incorrect format, structure\r\n return new Promise((resolve) => {\r\n resolve([`System content--no such field: [${field}]`, null])\r\n })\r\n }\r\n\r\n commit(types.CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM, { field, value })\r\n return new Promise((resolve) => {\r\n resolve([null, [field, value]])\r\n })\r\n },\r\n fetchResourceMessage: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Resources?languageSuffix=${params.languageSuffix}&key=${params.key}`\r\n\r\n return api.get(url).then((response) => {\r\n const resourceMessage = response.data.data.searchResult.values[0].message\r\n commit(types.RESOURCE_MESSAGE_ALL_SET, resourceMessage)\r\n return resourceMessage\r\n })\r\n },\r\n updateResourceMessage(_, model) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Resources`\r\n return api.put(url, model).then((response) => {\r\n const resourceMessage = response.data.data.searchResult.values\r\n return resourceMessage\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTROL_PANEL_SYSTEM_CONTENT_SET_ITEM]: (state, { field, value }) => {\r\n set(state, field, value)\r\n },\r\n [types.RESOURCE_MESSAGE_ALL_SET](state, resourceMessage) {\r\n state.resourceMessage = resourceMessage\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import * as types from '../../mutation-types'\r\nimport accountInfo from './account-info.js'\r\nimport dropdownSettings from './dropdown-settings.js'\r\nimport libraryContent from './library-content.js'\r\nimport systemContent from './system-content.js'\r\n\r\nexport const state = {\r\n saveRequired: false,\r\n controlPanelErrors: []\r\n}\r\n\r\nexport const getters = {\r\n getControlPanelSaveRequired: (state) => state.saveRequired,\r\n getControlPanelErrors: (state) => state.controlPanelErrors\r\n}\r\n\r\nexport const actions = {\r\n updateControlPanelSaveRequired: ({ commit }, value) => {\r\n commit(types.CONTROL_PANEL_SAVE_REQUIRED, value)\r\n },\r\n setControlPanelError: ({ commit }, error) => {\r\n commit(types.CONTROL_PANEL_ERROR_SET, error)\r\n },\r\n unsetControlPanelError: ({ commit }, error) => {\r\n commit(types.CONTROL_PANEL_ERROR_UNSET, error)\r\n },\r\n clearControlPanelErrors: ({ commit }) => {\r\n commit(types.CONTROL_PANEL_ERROR_UNSET_ALL)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTROL_PANEL_SAVE_REQUIRED](state, value) {\r\n state.saveRequired = value\r\n },\r\n [types.CONTROL_PANEL_ERROR_SET](state, error) {\r\n if (state.controlPanelErrors.indexOf(error) === -1) {\r\n state.controlPanelErrors.push(error)\r\n }\r\n },\r\n [types.CONTROL_PANEL_ERROR_UNSET](state, error) {\r\n state.controlPanelErrors = state.controlPanelErrors.filter((err) => err !== error)\r\n },\r\n [types.CONTROL_PANEL_ERROR_UNSET_ALL](state) {\r\n state.controlPanelErrors = []\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n modules: {\r\n accountInfo,\r\n systemContent,\r\n libraryContent,\r\n dropdownSettings\r\n }\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n customer: null,\r\n customerAll: null,\r\n timezones: null,\r\n languages: null\r\n}\r\n\r\nexport const getters = {\r\n getCustomer: (state) => state.customer,\r\n getCustomerAll: (state) => state.customerAll,\r\n getTimeZoneAll: (state) => state.timezones,\r\n getLanguageAll: (state) => state.languages,\r\n getCustomerTimeZone: () => {\r\n return localStorage.getItem('customerTimeZone')\r\n }\r\n}\r\nexport const actions = {\r\n setCustomer: ({ commit }, customer) => {\r\n commit(types.CUSTOMER_SET, customer)\r\n },\r\n setCustomerTimeZone: ({ commit }, timeZone) => {\r\n commit(types.CUSTOMER_SET_TIMEZONE, timeZone)\r\n },\r\n fetchCustomer: ({ commit }, customerId) => {\r\n const url = `/api/v1/customer/{customerId}?customerId=${customerId}`\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.customerDTO.values[0]\r\n commit(types.CUSTOMER_SET, data)\r\n return data\r\n })\r\n },\r\n fetchCustomerAll: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/All'\r\n\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.searchResult.values\r\n commit(types.CUSTOMER_ALL_SET, data)\r\n return data\r\n })\r\n },\r\n fetchTimeZoneAll: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/TimeZones'\r\n\r\n return api.get(url).then((response) => {\r\n const timezones = response.data.data.timeZoneDTO.values\r\n commit(types.TIMEZONE_ALL_SET, timezones)\r\n return timezones\r\n })\r\n },\r\n fetchLanguageAll: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/Languages'\r\n\r\n return api.get(url).then((response) => {\r\n const languages = response.data.data.languageDTO.values\r\n commit(types.LANGUAGE_ALL_SET, languages)\r\n return languages\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CUSTOMER_SET](state, customer) {\r\n state.customer = customer\r\n },\r\n [types.CUSTOMER_ALL_SET](state, customer) {\r\n state.customerAll = customer\r\n },\r\n [types.TIMEZONE_ALL_SET](state, timezones) {\r\n state.timezones = timezones\r\n },\r\n [types.LANGUAGE_ALL_SET](state, languages) {\r\n state.languages = languages\r\n },\r\n [types.CUSTOMER_SET_TIMEZONE](state, timeZone) {\r\n localStorage.setItem('customerTimeZone', timeZone)\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../../mutation-types'\r\n\r\nexport const state = {\r\n customerNode: null\r\n}\r\nexport const getters = {\r\n getCustomerNode: (state) => state.customerNode\r\n}\r\nexport const actions = {\r\n setCustomerNode: ({ commit }, customerNode) => {\r\n commit(types.CUSTOMERNODE_SET, customerNode)\r\n },\r\n fetchCustomerNode: ({ commit }, customerNodeId) => {\r\n const url = `/api/v1/customer/{customerId}/CustomerNode?customerNodeId=${customerNodeId}`\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.customerNodeDTO.values[0]\r\n commit(types.CUSTOMERNODE_SET, response.data.data.customerNodeDTO.values[0])\r\n return data\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.CUSTOMERNODE_SET](state, customerNode) {\r\n state.customerNode = customerNode\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n customerSsoSaml: {}\r\n}\r\n\r\nexport const getters = {\r\n getCustomerSsoSaml: (state) => state.customerSsoSaml\r\n}\r\nexport const actions = {\r\n fetchCustomerSsoSaml: async ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/CustomerSsoSaml'\r\n try {\r\n const response = await api.get(url)\r\n if (response.data.count > 0) {\r\n const data = response.data.data.customerSsoSamlDTO.values[0]\r\n commit(types.SSO_ACTIVE_SET, data)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n updateCustomerSsoSaml: async ({ commit }, model) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/CustomerSsoSaml'\r\n try {\r\n const response = await uploadApi.put(url, model)\r\n if (response.data.count > 0) {\r\n const customerSsoSaml = response.data.data.customerSsoSamlDTO.values[0]\r\n commit(types.SSO_ACTIVE_SET, customerSsoSaml)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n}\r\nexport const mutations = {\r\n [types.SSO_ACTIVE_SET](state, customerSsoSaml) {\r\n state.customerSsoSaml = customerSsoSaml\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from './../../mutation-types.js'\r\n\r\nconst state = {\r\n widgets: {\r\n openProjects: null,\r\n totalProjects: null,\r\n incompleteQuestions: null,\r\n awardedProjects: null,\r\n expiredContractDocuments: null,\r\n calendar: null,\r\n allDraftProjects: null,\r\n allPlannedProjects: null,\r\n allOpenProjects: null,\r\n allClosedProjects: null,\r\n allAwardedProjects: null,\r\n allActiveProjects: null,\r\n allWarrantyProjects: null\r\n },\r\n userWidgets: null,\r\n userProjectLeads: [],\r\n teamMemberProjects: null\r\n}\r\n\r\nconst getters = {\r\n getDashboardwidgets: (state) => state.widgets,\r\n getDashboardCalendar: (state) => state.widgets.calendar,\r\n getDashboardUserWidgets: (state) => state.userWidgets,\r\n getDashboardUserProjectLeads: (state) => state.userProjectLeads,\r\n getTeamMemberProjects: (state) => state.teamMemberProjects\r\n}\r\n\r\nconst actions = {\r\n fetchDashboardWidget: ({ commit }, widgetType) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/Widget?widgetType=${widgetType}`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.searchResult.values\r\n commit(types.DASHBOARD_WIDGET_SET, { widgetType: widgetType, values: result })\r\n return result\r\n }\r\n })\r\n },\r\n fetchDashboardCalendar: ({ commit }, params) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/Calendar?startDate=${params.startDate}&endDate=${params.endDate}`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || null\r\n commit(types.DASHBOARD_WIDGET_SET, { widgetType: 'calendar', values: result })\r\n return result\r\n })\r\n },\r\n saveUserWidget: ({ commit }, params) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/UserBuyerWidget`\r\n\r\n return api.post(url, params).then((response) => {\r\n const result = response?.data?.data?.userBuyerDashboardWidgetsDTO?.values || []\r\n commit(types.DASHBOARD_USER_WIDGET_SET, result)\r\n return result\r\n })\r\n },\r\n fetchUserWidgets: ({ commit }) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/UserBuyerWidget`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.userBuyerDashboardWidgetsDTO?.values || []\r\n commit(types.DASHBOARD_USER_WIDGET_SET, result)\r\n return result\r\n })\r\n },\r\n fetchSourceProjectandLeads: ({ commit }) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/SourceProjectByLeadWidget`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || []\r\n commit(types.DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET, result)\r\n return result\r\n })\r\n },\r\n fetchSourceProjectsByTeamMember: ({ commit }) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Dashboards/SourceProjectsByTeamMembers`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || []\r\n commit(types.DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET, result)\r\n return result\r\n })\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.DASHBOARD_WIDGET_SET]: (state, params) => {\r\n state.widgets[params.widgetType] = params.values\r\n },\r\n [types.DASHBOARD_USER_WIDGET_SET]: (state, params) => {\r\n state.userWidgets = params\r\n },\r\n [types.DASHBOARD_USER_PROJECTSLEAD_WIDGET_RESET]: (state, params) => {\r\n state.userProjectLeads = params\r\n },\r\n [types.DASHBOARD_TEAMMEMBER_PROJECT_WIDGET_RESET]: (state, params) => {\r\n state.teamMemberProjects = params\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst newEmail = {\r\n includeProjectUsers: false,\r\n projectUsers: [],\r\n contacts: [],\r\n template: null,\r\n reply: null,\r\n cc: [],\r\n bcc: [],\r\n attachments: [],\r\n subject: null,\r\n body: null,\r\n sendWhen: null,\r\n sendDate: null,\r\n sender: null\r\n}\r\n\r\nexport const state = {\r\n emailAggregates: [],\r\n emailScheduledAggregates: [],\r\n newEmail,\r\n projectUsers: [],\r\n contacts: [],\r\n invitees: [],\r\n emailProject: {\r\n total: 0,\r\n emails: []\r\n },\r\n scheduledEmailProject: {\r\n total: 0,\r\n emails: []\r\n },\r\n emailVendor: {\r\n total: 0,\r\n emails: []\r\n },\r\n templates: [],\r\n tenderId: null,\r\n contractId: null,\r\n document: null,\r\n restrictedDomains: [],\r\n note: []\r\n}\r\n\r\nexport const getters = {\r\n getEmailAggregates: (state) => state.emailAggregates,\r\n getEmailScheduledAggregates: (state) => state.emailScheduledAggregates,\r\n getEmailProject: (state) => state.emailProject,\r\n getScheduledEmailProject: (state) => state.scheduledEmailProject,\r\n getEmailVendor: (state) => state.emailVendor,\r\n getNewEmail: (state) => state.newEmail,\r\n getNewEmailProjectUsers: (state) => state.projectUsers,\r\n getNewEmailContacts: (state) => state.contacts,\r\n getNewEmailInvitees: (state) => state.invitees,\r\n getEmailTemplates: (state) => state.templates,\r\n getEmailContractId: (state) => state.contractId,\r\n getEmailDocument: (state) => state.document,\r\n getEmailTenderId: (state) => state.tenderId,\r\n getEmailRestrictedDomains: (state) => state.restrictedDomains,\r\n getEmailResendMessage: (state) => state.note\r\n}\r\nexport const actions = {\r\n fetchEmailAggregates: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Emails/Aggregates?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n const emailAggs = response?.data?.data?.elasticEmailAggregateDTO?.values || []\r\n commit(types.EMAIL_AGGREGATES_SET, emailAggs)\r\n return emailAggs\r\n })\r\n },\r\n fetchScheduledEmailAggregates: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Emails/ProjectScheduledEmailsAggregates?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n const emailAggs = response?.data?.data?.emailScheduleDTO?.values || []\r\n commit(types.EMAIL_SCHEDULED_AGGREGATES_SET, emailAggs)\r\n return emailAggs\r\n })\r\n },\r\n fetchEmailProject: ({ commit }, param) => {\r\n const dateFrom = param.dateFrom ? new Date(param.dateFrom).setHours(0, 0, 0, 0) : null\r\n const dateTo = param.dateTo ? new Date(param.dateTo).setHours(23, 59, 59, 999) : null\r\n\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/Emails/ProjectEmails?' + 'projectId='\r\n }${param.projectId}&subject=${param.subject}&filter.searchText=${\r\n param.searchText\r\n }&filter.start=${param.start}&filter.limit=${param.limit}&filter.sortcolumn=${\r\n param.sortcolumn\r\n }&filter.sortdirection=${param.sortdirection}&filter.dateFrom=${\r\n dateFrom ? new Date(dateFrom).toISOString() : null\r\n }&filter.dateTo=${dateTo ? new Date(dateTo).toISOString() : null}`\r\n\r\n return api.get(url).then((response) => {\r\n const emailProject = {\r\n total: 0,\r\n emails: []\r\n }\r\n\r\n if (response.data.count > 0) {\r\n emailProject.total = response.data.data.elasticEmailDTO.total\r\n emailProject.emails = response.data.data.elasticEmailDTO.values\r\n }\r\n\r\n commit(types.EMAIL_PROJECT_SET, emailProject)\r\n return emailProject\r\n })\r\n },\r\n fetchScheduledEmailProject: ({ commit }, param) => {\r\n const dateFrom = param.dateFrom ? new Date(param.dateFrom).setHours(0, 0, 0, 0) : null\r\n const dateTo = param.dateTo ? new Date(param.dateTo).setHours(23, 59, 59, 999) : null\r\n\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/Emails/ProjectScheduledEmails?' + 'projectId='\r\n }${param.projectId}&filter.searchText=${param.searchText}&filter.start=${\r\n param.start\r\n }&filter.limit=${param.limit}&filter.sortcolumn=${param.sortcolumn}&filter.sortdirection=${\r\n param.sortdirection\r\n }&filter.dateFrom=${dateFrom ? new Date(dateFrom).toISOString() : null}&filter.dateTo=${\r\n dateTo ? new Date(dateTo).toISOString() : null\r\n }`\r\n\r\n return api.get(url).then((response) => {\r\n const emailProject = {\r\n total: 0,\r\n emails: []\r\n }\r\n\r\n if (response.data.count > 0) {\r\n emailProject.total = response.data.data.emailScheduleDTO.total\r\n emailProject.emails = response.data.data.emailScheduleDTO.values\r\n }\r\n\r\n commit(types.SCHEDULED_EMAIL_PROJECT_SET, emailProject)\r\n return emailProject\r\n })\r\n },\r\n deleteScheduledEmail: (_, param) => {\r\n return api.delete(\r\n `/api/v1/customer/{customerId}/node/{nodeId}/Emails/ProjectScheduledEmails?emailScheduleId=${param.id}&emailScheduleContactId=${param.emailScheduleContactId}`\r\n )\r\n },\r\n fetchEmailVendor: ({ commit }, param) => {\r\n const dateFrom = param.dateFrom ? new Date(param.dateFrom).setHours(0, 0, 0, 0) : null\r\n const dateTo = param.dateTo ? new Date(param.dateTo).setHours(23, 59, 59, 999) : null\r\n\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/Emails/VendorEmails?' + 'vendorId='\r\n }${param.vendorId}&subject=${param.subject}&filter.searchText=${\r\n param.searchText\r\n }&filter.start=${param.start}&filter.limit=${param.limit}&filter.sortcolumn=${\r\n param.sortcolumn\r\n }&filter.sortdirection=${param.sortdirection}&filter.dateFrom=${\r\n dateFrom ? new Date(dateFrom).toISOString() : null\r\n }&filter.dateTo=${dateTo ? new Date(dateTo).toISOString() : null}`\r\n\r\n return api.get(url).then((response) => {\r\n const emailVendor = {\r\n total: 0,\r\n emails: []\r\n }\r\n\r\n if (response.data.count > 0) {\r\n emailVendor.total = response.data.data.elasticEmailDTO.total\r\n emailVendor.emails = response.data.data.elasticEmailDTO.values\r\n }\r\n\r\n commit(types.EMAIL_VENDOR_SET, emailVendor)\r\n return emailVendor\r\n })\r\n },\r\n updateNewEmail: ({ commit }, email) => {\r\n commit(types.EMAIL_UPDATE_NEW_EMAIL, email)\r\n },\r\n setNewEmailProjectUsers: ({ commit }, projectUsers) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_PROJECT_USERS, projectUsers)\r\n },\r\n setNewEmailContacts: ({ commit }, contacts) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS, contacts)\r\n },\r\n setNewEmailInvitees: ({ commit }, invitees) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_INVITEES, invitees)\r\n },\r\n setNewEmailContractId: ({ commit }, contractId) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_CONTRACT_ID, contractId)\r\n },\r\n setNewEmailTenderId: ({ commit }, tenderId) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_TENDER_ID, tenderId)\r\n },\r\n setNewEmailDocument: ({ commit }, document) => {\r\n commit(types.EMAIL_SET_NEW_EMAIL_DOCUMENT, document)\r\n },\r\n fetchEmailTemplates: ({ commit }, groupName) => {\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/Emails/Templates?' + 'groupName='\r\n }${groupName}`\r\n\r\n return api.get(url).then((response) => {\r\n const templates = response?.data?.data?.emailTemplateDTO?.values || []\r\n commit(types.EMAIL_SET_EMAIL_TEMPLATES, templates)\r\n return templates\r\n })\r\n },\r\n fetchEmailTemplatesAll: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Emails/Templates/All'\r\n\r\n return api.get(url).then((response) => {\r\n const templates = response?.data?.data?.emailTemplateDTO?.values || []\r\n commit(types.EMAIL_SET_EMAIL_TEMPLATES, templates)\r\n return templates\r\n })\r\n },\r\n saveTemplate({ commit }, emailTemplateDTO) {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Emails/Templates'\r\n\r\n return uploadApi.put(url, emailTemplateDTO).then((response) => {\r\n const result = response?.data?.data?.emailTemplateDTO?.values?.[0] || null\r\n commit(types.EMAIL_UPDATE_EMAIL_TEMPLATES, result)\r\n return result\r\n })\r\n },\r\n scheduleNewEmail: (_, newEmailRequest) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Emails/Schedule'\r\n\r\n return api.post(url, newEmailRequest)\r\n },\r\n uploadEmailAttachment(_, formData) {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Documents'\r\n\r\n return uploadApi.post(url, formData).then((response) => {\r\n const result = response?.data?.data?.documentDTO?.values[0] || null\r\n return result\r\n })\r\n },\r\n fetchEmailRestrictedDomains: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Emails/RestrictedDomains'\r\n\r\n return api.get(url).then((response) => {\r\n const restrictedDomains = response?.data?.data?.vendorEmailManagementDTO?.values || []\r\n commit(types.EMAIL_SET_EMAIL_RESTRICTED_DOMAINS, restrictedDomains)\r\n return restrictedDomains\r\n })\r\n },\r\n saveRestrictedDomains({ commit }, vendorEmailManagementDTOList) {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Emails/RestrictedDomains'\r\n\r\n return uploadApi.put(url, vendorEmailManagementDTOList).then((response) => {\r\n const restrictedDomains = response?.data?.data?.vendorEmailManagementDTO?.values || []\r\n commit(types.EMAIL_SET_EMAIL_RESTRICTED_DOMAINS, restrictedDomains)\r\n return restrictedDomains\r\n })\r\n },\r\n ReSendEmail: ({ commit }, emailId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Emails/ReSend?emailId=${emailId}`\r\n\r\n return api.post(url).then((response) => {\r\n const noteDTO = response?.data?.data?.noteDTO?.values?.[0] || []\r\n commit(types.EMAIL_RESEND, noteDTO)\r\n return noteDTO\r\n })\r\n },\r\n ForwardEmail: ({ commit }, forwardParam) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Emails/Forward?emailId=${forwardParam.emailId}`\r\n\r\n return api.post(url, forwardParam.emailAddresses).then((response) => {\r\n const noteDTO = response?.data?.data?.noteDTO?.values?.[0] || []\r\n commit(types.EMAIL_RESEND, noteDTO)\r\n return noteDTO\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.EMAIL_AGGREGATES_SET](state, emailAggs) {\r\n state.emailAggregates = [...emailAggs]\r\n },\r\n [types.EMAIL_SCHEDULED_AGGREGATES_SET](state, emailAggs) {\r\n state.emailScheduledAggregates = [...emailAggs]\r\n },\r\n [types.EMAIL_PROJECT_SET](state, emailProject) {\r\n state.emailProject = emailProject\r\n },\r\n [types.SCHEDULED_EMAIL_PROJECT_SET](state, emailProject) {\r\n state.scheduledEmailProject = emailProject\r\n },\r\n [types.EMAIL_VENDOR_SET](state, emailVendor) {\r\n state.emailVendor = emailVendor\r\n },\r\n [types.EMAIL_UPDATE_NEW_EMAIL](state, email) {\r\n state.newEmail = email\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_PROJECT_USERS](state, projectUsers) {\r\n state.projectUsers = projectUsers\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_TEAM_CONTACTS](state, contacts) {\r\n state.contacts = contacts\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_INVITEES](state, invitees) {\r\n state.invitees = invitees\r\n },\r\n [types.EMAIL_SET_EMAIL_TEMPLATES](state, templates) {\r\n state.templates = templates\r\n },\r\n [types.EMAIL_UPDATE_EMAIL_TEMPLATES](state, template) {\r\n const matchedIndex = state.templates.findIndex((r) => r.id === template.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one returned by API\r\n state.templates.splice(matchedIndex, 1)\r\n }\r\n state.templates.push(template)\r\n },\r\n [types.EMAIL_SET_EMAIL_RESTRICTED_DOMAINS](state, restrictedDomains) {\r\n state.restrictedDomains = restrictedDomains\r\n },\r\n [types.EMAIL_UPDATE_EMAIL_RESTRICTED_DOMAINS](state, restrictedDomain) {\r\n const matchedIndex = state.restrictedDomains.findIndex((r) => r.id === restrictedDomain.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one returned by API\r\n state.restrictedDomains.splice(matchedIndex, 1)\r\n }\r\n state.restrictedDomains.push(restrictedDomain)\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_CONTRACT_ID](state, contractId) {\r\n state.contractId = contractId\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_TENDER_ID](state, tenderId) {\r\n state.tenderId = tenderId\r\n },\r\n [types.EMAIL_SET_NEW_EMAIL_DOCUMENT](state, document) {\r\n state.document = document\r\n },\r\n [types.EMAIL_RESEND](state, note) {\r\n state.note = note\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api.js'\r\n\r\nfunction EvaluationService(config) {\r\n const nodeId = config.nodeId\r\n const projectId = config.projectId\r\n const evaluationApi = config.api || api\r\n\r\n function validateCredentials() {\r\n if (!nodeId || !projectId) {\r\n throw new Error('Node and project ID are required')\r\n }\r\n return true\r\n }\r\n\r\n async function getProjectEvaluation() {\r\n validateCredentials()\r\n\r\n const response = await evaluationApi.get(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}`\r\n )\r\n // (response.data: projectEvaluation || 204?)\r\n return response.data\r\n }\r\n\r\n async function createProjectEvaluation() {\r\n validateCredentials()\r\n\r\n const response = await evaluationApi.post(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function getAllTemplates(groupName) {\r\n const response = await evaluationApi.get(\r\n `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${groupName}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function getAllEvaluations() {\r\n const response = await evaluationApi.get(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluations`\r\n )\r\n return response.data\r\n }\r\n\r\n async function postProjectEvaluation(model) {\r\n const response = await evaluationApi.post(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluations`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function putProjectEvaluation(model, evaluationId) {\r\n const response = await evaluationApi.put(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluations/${evaluationId}`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function deleteProjectEvaluation(evaluationId) {\r\n const response = await evaluationApi.delete(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluations/${evaluationId}`\r\n )\r\n return response.data\r\n }\r\n\r\n // ----- CRITERIA -----\r\n async function postCreateEvaluationCriteria(evaluationId, model) {\r\n /**\r\n * @param {\r\n * evaluationStageId: guid,\r\n * evaluationSectionId: guid,\r\n * title: string,\r\n * minRatingScale: int,\r\n * maxRatingScale: int,\r\n * score: decimal,\r\n * formulaType: CriteriaFormulaType,\r\n * order: int,\r\n * evaluators: EvaluationCriteriaEvaluator[]\r\n * requirements: EvaluationRequirement[]\r\n * } model\r\n * @returns EvaluationCriteria\r\n * */\r\n\r\n const response = await evaluationApi.post(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/criteria`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function putEvaluationCriteria(evaluationId, criteriaId, model) {\r\n const response = await evaluationApi.put(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/criteria/${criteriaId}`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function getEvaluationCriteria(evaluationId, criteriaId) {\r\n const response = await evaluationApi.get(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/criteria/${criteriaId}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function deleteEvaluationCriteria(evaluationId, criteriaId) {\r\n const response = await evaluationApi.delete(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/criteria/${criteriaId}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function reorderEvaluationCriteria(evaluationId, model) {\r\n /**\r\n * @param {\r\n * evaluationCriteriaId: guid,\r\n * newOrder: int\r\n * } model\r\n */\r\n const response = await evaluationApi.put(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/criteria/reorder`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n // ---- SECTIONS ----\r\n\r\n async function getEvaluationSection(evaluationId, sectionId) {\r\n const response = await evaluationApi.get(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/section/${sectionId}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function postCreateEvaluationSection(evaluationId, model) {\r\n /**\r\n * @param {\r\n * evaluationStageId: guid,\r\n * title: string,\r\n * score: decimal,\r\n * order: int\r\n * criteria: EvaluationCriteria[]\r\n * } model\r\n * @returns EvaluationSection\r\n */\r\n const response = await evaluationApi.post(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/section`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function putEvaluationSection(evaluationId, sectionId, model) {\r\n const response = await evaluationApi.put(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/section/${sectionId}`,\r\n model\r\n )\r\n return response.data\r\n }\r\n\r\n async function deleteEvaluationSection(evaluationId, sectionId) {\r\n const response = await evaluationApi.delete(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/section/${sectionId}`\r\n )\r\n return response.data\r\n }\r\n\r\n async function reorderEvaluationSections(evaluationId, model) {\r\n /**\r\n * @param {\r\n * evaluationSectionId: guid,\r\n * newOrder: int\r\n * } model\r\n */\r\n const response = await evaluationApi.put(\r\n `/api/nodes/${nodeId}/projects/evaluations/${projectId}/evaluation/${evaluationId}/section/reorder`,\r\n model\r\n )\r\n return response\r\n }\r\n\r\n return {\r\n validateCredentials,\r\n getProjectEvaluation,\r\n createProjectEvaluation,\r\n getAllTemplates,\r\n postProjectEvaluation,\r\n getAllEvaluations,\r\n putProjectEvaluation,\r\n deleteProjectEvaluation,\r\n postCreateEvaluationCriteria,\r\n putEvaluationCriteria,\r\n getEvaluationCriteria,\r\n deleteEvaluationCriteria,\r\n reorderEvaluationCriteria,\r\n getEvaluationSection,\r\n postCreateEvaluationSection,\r\n putEvaluationSection,\r\n deleteEvaluationSection,\r\n reorderEvaluationSections\r\n }\r\n}\r\n\r\nexport default EvaluationService\r\n","import EvaluationService from '@/services/evaluation/evaluation.service.js'\r\nimport * as types from '@/store/mutation-types.js'\r\n\r\nconst state = () => ({\r\n projectEvaluation: null,\r\n evaluations: [],\r\n evaluationGuideTemplates: [],\r\n nonDisclosureTemplates: [],\r\n conflictOfInterestTemplates: [],\r\n scoreCardTemplates: []\r\n})\r\n\r\nconst getters = {\r\n getProjectEvaluation: (state) => state.projectEvaluation,\r\n getEvaluations: (state) => state.evaluations,\r\n getEvaluationGuideTemplates: (state) => state.evaluationGuideTemplates,\r\n getNonDisclosureTemplates: (state) => state.nonDisclosureTemplates,\r\n getConflictOfInterestTemplates: (state) => state.conflictOfInterestTemplates,\r\n getScoreCardTemplates: (state) => state.scoreCardTemplates\r\n}\r\n\r\nconst actions = {\r\n fetchProjectEvaluation: async ({ commit }, config) => {\r\n try {\r\n commit(types.EVALUATION_SET_PROJECT_EVALUATION, null)\r\n const response = await EvaluationService(config).getProjectEvaluation()\r\n if (response?.status === 200) {\r\n commit(types.EVALUATION_SET_PROJECT_EVALUATION, response.data.projectEvaluation)\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n createProjectEvaluation: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).createProjectEvaluation()\r\n if (response) {\r\n commit(types.EVALUATION_SET_PROJECT_EVALUATION, response.data.projectEvaluation)\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchAllEvaluations: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).getAllEvaluations()\r\n if (response) {\r\n commit(types.EVALUATION_SET_EVALUATIONS, response?.data?.evaluationDTO?.values || [])\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchAllEvaluationGuideTemplates: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).getAllTemplates('EvaluationGuide')\r\n if (response) {\r\n commit(\r\n types.EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES,\r\n response?.data?.onlineSubmissionTemplateDTO?.values || []\r\n )\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchAllNonDisclosureTemplates: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).getAllTemplates(\r\n 'EvaluationNonDisclosureAgreement'\r\n )\r\n if (response) {\r\n commit(\r\n types.EVALUATION_SET_NON_DISCLOSURE_TEMPLATES,\r\n response?.data?.onlineSubmissionTemplateDTO?.values || []\r\n )\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchAllConflictOfInterestTemplates: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).getAllTemplates(\r\n 'EvaluationConflictOfInterest'\r\n )\r\n if (response) {\r\n commit(\r\n types.EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES,\r\n response?.data?.onlineSubmissionTemplateDTO?.values || []\r\n )\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchAllScoreCardTemplates: async ({ commit }, config) => {\r\n try {\r\n const response = await EvaluationService(config).getAllTemplates('EvaluationScoreCard')\r\n if (response) {\r\n commit(\r\n types.EVALUATION_SET_SCORE_CARD_TEMPLATES,\r\n response?.data?.onlineSubmissionTemplateDTO?.values || []\r\n )\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n submitProjectEvaluation: async ({ commit }, config) => {\r\n try {\r\n let response = null\r\n if (config.evaluationId) {\r\n response = await EvaluationService(config).putProjectEvaluation(\r\n config.model,\r\n config.evaluationId\r\n )\r\n } else {\r\n response = await EvaluationService(config).postProjectEvaluation(config.model)\r\n }\r\n if (response) {\r\n commit(types.EVALUATION_SET_PROJECT_EVALUATION, response)\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n deleteProjectEvaluation: async (_, config) => {\r\n try {\r\n await EvaluationService(config).deleteProjectEvaluation(config.evaluationId)\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n clearProjectEvaluation: ({ commit }) => {\r\n commit(types.EVALUATION_SET_PROJECT_EVALUATION, null)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.EVALUATION_SET_PROJECT_EVALUATION]: (state, payload) => {\r\n state.projectEvaluation = payload\r\n },\r\n [types.EVALUATION_SET_EVALTAION_GUIDE_TEMPLATES]: (state, payload) => {\r\n state.evaluationGuideTemplates = payload\r\n },\r\n [types.EVALUATION_SET_NON_DISCLOSURE_TEMPLATES]: (state, payload) => {\r\n state.nonDisclosureTemplates = payload\r\n },\r\n [types.EVALUATION_SET_CONFLICT_OF_INTEREST_TEMPLATES]: (state, payload) => {\r\n state.conflictOfInterestTemplates = payload\r\n },\r\n [types.EVALUATION_SET_SCORE_CARD_TEMPLATES]: (state, payload) => {\r\n state.scoreCardTemplates = payload\r\n },\r\n [types.EVALUATION_SET_EVALUATIONS]: (state, payload) => {\r\n state.evaluations = payload\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport * as types from '../../mutation-types'\r\n\r\nfunction commonDownload(url) {\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n}\r\n\r\nexport const state = {\r\n requestedTenders: [],\r\n notifications: []\r\n}\r\n\r\nconst mutations = {\r\n [types.EXPORTFILE_ADD](state, tenderStatus) {\r\n state.requestedTenders.push(tenderStatus)\r\n localStorage.setItem('requestedTenders', JSON.stringify(state.requestedTenders))\r\n },\r\n [types.EXPORTFILE_REMOVE](state, tenderId) {\r\n state.requestedTenders = state.requestedTenders.filter((t) => t.id !== tenderId)\r\n localStorage.setItem('requestedTenders', JSON.stringify(state.requestedTenders))\r\n },\r\n [types.EXPORTFILE_READY](state, tenderId) {\r\n const tenderStatus = state.requestedTenders.find((t) => t.id === tenderId)\r\n tenderStatus.isReady = true\r\n localStorage.setItem('requestedTenders', JSON.stringify(state.requestedTenders))\r\n },\r\n [types.EXPORTFILE_RESTORE](state) {\r\n const tenders = JSON.parse(localStorage.getItem('requestedTenders'))\r\n state.requestedTenders = tenders || []\r\n },\r\n [types.EXPORTFILE_NOTIFICATIONADD](state, notification) {\r\n state.notifications.push(notification)\r\n },\r\n [types.EXPORTFILE_NOTIFICATIONCLEAR](state, tenderGuid) {\r\n state.notifications = state.notifications.filter((n) => n.tenderGuid !== tenderGuid)\r\n }\r\n}\r\n\r\nexport const getters = {\r\n getRequestedTenders: function (state, getters, rootState) {\r\n return state.requestedTenders.filter((t) => t.userId === rootState.user.user.id)\r\n },\r\n getReadyRequestedTenders: function (state, getters, rootState) {\r\n return state.requestedTenders.filter((t) => t.isReady && t.userId === rootState.user.user.id)\r\n }\r\n}\r\n\r\nexport const actions = {\r\n downloadSignInSheetPDF: (_, exportParam) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/GenerateSignInSheetPDF?tenderId=${exportParam.tenderId}&meetingLocationId=${exportParam.meetingLocationId}`\r\n return commonDownload(url)\r\n },\r\n downloadSignInSheetExcel: (_, exportParam) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/GenerateSignInSheetExcel?tenderId=${exportParam.tenderId}&meetingLocationId=${exportParam.meetingLocationId}`\r\n return commonDownload(url)\r\n },\r\n downloadCompletedSubmission: (_, planTakerSubmissionId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/CompletedSubmission?planTakerSubmissionId=${planTakerSubmissionId}`\r\n commonDownload(url)\r\n },\r\n requestCompletedSubmissionsAll: ({ commit }, tenderStatus) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/CompletedSubmissionsAllRequest?tenderId=${tenderStatus.id}`\r\n\r\n return api.get(url).then(() => {\r\n commit(types.EXPORTFILE_ADD, tenderStatus)\r\n })\r\n },\r\n downloadCompletedSubmissionsAll: ({ commit }, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/CompletedSubmissionsAllDownload?tenderId=${tenderId}`\r\n\r\n return downloadApi.get(url).then((response) => {\r\n util.forceFileDownload(response)\r\n commit(types.EXPORTFILE_REMOVE, tenderId)\r\n })\r\n },\r\n getCompletedSubmissionsAll: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/CompletedSubmissionsAll?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n addCompletedSubmissionsAll: ({ commit }, tenderStatus) => {\r\n commit(types.EXPORTFILE_ADD, tenderStatus)\r\n },\r\n removeCompletedSubmissionsAll: ({ commit }, tenderId) => {\r\n commit(types.EXPORTFILE_REMOVE, tenderId)\r\n },\r\n setCompletedSubmissionsAllReady: ({ commit }, tenderId) => {\r\n commit(types.EXPORTFILE_READY, tenderId)\r\n },\r\n restoreCompletedSubmissionsAll: ({ commit }) => {\r\n commit(types.EXPORTFILE_RESTORE)\r\n },\r\n addAllSubmissionsNotification: ({ commit }, notification) => {\r\n commit(types.EXPORTFILE_NOTIFICATIONADD, notification)\r\n },\r\n clearAllSubmissionsNotifications: ({ commit, state }) => {\r\n for (const notification of state.notifications) {\r\n notification.closeFn()\r\n commit(types.EXPORTFILE_NOTIFICATIONCLEAR, notification.tenderGuid)\r\n }\r\n },\r\n downloadBidAnalysis: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/BidAnalysis?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadVendorQuestions: (_, exportParam) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/VendorQuestions?tenderId=${exportParam.tenderId}`\r\n\r\n return downloadApi\r\n .post(url, exportParam.vendorQuestionsIds.split(','))\r\n .then(util.forceFileDownload)\r\n },\r\n generateBidDocument: (_, exportParam) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/BidDocument?projectId=${exportParam.projectId}&attachFrontEndDocument=${exportParam.attachFrontEndDocument}`\r\n\r\n return api.post(url)\r\n },\r\n downloadProjectSummary: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/ProjectSummary?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadSupplierActivity: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/SupplierActivity?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadOpeningSheet: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/OpeningSheet?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadNoBidReport: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/NoBid?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadComplianceReport: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/Compliance?tenderId=${tenderId}`\r\n return commonDownload(url)\r\n },\r\n downloadEmailWithAttachments: (_, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/Email?emailId=${payload}`\r\n return commonDownload(url)\r\n },\r\n downloadScheduledEmailWithAttachments: (_, param) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Exports/ScheduledEmailWithAttachment?emailScheduleId=${param.id}&emailScheduleContactId=${param.emailScheduleContactId}`\r\n return commonDownload(url)\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import * as types from '@/store/mutation-types'\r\n\r\nconst state = {\r\n apiRoot: import.meta.env.VITE_API_BASE,\r\n showAppBar: true,\r\n noredirect: false\r\n}\r\n\r\nconst getters = {\r\n apiRoot: (state) => state.apiRoot,\r\n getShowAppBar: (state) => state.showAppBar,\r\n getNoRedirect: (state) => state.noredirect\r\n}\r\n\r\nconst actions = {\r\n setShowAppBar: ({ commit }, payload) => {\r\n commit(types.SHOW_APP_BAR, payload)\r\n },\r\n setNoRedirect: ({ commit }, value) => {\r\n commit(types.NO_REDIRECT_SET, value)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.SHOW_APP_BAR](state, payload) {\r\n state.showAppBar = payload.showAppBar\r\n },\r\n [types.NO_REDIRECT_SET](state, value) {\r\n state.noredirect = value\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n mutations,\r\n actions\r\n}\r\n","import { api } from '@/api/api'\r\nimport { useDataSanitizing } from '@/utils/dataSanitizing'\r\n\r\nconst { sanitizeData } = useDataSanitizing()\r\n\r\nconst actions = {\r\n // eslint-disable-next-line no-unused-vars\r\n sendForgotPassword: (_, { email }) => {\r\n if (!email) {\r\n return Promise.reject(new Error('Invalid email'))\r\n }\r\n\r\n // Request a password reset email\r\n const url = `/api/v1/auth/forgot-password`\r\n\r\n return api.post(url, { email })\r\n },\r\n // eslint-disable-next-line no-unused-vars\r\n validateResetPassword: async (_, { params }) => {\r\n const { email, token } = params\r\n\r\n if (!email || !token) {\r\n return Promise.reject(new Error('Invalid email or token'))\r\n }\r\n\r\n const sanitizedEmail = sanitizeData(email)\r\n const sanitizedToken = sanitizeData(token)\r\n\r\n const url = `/api/v1/auth/verify-email`\r\n const response = await api.post(url, { email: sanitizedEmail, token: sanitizedToken })\r\n\r\n const isValid = response.data?.data?.verifyPasswordRequest?.values[0]?.isValid\r\n\r\n if (isValid) return true\r\n return Promise.reject(response)\r\n },\r\n // eslint-disable-next-line no-unused-vars\r\n resetPassword: (_, { params }) => {\r\n const url = `/api/v1/auth/change-forgotten-password`\r\n\r\n const sanitizedEmail = sanitizeData(params.email)\r\n const sanitizedToken = sanitizeData(params.token)\r\n const sanitizedNewPassword = sanitizeData(params.newPassword)\r\n\r\n return api.post(url, {\r\n email: sanitizedEmail,\r\n token: sanitizedToken,\r\n newPassword: sanitizedNewPassword\r\n })\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n actions\r\n}\r\n","import * as types from '../../mutation-types.js'\r\n\r\nexport const state = () => ({\r\n userNavMenuOpen: false,\r\n activityFeedMenuOpen: false,\r\n messageCentreMenuOpen: false,\r\n projectSnapshotOpen: false\r\n})\r\n\r\nexport const getters = {\r\n getUserNavMenuOpen: (state) => state.userNavMenuOpen,\r\n getActivityFeedMenuOpen: (state) => state.activityFeedMenuOpen,\r\n getMessageCentreMenuOpen: (state) => state.messageCentreMenuOpen,\r\n getProjectSnapshotOpen: (state) => state.projectSnapshotOpen\r\n}\r\n\r\nexport const actions = {\r\n setUserNavMenuOpen: ({ commit, state }, isOpen) => {\r\n commit(types.USER_NAV_MENU_SET, isOpen)\r\n return Promise.resolve(state.userNavMenuOpen)\r\n },\r\n setActivityFeedMenuOpen: ({ commit }, isOpen) => {\r\n commit(types.ACTIVITY_FEED_MENU_SET, isOpen)\r\n },\r\n setMessageCentreMenuOpen: ({ commit }, isOpen) => {\r\n commit(types.MESSAGE_CENTRE_MENU_SET, isOpen)\r\n },\r\n setProjectSnapshotOpen: ({ commit }, isOpen) => {\r\n commit(types.PROJECT_SNAPSHOT_SET, isOpen)\r\n },\r\n toggleProjectSnapshotOpen: ({ commit }) => {\r\n commit(types.PROJECT_SNAPSHOT_TOGGLE)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.USER_NAV_MENU_SET](state, isOpen) {\r\n state.userNavMenuOpen = isOpen\r\n },\r\n [types.ACTIVITY_FEED_MENU_SET](state, isOpen) {\r\n state.activityFeedMenuOpen = isOpen\r\n },\r\n [types.MESSAGE_CENTRE_MENU_SET](state, isOpen) {\r\n state.messageCentreMenuOpen = isOpen\r\n },\r\n [types.PROJECT_SNAPSHOT_SET](state, isOpen) {\r\n state.projectSnapshotOpen = isOpen\r\n },\r\n [types.PROJECT_SNAPSHOT_TOGGLE](state) {\r\n state.projectSnapshotOpen = !state.projectSnapshotOpen\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '@/store/mutation-types'\r\n\r\nconst state = {\r\n permission: []\r\n}\r\n\r\nconst getters = {\r\n getPermission: (state) => state.permission\r\n}\r\n\r\nconst actions = {\r\n fetchPermission: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Permissions/All'\r\n\r\n return api.get(url).then(function (response) {\r\n commit(types.PERMISSION_SET, response?.data?.data?.proPermissionGroupDTO?.values || [])\r\n return response.data\r\n })\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.PERMISSION_SET](state, permission) {\r\n state.permission = permission\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n plantakers: []\r\n}\r\n\r\nexport const getters = {\r\n getPlantakers: (state) => state.plantakers\r\n}\r\n\r\nexport const actions = {\r\n fetchPlantakers({ commit }, id) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/plantakers?tenderId=${id}`\r\n return api.get(url).then((response) => {\r\n const plantakers = response?.data?.data?.planTakerDTO?.values || []\r\n commit(types.PLANTAKER_SET, plantakers)\r\n return plantakers\r\n })\r\n },\r\n updatePlantaker(_, plantakerModel) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Plantakers`\r\n return api.put(url, plantakerModel).then((response) => {\r\n const plantakers = response.data.data.planTakerDTO.values[0]\r\n return plantakers\r\n })\r\n },\r\n createPlantaker(_, plantakerModel) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Plantakers`\r\n return api.post(url, plantakerModel).then((response) => {\r\n const plantakers = response.data.data.planTakerDTO.values[0]\r\n return plantakers\r\n })\r\n },\r\n deleteHardCopySubmission: (_, plantakerSubmissionId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/plantakers/HardCopySubmission?plantakerSubmissionId=${plantakerSubmissionId}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.PLANTAKER_SET](state, plantakers) {\r\n state.plantakers = plantakers\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n projectRoles: []\r\n}\r\n\r\nexport const getters = {\r\n getProjectRoles: (state) => state.projectRoles\r\n}\r\n\r\nexport const actions = {\r\n fetchProjectRoles({ commit }) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/projectRoles`\r\n\r\n return api.get(url).then((response) => {\r\n const projectRoles = response?.data?.data?.projectRoleDTO?.values || []\r\n commit(types.PROJECT_ROLE_SET_ALL, projectRoles)\r\n return projectRoles\r\n })\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.PROJECT_ROLE_SET_ALL](state, projectRoles) {\r\n state.projectRoles = projectRoles\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n projectUsers: [],\r\n projectUsersRole: [],\r\n fetchingProjectUsers: false\r\n}\r\n\r\nexport const getters = {\r\n getProjectUsers: (state) => state.projectUsers,\r\n getProjectUsersRole: (state) => state.projectUsersRole\r\n}\r\n\r\nexport const actions = {\r\n fetchProjectUsers({ commit }, projectId) {\r\n const url = `${\r\n `/api/v1/customer/{customerId}/node/{nodeId}/projectUsers?` + 'projectId='\r\n }${projectId}&filter.fields=User,Roles`\r\n\r\n // check fetch status\r\n if (state.fetchingProjectUsers === true) {\r\n return new Promise((resolve) => {\r\n resolve([])\r\n })\r\n }\r\n // update the fetch status\r\n commit(types.PROJECT_USER_FETCH_STATUS_SET, true)\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const projectUsers = response?.data?.data?.projectUserDTO?.values || []\r\n commit(types.PROJECT_USER_SET_ALL, projectUsers)\r\n return projectUsers\r\n })\r\n .finally(() => commit(types.PROJECT_USER_FETCH_STATUS_SET, false))\r\n },\r\n fetchProjectUserByRole({ commit }, roleId) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/projectUsers?roleId=${roleId}`\r\n\r\n return api.get(url).then((response) => {\r\n const projectUsers = response?.data?.data?.projectUserDTO?.values || []\r\n commit(types.PROJECT_USER_ROLE_SET_ALL, projectUsers)\r\n return projectUsers\r\n })\r\n },\r\n deleteProjectUser: (_, projectUserId) => {\r\n return api.delete(\r\n `/api/v1/customer/{customerId}/node/{nodeId}/projectUsers?projectUserId=${projectUserId}`\r\n )\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.PROJECT_USER_SET_ALL](state, projectUsers) {\r\n state.projectUsers = projectUsers\r\n },\r\n [types.PROJECT_USER_FETCH_STATUS_SET](state, status) {\r\n state.fetchingProjectUsers = status\r\n },\r\n [types.PROJECT_USER_ROLE_SET_ALL](state, projectUsersRole) {\r\n state.projectUsersRole = projectUsersRole\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi, uploadApiMultipart } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport * as types from './../../mutation-types.js'\r\n\r\nexport const state = {\r\n awardExceptions: [],\r\n awardException: null,\r\n awarded: [],\r\n projectSummary: null,\r\n allApprovals: [],\r\n currentApproval: null,\r\n selectedSuppliers: [],\r\n isWorkflowType: null\r\n}\r\n\r\nexport const getters = {\r\n getAwardExceptions: (state) => state.awardExceptions,\r\n getAwardException: (state) => state.awardException,\r\n getAwarded: (state) => state.awarded,\r\n getprojectSummary: (state) => state.projectSummary,\r\n getAllAwardApprovals: (state) => state.allApprovals,\r\n getCurrentApproval: (state) => state.currentApproval,\r\n getCurrentApprovalSuppliers: (state) =>\r\n state.currentApproval && state.currentApproval.formattedApprovalSuppliers,\r\n getSelectedSuppliers: (state) => state.selectedSuppliers,\r\n getIsWorkflowType: (state) => state.isWorkflowType,\r\n getCurrentApprovalWorkflows: (state) =>\r\n (state.currentApproval && state.currentApproval.awardApprovalWorkflows) || []\r\n}\r\n\r\nexport const actions = {\r\n fetchAwarded: ({ commit }, tender) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Submissions/Awarded?tenderId=${tender}`\r\n return api.get(url).then((response) => {\r\n let awarded = []\r\n if (response.data.count > 0) {\r\n awarded = response.data.data.searchResult.values\r\n commit(types.AWARDED_SET_ALL, awarded)\r\n }\r\n return response\r\n })\r\n },\r\n fetchAwardExceptions: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/AwardExceptions'\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const exceptions = response.data.data.awardExceptionDTO.values\r\n commit(types.AWARD_EXCEPTIONS_SET_ALL, exceptions)\r\n return exceptions\r\n }\r\n })\r\n },\r\n saveAwardException: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AwardExceptions`\r\n return api.post(url, model).then((response) => {\r\n const awardException = response.data.data.awardExceptionDTO.values[0]\r\n commit(types.AWARD_EXCEPTION_SET, awardException)\r\n return awardException\r\n })\r\n },\r\n updateAwardException: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AwardExceptions`\r\n return api.put(url, model).then((response) => {\r\n const awardException = response.data.data.awardExceptionDTO.values[0]\r\n commit(types.AWARD_EXCEPTION_SET, awardException)\r\n return awardException\r\n })\r\n },\r\n deleteAwardException: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/AwardExceptions?awardExceptionId=${id}`\r\n return api.delete(url)\r\n },\r\n fetchAwardProjectSummary: ({ commit }, { projectId }) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/awards/summary?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n let awardSummary = []\r\n if (response.data.count > 0) {\r\n awardSummary = response.data.data.awardSummaryDTO.values[0].awardSummaryDetail\r\n commit(types.AWARD_PROJECT_SUMMARY_SET, awardSummary)\r\n }\r\n return awardSummary\r\n })\r\n },\r\n fetchAllApprovals: ({ commit, rootState }) => {\r\n const projectId = rootState.project.project.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals?projectId=${projectId}`\r\n return api.get(url).then((response) => {\r\n let allApprovals = []\r\n if (response.data.count > 0) {\r\n allApprovals = response.data.data.awardApprovalDTO.values\r\n commit(types.AWARD_ALL_APPROVALS_SET, allApprovals)\r\n }\r\n return allApprovals\r\n })\r\n },\r\n fetchAwardPhaseStatus: (_, projectId) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/AwardPhaseStatus?projectId=${projectId}`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count !== 0) {\r\n const status = response.data.data.searchResult.values[0]\r\n return status\r\n }\r\n })\r\n },\r\n createAwardApproval: ({ commit, rootState }, model) => {\r\n const projectId = rootState.project.project.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals?projectId=${projectId}`\r\n return api.post(url, model).then((response) => {\r\n const newApproval = response.data.data.awardApprovalDTO.values[0]\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, newApproval)\r\n return newApproval\r\n })\r\n },\r\n updateAwardApproval: ({ commit }, model) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}`\r\n return api.put(url, model).then((response) => {\r\n const approval = response.data.data.awardApprovalDTO.values[0]\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, approval)\r\n\r\n return approval\r\n })\r\n },\r\n getAwardApprovalById: ({ commit }) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}`\r\n return api.get(url).then((response) => {\r\n const newApproval = response.data.data.awardApprovalDTO.values[0]\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, newApproval)\r\n\r\n return newApproval\r\n })\r\n },\r\n deleteAwardApprovalById: ({ state }) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}`\r\n return api.delete(url)\r\n },\r\n downloadApprovalReport: ({ state }, fileType) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/download-report?fileType=${fileType}`\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n },\r\n uploadAwardDocument: ({ state }, payload) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/documents`\r\n const { formData } = payload\r\n\r\n return uploadApiMultipart.post(url, formData).then((response) => {\r\n const documents = response.data.data.awardApprovalDTO.values[0].awardApprovalDocuments\r\n return documents\r\n })\r\n },\r\n attachApprovalReport: ({ state, commit }, hasApprovalReport) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/summary-report?attach=${hasApprovalReport}`\r\n return api.post(url).then((response) => {\r\n const newApproval = response.data.data.awardApprovalDTO.values[0]\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, newApproval)\r\n\r\n return newApproval\r\n })\r\n },\r\n createAwardApprovalWorkflow: ({ state }, payload) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/awards/approvals/${approvalId}/workflow`\r\n return api.post(url, payload).then((response) => {\r\n const workflow = response.data.data.awardApprovalWorkflowDTO.values[0]\r\n return workflow\r\n })\r\n },\r\n updateAwardUser: ({ state, commit }, payload) => {\r\n const { id: workflowId, ...user } = payload\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/awards/approvals/${approvalId}/workflow/${workflowId}`\r\n return api.put(url, user).then((response) => {\r\n const approval = response.data.data.awardApprovalDTO.values[0]\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, approval)\r\n\r\n return approval\r\n })\r\n },\r\n reOrderAwardApprovalWorkflow: (_, payload) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/awards/approvals/workflow/re-order`\r\n return api.post(url, payload).then((response) => {\r\n const workflows = response.data.data.awardApprovalWorkflowDTO.values[0]\r\n return Promise.resolve(workflows)\r\n })\r\n },\r\n deleteAwardUser: (_, workflowId) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/awards/approvals/workflow/${workflowId}`\r\n return api.delete(url)\r\n },\r\n awardApprovalSendForApproval: ({ commit }) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/send`\r\n\r\n return api.post(url).then((response) => {\r\n const allApprovals = response?.data?.data?.awardApprovalDTO?.values || []\r\n commit(types.AWARD_ALL_APPROVALS_SET, allApprovals)\r\n return allApprovals\r\n })\r\n },\r\n awardApprovalStatusUpdate: ({ commit }, params) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/status?status=${params.status}`\r\n\r\n return api.put(url, params.comments).then((response) => {\r\n const allApprovals = response?.data?.data?.awardApprovalDTO?.values || []\r\n commit(types.AWARD_ALL_APPROVALS_SET, allApprovals)\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, allApprovals.filter((r) => r.id === approvalId)[0])\r\n\r\n return allApprovals\r\n })\r\n },\r\n awardApprovalSendForApprovalResend: ({ commit }, workflowId) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/approver/${workflowId}/Resend`\r\n\r\n return api.post(url).then((response) => {\r\n const allApprovals = response?.data?.data?.awardApprovalDTO?.values || []\r\n commit(types.AWARD_ALL_APPROVALS_SET, allApprovals)\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, allApprovals.filter((r) => r.id === approvalId)[0])\r\n\r\n return allApprovals\r\n })\r\n },\r\n awardApproverStatusReset: ({ commit }, workflowId) => {\r\n const approvalId = state.currentApproval && state.currentApproval.id\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/Awards/approvals/${approvalId}/approver/${workflowId}/StatusReset`\r\n\r\n return api.post(url).then((response) => {\r\n const allApprovals = response?.data?.data?.awardApprovalDTO?.values || []\r\n commit(types.AWARD_ALL_APPROVALS_SET, allApprovals)\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, allApprovals.filter((r) => r.id === approvalId)[0])\r\n\r\n return allApprovals\r\n })\r\n },\r\n setAwardApproval: ({ commit }, payload) => {\r\n commit(types.AWARD_CURRENT_APPROVAL_SET, payload)\r\n },\r\n updateSelectedSuppliers: ({ commit }, payload) => {\r\n commit(types.AWARD_SELECTED_SUPPLIERS_UPDATE, payload)\r\n },\r\n setSelectedSuppliers: ({ commit }, payload) => {\r\n commit(types.AWARD_SELECTED_SUPPLIERS_SET, payload)\r\n },\r\n setWorkflowType: ({ commit }, payload) => {\r\n commit(types.AWARD_WORKFLOW_TYPE_SET, payload)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.AWARD_EXCEPTIONS_SET_ALL](state, exceptions) {\r\n state.awardExceptions = exceptions\r\n },\r\n [types.AWARD_EXCEPTION_SET](state, exception) {\r\n state.awardException = exception\r\n },\r\n [types.AWARDED_SET_ALL](state, awarded) {\r\n state.awarded = awarded\r\n },\r\n [types.AWARD_PROJECT_SUMMARY_SET](state, summary) {\r\n state.projectSummary = summary\r\n },\r\n [types.AWARD_ALL_APPROVALS_SET](state, allApprovals) {\r\n state.allApprovals = allApprovals\r\n },\r\n [types.AWARD_CURRENT_APPROVAL_SET](state, currentApproval) {\r\n if (currentApproval) {\r\n if (\r\n currentApproval.awardApprovalDocuments &&\r\n currentApproval.awardApprovalDocuments.length > 1\r\n ) {\r\n currentApproval.awardApprovalDocuments.sort((a, b) => a.displayOrder - b.displayOrder)\r\n }\r\n if (\r\n currentApproval.awardApprovalWorkflows &&\r\n currentApproval.awardApprovalWorkflows.length > 1\r\n ) {\r\n currentApproval.awardApprovalWorkflows.sort((a, b) => a.displayOrder - b.displayOrder)\r\n }\r\n }\r\n state.currentApproval = currentApproval\r\n },\r\n [types.AWARD_SELECTED_SUPPLIERS_UPDATE](state, payload) {\r\n const arr = state.selectedSuppliers.filter((sup) => sup !== payload.remove)\r\n arr.push(payload.add)\r\n state.selectedSuppliers = arr\r\n },\r\n [types.AWARD_SELECTED_SUPPLIERS_SET](state, payload) {\r\n state.selectedSuppliers = payload\r\n },\r\n [types.AWARD_WORKFLOW_TYPE_SET](state, payload) {\r\n state.isWorkflowType = payload\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n contractCategories: [],\r\n contractCategoriesAll: [],\r\n sourceCategories: [],\r\n fetchingContractCategories: false,\r\n fetchingSourceCategories: false\r\n}\r\n\r\nexport const getters = {\r\n getContractCategories: (state) => state.contractCategories,\r\n getContractCategoriesAll: (state) => state.contractCategoriesAll,\r\n getSourceCategories: (state) => state.sourceCategories,\r\n getContractCategoryFetchStatus: (state) => state.fetchingContractCategories,\r\n getSourceCategoryFetchStatus: (state) => state.fetchingSourceCategories\r\n}\r\n\r\nexport const actions = {\r\n fetchContractCategories: ({ commit, state }, forceUpate = false) => {\r\n if (forceUpate) {\r\n commit(types.CONTRACT_CATEGORY_SET_ALL, [])\r\n }\r\n\r\n // For caching, exit early if already fetched\r\n if (state.contractCategories.length) {\r\n commit(types.CONTRACT_CATEGORY_SET_STATUS, false)\r\n return Promise.resolve(state.contractCategories)\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories`\r\n\r\n // check fetch status\r\n if (state.fetchingContractCategories === true) {\r\n return Promise.resolve('')\r\n }\r\n // update the fetch status\r\n commit(types.CONTRACT_CATEGORY_SET_STATUS, true)\r\n\r\n // fallback cancel fetching status\r\n setTimeout(() => {\r\n if (state.fetchingContractCategories === true) {\r\n commit(types.CONTRACT_CATEGORY_SET_STATUS, false)\r\n }\r\n }, 60000)\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const contractCategories = response.data.data.contractCategoryDTO.values\r\n commit(types.CONTRACT_CATEGORY_SET_ALL, contractCategories)\r\n return contractCategories\r\n })\r\n .finally(() => commit(types.CONTRACT_CATEGORY_SET_STATUS, false))\r\n },\r\n updateContractCategories: ({ commit }) => {\r\n // when event received notifying contract categories have been updated.\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const contractCategories = response.data.data.contractCategoryDTO.values\r\n commit(types.CONTRACT_CATEGORY_SET_ALL, contractCategories)\r\n return contractCategories\r\n })\r\n .finally(() => commit(types.CONTRACT_CATEGORY_SET_STATUS, false))\r\n },\r\n fetchContractCategoriesAll: ({ commit }) => {\r\n // used in cpanel dropdowns\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories/All`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const contractCategories = response.data.data.contractCategoryDTO.values\r\n commit(types.CONTRACT_CATEGORIES_SET, contractCategories)\r\n return contractCategories\r\n })\r\n .finally(() => commit(types.CONTRACT_CATEGORY_SET_STATUS, false))\r\n },\r\n saveContractCategory: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories`\r\n return api.post(url, model).then((response) => {\r\n const contractCategory = response.data.data.contractCategoryDTO.values[0]\r\n return contractCategory\r\n })\r\n },\r\n updateContractCategory: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories`\r\n return api.put(url, model).then((response) => {\r\n const contractCategory = response.data.data.contractCategoryDTO.values[0]\r\n return contractCategory\r\n })\r\n },\r\n deleteContractCategory: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ContractCategories?contractCategoryId=${id}`\r\n return api.delete(url)\r\n },\r\n fetchSourceCategories: ({ commit, state }, forceUpate = false) => {\r\n if (forceUpate) {\r\n commit(types.SOURCE_CATEGORY_SET_ALL, [])\r\n }\r\n\r\n // For caching, exit early if already fetched\r\n if (state.sourceCategories.length) {\r\n commit(types.SOURCE_CATEGORY_SET_STATUS, false)\r\n return Promise.resolve(state.sourceCategories)\r\n }\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Category`\r\n\r\n // check fetch status\r\n if (state.fetchingSourceCategories === true) {\r\n return Promise.resolve('')\r\n }\r\n // update the fetch status\r\n commit(types.SOURCE_CATEGORY_SET_STATUS, true)\r\n\r\n // fallback cancel fetching status\r\n setTimeout(() => {\r\n if (state.fetchingSourceCategories === true) {\r\n commit(types.SOURCE_CATEGORY_SET_STATUS, false)\r\n }\r\n }, 60000)\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const sourceCategories = response.data.data.categoryDTO.values\r\n commit(types.SOURCE_CATEGORY_SET_ALL, sourceCategories)\r\n return sourceCategories\r\n })\r\n .finally(() => commit(types.SOURCE_CATEGORY_SET_STATUS, false))\r\n },\r\n updateSourceCategories: ({ commit }) => {\r\n // when event received notifying categories have been updated.\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Category`\r\n return api.get(url).then((response) => {\r\n const sourceCategories = response.data.data.categoryDTO.values\r\n commit(types.SOURCE_CATEGORY_SET_ALL, sourceCategories)\r\n return sourceCategories\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTRACT_CATEGORY_SET_ALL](state, contractCategories) {\r\n state.contractCategories = contractCategories\r\n },\r\n [types.CONTRACT_CATEGORIES_SET](state, contractCategoriesAll) {\r\n state.contractCategoriesAll = contractCategoriesAll\r\n },\r\n [types.SOURCE_CATEGORY_SET_ALL](state, sourceCategories) {\r\n state.sourceCategories = sourceCategories\r\n },\r\n [types.CONTRACT_CATEGORY_SET_STATUS](state, status) {\r\n state.fetchingContractCategories = status\r\n },\r\n [types.SOURCE_CATEGORY_SET_STATUS](state, status) {\r\n state.fetchingSourceCategories = status\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n commodityCategories: [],\r\n fetchingCommodityCategories: false\r\n}\r\n\r\nexport const getters = {\r\n getCommodityCategories: (state) => state.commodityCategories,\r\n getCommodityCategoriesFetchStatus: (state) => state.fetchingCommodityCategories\r\n}\r\n\r\nexport const actions = {\r\n fetchCommodityCategories: ({ commit, state }, forceUpate = false) => {\r\n if (forceUpate) {\r\n commit(types.COMMODITY_CATEGORIES_SET, [])\r\n }\r\n\r\n // For caching, exit early if already fetched\r\n if (state.commodityCategories.length) {\r\n commit(types.COMMODITY_CATEGORIES_SET_STATUS, false)\r\n return Promise.resolve(state.commodityCategories)\r\n }\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/CommodityCategories`\r\n\r\n // check fetch status\r\n if (state.fetchingCommodityCategories === true) {\r\n return Promise.resolve('')\r\n }\r\n\r\n // update the fetch status\r\n commit(types.COMMODITY_CATEGORIES_SET_STATUS, true)\r\n\r\n // fallback cancel fetching status\r\n setTimeout(() => {\r\n if (state.fetchingCommodityCategories === true) {\r\n commit(types.COMMODITY_CATEGORIES_SET_STATUS, false)\r\n }\r\n }, 60000)\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const commodityCategories = response.data.data.commodityCategoriesDTO.values\r\n commit(types.COMMODITY_CATEGORIES_SET, commodityCategories)\r\n return commodityCategories\r\n })\r\n .finally(() => commit(types.COMMODITY_CATEGORIES_SET_STATUS, false))\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.COMMODITY_CATEGORIES_SET](state, commodityCategories) {\r\n state.commodityCategories = commodityCategories\r\n },\r\n [types.COMMODITY_CATEGORIES_SET_STATUS](state, status) {\r\n state.fetchingCommodityCategories = status\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from './../../mutation-types.js'\r\n\r\nexport const state = {\r\n externalSuppliers: [],\r\n contractDateList: []\r\n}\r\n\r\nexport const getters = {\r\n getExternalSuppliers: (state) => state.externalSuppliers,\r\n getContractDateList: (state) => state.contractDateList\r\n}\r\n\r\nexport const actions = {\r\n addSupplier: (_, params) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/Supplier/${params.vendorId}`\r\n return api.post(uri).then((response) => response.data.data.vendorDTO.values[0])\r\n },\r\n deleteSupplier: (_, params) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/Supplier/${params.vendorId}`\r\n return api.delete(uri)\r\n },\r\n inviteExternalSupplier: (_, params) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorInvitations`\r\n return api.post(uri, params)\r\n },\r\n fetchExternalSuppliers: ({ commit }, contractId) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorInvitations?contractId=${contractId}`\r\n return api.get(uri).then((response) => {\r\n const suppliers = response.data.data.contractVendorInvitationDTO.values\r\n commit(types.CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL, suppliers)\r\n return suppliers\r\n })\r\n },\r\n deleteExternalSupplier: (_, id) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/ContractVendorInvitations?contractVendorInvitationId=${id}`\r\n return api.delete(uri)\r\n },\r\n activateSupplier: (_, params) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/Supplier/${params.vendorId}/Activate`\r\n return api.put(uri)\r\n },\r\n deactivateSupplier: (_, params) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${params.contractId}/Supplier/${params.vendorId}/Deactivate`\r\n return api.put(uri)\r\n },\r\n fetchContractDateList: ({ commit }, contractId) => {\r\n const uri = `/api/v1/customer/{customerId}/node/{nodeId}/Contracts/${contractId}/DateList/`\r\n return api.get(uri).then((response) => {\r\n const contractDateList = response.data.data.contractDateDTO.values\r\n commit(types.CONTRACT_DATELIST_SET_ALL, contractDateList)\r\n return contractDateList\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.CONTRACT_EXTERNAL_SUPPLIERS_SET_ALL]: (state, suppliers) => {\r\n state.externalSuppliers = suppliers\r\n },\r\n [types.CONTRACT_DATELIST_SET_ALL]: (state, contractDateList) => {\r\n state.contractDateList = contractDateList\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n departments: [],\r\n departmentsAll: [],\r\n department: null\r\n}\r\n\r\nexport const getters = {\r\n getDepartments: (state) => state.departments,\r\n getDepartmentsAll: (state) => state.departmentsAll,\r\n getDepartment: (state) => state.department\r\n}\r\n\r\nexport const actions = {\r\n fetchDepartments: ({ commit }, forceUpdate = false) => {\r\n // when signalr event received to fetch new departments\r\n if (forceUpdate) {\r\n commit(types.DEPARTMENTS_SET, [])\r\n }\r\n\r\n // Return cached value if exists\r\n if (state.departments.length) {\r\n return Promise.resolve(state.departments)\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Departments?filter.fields=Divisions,UserGroups`\r\n return api.get(url).then((response) => {\r\n const departments = response.data.data.departmentDTO.values\r\n commit(types.DEPARTMENTS_SET, departments)\r\n return departments\r\n })\r\n },\r\n fetchDepartmentsAll: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Departments/All`\r\n\r\n return api.get(url).then((response) => {\r\n const departments = response.data.data.departmentDTO.values\r\n commit(types.DEPARTMENT_SET_ALL, departments)\r\n return departments\r\n })\r\n },\r\n saveDepartment: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Departments`\r\n return api.post(url, model).then((response) => {\r\n const department = response.data.data.departmentDTO.values[0]\r\n commit(types.DEPARTMENT_SET, department)\r\n return department\r\n })\r\n },\r\n updateDepartmentName: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Departments/UpdateName`\r\n return api.put(url, model).then((response) => {\r\n const department = response.data.data.departmentDTO.values[0]\r\n commit(types.DEPARTMENT_SET, department)\r\n return department\r\n })\r\n },\r\n deleteDepartment: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Departments?departmentId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.DEPARTMENTS_SET](state, departments) {\r\n state.departments = departments\r\n },\r\n [types.DEPARTMENT_SET_ALL](state, departments) {\r\n state.departmentsAll = departments\r\n },\r\n [types.DEPARTMENT_SET](state, department) {\r\n state.department = department\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n divisions: []\r\n}\r\n\r\nexport const getters = {\r\n getDivisions: (state) => state.divisions\r\n}\r\n\r\nexport const actions = {\r\n fetchDivisions: ({ commit }, department) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Divisions?departmentId=${department}`\r\n\r\n return api.get(url).then((response) => {\r\n const divisions = response.data.data.divisionDTO.values\r\n commit(types.DIVISION_SET_ALL, divisions)\r\n return divisions\r\n })\r\n },\r\n saveDivision: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Divisions`\r\n return api.post(url, model).then((response) => {\r\n const division = response.data.data.divisionDTO.values[0]\r\n return division\r\n })\r\n },\r\n updateDivision: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Divisions`\r\n return api.put(url, model).then((response) => {\r\n const division = response.data.data.divisionDTO.values[0]\r\n return division\r\n })\r\n },\r\n deleteDivision: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Divisions?divisionId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.DIVISION_SET_ALL](state, divisions) {\r\n state.divisions = divisions\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi, uploadApiMultipart } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n documents: [],\r\n documentToEdit: null,\r\n pendingDocuments: [],\r\n expiredDocuments: [],\r\n emailDocuments: []\r\n}\r\n\r\nexport const getters = {\r\n getDocuments: (state) => state.documents,\r\n getDocumentToEdit: (state) => state.documentToEdit,\r\n getExpiredDocuments: (state) => state.expiredDocuments,\r\n getPendingDocuments: (state) => state.pendingDocuments,\r\n getEmailDocuments: (state) => state.emailDocuments\r\n}\r\n\r\nexport const actions = {\r\n fetchDocumentsByTender: ({ commit }, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/SearchByTender?tenderId=${id}`\r\n\r\n return api.get(url).then((response) => {\r\n const documents = response.data.data.searchResult.values\r\n commit(types.DOCUMENT_SET_ALL, documents)\r\n return documents\r\n })\r\n },\r\n\r\n fetchExpiredDocumentsByNode: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/Contract/Expired`\r\n\r\n return api.get(url).then((response) => {\r\n let documents = []\r\n if (response.data.data.searchResult) documents = response.data.data.searchResult.values\r\n commit(types.EXPIRED_DOCS_ALL, documents)\r\n return documents\r\n })\r\n },\r\n\r\n fetchPendingDocumentsByNode: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/Contract/Pending`\r\n\r\n return api.get(url).then((response) => {\r\n let documents = []\r\n if (response.data.data.searchResult) documents = response.data.data.searchResult.values\r\n commit(types.PENDING_DOCS_ALL, documents)\r\n return documents\r\n })\r\n },\r\n\r\n uploadDocument: (_, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents`\r\n const { formData } = payload\r\n\r\n return uploadApiMultipart.post(url, formData).then((response) => {\r\n const document = response.data.data.documentDTO.values[0]\r\n return document\r\n })\r\n },\r\n downloadDocument: (_, documentToDownload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/Download?documentId=${documentToDownload.documentId}`\r\n\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n },\r\n saveDocument: (_, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents`\r\n const { formData } = payload\r\n\r\n return uploadApiMultipart.put(url, formData).then((response) => {\r\n const document = response.data.data.documentDTO.values[0]\r\n return document\r\n })\r\n },\r\n deleteDocument: (_, documentId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents?documentId=${documentId}`\r\n return api.delete(url)\r\n },\r\n deleteBidDocument: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/BidDocument?tenderId=${tenderId}`\r\n return api.delete(url)\r\n },\r\n deleteSubmissionNoteDocument: (_, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/SubmissionNoteDocument?tenderId=${tenderId}`\r\n return api.delete(url)\r\n },\r\n sortOrderDocument: (_, documentList) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Documents/SortOrder/'\r\n\r\n return api.put(url, documentList).then((response) => {\r\n if (response.data.count !== 0) {\r\n const documents = response.data.data.documentDTO.values\r\n return documents\r\n }\r\n })\r\n },\r\n fetchEmailDocuments: ({ commit }, emailId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Documents/EmailDocuments?emailId=${emailId}`\r\n\r\n return api.get(url).then((response) => {\r\n let documents = []\r\n if (response.data.data.documentDTO) documents = response.data.data.documentDTO.values\r\n commit(types.EMAIL_DOCS_ALL, documents)\r\n return documents\r\n })\r\n },\r\n\r\n updateDocument: ({ commit }, document) => {\r\n commit(types.DOCUMENT_EDIT, document)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.DOCUMENT_SET_ALL](state, documents) {\r\n state.documents = documents\r\n },\r\n [types.DOCUMENT_EDIT]: (state, document) => {\r\n state.documentToEdit = document\r\n },\r\n [types.EXPIRED_DOCS_ALL](state, documents) {\r\n state.expiredDocuments = documents\r\n },\r\n [types.PENDING_DOCS_ALL](state, documents) {\r\n state.pendingDocuments = documents\r\n },\r\n [types.EMAIL_DOCS_ALL](state, documents) {\r\n state.emailDocuments = documents\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n documentTemplates: []\r\n}\r\nexport const getters = {\r\n getDocumentTemplates: (state) => state.documentTemplates\r\n}\r\nexport const actions = {\r\n fetchDocumentTemplate: ({ commit }, group) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res?.data?.data?.onlineSubmissionTemplateDTO?.values || []\r\n commit(types.DOCUMENT_TEMPLATES_SET_ALL, templates)\r\n return res\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.DOCUMENT_TEMPLATES_SET_ALL]: (state, templates) => {\r\n state.documentTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","export function isDev() {\r\n return import.meta.env.MODE === 'development' || import.meta.env.MODE === 'test'\r\n}\r\n\r\nexport function isDevQA(context = window) {\r\n return isDev() || context.location?.hostname.includes('next.qa.bidsandtenders.ca')\r\n}\r\n\r\nexport function isProd() {\r\n return import.meta.env.MODE !== 'production'\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '@/store/mutation-types'\r\nimport { isDevQA } from '@/utils/environments'\r\n\r\n/**\r\n * module {\r\n * id: number,\r\n * name: string,\r\n * description: string,\r\n * enabled: boolean\r\n * }\r\n *\r\n * feature {\r\n * id: number,\r\n * name: string,\r\n * description: string,\r\n * enabled: boolean,\r\n * modules: {}\r\n * }\r\n */\r\n\r\nexport const FEATURE_CODES = {\r\n FEATURE_NOT_SPECIFIED: 'no feature specified',\r\n FEATURE_NOT_FOUND: 'feature not found',\r\n MODULE_NOT_SPECIFIED: 'no module specified',\r\n MODULE_NOT_FOUND: 'module not found',\r\n FEATURE_HAS_NO_MODULES: 'feature has no modules',\r\n FEATURE_ENABLED: 'feature is enabled',\r\n FEATURE_DISABLED: 'feature is disabled',\r\n MODULE_ENABLED: 'module is enabled',\r\n MODULE_DISABLED: 'module is disabled'\r\n}\r\n\r\nlet buildFeatures = {}\r\n\r\n// Parse the features from the environment variable\r\nif (import.meta.env.VITE_FEATURES) {\r\n try {\r\n buildFeatures = JSON.parse(import.meta.env.VITE_FEATURES)\r\n } catch (error) {\r\n console.error('Error parsing VUE_APP_FEATURES:', error)\r\n }\r\n}\r\n\r\nconst defaultFeatures = {\r\n DEBUG_VIEW: {\r\n id: 'DEBUG_VIEW',\r\n name: 'Debug View',\r\n description: 'Debug View',\r\n enabled: true\r\n },\r\n api2Project: {\r\n id: 'api2Project',\r\n name: 'ProjectAPI2',\r\n description: 'Project API version 2',\r\n enabled: false,\r\n modules: {\r\n projectSearch: {\r\n id: 'projectsSearch',\r\n name: 'Search for projects',\r\n description: '[POST] method Project/Search on customer API v2',\r\n enabled: true\r\n }\r\n }\r\n },\r\n api2Customer: {\r\n id: 'api2Customer',\r\n name: 'CustomerAPI2',\r\n description: 'Customer API version 2',\r\n enabled: false,\r\n modules: {\r\n getUsers: {\r\n id: 'getUsers',\r\n name: 'Get Users',\r\n description: '[GET] method Users on customer API v2',\r\n enabled: true\r\n },\r\n getUserGroups: {\r\n id: 'getUserGroups',\r\n name: 'Get User Groups',\r\n description: '[GET] method User Groups on customer API v2',\r\n enabled: true\r\n }\r\n }\r\n },\r\n azureBlobStorage: {\r\n id: 'azureBlobStorage',\r\n name: 'Azure Blob Storage',\r\n description: 'Azure Blob Storage',\r\n enabled: true,\r\n modules: {\r\n uploadFiles: {\r\n id: 'uploadFiles',\r\n name: 'Upload Files',\r\n description: 'Upload files to Azure Blob Storage',\r\n enabled: true\r\n },\r\n viewFiles: {\r\n id: 'viewFiles',\r\n name: 'View Files',\r\n description: 'View files from Azure Blob Storage',\r\n enabled: true\r\n },\r\n deleteFiles: {\r\n id: 'deleteFiles',\r\n name: 'Delete Files',\r\n description: 'Delete files from Azure Blob Storage',\r\n enabled: true\r\n },\r\n updateFiles: {\r\n id: 'updateFiles',\r\n name: 'Update Files',\r\n description: 'Update files from Azure Blob Storage',\r\n enabled: true\r\n }\r\n }\r\n },\r\n resetPassword: {\r\n id: 'resetPassword',\r\n name: 'Reset Password',\r\n description: 'Enables the reset-password view and route in Pro',\r\n enabled: true\r\n },\r\n BuyerDashboard: {\r\n id: 'BuyerDashboard',\r\n name: 'Buyer Dashboard',\r\n description: 'Buyer Dashboard and its widgets. (Not hooked up to the view)',\r\n enabled: true,\r\n modules: {\r\n MyTasks: {\r\n id: 'MyTasks',\r\n name: 'My Tasks Widget',\r\n description: '\"My Tasks\" widget on the buyer dashboard',\r\n enabled: true\r\n }\r\n }\r\n },\r\n BuildPublish: {\r\n id: 'BuildPublish',\r\n name: 'Build Prepare Publish View',\r\n description: 'Project View, Build Phase, Prepare Publish view. (Not hooked up to the view)',\r\n enabled: true,\r\n modules: {\r\n UploadFrontEndDocument: {\r\n id: 'UploadFrontEndDocument',\r\n name: 'Upload Front End Document',\r\n description: 'Upload button on the upload Front End Document input',\r\n enabled: true\r\n }\r\n }\r\n },\r\n ReportsLibrary: {\r\n id: 'ReportsLibrary',\r\n name: 'Reports Library',\r\n description: 'Reports Library view and reports. (Not hooked up to the view)',\r\n enabled: true,\r\n modules: {\r\n ActiveContractsReport: {\r\n id: 'ActiveContractsReport',\r\n name: 'Active Contracts Report',\r\n description: 'Active Contracts Report',\r\n enabled: true\r\n }\r\n }\r\n },\r\n SupplierEvaluationsTable: {\r\n id: 'SupplierEvaluationsTable',\r\n name: 'SupplierEvaluationsTable',\r\n description: 'Supplier Evaluations Table. (Not hooked up to the table)',\r\n enabled: true,\r\n modules: {\r\n ManageColumn: {\r\n id: 'ManageColumn',\r\n name: 'ManageColumn',\r\n description: 'ManageColumn',\r\n enabled: false\r\n }\r\n }\r\n },\r\n AppealEvaluationModal: {\r\n id: 'AppealEvaluationModal',\r\n name: 'AppealEvaluationModal',\r\n description: 'Appeal Evaluation Modal.',\r\n enabled: true,\r\n modules: {\r\n EditAppealButton: {\r\n id: 'EditAppealButton',\r\n name: 'EditAppealButton',\r\n description: 'EditAppealButton',\r\n enabled: false\r\n }\r\n }\r\n },\r\n RfxEssential: {\r\n id: 'RfxEssential',\r\n name: 'RfxEssential',\r\n description: 'New RFX Essentials Module',\r\n enabled: true,\r\n modules: {\r\n EvaluationSettings: {\r\n id: 'EvaluationSettings',\r\n name: 'EvaluationSettings',\r\n description: 'EvaluationSettings in control panel',\r\n enabled: false\r\n }\r\n }\r\n },\r\n ...buildFeatures\r\n}\r\n\r\nexport const state = {\r\n features: defaultFeatures\r\n}\r\n\r\nexport const getters = {\r\n getFeatures: (state) => state.features,\r\n getFeature: (state) => (featureId) => state.features[featureId],\r\n getFeatureModules: (state) => (featureId) => state.features[featureId].modules || {},\r\n getFeatureEnabled: (state) => (featureId) => {\r\n if (!featureId) return { enabled: false, message: FEATURE_CODES.FEATURE_NOT_SPECIFIED }\r\n if (!state.features[featureId])\r\n return { enabled: false, message: FEATURE_CODES.FEATURE_NOT_FOUND }\r\n const enabled = state.features[featureId].enabled\r\n const message = enabled ? FEATURE_CODES.FEATURE_ENABLED : FEATURE_CODES.FEATURE_DISABLED\r\n return { enabled, message }\r\n },\r\n getModuleEnabled: (state) => (featureId, moduleId) => {\r\n // eslint-disable-next-line prefer-const\r\n let [feature, module] = featureId.split('.')\r\n\r\n if (moduleId) module = moduleId\r\n if (!module) return { enabled: false, message: FEATURE_CODES.MODULE_NOT_SPECIFIED }\r\n if (!feature) return { enabled: false, message: FEATURE_CODES.FEATURE_NOT_SPECIFIED }\r\n if (!state.features[feature])\r\n return { enabled: false, message: FEATURE_CODES.FEATURE_NOT_FOUND }\r\n if (!state.features[feature].enabled)\r\n return { enabled: false, message: FEATURE_CODES.FEATURE_DISABLED }\r\n if (!state.features[feature].modules)\r\n return { enabled: false, message: FEATURE_CODES.FEATURE_HAS_NO_MODULES }\r\n if (!state.features[feature].modules[module])\r\n return { enabled: false, message: FEATURE_CODES.MODULE_NOT_FOUND }\r\n const enabled = state.features[feature].modules[module].enabled\r\n const message = enabled ? FEATURE_CODES.MODULE_ENABLED : FEATURE_CODES.MODULE_DISABLED\r\n return { enabled, message }\r\n }\r\n}\r\n\r\nexport const actions = {\r\n async fetchFeatures({ commit }) {\r\n // get the features list\r\n // const response = await api.get('/features')\r\n // const features = await response.json()\r\n await new Promise((resolve) => setTimeout(resolve, 500))\r\n const features = {}\r\n commit(types.FEATURES_SET, { ...defaultFeatures, ...features })\r\n },\r\n DANGEROUSLY_SET_FEATURES({ commit, state }, newFeatures) {\r\n // Honestly, don't do this.\r\n if (!isDevQA()) {\r\n return\r\n }\r\n\r\n const features = { ...state.features, ...newFeatures }\r\n\r\n commit(types.FEATURES_SET, features)\r\n },\r\n async DANGEROUSLY_UPDATE_FEATURE_ENABLED({ dispatch }, { featureId, enabled }) {\r\n // Be careful.\r\n try {\r\n await api.post('/features/update', { featureId, enabled })\r\n await dispatch('fetchFeatures')\r\n } catch (error) {\r\n return new Error('Error updating feature enabled status', error)\r\n }\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.FEATURES_SET](state, features) {\r\n state.features = features\r\n }\r\n}\r\n\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n instructionTemplates: []\r\n}\r\nexport const getters = {\r\n getInstructionTemplates: (state) => state.instructionTemplates\r\n}\r\nexport const actions = {\r\n fetchInstructionTemplates: ({ commit }, group) => {\r\n if (!group) {\r\n commit(types.INSTRUCTION_TEMPLATES_SET_ALL, [])\r\n return\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n commit(types.INSTRUCTION_TEMPLATES_SET_ALL, templates)\r\n return res\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.INSTRUCTION_TEMPLATES_SET_ALL]: (state, templates) => {\r\n state.instructionTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n irrevocablePeriods: [],\r\n irrevocablePeriod: null\r\n}\r\n\r\nexport const getters = {\r\n getIrrevocablePeriods: (state) => state.irrevocablePeriods,\r\n getIrrevocablePeriod: (state) => state.irrevocablePeriod\r\n}\r\n\r\nexport const actions = {\r\n fetchIrrevocablePeriodsAll: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/IrrevocablePeriods/All`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const irrevocablePeriods = response.data.data.irrevocablePeriodDTO.values\r\n commit(types.IRREVOCABLE_PERIOD_SET_ALL, irrevocablePeriods)\r\n return irrevocablePeriods\r\n }\r\n })\r\n },\r\n saveIrrevocablePeriod: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/IrrevocablePeriods`\r\n return api.post(url, model).then((response) => {\r\n const irrevocablePeriod = response.data.data.irrevocablePeriodDTO.values[0]\r\n commit(types.IRREVOCABLE_PERIOD_SET, irrevocablePeriod)\r\n return irrevocablePeriod\r\n })\r\n },\r\n updateIrrevocablePeriod: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/IrrevocablePeriods`\r\n return api.put(url, model).then((response) => {\r\n const irrevocablePeriod = response.data.data.irrevocablePeriodDTO.values[0]\r\n commit(types.IRREVOCABLE_PERIOD_SET, irrevocablePeriod)\r\n\r\n return irrevocablePeriod\r\n })\r\n },\r\n deleteIrrevocablePeriod: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/IrrevocablePeriods?irrevocablePeriodId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.IRREVOCABLE_PERIOD_SET_ALL](state, irrevocablePeriods) {\r\n state.irrevocablePeriods = irrevocablePeriods\r\n },\r\n [types.IRREVOCABLE_PERIOD_SET](state, irrevocablePeriod) {\r\n state.irrevocablePeriod = irrevocablePeriod\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n leadAgencyName: [],\r\n leadAgencyNameNew: null\r\n}\r\n\r\nexport const getters = {\r\n getLeadAgencyName: (state) => state.leadAgencyName,\r\n getLeadAgencyNameNew: (state) => state.leadAgencyNameNew\r\n}\r\n\r\nexport const actions = {\r\n fetchLeadAgencyName: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/LeadAgencyName`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const leadAgencyName = response.data.data.leadAgencyNameDTO.values\r\n commit(types.LEAD_AGENCY_NAME_SET_ALL, leadAgencyName)\r\n return leadAgencyName\r\n }\r\n })\r\n },\r\n saveLeadAgencyName: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/LeadAgencyName`\r\n return api.post(url, model).then((response) => {\r\n const leadAgencyName = response.data.data.leadAgencyNameDTO.values[0]\r\n commit(types.LEAD_AGENCY_NAME_SET, leadAgencyName)\r\n return leadAgencyName\r\n })\r\n },\r\n updateLeadAgencyName: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/LeadAgencyName`\r\n return api.put(url, model).then((response) => {\r\n const leadAgencyName = response.data.data.leadAgencyNameDTO.values[0]\r\n commit(types.LEAD_AGENCY_NAME_SET, leadAgencyName)\r\n return leadAgencyName\r\n })\r\n },\r\n deleteLeadAgencyName: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/LeadAgencyName?leadAgencyNameId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.LEAD_AGENCY_NAME_SET_ALL](state, leadAgencyName) {\r\n state.leadAgencyName = leadAgencyName\r\n },\r\n [types.LEAD_AGENCY_NAME_SET](state, leadAgencyName) {\r\n state.leadAgencyNameNew = leadAgencyName\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n procurementTypes: [],\r\n procurementType: null\r\n}\r\n\r\nexport const getters = {\r\n getProcurementTypes: (state) => state.procurementTypes,\r\n getProcurementType: (state) => state.procurementType\r\n}\r\n\r\nexport const actions = {\r\n fetchProcurementTypes: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderType`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const procurementTypes = response.data.data.tenderTypeDTO.values\r\n commit(types.PROCUREMENT_TYPE_SET_ALL, procurementTypes)\r\n return procurementTypes\r\n }\r\n })\r\n },\r\n saveProcurementType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderType`\r\n return api.post(url, model).then((response) => {\r\n const procurementType = response.data.data.tenderTypeDTO.values[0]\r\n commit(types.PROCUREMENT_TYPE_SET, procurementType)\r\n return procurementType\r\n })\r\n },\r\n updateProcurementType: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderType`\r\n return api.put(url, model).then((response) => {\r\n const procurementType = response.data.data.tenderTypeDTO.values[0]\r\n commit(types.PROCUREMENT_TYPE_SET, procurementType)\r\n return procurementType\r\n })\r\n },\r\n deleteProcurementType: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderType?tenderTypeId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.PROCUREMENT_TYPE_SET_ALL](state, procurementTypes) {\r\n state.procurementTypes = procurementTypes\r\n },\r\n [types.PROCUREMENT_TYPE_SET](state, procurementType) {\r\n state.procurementType = procurementType\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","export const projectPhases = [\r\n {\r\n name: 'PROJECT_PHASE_INTAKE',\r\n value: 'Intake',\r\n id: 'F79C2411-00C8-4FAB-B401-6C2F3F4F9EA0'\r\n },\r\n {\r\n name: 'PROJECT_PHASE_PLAN',\r\n value: 'Build',\r\n id: '6F0EEB95-37FD-495A-8C75-79F2DE9DE19B'\r\n },\r\n {\r\n name: 'PROJECT_PHASE_SOURCE',\r\n value: 'Source',\r\n id: 'F94842B4-FC99-4F39-93D9-78F9234039C9'\r\n },\r\n {\r\n name: 'PROJECT_PHASE_AWARD',\r\n value: 'Award',\r\n id: 'B0CC0F75-3662-49C9-98E7-6849FD654621'\r\n },\r\n {\r\n name: 'PROJECT_PHASE_CONTRACT',\r\n value: 'Contract',\r\n id: '8B91192E-3881-40AC-9413-E75972F72598'\r\n }\r\n]\r\nexport const sourceStatuses = [\r\n {\r\n name: 'Archived',\r\n value: 'archived'\r\n },\r\n {\r\n name: 'Awarded',\r\n value: 'Awarded'\r\n },\r\n {\r\n name: 'Cancelled',\r\n value: 'cancelled'\r\n },\r\n {\r\n name: 'Closed',\r\n value: 'closed'\r\n },\r\n {\r\n name: 'Design Mode',\r\n value: 'design'\r\n },\r\n {\r\n name: 'Open',\r\n value: 'open'\r\n },\r\n {\r\n name: 'Planned',\r\n value: 'planned'\r\n },\r\n {\r\n name: 'Request for Approval',\r\n value: 'Request for Approval'\r\n },\r\n {\r\n name: 'Scheduled to Publish',\r\n value: 'Scheduled to Publish'\r\n },\r\n {\r\n name: 'Template',\r\n value: 'template'\r\n },\r\n {\r\n name: 'Terminated',\r\n value: 'terminated'\r\n },\r\n {\r\n name: 'Unofficial Results',\r\n value: 'Unofficial'\r\n },\r\n {\r\n name: 'Upcoming',\r\n value: 'upcoming'\r\n }\r\n]\r\nexport const sourceDateTypes = [\r\n {\r\n name: 'Published',\r\n value: 'published'\r\n },\r\n {\r\n name: 'Awarded',\r\n value: 'awarded'\r\n }\r\n]\r\nexport const procurementMethods = [\r\n {\r\n name: 'Public',\r\n value: 'public'\r\n },\r\n {\r\n name: 'Pre-Qualified',\r\n value: 'prequalification'\r\n },\r\n {\r\n name: 'Invitational',\r\n value: 'private'\r\n },\r\n {\r\n name: 'Limited',\r\n value: 'limited'\r\n }\r\n]\r\nexport const procurementClassifications = [\r\n {\r\n name: 'Goods',\r\n value: 'goods'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'services'\r\n },\r\n {\r\n name: 'Construction',\r\n value: 'construction'\r\n },\r\n {\r\n name: 'Services Related to Goods',\r\n value: 'servicesRelatedToGoods'\r\n }\r\n]\r\nexport const contractStatuses = [\r\n {\r\n name: 'Active',\r\n value: 'Active'\r\n },\r\n {\r\n name: 'Cancelled',\r\n value: 'Cancelled'\r\n },\r\n {\r\n name: 'Closed',\r\n value: 'Closed'\r\n },\r\n {\r\n name: 'Closed-Archived',\r\n value: 'Closed-Archived'\r\n },\r\n {\r\n name: 'Design Mode',\r\n value: 'Design'\r\n },\r\n {\r\n name: 'Expired',\r\n value: 'Expired'\r\n },\r\n {\r\n name: 'Warranty',\r\n value: 'Warranty'\r\n }\r\n]\r\nexport const contractDateTypes = [\r\n {\r\n name: 'Open',\r\n value: 'open'\r\n },\r\n {\r\n name: 'Firm',\r\n value: 'firm'\r\n },\r\n {\r\n name: 'Warranty',\r\n value: 'warranty'\r\n }\r\n]\r\nexport const commodityCategories = [\r\n {\r\n name: 'Advertising',\r\n value: 'Advertising',\r\n children: []\r\n },\r\n {\r\n name: 'Aggregates',\r\n value: 'Aggregates',\r\n children: [\r\n {\r\n name: 'Asphalt',\r\n value: 'Asphalt'\r\n },\r\n {\r\n name: 'Concrete',\r\n value: 'Concrete'\r\n },\r\n {\r\n name: 'Granular Materials',\r\n value: 'Granular Materials'\r\n },\r\n {\r\n name: 'Sand',\r\n value: 'Sand'\r\n },\r\n {\r\n name: 'Winter Salt',\r\n value: 'Winter Salt'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Animal & Wildlife',\r\n value: 'Animal & Wildlife',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Arts and Crafts',\r\n value: 'Arts and Crafts',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Assistive Devices',\r\n value: 'Assistive Devices',\r\n children: []\r\n },\r\n {\r\n name: 'Audio/Visual/Photography/Theatre',\r\n value: 'Audio/Visual/Photography/Theatre',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies and Equipment',\r\n value: 'Supplies and Equipment'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Automotive',\r\n value: 'Automotive',\r\n children: [\r\n {\r\n name: 'Emergency Vehicles',\r\n value: 'Emergency Vehicles'\r\n },\r\n {\r\n name: 'Excavators',\r\n value: 'Excavators'\r\n },\r\n {\r\n name: 'Fire Trucks',\r\n value: 'Fire Trucks'\r\n },\r\n {\r\n name: 'Graders',\r\n value: 'Graders'\r\n },\r\n {\r\n name: 'Heavy Trucks ',\r\n value: 'Heavy Trucks '\r\n },\r\n {\r\n name: 'Lawn and Farm Equipment',\r\n value: 'Lawn and Farm Equipment'\r\n },\r\n {\r\n name: 'Light Vehicles ',\r\n value: 'Light Vehicles '\r\n },\r\n {\r\n name: 'Loaders',\r\n value: 'Loaders'\r\n },\r\n {\r\n name: 'Lubricants',\r\n value: 'Lubricants'\r\n },\r\n {\r\n name: 'Off Road Equipment',\r\n value: 'Off Road Equipment'\r\n },\r\n {\r\n name: 'Rental/Leasing Services',\r\n value: 'Rental/Leasing Services'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies & Equipment',\r\n value: 'Supplies & Equipment'\r\n },\r\n {\r\n name: 'Tractor Implements',\r\n value: 'Tractor Implements'\r\n },\r\n {\r\n name: 'Trailers',\r\n value: 'Trailers'\r\n },\r\n {\r\n name: 'Watercraft',\r\n value: 'Watercraft'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Building Operation Supplies and Equipment - ONLY',\r\n value: 'Building Operation Supplies and Equipment - ONLY',\r\n children: [\r\n {\r\n name: 'Air Filters',\r\n value: 'Air Filters'\r\n },\r\n {\r\n name: 'Appliances',\r\n value: 'Appliances'\r\n },\r\n {\r\n name: 'Building Materials',\r\n value: 'Building Materials'\r\n },\r\n {\r\n name: 'Cabinets',\r\n value: 'Cabinets'\r\n },\r\n {\r\n name: 'Doors/Windows/Locks',\r\n value: 'Doors/Windows/Locks'\r\n },\r\n {\r\n name: 'Electrical',\r\n value: 'Electrical'\r\n },\r\n {\r\n name: 'Fabricated',\r\n value: 'Fabricated'\r\n },\r\n {\r\n name: 'Flooring',\r\n value: 'Flooring'\r\n },\r\n {\r\n name: 'Hardware',\r\n value: 'Hardware'\r\n },\r\n {\r\n name: 'Janitorial',\r\n value: 'Janitorial'\r\n },\r\n {\r\n name: 'Lighting',\r\n value: 'Lighting'\r\n },\r\n {\r\n name: 'Paint',\r\n value: 'Paint'\r\n },\r\n {\r\n name: 'Plumbing',\r\n value: 'Plumbing'\r\n },\r\n {\r\n name: 'Window Coverings',\r\n value: 'Window Coverings'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Building Services',\r\n value: 'Building Services',\r\n children: [\r\n {\r\n name: 'Building Automation',\r\n value: 'Building Automation'\r\n },\r\n {\r\n name: 'Cleaning',\r\n value: 'Cleaning'\r\n },\r\n {\r\n name: 'Elevator',\r\n value: 'Elevator'\r\n },\r\n {\r\n name: 'Fencing',\r\n value: 'Fencing'\r\n },\r\n {\r\n name: 'Generator Equipment',\r\n value: 'Generator Equipment'\r\n },\r\n {\r\n name: 'Graffiti Removal',\r\n value: 'Graffiti Removal'\r\n },\r\n {\r\n name: 'Janitorial',\r\n value: 'Janitorial'\r\n },\r\n {\r\n name: 'Locksmith',\r\n value: 'Locksmith'\r\n },\r\n {\r\n name: 'Mat & Linen',\r\n value: 'Mat & Linen'\r\n },\r\n {\r\n name: 'Movers & Storage',\r\n value: 'Movers & Storage'\r\n },\r\n {\r\n name: 'Overhead Door',\r\n value: 'Overhead Door'\r\n },\r\n {\r\n name: 'Parking Lighting Maintenance',\r\n value: 'Parking Lighting Maintenance'\r\n },\r\n {\r\n name: 'Pest Control',\r\n value: 'Pest Control'\r\n },\r\n {\r\n name: 'Security & Monitoring',\r\n value: 'Security & Monitoring'\r\n },\r\n {\r\n name: 'Sprinkler System',\r\n value: 'Sprinkler System'\r\n },\r\n {\r\n name: 'Window Cleaning',\r\n value: 'Window Cleaning'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Business Services',\r\n value: 'Business Services',\r\n children: [\r\n {\r\n name: 'Answering Services',\r\n value: 'Answering Services'\r\n },\r\n {\r\n name: 'Armored Car',\r\n value: 'Armored Car'\r\n },\r\n {\r\n name: 'Courier Services, Overnight & Delivery',\r\n value: 'Courier Services, Overnight & Delivery'\r\n },\r\n {\r\n name: 'Document Destruction',\r\n value: 'Document Destruction'\r\n },\r\n {\r\n name: 'Election Service & Supplies',\r\n value: 'Election Service & Supplies'\r\n },\r\n {\r\n name: 'Records Management',\r\n value: 'Records Management'\r\n },\r\n {\r\n name: 'Scanning Services, Document Conversion services',\r\n value: 'Scanning Services, Document Conversion services'\r\n },\r\n {\r\n name: 'Transcription Services',\r\n value: 'Transcription Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Cemetery Supplies & Services',\r\n value: 'Cemetery Supplies & Services',\r\n children: []\r\n },\r\n {\r\n name: 'Clothing and Uniform',\r\n value: 'Clothing and Uniform',\r\n children: [\r\n {\r\n name: 'Dry Cleaning/ Laundry',\r\n value: 'Dry Cleaning/ Laundry'\r\n },\r\n {\r\n name: 'EMS Uniforms',\r\n value: 'EMS Uniforms'\r\n },\r\n {\r\n name: 'Fire Uniforms/ Bunker Gear',\r\n value: 'Fire Uniforms/ Bunker Gear'\r\n },\r\n {\r\n name: 'Footwear',\r\n value: 'Footwear'\r\n },\r\n {\r\n name: 'Safety Clothing',\r\n value: 'Safety Clothing'\r\n },\r\n {\r\n name: 'School Uniforms',\r\n value: 'School Uniforms'\r\n },\r\n {\r\n name: 'Transit Uniforms',\r\n value: 'Transit Uniforms'\r\n },\r\n {\r\n name: 'Uniform Rental',\r\n value: 'Uniform Rental'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Community & Health Services Programs',\r\n value: 'Community & Health Services Programs',\r\n children: [\r\n {\r\n name: 'Community Funding',\r\n value: 'Community Funding'\r\n },\r\n {\r\n name: 'Institutional Supplies/Services LTC',\r\n value: 'Institutional Supplies/Services LTC'\r\n },\r\n {\r\n name: 'Medical Supplies/Support Services',\r\n value: 'Medical Supplies/Support Services'\r\n },\r\n {\r\n name: 'Medical/Dental Services',\r\n value: 'Medical/Dental Services'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Construction ',\r\n value: 'Construction ',\r\n children: [\r\n {\r\n name: 'Affordable Housing',\r\n value: 'Affordable Housing'\r\n },\r\n {\r\n name: 'Building & Renovation',\r\n value: 'Building & Renovation'\r\n },\r\n {\r\n name: 'Demolition',\r\n value: 'Demolition'\r\n },\r\n {\r\n name: 'Drainage',\r\n value: 'Drainage'\r\n },\r\n {\r\n name: 'Heavy Duty Equipment',\r\n value: 'Heavy Duty Equipment'\r\n },\r\n {\r\n name: 'Infrastructure',\r\n value: 'Infrastructure'\r\n },\r\n {\r\n name: 'Infrastructure (Traffic Signalization)',\r\n value: 'Infrastructure (Traffic Signalization)'\r\n },\r\n {\r\n name: 'Infrastructure (Wastewater)',\r\n value: 'Infrastructure (Wastewater)'\r\n },\r\n {\r\n name: 'Municipal Drains',\r\n value: 'Municipal Drains'\r\n },\r\n {\r\n name: 'Parks, Trails & Landscape',\r\n value: 'Parks, Trails & Landscape'\r\n },\r\n {\r\n name: 'Remediation Services',\r\n value: 'Remediation Services'\r\n },\r\n {\r\n name: 'Restoration Services ',\r\n value: 'Restoration Services '\r\n },\r\n {\r\n name: 'Roads, Bridge, Sidewalks',\r\n value: 'Roads, Bridge, Sidewalks'\r\n },\r\n {\r\n name: 'Supplies (barricades, pylons, speed signs, etc.)',\r\n value: 'Supplies (barricades, pylons, speed signs, etc.)'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Consulting Services - Professional Services',\r\n value: 'Consulting Services - Professional Services',\r\n children: [\r\n {\r\n name: 'Actuary',\r\n value: 'Actuary'\r\n },\r\n {\r\n name: 'Administrative',\r\n value: 'Administrative'\r\n },\r\n {\r\n name: 'Advertising',\r\n value: 'Advertising'\r\n },\r\n {\r\n name: 'Architectural',\r\n value: 'Architectural'\r\n },\r\n {\r\n name: 'Asbestos removal',\r\n value: 'Asbestos removal'\r\n },\r\n {\r\n name: 'Auction',\r\n value: 'Auction'\r\n },\r\n {\r\n name: 'Auditing',\r\n value: 'Auditing'\r\n },\r\n {\r\n name: 'Disaster & Emergency Management',\r\n value: 'Disaster & Emergency Management'\r\n },\r\n {\r\n name: 'Document Accessibility',\r\n value: 'Document Accessibility'\r\n },\r\n {\r\n name: 'Economic Development',\r\n value: 'Economic Development'\r\n },\r\n {\r\n name: 'Energy',\r\n value: 'Energy'\r\n },\r\n {\r\n name: 'Engineering',\r\n value: 'Engineering'\r\n },\r\n {\r\n name: 'Environmental',\r\n value: 'Environmental'\r\n },\r\n {\r\n name: 'Geotechnical',\r\n value: 'Geotechnical'\r\n },\r\n {\r\n name: 'Hazardous Materials',\r\n value: 'Hazardous Materials'\r\n },\r\n {\r\n name: 'Human Resources',\r\n value: 'Human Resources'\r\n },\r\n {\r\n name: 'Information Technology',\r\n value: 'Information Technology'\r\n },\r\n {\r\n name: 'Insurance',\r\n value: 'Insurance'\r\n },\r\n {\r\n name: 'Landscape Architecture',\r\n value: 'Landscape Architecture'\r\n },\r\n {\r\n name: 'Legal',\r\n value: 'Legal'\r\n },\r\n {\r\n name: 'Management',\r\n value: 'Management'\r\n },\r\n {\r\n name: 'Occupational Hygiene/Industrial Hygiene',\r\n value: 'Occupational Hygiene/Industrial Hygiene'\r\n },\r\n {\r\n name: 'Other',\r\n value: 'Other'\r\n },\r\n {\r\n name: 'Planning',\r\n value: 'Planning'\r\n },\r\n {\r\n name: 'Public Relations',\r\n value: 'Public Relations'\r\n },\r\n {\r\n name: 'Recreation',\r\n value: 'Recreation'\r\n },\r\n {\r\n name: 'Roofing',\r\n value: 'Roofing'\r\n },\r\n {\r\n name: 'Surveying (OLS/Legal)',\r\n value: 'Surveying (OLS/Legal)'\r\n },\r\n {\r\n name: 'Training',\r\n value: 'Training'\r\n },\r\n {\r\n name: 'Translation',\r\n value: 'Translation'\r\n },\r\n {\r\n name: 'Travel',\r\n value: 'Travel'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Contracted Services',\r\n value: 'Contracted Services',\r\n children: []\r\n },\r\n {\r\n name: 'Cosmetology',\r\n value: 'Cosmetology',\r\n children: []\r\n },\r\n {\r\n name: 'Emergency Services',\r\n value: 'Emergency Services',\r\n children: []\r\n },\r\n {\r\n name: 'Environmental Goods & Services',\r\n value: 'Environmental Goods & Services',\r\n children: [\r\n {\r\n name: 'Green Power',\r\n value: 'Green Power'\r\n },\r\n {\r\n name: 'Landfill',\r\n value: 'Landfill'\r\n },\r\n {\r\n name: 'Pollution & Odour Control',\r\n value: 'Pollution & Odour Control'\r\n },\r\n {\r\n name: 'Portable Toilets & Septic Services',\r\n value: 'Portable Toilets & Septic Services'\r\n },\r\n {\r\n name: 'Recycling Containers (green, blue, rain barrel, composter, etc.)',\r\n value: 'Recycling Containers (green, blue, rain barrel, composter, etc.)'\r\n },\r\n {\r\n name: 'Sewage Pumping Station',\r\n value: 'Sewage Pumping Station'\r\n },\r\n {\r\n name: 'Soil testing, Boring, Drilling, Geotechnical, Soil Management',\r\n value: 'Soil testing, Boring, Drilling, Geotechnical, Soil Management'\r\n },\r\n {\r\n name: 'Waste Container',\r\n value: 'Waste Container'\r\n },\r\n {\r\n name: 'Waste Disposal / Recycling',\r\n value: 'Waste Disposal / Recycling'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Equipment - Other',\r\n value: 'Equipment - Other',\r\n children: []\r\n },\r\n {\r\n name: 'Event Planning or Recreation',\r\n value: 'Event Planning or Recreation',\r\n children: []\r\n },\r\n {\r\n name: 'Facilities, Redevelopment, Trades, Machinery, Construction, Architectural or Engineering',\r\n value:\r\n 'Facilities, Redevelopment, Trades, Machinery, Construction, Architectural or Engineering',\r\n children: []\r\n },\r\n {\r\n name: 'Financial Services',\r\n value: 'Financial Services',\r\n children: [\r\n {\r\n name: 'ABM/ATM Services (interac)',\r\n value: 'ABM/ATM Services (interac)'\r\n },\r\n {\r\n name: 'Accounting Services',\r\n value: 'Accounting Services'\r\n },\r\n {\r\n name: 'Banking',\r\n value: 'Banking'\r\n },\r\n {\r\n name: 'Billing',\r\n value: 'Billing'\r\n },\r\n {\r\n name: 'Collection Services',\r\n value: 'Collection Services'\r\n },\r\n {\r\n name: 'Mailing',\r\n value: 'Mailing'\r\n },\r\n {\r\n name: 'Payment Provider & Credit Card Processing',\r\n value: 'Payment Provider & Credit Card Processing'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Fire Services',\r\n value: 'Fire Services',\r\n children: [\r\n {\r\n name: 'Fire and Intrusion System',\r\n value: 'Fire and Intrusion System'\r\n },\r\n {\r\n name: 'Fire Protection Equipment (Nozzles, Fire extinguisher, props, etc.)',\r\n value: 'Fire Protection Equipment (Nozzles, Fire extinguisher, props, etc.)'\r\n },\r\n {\r\n name: 'Maintenance',\r\n value: 'Maintenance'\r\n },\r\n {\r\n name: 'Sprinkler System',\r\n value: 'Sprinkler System'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'First Aid',\r\n value: 'First Aid',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Flags',\r\n value: 'Flags',\r\n children: []\r\n },\r\n {\r\n name: 'Food',\r\n value: 'Food',\r\n children: [\r\n {\r\n name: 'Appliances',\r\n value: 'Appliances'\r\n },\r\n {\r\n name: 'Catering',\r\n value: 'Catering'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies and Equipment',\r\n value: 'Supplies and Equipment'\r\n },\r\n {\r\n name: 'Vending',\r\n value: 'Vending'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Fuel',\r\n value: 'Fuel',\r\n children: [\r\n {\r\n name: 'Fuel Pumps/ Fuel Management',\r\n value: 'Fuel Pumps/ Fuel Management'\r\n },\r\n {\r\n name: 'Fuel/ Propane/Diesel/Gas/ Lubricants',\r\n value: 'Fuel/ Propane/Diesel/Gas/ Lubricants'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Furniture',\r\n value: 'Furniture',\r\n children: [\r\n {\r\n name: 'Library Furniture',\r\n value: 'Library Furniture'\r\n },\r\n {\r\n name: 'Office Furniture',\r\n value: 'Office Furniture'\r\n },\r\n {\r\n name: 'Office Partitions/ Wall Systems',\r\n value: 'Office Partitions/ Wall Systems'\r\n },\r\n {\r\n name: 'Outdoor Furnishings',\r\n value: 'Outdoor Furnishings'\r\n },\r\n {\r\n name: 'Shelving & Storage',\r\n value: 'Shelving & Storage'\r\n },\r\n {\r\n name: 'Visual Display Services',\r\n value: 'Visual Display Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Health & Safety',\r\n value: 'Health & Safety',\r\n children: []\r\n },\r\n {\r\n name: 'Heavy Construction - Earth Handling Equipment (Industrial)',\r\n value: 'Heavy Construction - Earth Handling Equipment (Industrial)',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies and Equipment',\r\n value: 'Supplies and Equipment'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Human Resources ',\r\n value: 'Human Resources ',\r\n children: [\r\n {\r\n name: 'Education and Training',\r\n value: 'Education and Training'\r\n },\r\n {\r\n name: 'Recruitment Services',\r\n value: 'Recruitment Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Information Technology',\r\n value: 'Information Technology',\r\n children: [\r\n {\r\n name: 'Computer Hardware',\r\n value: 'Computer Hardware'\r\n },\r\n {\r\n name: 'Computer Software',\r\n value: 'Computer Software'\r\n },\r\n {\r\n name: 'GIS',\r\n value: 'GIS'\r\n },\r\n {\r\n name: 'GPS Products',\r\n value: 'GPS Products'\r\n },\r\n {\r\n name: 'Servers/Racks/Data Centre/Storage',\r\n value: 'Servers/Racks/Data Centre/Storage'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Landscaping & Forestry',\r\n value: 'Landscaping & Forestry',\r\n children: [\r\n {\r\n name: 'Arborist',\r\n value: 'Arborist'\r\n },\r\n {\r\n name: 'Arborist Consultation',\r\n value: 'Arborist Consultation'\r\n },\r\n {\r\n name: 'Artificial Turf',\r\n value: 'Artificial Turf'\r\n },\r\n {\r\n name: 'Bedding Plants',\r\n value: 'Bedding Plants'\r\n },\r\n {\r\n name: 'Fertilizer',\r\n value: 'Fertilizer'\r\n },\r\n {\r\n name: 'Field Restoration',\r\n value: 'Field Restoration'\r\n },\r\n {\r\n name: 'Grass Cutting',\r\n value: 'Grass Cutting'\r\n },\r\n {\r\n name: 'Horticultural Supplies',\r\n value: 'Horticultural Supplies'\r\n },\r\n {\r\n name: 'Interlocking Brick Maintenance',\r\n value: 'Interlocking Brick Maintenance'\r\n },\r\n {\r\n name: 'Landscape & Forestry Supplies',\r\n value: 'Landscape & Forestry Supplies'\r\n },\r\n {\r\n name: 'Mulch',\r\n value: 'Mulch'\r\n },\r\n {\r\n name: 'Property Maintenance',\r\n value: 'Property Maintenance'\r\n },\r\n {\r\n name: 'Seeding',\r\n value: 'Seeding'\r\n },\r\n {\r\n name: 'Small Landscape Equipment (ex. Blowers, push mowers, weed wackers, etc.)',\r\n value: 'Small Landscape Equipment (ex. Blowers, push mowers, weed wackers, etc.)'\r\n },\r\n {\r\n name: 'Snow Removal',\r\n value: 'Snow Removal'\r\n },\r\n {\r\n name: 'Sod',\r\n value: 'Sod'\r\n },\r\n {\r\n name: 'Supplies & Services',\r\n value: 'Supplies & Services'\r\n },\r\n {\r\n name: 'Top Soil',\r\n value: 'Top Soil'\r\n },\r\n {\r\n name: 'Tree Maintenance',\r\n value: 'Tree Maintenance'\r\n },\r\n {\r\n name: 'Tree planting',\r\n value: 'Tree planting'\r\n },\r\n {\r\n name: 'Turf Maintenance',\r\n value: 'Turf Maintenance'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Law, Enforcement & Security',\r\n value: 'Law, Enforcement & Security',\r\n children: [\r\n {\r\n name: 'Equipment/Supplies',\r\n value: 'Equipment/Supplies'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Leasing/Rental',\r\n value: 'Leasing/Rental',\r\n children: []\r\n },\r\n {\r\n name: 'Library',\r\n value: 'Library',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Machinery and Tools',\r\n value: 'Machinery and Tools',\r\n children: [\r\n {\r\n name: 'Powered & Non-Powered, Supplies & Accessories',\r\n value: 'Powered & Non-Powered, Supplies & Accessories'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Maintenance - Other',\r\n value: 'Maintenance - Other',\r\n children: []\r\n },\r\n {\r\n name: 'Medical ',\r\n value: 'Medical ',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Medical or Clinical Equipment, Supplies, Services or Pharmacy',\r\n value: 'Medical or Clinical Equipment, Supplies, Services or Pharmacy',\r\n children: []\r\n },\r\n {\r\n name: 'Non-Medical Equipment, Furniture, Supplies, Stationary or Services',\r\n value: 'Non-Medical Equipment, Furniture, Supplies, Stationary or Services',\r\n children: []\r\n },\r\n {\r\n name: 'Non-Profit Agencies',\r\n value: 'Non-Profit Agencies',\r\n children: []\r\n },\r\n {\r\n name: 'Office/School Equipment',\r\n value: 'Office/School Equipment',\r\n children: [\r\n {\r\n name: 'Early Learning ',\r\n value: 'Early Learning '\r\n },\r\n {\r\n name: 'Equipment (photocopiers, fax machine, plotters, etc.)',\r\n value: 'Equipment (photocopiers, fax machine, plotters, etc.)'\r\n },\r\n {\r\n name: 'Mailing System Equipment & Maintenance',\r\n value: 'Mailing System Equipment & Maintenance'\r\n },\r\n {\r\n name: 'Office Supplies/School Supplies',\r\n value: 'Office Supplies/School Supplies'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Other',\r\n value: 'Other',\r\n children: []\r\n },\r\n {\r\n name: 'Parking',\r\n value: 'Parking',\r\n children: [\r\n {\r\n name: 'Meters/Pay Display',\r\n value: 'Meters/Pay Display'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Parks',\r\n value: 'Parks',\r\n children: [\r\n {\r\n name: 'Concession',\r\n value: 'Concession'\r\n },\r\n {\r\n name: 'Engineered Wood Fiber Surface',\r\n value: 'Engineered Wood Fiber Surface'\r\n },\r\n {\r\n name: 'Engineered Wood Surfacing Surface',\r\n value: 'Engineered Wood Surfacing Surface'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Parks Equipment and Supplies',\r\n value: 'Parks Equipment and Supplies',\r\n children: []\r\n },\r\n {\r\n name: 'Pest Control',\r\n value: 'Pest Control',\r\n children: []\r\n },\r\n {\r\n name: 'Printing Supplies and Services',\r\n value: 'Printing Supplies and Services',\r\n children: [\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Professional, Strategic, Administrative or Management Services',\r\n value: 'Professional, Strategic, Administrative or Management Services',\r\n children: []\r\n },\r\n {\r\n name: 'Promotional & Novelties',\r\n value: 'Promotional & Novelties',\r\n children: [\r\n {\r\n name: 'Promotional & Novelties',\r\n value: 'Promotional & Novelties'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Real Estate',\r\n value: 'Real Estate',\r\n children: [\r\n {\r\n name: 'Appraisal Services',\r\n value: 'Appraisal Services'\r\n },\r\n {\r\n name: 'Real Estate Brokerage Services',\r\n value: 'Real Estate Brokerage Services'\r\n },\r\n {\r\n name: 'Sale/Lease of Property',\r\n value: 'Sale/Lease of Property'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Recreation/Education',\r\n value: 'Recreation/Education',\r\n children: [\r\n {\r\n name: 'Arena & Stadium Services',\r\n value: 'Arena & Stadium Services'\r\n },\r\n {\r\n name: 'Arena & Stadium Supplies',\r\n value: 'Arena & Stadium Supplies'\r\n },\r\n {\r\n name: 'Blade Sharpening',\r\n value: 'Blade Sharpening'\r\n },\r\n {\r\n name: 'Bleachers/Stands',\r\n value: 'Bleachers/Stands'\r\n },\r\n {\r\n name: 'Court Surface Specialists',\r\n value: 'Court Surface Specialists'\r\n },\r\n {\r\n name: 'Fitness Equipment',\r\n value: 'Fitness Equipment'\r\n },\r\n {\r\n name: 'Ice Resurfacer',\r\n value: 'Ice Resurfacer'\r\n },\r\n {\r\n name: 'Instructors',\r\n value: 'Instructors'\r\n },\r\n {\r\n name: 'Musical Instruments - Repairs',\r\n value: 'Musical Instruments - Repairs'\r\n },\r\n {\r\n name: 'Musical Instruments - Supplies',\r\n value: 'Musical Instruments - Supplies'\r\n },\r\n {\r\n name: 'Outdoor Shades',\r\n value: 'Outdoor Shades'\r\n },\r\n {\r\n name: 'Paint (Field marking, ice paint, etc.)',\r\n value: 'Paint (Field marking, ice paint, etc.)'\r\n },\r\n {\r\n name: 'Park Development',\r\n value: 'Park Development'\r\n },\r\n {\r\n name: 'Playground Equipment',\r\n value: 'Playground Equipment'\r\n },\r\n {\r\n name: 'Pool Services',\r\n value: 'Pool Services'\r\n },\r\n {\r\n name: 'Pool Supplies',\r\n value: 'Pool Supplies'\r\n },\r\n {\r\n name: 'Recreation Flooring / Restoration (Gym Floor, Rubberized, etc.)',\r\n value: 'Recreation Flooring / Restoration (Gym Floor, Rubberized, etc.)'\r\n },\r\n {\r\n name: 'Science Equipment & Supplies',\r\n value: 'Science Equipment & Supplies'\r\n },\r\n {\r\n name: 'Sporting & Athletic Goods & Supplies ',\r\n value: 'Sporting & Athletic Goods & Supplies '\r\n },\r\n {\r\n name: 'Sporting Goods',\r\n value: 'Sporting Goods'\r\n },\r\n {\r\n name: 'Sports Field Lighting',\r\n value: 'Sports Field Lighting'\r\n },\r\n {\r\n name: 'Welding Equipment & Supplies',\r\n value: 'Welding Equipment & Supplies'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Road Maintenance',\r\n value: 'Road Maintenance',\r\n children: [\r\n {\r\n name: 'Roadside Safety (Pylons, Barricades, etc.)',\r\n value: 'Roadside Safety (Pylons, Barricades, etc.)'\r\n },\r\n {\r\n name: 'Services (crack sealing, pavement markings, etc.)',\r\n value: 'Services (crack sealing, pavement markings, etc.)'\r\n },\r\n {\r\n name: 'Snow Removal',\r\n value: 'Snow Removal'\r\n },\r\n {\r\n name: 'Street Cleaning',\r\n value: 'Street Cleaning'\r\n },\r\n {\r\n name: 'Streetlight supply & maintenance',\r\n value: 'Streetlight supply & maintenance'\r\n },\r\n {\r\n name: 'Supplies',\r\n value: 'Supplies'\r\n },\r\n {\r\n name: 'Traffic Marking Paint',\r\n value: 'Traffic Marking Paint'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Security, Monitoring, Intrusion, Fire or Enforcement',\r\n value: 'Security, Monitoring, Intrusion, Fire or Enforcement',\r\n children: []\r\n },\r\n {\r\n name: 'Signs',\r\n value: 'Signs',\r\n children: [\r\n {\r\n name: 'Design',\r\n value: 'Design'\r\n },\r\n {\r\n name: 'Flags, Flag poles, Banners, Accessories',\r\n value: 'Flags, Flag poles, Banners, Accessories'\r\n },\r\n {\r\n name: 'Maintenance',\r\n value: 'Maintenance'\r\n },\r\n {\r\n name: 'Signs ',\r\n value: 'Signs '\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Social Services',\r\n value: 'Social Services',\r\n children: [\r\n {\r\n name: 'Public Health',\r\n value: 'Public Health'\r\n },\r\n {\r\n name: 'Social Housing',\r\n value: 'Social Housing'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Special Events',\r\n value: 'Special Events',\r\n children: []\r\n },\r\n {\r\n name: 'Surplus Sales',\r\n value: 'Surplus Sales',\r\n children: [\r\n {\r\n name: 'Surplus',\r\n value: 'Surplus'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Telecommunications',\r\n value: 'Telecommunications',\r\n children: [\r\n {\r\n name: 'Cell Phones & Devices',\r\n value: 'Cell Phones & Devices'\r\n },\r\n {\r\n name: 'Data/Voice Cabling',\r\n value: 'Data/Voice Cabling'\r\n },\r\n {\r\n name: 'Long Distance',\r\n value: 'Long Distance'\r\n },\r\n {\r\n name: 'Services',\r\n value: 'Services'\r\n },\r\n {\r\n name: 'Supplies and Equipment',\r\n value: 'Supplies and Equipment'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Textiles',\r\n value: 'Textiles',\r\n children: [\r\n {\r\n name: 'Textiles (Curtains, Blinds, etc.)',\r\n value: 'Textiles (Curtains, Blinds, etc.)'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Trade Services',\r\n value: 'Trade Services',\r\n children: [\r\n {\r\n name: 'Carpentry',\r\n value: 'Carpentry'\r\n },\r\n {\r\n name: 'Carpet/ Flooring',\r\n value: 'Carpet/ Flooring'\r\n },\r\n {\r\n name: 'Concrete',\r\n value: 'Concrete'\r\n },\r\n {\r\n name: 'Electrical',\r\n value: 'Electrical'\r\n },\r\n {\r\n name: 'Glass and Glazing',\r\n value: 'Glass and Glazing'\r\n },\r\n {\r\n name: 'Heating, Ventilating and Air Conditioning (HVAC)',\r\n value: 'Heating, Ventilating and Air Conditioning (HVAC)'\r\n },\r\n {\r\n name: 'Insulation',\r\n value: 'Insulation'\r\n },\r\n {\r\n name: 'Painting and Wallpapering',\r\n value: 'Painting and Wallpapering'\r\n },\r\n {\r\n name: 'Plastering Drywall',\r\n value: 'Plastering Drywall'\r\n },\r\n {\r\n name: 'Plumbing',\r\n value: 'Plumbing'\r\n },\r\n {\r\n name: 'Roofing and Siding',\r\n value: 'Roofing and Siding'\r\n },\r\n {\r\n name: 'Tile and Marble Work, All Types',\r\n value: 'Tile and Marble Work, All Types'\r\n },\r\n {\r\n name: 'Trade Services, (Not Otherwise Classified)',\r\n value: 'Trade Services, (Not Otherwise Classified)'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Transit and Transportation',\r\n value: 'Transit and Transportation',\r\n children: []\r\n },\r\n {\r\n name: 'Transit Capital',\r\n value: 'Transit Capital',\r\n children: [\r\n {\r\n name: 'Bus',\r\n value: 'Bus'\r\n },\r\n {\r\n name: 'Fleet Overhaul',\r\n value: 'Fleet Overhaul'\r\n },\r\n {\r\n name: 'Major Capital',\r\n value: 'Major Capital'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Transit Operations',\r\n value: 'Transit Operations',\r\n children: [\r\n {\r\n name: 'Equipment & Supplies',\r\n value: 'Equipment & Supplies'\r\n },\r\n {\r\n name: 'Fleet Mechanical, electrical, structural',\r\n value: 'Fleet Mechanical, electrical, structural'\r\n },\r\n {\r\n name: 'Operations & Maintenance',\r\n value: 'Operations & Maintenance'\r\n },\r\n {\r\n name: 'Taxi, WheelTrans, Specialty Transport',\r\n value: 'Taxi, WheelTrans, Specialty Transport'\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Water and Sewer',\r\n value: 'Water and Sewer',\r\n children: [\r\n {\r\n name: 'Catch Basin Cleaning',\r\n value: 'Catch Basin Cleaning'\r\n },\r\n {\r\n name: 'Cathodic Protection',\r\n value: 'Cathodic Protection'\r\n },\r\n {\r\n name: 'CCTV Inspection',\r\n value: 'CCTV Inspection'\r\n },\r\n {\r\n name: 'Emergency Watermain',\r\n value: 'Emergency Watermain'\r\n },\r\n {\r\n name: 'Flow Testing',\r\n value: 'Flow Testing'\r\n },\r\n {\r\n name: 'Hydrant Inspections',\r\n value: 'Hydrant Inspections'\r\n },\r\n {\r\n name: 'Hydrant Painting',\r\n value: 'Hydrant Painting'\r\n },\r\n {\r\n name: 'New or Replacement Water/Sewer Lines',\r\n value: 'New or Replacement Water/Sewer Lines'\r\n },\r\n {\r\n name: 'Wastewater Treatment & Services',\r\n value: 'Wastewater Treatment & Services'\r\n },\r\n {\r\n name: 'Water Meters',\r\n value: 'Water Meters'\r\n },\r\n {\r\n name: 'Water Treatment Chemicals Supplies & Services',\r\n value: 'Water Treatment Chemicals Supplies & Services'\r\n },\r\n {\r\n name: 'Watermain Swabbing',\r\n value: 'Watermain Swabbing'\r\n },\r\n {\r\n name: 'Well & Water Related Services',\r\n value: 'Well & Water Related Services'\r\n }\r\n ]\r\n }\r\n]\r\nexport const awardStatuses = [\r\n {\r\n name: 'Pending Approval',\r\n value: 'Pending Approval'\r\n },\r\n {\r\n name: 'Approved',\r\n value: 'Approved'\r\n },\r\n {\r\n name: 'Awarded',\r\n value: 'Awarded'\r\n }\r\n]\r\n\r\nexport const filterDictionary = {\r\n term: { name: 'Search Term', value: '', default: '', type: 'project' },\r\n selectedProjectPhase: { name: 'Phase', value: null, default: null, type: 'project' },\r\n selectedProjectLead: { name: 'Project Lead', value: null, default: null, type: 'project' },\r\n projectDivision: { name: 'Division', value: null, default: null, type: 'project' },\r\n projectDepartment: { name: 'Department', value: null, default: null, type: 'project' },\r\n sourceStatus: { name: 'Source Status', value: [], default: [], type: 'source' },\r\n sourceDateType: { name: 'Date Type', value: null, default: null, type: 'source' },\r\n sourceStartDate: { name: 'Start Date', value: null, default: null, type: 'source' },\r\n sourceEndDate: { name: 'End Date', value: null, default: null, type: 'source' },\r\n procurementMethod: { name: 'Procurement Method', value: null, default: null, type: 'source' },\r\n commodityCategories: { name: 'Commodity Category', value: null, default: [], type: 'source' },\r\n procurementTypes: { name: 'Procurement Type', value: null, default: null, type: 'source' },\r\n procurementClassification: {\r\n name: 'Procurement Classification',\r\n value: null,\r\n default: null,\r\n type: 'source'\r\n },\r\n bidPlantakersCount: { name: 'Plantakers', value: null, default: null, type: 'source' },\r\n bidCategories: { name: 'Source Categories', value: null, default: null, type: 'source' },\r\n contractPONumbers: { name: 'PO Numbers', value: null, default: null, type: 'contract' },\r\n contractInternalContractNumber: {\r\n name: 'Internal Contract Number',\r\n value: null,\r\n default: null,\r\n type: 'contract'\r\n },\r\n contractSuppliers: { name: 'Suppliers', value: null, default: null, type: 'contract' },\r\n contractStatus: { name: 'Contract Status', value: [], default: [], type: 'contract' },\r\n contractDateType: { name: 'Date Type', value: null, default: null, type: 'contract' },\r\n contractStartDate: { name: 'Start Date', value: null, default: null, type: 'contract' },\r\n contractEndDate: { name: 'End Date', value: null, default: null, type: 'contract' },\r\n contractCategories: { name: 'Contract Categories', value: null, default: [], type: 'contract' },\r\n awardStatus: { name: 'Award Status', value: [], default: [], type: 'award' },\r\n requesterIntake: { name: 'Intake Requester', value: null, default: null, type: 'intake' },\r\n procurementTypesIntake: {\r\n name: 'Intake Procurement Type',\r\n value: null,\r\n default: null,\r\n type: 'intake'\r\n },\r\n procurementClassificationIntake: {\r\n name: 'Intake Procurement Classification',\r\n value: null,\r\n default: null,\r\n type: 'intake'\r\n },\r\n intakePostingDate: { name: 'Estimated Posting Date', value: null, default: null, type: 'intake' },\r\n intakeStartDate: { name: 'Estimated Start Date', value: null, default: null, type: 'intake' }\r\n}\r\n\r\nexport const filterDictionaryMapper = {\r\n requesterIntake: 'requesterIntake',\r\n procurementTypesIntake: 'procurementType',\r\n procurementClassificationIntake: 'procurementClassification',\r\n intakePostingDate: 'estimatedPostingDate',\r\n intakeStartDate: 'estimatedStartDate'\r\n}\r\n","import {\r\n filterDictionary,\r\n filterDictionaryMapper\r\n} from '@/views/projects/project-search-view/project-search-definitions'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\n\r\nexport function projectSearchApi() {\r\n function buildSearchFilters(params) {\r\n const filter = {}\r\n if (params) {\r\n filter.limit = params.limit || null\r\n filter.start = params.start || null\r\n filter.searchText = params.keywords || null\r\n filter.dateFrom = params.dateFrom ? new Date(params.dateFrom).toISOString() : null\r\n filter.dateTo = params.dateTo ? new Date(params.dateTo).toISOString() : null\r\n filter.status = params.status || null\r\n\r\n if (params.criteria) {\r\n filter.searchCriteria = {}\r\n\r\n for (const key in params.criteria) {\r\n if (params.criteria[key] != null && params.criteria[key].length !== 0) {\r\n filter.searchCriteria[`${key}`] = params.criteria[key]\r\n }\r\n }\r\n }\r\n }\r\n return filter\r\n }\r\n\r\n function getModifiedFiltersForApi(filters) {\r\n const clonedFilters = cloneDeep(filters)\r\n const intakeFilterKeys = Object.entries(filterDictionary)\r\n .filter((entry) => entry[1].type === 'intake')\r\n .map((entry) => entry[0])\r\n\r\n const intakeObj = {}\r\n Object.keys(clonedFilters).forEach((filter) => {\r\n if (filter === 'requesterIntake') {\r\n intakeObj.firstName = clonedFilters[filter].split('|')[0]\r\n intakeObj.lastName = clonedFilters[filter].split('|')[1]\r\n delete clonedFilters[filter]\r\n } else if (filter === 'procurementTypesIntake') {\r\n intakeObj.procurementTypeId = clonedFilters[filter].split('|')[0]\r\n intakeObj.procurementType = clonedFilters[filter].split('|')[1]\r\n delete clonedFilters[filter]\r\n } else if (intakeFilterKeys.includes(filter)) {\r\n intakeObj[filterDictionaryMapper[filter]] = clonedFilters[filter]\r\n delete clonedFilters[filter]\r\n }\r\n })\r\n if (Object.keys(intakeObj).length) {\r\n clonedFilters.intake = intakeObj\r\n }\r\n\r\n return clonedFilters\r\n }\r\n\r\n return {\r\n getModifiedFiltersForApi,\r\n buildSearchFilters\r\n }\r\n}\r\n","import { api as defaultApi } from '@/api/api'\r\nimport { useStore } from '@/store'\r\n\r\nexport function useVersionedApi({ api = defaultApi, store = null } = {}) {\r\n const $store = store || useStore()\r\n\r\n function getEndpointVersion(feature, module = null) {\r\n // Check the feature flag for the given feature.\r\n // If the feature flag is true, use version 2 of the endpoint.\r\n // Otherwise, use version 1.\r\n\r\n if (!module) {\r\n return $store.getters.getFeatureEnabled(feature).enabled ? 2 : 1\r\n }\r\n\r\n return $store.getters.getModuleEnabled(feature, module).enabled ? 2 : 1\r\n }\r\n\r\n // Some returns are for testing purposes only.\r\n // consider checking against import.meta.env.MODE before returning\r\n return {\r\n api,\r\n store: $store,\r\n getEndpointVersion\r\n }\r\n}\r\n","import { projectSearchApi } from '@/composables/api/projectSearchApi'\r\nimport { useVersionedApi } from '@/composables/api/useVersionedApi'\r\n\r\nfunction mapSearchResults(version, returnedData) {\r\n const data = returnedData?.count > 0 ? returnedData?.data?.searchResult?.values : []\r\n const { errors, status } = returnedData\r\n\r\n if (version === 1) {\r\n return {\r\n data,\r\n count: returnedData?.data?.searchResult?.count,\r\n errors,\r\n status\r\n }\r\n } else {\r\n return {\r\n data,\r\n count: returnedData?.data?.searchResult?.count,\r\n errors,\r\n status\r\n }\r\n }\r\n}\r\n\r\nfunction ProjectService(config) {\r\n const { api, getEndpointVersion } = useVersionedApi(config)\r\n\r\n async function searchProjects(params = {}) {\r\n const version = getEndpointVersion('api2Project', 'projectSearch')\r\n\r\n const url =\r\n version === 1\r\n ? '/api/v1/customer/{customerId}/node/{nodeId}/Projects/Search'\r\n : '/api/v2/customer/{customerId}/node/{nodeId}/Projects/Search'\r\n\r\n const filter = projectSearchApi().buildSearchFilters(params)\r\n\r\n const modifiedCriteriaForApi = projectSearchApi().getModifiedFiltersForApi(\r\n filter.searchCriteria || {}\r\n )\r\n\r\n const response = await api.post(url, { ...filter, searchCriteria: modifiedCriteriaForApi })\r\n\r\n const mappedResults = mapSearchResults(version, response.data)\r\n return { ...mappedResults, filter }\r\n }\r\n\r\n return {\r\n searchProjects\r\n }\r\n}\r\n\r\nexport default ProjectService\r\n","export const projectTypes = {\r\n SOURCE: 'SOURCE',\r\n CONTRACT: 'CONTRACT',\r\n SOURCE_CONTRACT: 'SOURCE_CONTRACT',\r\n TEMPLATE: 'TEMPLATE'\r\n}\r\nexport const projectStatus = {\r\n ARCHIVED: 'Archived',\r\n AWARDED: 'Awarded',\r\n CANCELLED: 'Cancelled',\r\n CLOSED: 'Closed',\r\n DESIGN_MODE_PENDING: 'Design',\r\n OPEN: 'Open',\r\n OPEN_SCHEDULED: 'Scheduled',\r\n PLANNED: 'Planned',\r\n REQUEST_FOR_APPROVA: 'Request for Approval',\r\n TEMPLATE: 'Template',\r\n TERMINATED: 'Terminated',\r\n UNOFFICIAL_RESULTS: 'Unofficial',\r\n UPCOMING: 'Upcoming'\r\n}\r\n//\r\n// The title case value of sourceMethod is the one we sent in the database\r\n// This is to align with the existing format of data with our current database\r\nexport const sourceMethods = {\r\n PUBLIC: 'Public',\r\n PUBLIC_PRE_QUALIFIED: 'Prequalification',\r\n INVITATIONAL: 'Private',\r\n LIMITED: 'Limited'\r\n}\r\nexport const sourceClosingMethods = {\r\n SEALED: 'SEALED',\r\n UNSEALED: 'UNSEALED'\r\n}\r\nexport const vendorSubmissionMethods = {\r\n HARD_COPY: 'HARD_COPY',\r\n ONLINE: 'ONLINE'\r\n}\r\nexport const submissionMethod = {\r\n ONLINE: 1,\r\n HARD_COPY: 0\r\n}\r\nexport const submissionType = {\r\n SUBMISSION_DO_NOT_DISPLAY: 1,\r\n SUBMISSION_DISPLAY_NAMES: 2,\r\n SUBMISSION_DISPLAY_RESULTS: 3,\r\n SUBMISSION_DISPLAY_CHOOSE: 4\r\n}\r\nexport const unsealManuallyType = {\r\n AUTOMATICALLY_DISPLAY: 2,\r\n LET_ME_CHOOSE: 0,\r\n OTHERS: 1\r\n}\r\nexport const projectSubmissionRequirements = {\r\n Instructions: 'F918B4E3-6CD2-432B-BF8B-71832FAE3E1F',\r\n Prices: '06FCACE3-A9AC-4413-A36D-8B4FEF518BDE',\r\n Questions: '6434FBC7-09CC-4D15-AB09-568E76D24B61',\r\n Specifications: '0BDEAE50-E824-42BB-A4D4-D5A49D08947C',\r\n References: '1945ECDE-D54F-434A-BED1-34EBA960AC8A',\r\n Subcontractors: 'CDB929EB-C85A-4522-B41B-12874904BB3C',\r\n Documents: 'C7D1523B-2D24-40BB-9F66-B8D642733CBF',\r\n Security: '0C874124-CCFA-4F04-991E-2A47E5B46B03'\r\n}\r\n\r\nexport const bluePrintTypes = {\r\n INFORMAL: 'INFORMAL',\r\n PLANNED_PROCUREMENT: 'PLANNED_PROCUREMENT'\r\n}\r\n\r\nexport const classifications = {\r\n GOODS: 'Goods',\r\n SERVICES: 'Services',\r\n CONSTRUCTION: 'Construction',\r\n SERVICESRELATEDTOGOODS: 'ServicesRelatedToGoods'\r\n}\r\n","import { api } from '@/api/api'\r\nimport ProjectService from '@/services/project/project.service'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport merge from 'lodash/merge'\r\nimport uuid from 'uuid/v1'\r\nimport {\r\n projectStatus,\r\n projectTypes,\r\n sourceClosingMethods,\r\n submissionMethod,\r\n submissionType,\r\n unsealManuallyType,\r\n vendorSubmissionMethods\r\n} from '../../../views/projects/project-new-wizard-view/project-wizard-defs'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst defaultState = {\r\n isCopy: false,\r\n projectToCopy: null,\r\n copyFormsInstructions: false,\r\n id: null,\r\n projectType: null,\r\n projectName: null,\r\n projectNumber: null,\r\n projectNumberAutoGenerate: null,\r\n projectDepartment: null,\r\n divisionCategory: null,\r\n leadAgencyName: null,\r\n leadAgencyNameId: null,\r\n numberOfAgencies: null,\r\n participatingAgencies: null,\r\n teamMembers: [],\r\n users: [],\r\n teamLead: null,\r\n departmentProjectLead: null,\r\n defaultTeamLead: null,\r\n hasLinkedProject: null,\r\n linkedProject: null,\r\n linkedFromProjects: null,\r\n cooperative: null,\r\n sourceMethod: null,\r\n sourceDetails: {\r\n id: null,\r\n awardException: null,\r\n closingMethod: null,\r\n vendorSubmission: null,\r\n resultsDisplay: null,\r\n disableRegistration: null,\r\n questionReminderEmailDays: 7,\r\n questionDeadline: null,\r\n questionsAfterDeadline: 0,\r\n irrevocablePeriod: null,\r\n hasDatePlannedNotice: null,\r\n bidMeetings: null,\r\n showPlanTakers: null,\r\n tradeAgreements: null,\r\n isSendToSPA: null,\r\n trackSubmissions: null,\r\n evaluateSubmissionsOnline: null,\r\n isHideBidMeetings: false,\r\n isHideBidDocuments: false,\r\n isHidePlanTakers: false,\r\n submissionAddress: null,\r\n showTeamMembers: null,\r\n showTeamMembersContact: null,\r\n allowMultipleSubmissions: null,\r\n isAttendanceTrackingOn: null,\r\n lvpPreferenceOption: 'Not Applicable',\r\n includeOtherDocument: false,\r\n showPurchasingRepsOnPublic: null,\r\n procurementType: null,\r\n procurementMethodLimitedType: [],\r\n procurementMethodLimitedTypeDescription: null,\r\n onlineSubmissionShowNoBid: null,\r\n hasPromptPayDiscount: null,\r\n openingProcess: null,\r\n datePlannedNotice: null,\r\n datePlannedNoticeUtc: null,\r\n plannedIssueDate: null,\r\n plannedIssueDateUtc: null,\r\n bidClassification: null,\r\n description: null\r\n },\r\n contractDetails: {\r\n allowVendorDocumentPublicUpload: null,\r\n termContract: null,\r\n trackOptionYears: null,\r\n warrantyPeriod: null,\r\n firmPricing: null,\r\n substantialCompletionDate: null,\r\n evaluatePerformance: null,\r\n workplaceSafteyCertificates: null,\r\n insuranceCertificates: null,\r\n contractDocuments: null,\r\n bondsSecurity: null,\r\n otherDocuments: null,\r\n otherDocumentsList: [],\r\n amount: null,\r\n contigencyAmount: null\r\n }\r\n}\r\n\r\nexport const state = {\r\n projects: [],\r\n projectsEnding: [],\r\n myProjects: [],\r\n newProject: { ...defaultState },\r\n project: null,\r\n projectErrors: [],\r\n projectValidationErrors: [],\r\n projectSaveRequired: false,\r\n projectBackup: null,\r\n lastProjectSave: null,\r\n projectLocked: null,\r\n fetchingProject: false,\r\n projectCanSave: true,\r\n projectForceValidateBackDate: false,\r\n projectToCopy: null,\r\n projectToSaveAsTemplate: null,\r\n projectsProperties: [],\r\n projectDropdown: [],\r\n globalSaveSuccess: false,\r\n isClosingDateChanged: false\r\n}\r\n\r\nexport const getters = {\r\n getProjects: (state) => state.projects,\r\n getProjectsEnding: (state) => state.projectsEnding,\r\n getMyProjects: (state) => state.myProjects,\r\n getCurrentNewProject: (state) => state.newProject,\r\n getProject: (state) => state.project,\r\n getProjectErrors: (state) => state.projectErrors,\r\n getProjectSaveRequired: (state) => state.projectSaveRequired,\r\n getProjectBackup: (state) => state.projectBackup,\r\n getLastProjectSave: (state) => state.lastProjectSave,\r\n getProjectSourceStatus: (state) => state?.project?.tenders?.[0]?.status || null,\r\n getProjectContractStatus: (state) => state?.project?.contracts?.[0]?.status || null,\r\n getProjectLocked: (state) => state.projectLocked,\r\n getProjectValidationErrors: (state) => state.projectValidationErrors,\r\n getProjectFetchStatus: (state) => state.fetchingProject,\r\n getProjectCanSave: (state) => state.projectCanSave,\r\n getProjectForceValidateBackDate: (state) => state.projectForceValidateBackDate,\r\n getProjectToCopy: (state) => state.projectToCopy,\r\n getProjectToSaveAsTemplate: (state) => state.projectToSaveAsTemplate,\r\n getProjectsProperties: (state) => state.projectsProperties,\r\n getGlobalSaveSuccess: (state) => state.globalSaveSuccess,\r\n getIsClosingDateChanged: (state) => state.isClosingDateChanged\r\n}\r\n\r\nexport const actions = {\r\n fetchProjectsInitial: ({ dispatch }, numProjects = 20) => {\r\n const params = {\r\n filter: '',\r\n keywords: '',\r\n limit: numProjects,\r\n start: null\r\n }\r\n return dispatch('fetchProjects', params)\r\n },\r\n fetchProjects: async ({ commit }, { params, searchActive = false }) => {\r\n // Converted to POST instead of GET as we are expecting a complex object of search criterias\r\n // which is better to be passed in the request body than URI to avoid issues with URI character limit\r\n\r\n try {\r\n // returns {data, status, count, filter, errors}\r\n const { data, filter } = await ProjectService().searchProjects(params)\r\n\r\n commit(types.PROJECT_SET_ALL, data)\r\n\r\n commit(types.PROJECT_SEARCH_FILTERS_SET, searchActive === true ? filter : null)\r\n commit(types.PROJECT_SEARCH_FILTERS_ACTIVE_SET, searchActive)\r\n return data\r\n } catch (err) {\r\n commit(types.PROJECT_SET_ALL, [])\r\n throw err\r\n }\r\n },\r\n clearAllProjects: ({ commit }) => {\r\n commit(types.PROJECT_SET_ALL, [])\r\n },\r\n fetchProjectsEnding: ({ commit }, params) => {\r\n let url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/ProjectContractEnding?`\r\n\r\n if (params.filter && params.filter.length > 0) {\r\n url += `,${params.filter}`\r\n }\r\n\r\n url += `filter.limit=${params.limit}&filter.start=${params.start}&filter.searchText=${\r\n typeof params.keywords === 'undefined' ? '' : params.keywords\r\n }&filter.dateFrom=${\r\n params.dateFrom ? new Date(params.dateFrom).toISOString() : ''\r\n }&filter.dateTo=${params.dateTo ? new Date(params.dateTo).toISOString() : ''}`\r\n if (params.status && params.status.length > 0) {\r\n url += `&status=${params.status}`\r\n }\r\n url += `&daysUntilExpired=${params.daysUntilExpired}`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data?.count > 0) {\r\n const result = response.data.data.projectDTO.values\r\n commit(types.PROJECT_ENDING_SET_ALL, result)\r\n return result\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.PROJECT_ENDING_SET_ALL, null)\r\n throw err\r\n })\r\n },\r\n fetchMyProjects: ({ commit }, param) => {\r\n // if a closes in is chosen\r\n const dateFrom = param.dateFrom ? new Date(param.dateFrom).setHours(0, 0, 0, 0) : null\r\n const dateTo = param.dateTo ? new Date(param.dateTo).setHours(23, 59, 59, 999) : null\r\n\r\n const url = `${\r\n `/api/v1/customer/{customerId}/node/{nodeId}/Projects/MyProjects?` + '&filter.start='\r\n }${param.start}&filter.limit=${param.limit}&filter.sortcolumn=${\r\n param.sortcolumn\r\n }&filter.sortdirection=${param.sortdirection}&filter.dateFrom=${\r\n dateFrom ? new Date(dateFrom).toISOString() : null\r\n }&filter.dateTo=${dateTo ? new Date(dateTo).toISOString() : null}`\r\n\r\n return api.get(url).then((response) => {\r\n let myProjects = []\r\n if (response.data.data.searchResult) myProjects = response.data.data.searchResult.values\r\n commit(types.MY_PROJECTS_SET_ALL, myProjects)\r\n return myProjects\r\n })\r\n },\r\n checkProjectDropdown: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/ProjectDropdown?Column=${params.Column}&Value=${params.Value}`\r\n return api.get(url).then((response) => response.data)\r\n },\r\n checkProject: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects?projectId=${id}&filter.fields=Tenders,Phase,ProjectLead,Contracts,Department,Division,Users,LeadAgencyName`\r\n if (!id) return false\r\n\r\n return api.get(url).then((response) => response.data.data.projectDTO.values[0])\r\n },\r\n fetchProject: ({ commit }, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects?projectId=${id}&filter.fields=Tenders,Phase,ProjectLead,Contracts,Department,Division,Users,LeadAgencyName,DepartmentProjectLead`\r\n if (!id) return false\r\n\r\n // check fetch status\r\n if (state.fetchingProject === true) {\r\n return Promise.resolve([])\r\n }\r\n\r\n // update the fetch status\r\n commit(types.PROJECT_SET_FETCH_STATUS, true)\r\n\r\n // fallback cancel fetching status\r\n setTimeout(() => {\r\n if (state.fetchingProject === true) {\r\n commit(types.PROJECT_SET_FETCH_STATUS, false)\r\n }\r\n }, 60000)\r\n\r\n commit(types.PROJECT_BACKUP_SET, null)\r\n commit(types.PROJECT_SET_SAVE_REQUIRED, { projectSaveRequired: false })\r\n commit(types.PROJECT_SET_FORCE_VALIDATE_BACKDATE, { projectForceValidateBackDate: false })\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const project = response.data.data.projectDTO.values[0]\r\n\r\n // update the fetch status\r\n commit(types.PROJECT_SET_FETCH_STATUS, false)\r\n\r\n // set project backup, this will be used for comparison when changing critical properties on what is before and after values\r\n commit(types.PROJECT_BACKUP_SET, project)\r\n\r\n if (project) {\r\n commit(types.PROJECT_SET, project)\r\n }\r\n return Promise.resolve(project || null)\r\n })\r\n .catch((err) => {\r\n // update the fetch status\r\n commit(types.PROJECT_SET_FETCH_STATUS, false)\r\n commit(types.PROJECT_SET, null)\r\n throw err\r\n })\r\n },\r\n resetProject: ({ commit }) => {\r\n commit(types.PROJECT_SET, null)\r\n },\r\n fetchProjectWebDemo: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/WebDemo?projectId=${id}`\r\n if (!id) return false\r\n\r\n return api.get(url).then((response) => {\r\n const url = response.data.data.searchResult.values[0].webDemoURL\r\n window.open(url)\r\n })\r\n },\r\n fetchProjectShare: (_, { id, context }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/Share?projectId=${id}`\r\n if (!id) return false\r\n\r\n return api.get(url).then((response) => {\r\n const url = response.data.data.searchResult.values[0].shareURL\r\n if (url && context) {\r\n const match = url.match(/https:\\/\\/[^\\s]+/)\r\n if (match) {\r\n const link = match[0]\r\n navigator.clipboard.writeText(link).then(\r\n () => {\r\n context.$notify({\r\n title: context.$t('ui.common.success'),\r\n message: context.$t('ui.common.clipboardCopySuccess'),\r\n type: 'success'\r\n })\r\n },\r\n () => {\r\n context.$notify({\r\n title: context.$t('ui.components.notifications.titles.error'),\r\n message: context.$t('ui.common.clipboardCopyError'),\r\n type: 'error'\r\n })\r\n }\r\n )\r\n } else {\r\n console.error('Link not found in the expected format')\r\n }\r\n } else {\r\n window.location = url\r\n }\r\n })\r\n },\r\n fetchProjectDetailPreview: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/Share?projectId=${id}`\r\n if (!id) return false\r\n return api.get(url).then((response) => {\r\n const url = response.data.data.searchResult.values[0].shareURL\r\n const match = url.match(/https:\\/\\/[^\\s]+/)\r\n if (match) {\r\n const link = match[0]\r\n window.open(link)\r\n } else {\r\n console.error('Link not found in the expected format')\r\n }\r\n })\r\n },\r\n fetchProjectHTML: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/HTML?projectId=${id}`\r\n if (!id) return false\r\n\r\n return api.get(url).then((response) => {\r\n const url = response.data.data.searchResult.values[0].htmlURL\r\n window.open(url)\r\n })\r\n },\r\n createNewProjectFromCopy: (_, payload) => {\r\n const model = payload.project\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/Copy?copyFormsInstructions=${model.copyFormsInstructions}`\r\n const jsonModel = {\r\n id: model.projectToCopy,\r\n name: model.projectName,\r\n Number: model.projectNumber,\r\n NumberAutoGenerate: model.projectNumberAutoGenerate,\r\n hasLinkedProject: model.hasLinkedProject,\r\n linkedProject: {\r\n id: model.linkedProject\r\n },\r\n linkedFromProjects: model.linkedFromProjects,\r\n hasCOOP: model.cooperative,\r\n projectLead: {\r\n id: model.teamLead\r\n },\r\n department: {\r\n id: model.projectDepartment\r\n },\r\n division: {\r\n id: model.divisionCategory\r\n },\r\n leadAgency: model.leadAgency,\r\n leadAgencyName: {\r\n id: model.leadAgencyNameId\r\n },\r\n departmentProjectLead: {\r\n id: model.departmentProjectLead\r\n },\r\n numberOfAgencies: model.numberOfAgencies,\r\n participatingAgencies: model.participatingAgencies\r\n }\r\n if (payload.intakeData && payload.intakeData.intakeRequestId !== null) {\r\n jsonModel.intakeRequestId = payload.intakeData.intakeRequestId\r\n jsonModel.tenders = [\r\n {\r\n initialPurchasingStartDate: payload.intakeData?.sourceDetails?.initialPurchasingStartDate,\r\n hasSiteMeetings: payload.intakeData?.sourceDetails?.bidMeetings\r\n }\r\n ]\r\n }\r\n return api.post(url, jsonModel).then((response) => response.data.data.projectDTO.values[0])\r\n },\r\n createNewProject: ({ rootState }, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects`\r\n const model = payload.project\r\n const intakeData = payload.intakeData || null\r\n\r\n const jsonModel = {\r\n id: model.id,\r\n name: model.projectName,\r\n Number: model.projectNumber,\r\n NumberAutoGenerate: model.projectNumberAutoGenerate,\r\n hasCOOP: model.cooperative,\r\n hasLinkedProject: model.hasLinkedProject,\r\n linkedProject: {\r\n id: model.linkedProject\r\n },\r\n linkedFromProjects: model.linkedFromProjects,\r\n projectLead: {\r\n id: model.teamLead\r\n },\r\n departmentProjectLead: {\r\n id: model.departmentProjectLead\r\n },\r\n department: {\r\n id: model.projectDepartment\r\n },\r\n division: {\r\n id: model.divisionCategory\r\n },\r\n node: {\r\n id: (rootState.authCredential.authTenderNode || {}).id || '' // localStorage.getItem('nodeId')\r\n },\r\n tenders: [],\r\n contracts: [],\r\n phase: {\r\n id: '6F0EEB95-37FD-495A-8C75-79F2DE9DE19B'\r\n },\r\n leadAgency: model.leadAgency,\r\n leadAgencyName: {\r\n id: model.leadAgencyNameId\r\n },\r\n numberOfAgencies: model.numberOfAgencies,\r\n participatingAgencies: model.participatingAgencies\r\n }\r\n\r\n if (intakeData) {\r\n model.users = intakeData.users\r\n if (intakeData.intakeRequestId !== null) {\r\n jsonModel.intakeRequestId = intakeData.intakeRequestId\r\n }\r\n }\r\n\r\n if (\r\n model.projectType === projectTypes.SOURCE ||\r\n model.projectType === projectTypes.SOURCE_CONTRACT ||\r\n model.projectType === projectTypes.TEMPLATE\r\n ) {\r\n jsonModel.tenders[0] = {\r\n id: model.sourceDetails.id,\r\n name: model.projectName,\r\n number: uuid(),\r\n status:\r\n model.projectType === projectTypes.TEMPLATE\r\n ? projectStatus.TEMPLATE\r\n : projectStatus.DESIGN_MODE_PENDING,\r\n isCloseRegistrationAfterMeetingDate: model.sourceDetails.disableRegistration,\r\n hasQuestionDeadline: model.sourceDetails.questionDeadline,\r\n questionReminderEmailDays: model.sourceDetails.questionReminderEmailDays,\r\n hasDatePlannedNotice: model.sourceDetails.hasDatePlannedNotice,\r\n isHideBidMeetings: model.sourceDetails.isHideBidMeetings,\r\n bidClassification: model.sourceDetails.bidClassification,\r\n datePlannedNotice: model.sourceDetails.datePlannedNotice,\r\n datePlannedNoticeUtc: model.sourceDetails.datePlannedNoticeUtc,\r\n plannedIssueDate: model.sourceDetails.plannedIssueDate,\r\n plannedIssueDateUtc: model.sourceDetails.plannedIssueDateUtc,\r\n isHideBidDocuments: model.sourceDetails.isHideBidDocuments,\r\n isHidePlanTakers: model.sourceDetails.isHidePlanTakers,\r\n isCloseQuestionsAfterDeadline: model.sourceDetails.questionsAfterDeadline,\r\n hasIrrevocablePeriod: model.sourceDetails.irrevocablePeriod,\r\n hasSiteMeetings: model.sourceDetails.bidMeetings,\r\n isAttendanceTrackingOn: model.sourceDetails.isAttendanceTrackingOn,\r\n hasTradeAgreements: model.sourceDetails.tradeAgreements,\r\n isSendToSPA: model.sourceDetails.isSendToSPA,\r\n hasCompliancy: model.sourceDetails.trackSubmissions,\r\n evaluations: model.sourceDetails.evaluateSubmissionsOnline,\r\n scope: model.sourceMethod,\r\n showPlanTakers: model.sourceDetails.showPlanTakers,\r\n submission: model.submission,\r\n allowMultipleSubmissions: model.sourceDetails.allowMultipleSubmissions,\r\n submissionAddress: model.sourceDetails.submissionAddress,\r\n unsealManually: null,\r\n showSubmitted: null,\r\n showPurchasingRepsOnPublic: model.sourceDetails.showPurchasingRepsOnPublic,\r\n showTeamMembers: model.sourceDetails.showTeamMembers,\r\n showTeamMembersContact: model.sourceDetails.showTeamMembersContact,\r\n allowFullBidDetailsUrl: true,\r\n allowBidDocumentPreview: true,\r\n publicOpening: false,\r\n leadAgency: model.leadAgency,\r\n leadAgencyName: {\r\n id: model.leadAgencyNameId\r\n },\r\n includeOtherDocument: model.sourceDetails.includeOtherDocument,\r\n lvpPreferenceOption: model.sourceDetails.lvpPreferenceOption,\r\n numberOfAgencies: model.numberOfAgencies,\r\n participatingAgencies: model.participatingAgencies,\r\n node: {\r\n id: (rootState.authCredential.authTenderNode || {}).id || ''\r\n },\r\n type: {\r\n id: model.sourceDetails.type\r\n },\r\n procurementMethodLimitedType: {\r\n id: model.sourceDetails.procurementMethodLimitedType\r\n },\r\n procurementMethodLimitedTypeDescription:\r\n model.sourceDetails.procurementMethodLimitedTypeDescription,\r\n onlineSubmissionShowNoBid: model.sourceDetails.onlineSubmissionShowNoBid,\r\n hasPromptPayDiscount: model.sourceDetails.hasPromptPayDiscount,\r\n openingProcess: model.sourceDetails.openingProcess,\r\n description: model.sourceDetails.description\r\n }\r\n\r\n if (intakeData) {\r\n const fields = [\r\n 'procurementType',\r\n 'type',\r\n 'bidClassification',\r\n 'bidMeetings',\r\n 'description',\r\n 'categories',\r\n 'dateEstimatedAward',\r\n 'dateAvailable',\r\n 'dateAvailableUtc',\r\n 'estimatedAnnualValue',\r\n 'estimatedValue',\r\n 'initialPurchasingStartDate'\r\n // 'meetingLocations',\r\n // 'vendorInvitationListNew',\r\n ]\r\n\r\n fields.map((field) => {\r\n if (!jsonModel.tenders[0][field]) {\r\n jsonModel.tenders[0][field] = intakeData.sourceDetails[field]\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (\r\n model.projectType === projectTypes.CONTRACT ||\r\n model.projectType === projectTypes.SOURCE_CONTRACT\r\n ) {\r\n jsonModel.contracts[0] = {\r\n name: model.projectName,\r\n number: model.projectNumber,\r\n status: projectStatus.DESIGN_MODE_PENDING,\r\n hasOptionYears: model.contractDetails.trackOptionYears,\r\n hasWarrantyPeriod: model.contractDetails.warrantyPeriod,\r\n hasContractPerformance: model.contractDetails.evaluatePerformance,\r\n hasWSIB: model.contractDetails.workplaceSafetyCertificates,\r\n hasInsurance: model.contractDetails.insuranceCertificates,\r\n hasContractDocuments: model.contractDetails.contractDocuments,\r\n hasVendorDocuments: model.contractDetails.vendorDocuments,\r\n hasBondsAndSecurity: model.contractDetails.bondsSecurity,\r\n isTerm: model.contractDetails.termContract,\r\n substantialCompletionDate: model.contractDetails.substantialCompletionDate,\r\n hasFirmPricingPeriod: model.contractDetails.firmPricing,\r\n allowVendorDocumentPublicUpload: model.contractDetails.allowVendorDocumentPublicUpload,\r\n amount: model.contractDetails.amount,\r\n contigencyAmount: model.contractDetails.contigencyAmount\r\n }\r\n }\r\n\r\n // resultsDisplay Value\r\n // 1 - Do not display anything\r\n // 2 - Display only the names of vendors who submitted\r\n // 3 - Display the names and results of the vendors who submitted\r\n // 4 - Let me choose which results to display\r\n //\r\n // unsealManuallyType\r\n // AUTOMATICALLY_DISPLAY: 2,\r\n // LET_ME_CHOOSE: 0,\r\n // OTHERS: 1\r\n //\r\n if (jsonModel.tenders[0]) {\r\n // extra if above added because 'cant adjust showSubmitted of undefined'\r\n if (\r\n model.sourceDetails.closingMethod === sourceClosingMethods.SEALED &&\r\n model.sourceDetails.resultsDisplay === submissionType.SUBMISSION_DO_NOT_DISPLAY\r\n ) {\r\n jsonModel.tenders[0].showSubmitted = false\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.OTHERS\r\n } else if (\r\n model.sourceDetails.closingMethod === sourceClosingMethods.SEALED &&\r\n model.sourceDetails.resultsDisplay === submissionType.SUBMISSION_DISPLAY_NAMES\r\n ) {\r\n jsonModel.tenders[0].showSubmitted = true\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.OTHERS\r\n } else if (\r\n model.sourceDetails.closingMethod === sourceClosingMethods.UNSEALED &&\r\n model.sourceDetails.resultsDisplay === submissionType.SUBMISSION_DO_NOT_DISPLAY\r\n ) {\r\n jsonModel.tenders[0].showSubmitted = false\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.LET_ME_CHOOSE\r\n } else if (\r\n model.sourceDetails.closingMethod === sourceClosingMethods.UNSEALED &&\r\n model.sourceDetails.resultsDisplay === submissionType.SUBMISSION_DISPLAY_NAMES\r\n ) {\r\n jsonModel.tenders[0].showSubmitted = true\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.LET_ME_CHOOSE\r\n } else if (\r\n model.sourceDetails.closingMethod === sourceClosingMethods.UNSEALED &&\r\n model.sourceDetails.resultsDisplay === submissionType.SUBMISSION_DISPLAY_RESULTS\r\n ) {\r\n jsonModel.tenders[0].showSubmitted = true\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.AUTOMATICALLY_DISPLAY\r\n } else {\r\n jsonModel.tenders[0].showSubmitted = false\r\n jsonModel.tenders[0].unsealManually = unsealManuallyType.LET_ME_CHOOSE\r\n }\r\n }\r\n\r\n // vendorSubmissionMethods\r\n // 1 - Online\r\n // 0 - Hardcopy\r\n if (jsonModel.tenders[0]) {\r\n // same as above\r\n if (model.sourceDetails.vendorSubmission === vendorSubmissionMethods.ONLINE) {\r\n jsonModel.tenders[0].submission = submissionMethod.ONLINE\r\n } else {\r\n jsonModel.tenders[0].submission = submissionMethod.HARD_COPY\r\n }\r\n }\r\n\r\n return api.post(url, jsonModel).then((response) => response.data.data.projectDTO.values[0])\r\n },\r\n updateNewProject: ({ commit, rootState }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects`\r\n\r\n model.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n\r\n if (model.tenders[0]) {\r\n const tender = Object.assign({}, model.tenders[0])\r\n tender.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n model.tenders[0] = tender\r\n }\r\n return api.put(url, model).then((response) => {\r\n const project = response.data.data.projectDTO.values[0]\r\n commit(types.PROJECT_SET, project)\r\n return project\r\n })\r\n },\r\n createCurrentNewProject: ({ commit }, project) => {\r\n commit(types.PROJECT_SET_NEW, project)\r\n },\r\n updateCurrentNewProject: ({ commit }, model) => {\r\n commit(types.PROJECT_UPDATE_NEW, model)\r\n return Promise.resolve('')\r\n },\r\n resetCurrentNewProject: ({ commit }) => {\r\n commit(types.PROJECT_RESET_NEW)\r\n },\r\n updateProject: ({ commit }, project) => {\r\n const newProject = Object.assign({}, state.project, project)\r\n commit(types.PROJECT_SET, newProject)\r\n },\r\n async saveProjectWithModel({ rootState }, model) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects`\r\n model.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n if (model.tenders[0]) {\r\n const tender = Object.assign({}, model.tenders[0])\r\n tender.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n model.tenders[0] = tender\r\n }\r\n try {\r\n const response = await api.put(url, model)\r\n const project = response.data.data.projectDTO.values[0]\r\n\r\n return project\r\n } catch (error) {\r\n throw error\r\n }\r\n },\r\n saveProject: ({ dispatch, rootState, commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects`\r\n\r\n model.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n\r\n if (model.tenders[0]) {\r\n const tender = Object.assign({}, model.tenders[0])\r\n tender.Node = { id: (rootState.authCredential.authTenderNode || {}).id || '' } // localStorage.getItem('nodeId')\r\n model.tenders[0] = tender\r\n }\r\n commit(types.GLOBAL_PROJECT_SAVE_SUCCESS, false)\r\n return api\r\n .put(url, model)\r\n .then((response) => {\r\n const project = response.data.data.projectDTO.values[0]\r\n dispatch('setProjectCanSave', false)\r\n dispatch('setLastProjectSave', Date.now())\r\n dispatch('fetchProject', project.id).then(() => {\r\n dispatch('setProjectCanSave', true)\r\n dispatch('setProjectSaveRequired', false)\r\n commit(types.GLOBAL_PROJECT_SAVE_SUCCESS, true)\r\n return project\r\n })\r\n })\r\n .catch((err) => {\r\n dispatch('setProjectCanSave', true)\r\n throw err\r\n })\r\n },\r\n setLastProjectSave: ({ commit }, time) => {\r\n commit(types.PROJECT_SET_LAST_SAVE, time)\r\n },\r\n setProjectCanSave: ({ commit }, canSave) => {\r\n commit(types.PROJECT_CAN_SAVE_SET, canSave)\r\n },\r\n setProjectError: ({ commit }, error) => {\r\n commit(types.PROJECT_ERROR_SET, error)\r\n },\r\n unsetProjectError: ({ commit }, error) => {\r\n commit(types.PROJECT_ERROR_UNSET, error)\r\n },\r\n clearProjectErrors: ({ commit }) => {\r\n commit(types.PROJECT_ERROR_UNSET_ALL)\r\n },\r\n setProjectSaveRequired: ({ commit }, value) => {\r\n commit(types.PROJECT_SET_SAVE_REQUIRED, { projectSaveRequired: value })\r\n },\r\n setProjectBackup: ({ commit }, project) => {\r\n commit(types.PROJECT_BACKUP_SET, project)\r\n },\r\n setProjectLocked: ({ commit }, locked) => {\r\n commit(types.PROJECT_SET_LOCKED, locked)\r\n },\r\n setProjectValidationErrors: ({ commit }, errors) => {\r\n commit(types.PROJECT_VALIDATION_ERROR_SET, errors)\r\n },\r\n setProjectStatus: ({ dispatch }, param) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects/status?projectId=${param.id}&status=${param.status}`\r\n\r\n return api.put(url, state.project).then((response) => {\r\n dispatch('setLastProjectSave', Date.now())\r\n const project = response.data.data.projectDTO.values[0]\r\n dispatch('fetchProject', project.id).then(() => {\r\n dispatch('setProjectSaveRequired', false)\r\n return project\r\n })\r\n })\r\n },\r\n deleteProject: (_, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Projects?projectId=${projectId}`\r\n\r\n return api.delete(url)\r\n },\r\n fetchProjectsProperties: ({ commit }, forceUpdate = false) => {\r\n // when signalr event received to fetch new properties\r\n if (forceUpdate) {\r\n commit(types.PROJECTS_SET_PROJECTSPROPERTIES, [])\r\n }\r\n\r\n // Return cached value if exists\r\n if (state.projectsProperties.length) {\r\n return Promise.resolve(state.projectsProperties)\r\n }\r\n\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Projects/ProjectsProperties'\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.searchResult?.values || []\r\n commit(types.PROJECTS_SET_PROJECTSPROPERTIES, result)\r\n return result\r\n })\r\n },\r\n updateProjectSubmissions: ({ commit }, submissions) => {\r\n commit(types.PROJECT_UPDATE_SUBMISSIONS, submissions)\r\n return Promise.resolve('')\r\n },\r\n updateProjectAddendums: ({ commit }, addendums) => {\r\n commit(types.PROJECT_UPDATE_ADDENDUMS, addendums)\r\n return Promise.resolve('')\r\n },\r\n updateProjectDocument: ({ commit }, document) => {\r\n commit(types.PROJECT_UPDATE_DOCUMENT, document)\r\n return Promise.resolve('')\r\n },\r\n updateProjectPlanTakers: ({ commit }, planTakers) => {\r\n commit(types.PROJECT_UPDATE_PLANTAKERS, planTakers)\r\n return Promise.resolve('')\r\n },\r\n updateProjectSuppliers: ({ commit }, vendor) => {\r\n commit(types.PROJECT_UPDATE_SUPPLIERS, vendor)\r\n return Promise.resolve('')\r\n },\r\n updateProjectVendorQuestions: ({ commit }, vendorQuestions) => {\r\n commit(types.PROJECT_UPDATE_VENDOR_QUESTIONS, vendorQuestions)\r\n return Promise.resolve('')\r\n },\r\n setProjectForceValidateBackDate: ({ commit }, value) => {\r\n commit(types.PROJECT_SET_FORCE_VALIDATE_BACKDATE, { projectForceValidateBackDate: value })\r\n },\r\n setProjectToCopy: ({ commit }, projectToCopy) => {\r\n commit(types.PROJECT_TO_COPY_SET, projectToCopy)\r\n return Promise.resolve('')\r\n },\r\n setProjectToSaveAsTemplate: ({ commit }, projectToSaveAsTemplate) => {\r\n commit(types.PROJECT_TO_SAVE_AS_TEMPLATE_SET, projectToSaveAsTemplate)\r\n return Promise.resolve('')\r\n },\r\n updateProjectAwardPhaseStatus: ({ commit }, status) => {\r\n commit(types.PROJECT_UPDATE_AWARD_PHASE_STATUS, status)\r\n return Promise.resolve('')\r\n },\r\n updateIsClosingDateChanged: ({ commit }, isChanged) => {\r\n commit(types.PROJECT_UPDATE_CLOSING_DATE_CHANGED, isChanged)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.PROJECT_SET_ALL](state, projects) {\r\n state.projects = projects\r\n },\r\n [types.PROJECT_ENDING_SET_ALL](state, projectsEnding) {\r\n state.projectsEnding = projectsEnding\r\n },\r\n [types.MY_PROJECTS_SET_ALL](state, myProjects) {\r\n state.myProjects = myProjects\r\n },\r\n [types.PROJECT_SET_NEW](state, newProject) {\r\n state.newProject = {\r\n ...state.newProject,\r\n ...newProject\r\n }\r\n },\r\n [types.PROJECT_UPDATE_NEW](state, model) {\r\n const newProject = cloneDeep(state.newProject)\r\n\r\n state.newProject = merge(newProject, model)\r\n },\r\n [types.PROJECT_RESET_NEW](state) {\r\n state.newProject = { ...defaultState }\r\n },\r\n [types.PROJECT_SET](state, project) {\r\n // look for any publish or closing dates in the source with a year of 9999 and null them out\r\n if (project && project.tenders && project.tenders.length > 0) {\r\n if (\r\n project.tenders[0].dateAvailableUtc &&\r\n new Date(project.tenders[0].dateAvailableUtc) > new Date(9999, 0)\r\n ) {\r\n project.tenders[0].dateAvailableUtc = null\r\n }\r\n if (\r\n project.tenders[0].dateAvailable &&\r\n new Date(project.tenders[0].dateAvailable) > new Date(9999, 0)\r\n ) {\r\n project.tenders[0].dateAvailable = null\r\n }\r\n if (\r\n project.tenders[0].dateClosingUtc &&\r\n new Date(project.tenders[0].dateClosingUtc) > new Date(9999, 0)\r\n ) {\r\n project.tenders[0].dateClosingUtc = null\r\n }\r\n if (\r\n project.tenders[0].dateClosing &&\r\n new Date(project.tenders[0].dateClosing) > new Date(9999, 0)\r\n ) {\r\n project.tenders[0].dateClosing = null\r\n }\r\n }\r\n state.project = project\r\n },\r\n [types.PROJECT_ERROR_SET](state, error) {\r\n if (state.projectErrors.indexOf(error) === -1) {\r\n state.projectErrors.push(error)\r\n }\r\n },\r\n [types.PROJECT_ERROR_UNSET](state, error) {\r\n const index = state.projectErrors.indexOf(error)\r\n if (index !== -1) {\r\n state.projectErrors.splice(index, 1)\r\n }\r\n },\r\n [types.PROJECT_ERROR_UNSET_ALL](state) {\r\n state.projectErrors = []\r\n },\r\n [types.PROJECT_SET_SAVE_REQUIRED](state, { projectSaveRequired }) {\r\n state.projectSaveRequired = projectSaveRequired\r\n },\r\n [types.PROJECT_BACKUP_SET](state, project) {\r\n state.projectBackup = project\r\n },\r\n [types.PROJECT_SET_LAST_SAVE](state, date) {\r\n state.lastProjectSave = date\r\n },\r\n [types.PROJECT_SET_LOCKED](state, locked) {\r\n state.projectLocked = locked\r\n },\r\n [types.PROJECT_VALIDATION_ERROR_SET](state, errors) {\r\n state.projectValidationErrors = errors\r\n },\r\n [types.PROJECT_UPDATE_SUBMISSIONS](state, submissions) {\r\n if (submissions && submissions.length > 0) {\r\n submissions.forEach((updatedSub) => {\r\n const submittedPlantakers = state.project.tenders[0].planTakers.filter(\r\n (pt) => (pt.id = updatedSub.planTaker.id)\r\n )\r\n\r\n submittedPlantakers.forEach((matchedPlantaker) => {\r\n matchedPlantaker.submissionStatus = updatedSub.planTaker.submissionStatus\r\n })\r\n\r\n // look for any plantaker submissions with the affected submission\r\n const matchedPlantakers = state.project.tenders[0].planTakers.filter(\r\n (pt) =>\r\n (pt.planTakerSubmissions &&\r\n pt.planTakerSubmissions.some(\r\n (pts) => pts.submission && pts.submission.id === updatedSub.id\r\n )) ||\r\n (pt.sumissions &&\r\n pt.sumissions &&\r\n pt.sumissions.some((pts) => pts.id === updatedSub.id))\r\n )\r\n\r\n matchedPlantakers.forEach((matchedPlantaker) => {\r\n const matchedPtSubIndex = matchedPlantaker.planTakerSubmissions.findIndex(\r\n (pts) => pts.submission && pts.submission.id === updatedSub.id\r\n )\r\n\r\n if (matchedPtSubIndex === 0) {\r\n // there should only ever be one\r\n matchedPlantaker.planTakerSubmissions = null\r\n } else {\r\n const err = 'Mismatched plantaker submission id on submission update'\r\n throw err\r\n }\r\n\r\n const matchedSubIndex = matchedPlantaker.submissions.findIndex(\r\n (sub) => sub.id === updatedSub.id\r\n )\r\n\r\n if (matchedSubIndex !== -1) {\r\n matchedPlantaker.submissions.splice(matchedSubIndex, 1)\r\n matchedPlantaker.submissions.push(updatedSub)\r\n } else {\r\n const err = 'Mismatched submission id on submission update'\r\n throw err\r\n }\r\n })\r\n })\r\n }\r\n },\r\n [types.PROJECT_UPDATE_ADDENDUMS](state, addendums) {\r\n state.project.tenders[0].addendums = addendums\r\n },\r\n [types.PROJECT_UPDATE_DOCUMENT](state, document) {\r\n state.project.tenders[0].document = document\r\n },\r\n [types.PROJECT_UPDATE_PLANTAKERS](state, planTakers) {\r\n state.project.tenders[0].planTakers = planTakers\r\n state.project.tenders[0].awardedPlanTakers = []\r\n\r\n for (let i = 0; i < planTakers.length; i++) {\r\n if (\r\n planTakers[i].planTakerSubmissions != null &&\r\n planTakers[i].planTakerSubmissions.filter((r) => r.awarded).length > 0\r\n ) {\r\n state.project.tenders[0].awardedPlanTakers.push(\r\n planTakers[i].planTakerSubmissions.filter((r) => r.awarded)[0]\r\n )\r\n }\r\n }\r\n },\r\n [types.PROJECT_UPDATE_SUPPLIERS](state, vendor) {\r\n if (!state.project.contracts[0].vendors) {\r\n state.project.contracts[0].vendors = []\r\n }\r\n\r\n const matchedIndex = state.project.contracts[0].vendors.findIndex((v) => v.id === vendor.id)\r\n if (matchedIndex !== -1) {\r\n // pop it off the array and push a new one so that it triggers a recalc on the ui\r\n state.project.contracts[0].vendors.splice(matchedIndex, 1)\r\n state.project.contracts[0].vendors.push(vendor)\r\n } else {\r\n state.project.contracts[0].vendors.push(vendor)\r\n }\r\n },\r\n [types.PROJECT_UPDATE_VENDOR_QUESTIONS](state, vendorQuestions) {\r\n state.project.tenders[0].vendorQuestions = cloneDeep(vendorQuestions)\r\n },\r\n [types.PROJECT_SET_FETCH_STATUS](state, status) {\r\n state.fetchingProject = status\r\n },\r\n [types.PROJECT_CAN_SAVE_SET](state, canSave) {\r\n state.projectCanSave = canSave\r\n },\r\n [types.PROJECT_SET_FORCE_VALIDATE_BACKDATE](state, { projectForceValidateBackDate }) {\r\n state.projectForceValidateBackDate = projectForceValidateBackDate\r\n },\r\n [types.PROJECT_TO_COPY_SET](state, projectToCopy) {\r\n state.projectToCopy = projectToCopy\r\n },\r\n [types.PROJECT_TO_SAVE_AS_TEMPLATE_SET](state, projectToSaveAsTemplate) {\r\n state.projectToSaveAsTemplate = projectToSaveAsTemplate\r\n },\r\n [types.PROJECTS_SET_PROJECTSPROPERTIES](state, projectsProperties) {\r\n state.projectsProperties = projectsProperties\r\n },\r\n [types.PROJECT_UPDATE_AWARD_PHASE_STATUS](state, status) {\r\n state.project.awards[0].status = status\r\n },\r\n [types.GLOBAL_PROJECT_SAVE_SUCCESS](state, success) {\r\n state.globalSaveSuccess = success\r\n },\r\n [types.PROJECT_UPDATE_CLOSING_DATE_CHANGED](state, isChanged) {\r\n state.isClosingDateChanged = isChanged\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n projectComments: [],\r\n userProjectComments: []\r\n}\r\n\r\nexport const getters = {\r\n getProjectComments: (state) => state.projectComments,\r\n getUserProjectComments: (state) => state.userProjectComments\r\n}\r\n\r\nexport const actions = {\r\n saveProjectComment(_, model) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectComments`\r\n return api.post(url, model).then((response) => response.data.data.projectCommentDTO.values[0])\r\n },\r\n fetchProjectComments: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectComments?projectId=${projectId}`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.projectCommentDTO.values\r\n commit(types.PROJECT_COMMENT_SET_ALL, result)\r\n return result\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.PROJECT_COMMENT_SET_ALL, null)\r\n throw err\r\n })\r\n },\r\n fetchUserProjectComments: ({ commit }, params) => {\r\n let url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectComments/Dashboard?`\r\n if (params.filter && params.filter.length > 0) {\r\n url += `,${params.filter}`\r\n }\r\n url += `filter.limit=${params.limit}&filter.start=${params.start}&filter.searchText=${\r\n params.keywords\r\n }&filter.dateFrom=${\r\n params.dateFrom ? new Date(params.dateFrom).toISOString() : ''\r\n }&filter.dateTo=${params.dateTo ? new Date(params.dateTo).toISOString() : ''}`\r\n if (params.status && params.status.length > 0) {\r\n url += `&status=${params.status}`\r\n }\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.projectCommentDTO.values\r\n commit(types.USER_PROJECT_COMMENT_SET_ALL, result)\r\n return result\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.USER_PROJECT_COMMENT_SET_ALL, null)\r\n throw err\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PROJECT_COMMENT_SET_ALL](state, projectComments) {\r\n state.projectComments = projectComments\r\n },\r\n [types.USER_PROJECT_COMMENT_SET_ALL](state, projectComments) {\r\n state.userProjectComments = projectComments\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport findIndex from 'lodash/findIndex'\r\nimport * as types from './../../mutation-types.js'\r\n\r\nexport const state = {\r\n entries: []\r\n}\r\n\r\nexport const getters = {\r\n getProjectJournalEntries: (state) => state.entries\r\n}\r\n\r\nexport const actions = {\r\n fetchProjectJournalEntries: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournals/All?projectId=${projectId}`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const entries = response.data.data.projectJournalDTO.values\r\n commit(types.PROJECT_JOURNAL_ENTRY_SET_ALL, entries)\r\n return entries\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.PROJECT_JOURNAL_ENTRY_SET_ALL, null)\r\n throw err\r\n })\r\n },\r\n addNewProjectJournalEntry: ({ commit }, newEntry) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournals`\r\n return api.post(url, newEntry).then((response) => {\r\n const projectJournal = response.data.data.projectJournalDTO.values[0]\r\n commit(types.PROJECT_JOURNAL_ENTRY_SET, projectJournal)\r\n return projectJournal\r\n })\r\n },\r\n setNewEntry: ({ commit }, entry) => {\r\n commit('tempAddEntry', entry)\r\n return Promise.resolve(state.entries)\r\n },\r\n setEntryPinned: ({ commit }, projectJournal) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournals/Pinned`\r\n return api.post(url, projectJournal).then(() => {\r\n const { id, pinned } = projectJournal\r\n const index = findIndex(state.entries, { id })\r\n const entry = cloneDeep(state.entries[index])\r\n entry.pinned = pinned\r\n commit('updateEntryPinned', { index, entry })\r\n return { index, entry }\r\n })\r\n },\r\n updateProjectJournalEntry: ({ commit, state }, entry) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournals`\r\n return api.put(url, entry).then((response) => {\r\n const projectJournal = response.data.data.projectJournalDTO.values[0]\r\n const { id } = projectJournal\r\n const index = findIndex(state.entries, { id })\r\n const entry = cloneDeep(state.entries[index])\r\n\r\n entry.note = projectJournal.note\r\n commit('updateEntryContent', { index, entry })\r\n return [index, entry]\r\n })\r\n },\r\n addProjectJournalEntryComment: ({ commit, state }, { id, model }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournalComments`\r\n return api.post(url, model).then((response) => {\r\n const comment = response.data.data.projectJournalCommentDTO.values[0]\r\n const index = findIndex(state.entries, { id: id })\r\n\r\n commit(types.PROJECT_JOURNAL_ENTRY_COMMENT_ADD, { index, comment })\r\n return [index, comment]\r\n })\r\n },\r\n deleteProjectJournalEntry: ({ commit }, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournals?projectJournalId=${id}`\r\n return api.delete(url).then(() => {\r\n commit('tempRemoveEntry', id)\r\n return ''\r\n })\r\n },\r\n deleteProjectJournalComment: ({ commit }, { projectJournalId, commentId }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournalComments?projectJournalCommentId=${commentId}`\r\n return api.delete(url).then(() => {\r\n const index = findIndex(state.entries, { id: projectJournalId })\r\n commit('tempRemoveComment', { index, commentId })\r\n return ''\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.PROJECT_JOURNAL_ENTRY_SET_ALL]: (state, entries) => {\r\n state.entries = entries\r\n },\r\n [types.PROJECT_JOURNAL_ENTRY_SET]: (state, { index, entry }) => {\r\n state.entries[index] = entry\r\n },\r\n [types.PROJECT_JOURNAL_ENTRY_COMMENT_ADD]: (state, { index, comment }) => {\r\n state.entries[index].comments.unshift(comment)\r\n },\r\n updateEntryContent: (state, { index, entry }) => {\r\n const { note } = entry\r\n state.entries[index].note = note\r\n },\r\n updateEntryPinned: (state, { index, entry }) => {\r\n state.entries[index].pinned = entry.pinned\r\n },\r\n tempAddEntry: (state, entry) => {\r\n if (entry.comments === null) {\r\n entry.comments = []\r\n }\r\n state.entries.unshift(entry)\r\n },\r\n tempRemoveEntry: (state, entry) => {\r\n const entries = state.entries.filter((e) => e.id !== entry)\r\n\r\n state.entries = entries\r\n },\r\n tempRemoveComment: (state, { index, commentId }) => {\r\n const comments = state.entries[index].comments.filter((c) => c.id !== commentId)\r\n\r\n state.entries[index].comments = comments\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { uploadApi } from '@/api/api'\r\n\r\nexport const actions = {\r\n createProjectJournalDocument: (_, model) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/ProjectJournalDocuments'\r\n return uploadApi\r\n .post(url, model)\r\n .then((response) => response.data.data.projectJournalDocumentDTO.values[0])\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n actions\r\n}\r\n","import { api } from '@/api/api'\r\nimport { NotAllowedError, NotFoundError } from '@/utils/error'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n savedSearchFilters: null,\r\n projectSearchFilters: null,\r\n projectSearchColumns: null,\r\n searchSaved: false,\r\n savedProjectSearches: [],\r\n currentSavedSearchId: null,\r\n currentSavedSearchFilters: [],\r\n currentActiveSearch: null,\r\n searchFilterEnabled: false\r\n}\r\n\r\nconst getters = {\r\n getSavedSearchFilters: (state) => state.savedSearchFilters,\r\n getProjectSearchFilters: (state) => state.projectSearchFilters,\r\n getProjectSearchColumns: (state) => state.projectSearchColumns,\r\n getProjectSearchSaved: (state) => state.searchSaved,\r\n getSavedProjectSearches: (state) => state.savedProjectSearches,\r\n getCurrentActiveSearch: (state) => state.currentActiveSearch,\r\n getSearchFilterEnabled: (state) => state.searchFilterEnabled\r\n}\r\n\r\nconst actions = {\r\n updateSavedSearchFilters: ({ commit, dispatch }, filters) => {\r\n const clonedFilters = cloneDeep(filters)\r\n commit(types.SAVED_SEARCH_FILTERS_SET, clonedFilters)\r\n dispatch('updateProjectSearchSaved', true)\r\n return Promise.resolve('')\r\n },\r\n updateProjectSearchFilters: ({ commit }, filters) => {\r\n const clonedFilters = cloneDeep(filters)\r\n commit(types.PROJECT_SEARCH_FILTERS_SET, clonedFilters)\r\n return Promise.resolve('')\r\n },\r\n updateProjectSearchColumns: ({ commit }, columns) => {\r\n const clonedColumns = cloneDeep(columns)\r\n commit(types.PROJECT_SEARCH_COLUMNS_SET, clonedColumns)\r\n return Promise.resolve('')\r\n },\r\n updateProjectSearchSaved: ({ commit }, saved) => {\r\n commit(types.PROJECT_SEARCH_SAVED_SET, saved)\r\n },\r\n fetchSavedProjectSearches: ({ dispatch }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/SavedSearchCriteria?type=Project`\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.savedSearchCriteriaDTO.values\r\n const parsedSearches = result\r\n return dispatch('setSavedProjectSearches', parsedSearches).then((result) => [null, result])\r\n }\r\n })\r\n },\r\n /**\r\n * fetch searches: sets store searches\r\n * return [error, searchresults]\r\n */\r\n\r\n // clear saved searches from memory\r\n clearSavedProjectSearches: ({ commit }) => {\r\n commit(types.SAVED_PROJECT_SEARCH_SET_ALL, [])\r\n },\r\n\r\n setSavedProjectSearches: ({ commit }, searches) => {\r\n commit(types.SAVED_PROJECT_SEARCH_SET_ALL, searches)\r\n return new Promise((resolve) => {\r\n resolve(searches)\r\n })\r\n },\r\n saveCurrentSearch: ({ getters }, model) => {\r\n const idtl = model.name.toLowerCase()\r\n const searches = cloneDeep(getters.getSavedProjectSearches)\r\n if (model.id === null && searches.find((x) => x.name.toLowerCase() === idtl)) {\r\n return new Promise((resolve) => {\r\n resolve([new NotAllowedError(`Saved search \"${idtl}\" already exists`), null])\r\n })\r\n }\r\n if (\r\n model.id !== null &&\r\n searches.find((x) => x.name.toLowerCase() === idtl && x.id !== model.id)\r\n ) {\r\n return new Promise((resolve) => {\r\n resolve([new NotAllowedError(`Saved search \"${idtl}\" already exists`), null])\r\n })\r\n }\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/SavedSearchCriteria`\r\n return api.post(url, model).then((response) => {\r\n const savedsearchCriteria = response.data\r\n return [null, savedsearchCriteria]\r\n })\r\n },\r\n setCurrentActiveSearch({ commit, getters }, search) {\r\n const idtl = search\r\n // get searches, clone\r\n const searches = cloneDeep(getters.getSavedProjectSearches)\r\n if (searches.find((x) => x === search)) {\r\n return [new NotFoundError(), null]\r\n }\r\n\r\n commit(types.SAVED_SEARCH_SET_ACTIVE, idtl)\r\n return [null, idtl]\r\n },\r\n\r\n clearCurrentActiveSearch({ commit }) {\r\n commit(types.SAVED_SEARCH_SET_ACTIVE, null)\r\n return [null, null]\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.SAVED_SEARCH_FILTERS_SET](state, filters) {\r\n state.savedSearchFilters = filters\r\n },\r\n [types.PROJECT_SEARCH_FILTERS_SET](state, filters) {\r\n state.projectSearchFilters = filters\r\n },\r\n [types.PROJECT_SEARCH_COLUMNS_SET](state, columns) {\r\n state.projectSearchColumns = columns\r\n },\r\n [types.PROJECT_SEARCH_FILTERS_ACTIVE_SET](state, isActive) {\r\n state.searchFilterEnabled = isActive\r\n },\r\n [types.PROJECT_SEARCH_SAVED_SET](state, saved) {\r\n state.searchSaved = saved\r\n },\r\n\r\n [types.SAVED_PROJECT_SEARCH_SET_ALL](state, searches) {\r\n state.savedProjectSearches = searches\r\n },\r\n [types.SAVED_SEARCH_SET_ACTIVE](state, search) {\r\n state.currentActiveSearch = search\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n projectTasks: [],\r\n projectTasksbyUser: []\r\n}\r\n\r\nexport const getters = {\r\n getProjectTasks: (state) => state.projectTasks,\r\n getProjectTasksbyUser: (state) => state.projectTasksbyUser\r\n}\r\n\r\nexport const actions = {\r\n fetchProjectTasks: ({ commit }, projectId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectTask?projectId=${projectId}`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.projectTaskDTO.values\r\n commit(types.PROJECT_TASK_SET_ALL, result)\r\n return new Promise(function (resolve) {\r\n resolve(result)\r\n })\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.PROJECT_TASK_SET_ALL, null)\r\n throw err\r\n })\r\n },\r\n saveProjectTask: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectTask`\r\n return api.post(url, model).then((response) => response.data.data.projectTaskDTO.values[0])\r\n },\r\n fetchProjectTasksByUser: ({ commit }, userId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ProjectTask/GetByUser?userId=${userId}&dueDays=15`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const result = response.data.data.projectTaskDTO.values\r\n commit(types.PROJECT_TASK_SET_ALL_BY_USER, result)\r\n return result\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.PROJECT_TASK_SET_ALL_BY_USER, null)\r\n throw err\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.PROJECT_TASK_SET_ALL](state, projectTasks) {\r\n state.projectTasks = projectTasks\r\n },\r\n\r\n [types.PROJECT_TASK_SET_ALL_BY_USER](state, projectTasksbyUser) {\r\n state.projectTasksbyUser = projectTasksbyUser\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n questionTemplates: []\r\n}\r\nexport const getters = {\r\n getQuestionTemplates: (state) => state.questionTemplates\r\n}\r\nexport const actions = {\r\n fetchQuestionTemplate: ({ commit }, group) => {\r\n if (!group) {\r\n commit(types.QUESTION_TEMPLATES_SET_ALL, [])\r\n return\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n\r\n commit(types.QUESTION_TEMPLATES_SET_ALL, templates)\r\n return res\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.QUESTION_TEMPLATES_SET_ALL]: (state, templates) => {\r\n state.questionTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n securityTemplates: []\r\n}\r\nexport const getters = {\r\n getSecurityTemplates: (state) => state.securityTemplates\r\n}\r\nexport const actions = {\r\n fetchSecurityTemplate: ({ commit }, group) => {\r\n if (!group) {\r\n commit(types.SECUITY_TEMPLATES_SET_ALL, [])\r\n return\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n commit(types.SECUITY_TEMPLATES_SET_ALL, templates)\r\n return res\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.SECUITY_TEMPLATES_SET_ALL]: (state, templates) => {\r\n state.securityTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n tax: [],\r\n taxes: []\r\n}\r\n\r\nexport const getters = {\r\n getTax: (state) => state.tax,\r\n getTaxes: (state) => state.taxes\r\n}\r\n\r\nexport const actions = {\r\n fetchTax: ({ commit }, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ShoppingCart/Tax?tenderId=${id}`\r\n\r\n return api.get(url).then((response) => {\r\n const tax = response.data.data.searchResult.values\r\n\r\n commit(types.TAX_SET_ALL, tax)\r\n return tax\r\n })\r\n },\r\n fetchTaxes: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/ShoppingCart/Taxes`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const tax = response.data.data.searchResult.values\r\n\r\n commit(types.TAXES_SET_ALL, tax)\r\n return tax\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.TAX_SET_ALL](state, tax) {\r\n state.tax = tax\r\n },\r\n [types.TAXES_SET_ALL](state, taxes) {\r\n state.taxes = taxes\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n term: [],\r\n terms: []\r\n}\r\n\r\nexport const getters = {\r\n getTerm: (state) => state.term,\r\n getTerms: (state) => state.terms\r\n}\r\n\r\nexport const actions = {\r\n fetchTerm: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Term/Search`\r\n\r\n return api.get(url).then((response) => {\r\n const term = response.data.data.termDTO.values\r\n\r\n commit(types.TERM_SET_ALL, term)\r\n return term\r\n })\r\n },\r\n fetchTerms: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Term/All`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const terms = response.data.data.termDTO.values\r\n commit(types.TERMS_SET_ALL, terms)\r\n return terms\r\n }\r\n })\r\n },\r\n saveTerm: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Term`\r\n return api.post(url, model).then((response) => {\r\n const term = response.data.data.termDTO.values[0]\r\n commit(types.TERM_SET_ALL, term)\r\n return term\r\n })\r\n },\r\n updateTerm: ({ commit }, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Term`\r\n return api.put(url, model).then((response) => {\r\n const term = response.data.data.termDTO.values[0]\r\n commit(types.TERM_SET_ALL, term)\r\n return new Promise((resolve) => {\r\n resolve(term)\r\n })\r\n })\r\n },\r\n deleteTerm: (_, id) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Term?termId=${id}`\r\n return api.delete(url)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.TERM_SET_ALL](state, term) {\r\n state.term = term\r\n },\r\n [types.TERMS_SET_ALL](state, terms) {\r\n state.terms = terms\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi } from '@/api/api'\r\nimport { projectSearchApi } from '@/composables/api/projectSearchApi'\r\nimport { useStore } from '@/store'\r\nimport dayjs from '@/utils/dayjs'\r\nimport util from '@/utils/utility.js'\r\nimport axios from 'axios'\r\n\r\nfunction IntakeService(config) {\r\n const store = useStore()\r\n\r\n const accessHeaders = {\r\n 'Content-Type': 'application/json'\r\n }\r\n if (import.meta.env.MODE === 'development' || import.meta.env.VITE_IS_LOCAL) {\r\n accessHeaders.externalaccessapikey = import.meta.env.VITE_ACCESS_API_KEY\r\n }\r\n const uploadApiMultipartHeaders = {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n\r\n const accessApi = axios.create({\r\n baseURL: store.getters.apiRoot,\r\n // 5 minutes\r\n timeout: 300000,\r\n withCredentials: true,\r\n headers: accessHeaders\r\n })\r\n\r\n const uploadApi = axios.create({\r\n baseURL: store.getters.apiRoot,\r\n timeout: 1800000,\r\n contentType: false,\r\n withCredentials: true,\r\n processData: false,\r\n headers: uploadApiMultipartHeaders\r\n })\r\n\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n })\r\n function IsCustomerNodeAssigned() {\r\n const customerId = config?.customerId\r\n const nodeId = config?.nodeId\r\n\r\n return customerId && nodeId\r\n }\r\n\r\n function mapIntakePutData(data) {\r\n const { contactDetails, projectDetail, financialDetails } = data\r\n const mappedData = {\r\n contactDetails: {\r\n ...contactDetails\r\n },\r\n projectDetail: {\r\n ...projectDetail,\r\n categories: projectDetail.categoryIds,\r\n supplierIds: projectDetail.supplierEmails\r\n },\r\n financialDetails: {\r\n ...financialDetails\r\n }\r\n }\r\n\r\n return mappedData\r\n }\r\n\r\n function mapIntakeFetchData(data) {\r\n return {\r\n contactDetails: {\r\n firstName: data.firstName,\r\n lastName: data.lastName,\r\n email: data.email,\r\n departmentId: data.departmentId,\r\n divisionId: data.divisionId,\r\n procurementLeadId: data.procurementLeadId,\r\n consultant: {\r\n FirstName: data.consultantFirstName,\r\n LastName: data.consultantLastName,\r\n Email: data.consultantEmail\r\n }\r\n },\r\n projectDetail: {\r\n projectName: data.projectName,\r\n classification: data.classification,\r\n description: data.description,\r\n bidType: data.bidType,\r\n applyToProject: data.applyToProject,\r\n categoryIds: data.intakeRequestCategoryIds,\r\n isSiteVisit: data.isSiteVisit,\r\n locations: data.intakeRequestLocations,\r\n estimatedPostingDate: data.estimatedPostingDate,\r\n deliveryConstructionStartDate: data.deliveryConstructionStartDate,\r\n supplierEmails: data.supplierEmails,\r\n documents: data.documents,\r\n status: data.status,\r\n declineReason: data.declinedReason,\r\n dateCreatedUtc: data.dateCreatedUtc,\r\n modifiedByUserId: data.modifiedByUserId,\r\n dateModifiedUtc: data.dateModifiedUtc\r\n },\r\n financialDetails: {\r\n projectBudget: formatter.format(data.projectBudget),\r\n estimatedTotalProjectValue: formatter.format(data.estimatedTotalProjectValue)\r\n }\r\n }\r\n }\r\n\r\n function mapIntakePostData(data) {\r\n const baseIntakeRequest = {\r\n contactDetails: {\r\n firstName: null,\r\n lastName: null,\r\n email: null,\r\n departmentId: null,\r\n divisionId: null,\r\n procurementLeadId: null,\r\n consultant: null\r\n },\r\n projectDetail: {\r\n projectName: null,\r\n classification: null,\r\n description: null,\r\n bidType: null,\r\n applyToProject: null,\r\n categories: [],\r\n isSiteVisit: false,\r\n locations: [],\r\n estimatedPostingDate: null,\r\n deliveryConstructionStartDate: null,\r\n supplierEmails: null,\r\n documentIds: [],\r\n status: 1\r\n },\r\n financialDetails: {\r\n projectBudget: 0,\r\n estimatedTotalProjectValue: 0\r\n }\r\n }\r\n\r\n delete data.projectDetail.documents\r\n\r\n const mappedData = {\r\n ...baseIntakeRequest,\r\n ...data\r\n }\r\n\r\n // correction\r\n if (mappedData.contactDetails.consultant === false) {\r\n mappedData.contactDetails.consultant = null\r\n }\r\n mappedData.projectDetail.documentIds.forEach((doc) => {\r\n doc.displayName = decodeURIComponent(doc.displayName)\r\n })\r\n\r\n return mappedData\r\n }\r\n\r\n function MapIntakePendingRequests(data) {\r\n const fields = [\r\n 'id',\r\n 'dateCreatedUtc',\r\n 'projectName',\r\n 'firstName',\r\n 'lastName',\r\n 'procurementLead',\r\n 'department',\r\n 'bidType',\r\n 'classification',\r\n 'estimatedPostingDate',\r\n 'deliveryConstructionStartDate',\r\n 'projectBudget',\r\n 'estimatedTotalProjectValue',\r\n 'status',\r\n 'dateModifiedUtc'\r\n ]\r\n\r\n const mappedData = data.map((item) => ({\r\n ...fields.reduce((acc, field) => {\r\n acc[field] =\r\n typeof item[field] === 'object' && item[field]?.name ? item[field].name : item[field]\r\n return acc\r\n }, {}),\r\n requester: `${item.firstName} ${item.lastName}`,\r\n dateCreatedUtc:\r\n item.dateCreatedUtc !== null ? dayjs(item.dateCreatedUtc).format('MMMM DD, YYYY') : 'N/A',\r\n estimatedPostingDate:\r\n item.estimatedPostingDate !== null\r\n ? dayjs(item.estimatedPostingDate).format('MMMM DD, YYYY')\r\n : 'N/A',\r\n deliveryConstructionStartDate:\r\n item.deliveryConstructionStartDate !== null\r\n ? dayjs(item.deliveryConstructionStartDate).format('MMMM DD, YYYY')\r\n : 'N/A',\r\n estimatedTotalProjectValue:\r\n item.estimatedTotalProjectValue !== null\r\n ? `$${item.estimatedTotalProjectValue.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}`\r\n : 'N/A',\r\n projectBudget:\r\n item.projectBudget !== null\r\n ? `$${item.projectBudget.toLocaleString('en-US', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n })}`\r\n : 'N/A'\r\n }))\r\n\r\n return mappedData\r\n }\r\n\r\n async function getIntakeGuide() {\r\n if (!IsCustomerNodeAssigned()) {\r\n return Promise.reject('customerId and nodeId are required')\r\n }\r\n\r\n const intakeGuideUrl = `api/intake/guide?customerId=${config.customerId}&nodeId=${config.nodeId}`\r\n\r\n try {\r\n const response = await accessApi.get(intakeGuideUrl)\r\n\r\n return response.data\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function getIntakeContextData() {\r\n if (!IsCustomerNodeAssigned()) {\r\n return Promise.reject('customerId and nodeId are required')\r\n }\r\n\r\n const intakeContextUrl = `api/intake/context?customerId=${config.customerId}&nodeId=${config.nodeId}`\r\n\r\n try {\r\n const response = await accessApi.get(intakeContextUrl) // return {categories, departments, divisions, procurementLeads}\r\n\r\n return { ...response.data }\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function getIntakeProjectData(intakeId) {\r\n const intakeProjectUrl = `api/intake/${intakeId}`\r\n const { data, status } = await api.get(intakeProjectUrl)\r\n return { data: mapIntakeFetchData(data), status }\r\n }\r\n\r\n async function getIntakeProjectDataModifier(intakeId) {\r\n const intakeProjectUrl = `api/intake/getIntakeModifiedUser/${intakeId}`\r\n const { data, status } = await api.get(intakeProjectUrl)\r\n return { data: data, status }\r\n }\r\n async function postIntakeData(data) {\r\n if (!IsCustomerNodeAssigned()) {\r\n return Promise.reject('customerId and nodeId are required')\r\n }\r\n const mappedData = mapIntakePostData(data)\r\n\r\n const intakePostUrl = `api/intake?customerId=${config.customerId}&nodeId=${config.nodeId}`\r\n mappedData.projectDetail.estimatedPostingDate = dayjs(\r\n mappedData.projectDetail.estimatedPostingDate\r\n ).format('YYYY-MM-DD')\r\n mappedData.projectDetail.deliveryConstructionStartDate = dayjs(\r\n mappedData.projectDetail.deliveryConstructionStartDate\r\n ).format('YYYY-MM-DD')\r\n try {\r\n const response = await accessApi.post(intakePostUrl, mappedData)\r\n return response.data\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function approveDeclineIntakeProject(intakeId, status, reason) {\r\n const intakeProjectUrl = `api/intake/approvedeclineintake`\r\n try {\r\n const mappedData = {\r\n IntakeRequestId: intakeId,\r\n Status: status,\r\n Reason: reason\r\n }\r\n const response = await accessApi.put(intakeProjectUrl, mappedData)\r\n return response\r\n } catch (err) {\r\n // handle error from api\r\n throw err\r\n }\r\n }\r\n\r\n async function updateIntakeProject(intakeId, updatedIntakeProject) {\r\n const intakeProjectUrl = `api/intake/?intakeRequestId=${intakeId}&nodeId={nodeId}&customerId={customerId}`\r\n const mappedData = mapIntakePutData(updatedIntakeProject)\r\n const response = await api.put(intakeProjectUrl, mappedData)\r\n return response\r\n }\r\n\r\n async function uploadIntakeDocuments(documents) {\r\n const response = await uploadApi.post('/intake/documents', documents)\r\n\r\n return response\r\n }\r\n\r\n async function getIntakeRequests({ status }) {\r\n const intakePendingRequestsUrl = `api/intake/intakeRequests?nodeId=${config.nodeId}&status=${status}`\r\n\r\n // endpoint is returning a LOT of info.\r\n // Limit to what's needed (or remove these and get everything)\r\n\r\n try {\r\n const { data } = await accessApi.get(intakePendingRequestsUrl)\r\n if (status === 1) {\r\n // status 1 is pending\r\n return MapIntakePendingRequests(data)\r\n }\r\n return data\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function downloadPdf(intakeId) {\r\n const url = `api/intake/${intakeId}/download`\r\n\r\n return await downloadApi.get(url).then(util.forceFileDownload)\r\n }\r\n\r\n async function getIntakeRequesters() {\r\n try {\r\n const { data } = await accessApi.get(`api/intake/requesters?nodeId=${config.nodeId}`)\r\n return data\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function getSearchResults(params = {}) {\r\n const url = `api/intake/search?nodeId=${config.nodeId}`\r\n\r\n const filter = projectSearchApi().buildSearchFilters(params)\r\n\r\n const modifiedCriteriaForApi = projectSearchApi().getModifiedFiltersForApi(\r\n filter.searchCriteria\r\n )\r\n\r\n const response = await accessApi.post(url, {\r\n ...filter,\r\n searchCriteria: modifiedCriteriaForApi\r\n })\r\n\r\n return { data: response?.data?.data?.searchResult?.values || [] }\r\n }\r\n\r\n async function getIntakeToken({ fileName, intakeId }) {\r\n const url = `api/intake/token?intakeId=${intakeId}&fileName=${fileName}`\r\n\r\n const response = await accessApi.get(url)\r\n return response.data\r\n }\r\n\r\n return {\r\n accessApi,\r\n getIntakeContextData,\r\n getIntakeGuide,\r\n getIntakeToken,\r\n postIntakeData,\r\n uploadIntakeDocuments,\r\n getIntakeProjectData,\r\n getIntakeProjectDataModifier,\r\n updateIntakeProject,\r\n approveDeclineIntakeProject,\r\n getIntakeRequests,\r\n downloadPdf,\r\n getIntakeRequesters,\r\n getSearchResults\r\n }\r\n}\r\n\r\nexport default IntakeService\r\n","export const projectClassifications = [\r\n 'Goods',\r\n 'Services',\r\n 'Construction',\r\n 'Services related to goods'\r\n]\r\n\r\nexport const sourceLabels = {\r\n EMERGENCY: 'Emergency',\r\n SINGLE_SOURCE: 'Single Source',\r\n SOLE_SOURCE: 'Sole Source',\r\n NONE: 'Not Applicable'\r\n}\r\nexport const bidTypes = [\r\n {\r\n id: 1,\r\n label: 'Request for proposal (RFP)'\r\n },\r\n {\r\n id: 2,\r\n label: 'Request for quotation (RFQ)'\r\n },\r\n {\r\n id: 3,\r\n label: 'Request for information (RFI)'\r\n },\r\n {\r\n id: 4,\r\n label: 'Tender'\r\n }\r\n]\r\n\r\nexport const baseProjectDetailsModel = {\r\n projectName: '',\r\n classification: '',\r\n dateCreatedUtc: null,\r\n modifiedByUserId: null,\r\n dateModifiedUtc: null,\r\n declineReason: null,\r\n description: '',\r\n bidType: null,\r\n applyToProject: null,\r\n categories: [],\r\n isSiteVisit: null,\r\n locations: [],\r\n estimatedPostingDate: null,\r\n deliveryConstructionStartDate: null,\r\n supplierEmails: '',\r\n documents: [],\r\n status: 1\r\n}\r\nexport const baseContactDetailsModel = {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n departmentId: null,\r\n divisionId: null,\r\n procurementLeadId: null,\r\n consultant: {\r\n FirstName: null,\r\n LastName: null,\r\n Email: null\r\n }\r\n}\r\nexport const baseProjectValueModel = {\r\n projectBudget: null,\r\n estimatedTotalProjectValue: null\r\n}\r\n","import IntakeService from '@/services/intake/intake.service'\r\nimport * as types from '@/store/mutation-types'\r\n\r\nimport {\r\n baseContactDetailsModel,\r\n baseProjectDetailsModel,\r\n baseProjectValueModel,\r\n projectClassifications,\r\n sourceLabels\r\n} from './intakeStoreConstants.js'\r\n\r\nconst state = () => ({\r\n projectClassifications,\r\n sourceLabels,\r\n intakeProjectData: {\r\n id: null,\r\n nodeId: null,\r\n contactDetails: {\r\n ...baseContactDetailsModel\r\n },\r\n projectDetail: {\r\n ...baseProjectDetailsModel\r\n },\r\n financialDetails: {\r\n ...baseProjectValueModel\r\n }\r\n },\r\n intakePendingRequests: [],\r\n newProjectData: null,\r\n requesters: [],\r\n intakeProjects: []\r\n})\r\n\r\nconst getters = {\r\n getIntakeProjectData: (state) => state.intakeProjectData,\r\n getIntakeContactDetails: (state) => state.intakeProjectData.contactDetails,\r\n getIntakeProjectDetails: (state) => state.intakeProjectData.projectDetail,\r\n getIntakeFinancialDetails: (state) => state.intakeProjectData.financialDetails,\r\n getIntakePendingRequests: (state) => state.intakePendingRequests,\r\n getNewIntakeProjectData: (state) => state.newProjectData,\r\n getIntakeRequesters: (state) => state.requesters,\r\n getIntakeProjects: (state) => state.intakeProjects\r\n}\r\n\r\nconst actions = {\r\n fetchIntakeData: async ({ commit }, intakeId) => {\r\n try {\r\n const response = await IntakeService().getIntakeProjectData(intakeId)\r\n if (response.status === 200) {\r\n commit(types.INTAKE_SET_PROJECT_DATA, response.data)\r\n return Promise.resolve(response.data)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n fetchIntakeDataModifier: async (_, intakeId) => {\r\n try {\r\n const response = await IntakeService().getIntakeProjectDataModifier(intakeId)\r\n if (response.status === 200) {\r\n return Promise.resolve(response.data)\r\n }\r\n } catch (err) {\r\n return Promise.reject(err)\r\n }\r\n },\r\n saveIntakeProjectData: async (\r\n { commit },\r\n { intakeId, contactDetails, projectDetail, financialDetails }\r\n ) => {\r\n // do save things\r\n const updateResponse = await IntakeService().updateIntakeProject(intakeId, {\r\n contactDetails,\r\n projectDetail,\r\n financialDetails\r\n })\r\n commit(types.INTAKE_UPDATE_PROJECT_DATA, {\r\n contactDetails,\r\n projectDetail,\r\n financialDetails\r\n })\r\n return Promise.resolve(updateResponse)\r\n },\r\n approveDeclineIntakeProject: (_, { intakeId, status, reason }) => {\r\n return IntakeService().approveDeclineIntakeProject(intakeId, status, reason)\r\n },\r\n resetIntakeData: ({ commit }) => {\r\n commit(types.INTAKE_SET_PROJECT_DATA, {\r\n id: null,\r\n nodeId: null,\r\n contactDetails: {\r\n ...baseContactDetailsModel\r\n },\r\n projectDetail: {\r\n ...baseProjectDetailsModel\r\n },\r\n financialDetails: {\r\n ...baseProjectValueModel\r\n }\r\n })\r\n return Promise.resolve(true)\r\n },\r\n // @params: {status: int/string }\r\n fetchIntakePendingRequests: async ({ commit, rootGetters }, params = {}) => {\r\n const nodeId = rootGetters.getCustomerNode?.id || null\r\n if (!nodeId) {\r\n return Promise.reject('nodeId is required')\r\n }\r\n\r\n params = { ...params, status: 1 }\r\n\r\n try {\r\n const response = await IntakeService({ nodeId }).getIntakeRequests(params)\r\n\r\n commit(types.INTAKE_SET_PENDING_REQUESTS, response)\r\n return Promise.resolve(response)\r\n } catch (e) {\r\n return Promise.reject(e)\r\n }\r\n },\r\n createNewProjectFromIntake: async ({ commit, dispatch, getters }, intakeData) => {\r\n await dispatch('resetNewIntakeProjectData')\r\n commit(types.INTAKE_SET_NEW_PROJECT_DATA, intakeData)\r\n return Promise.resolve(getters.getNewIntakeProjectData)\r\n },\r\n resetNewIntakeProjectData: ({ commit }) => {\r\n commit(types.INTAKE_SET_NEW_PROJECT_DATA, null)\r\n return Promise.resolve(true)\r\n },\r\n downloadPdf: async (_, intakeId) => {\r\n return await IntakeService().downloadPdf(intakeId)\r\n },\r\n fetchIntakeRequesters: async ({ commit, rootGetters }) => {\r\n const nodeId = rootGetters.getCustomerNode?.id || null\r\n if (!nodeId) {\r\n return Promise.reject('nodeId is required')\r\n }\r\n\r\n try {\r\n const response = await IntakeService({ nodeId }).getIntakeRequesters()\r\n\r\n commit(types.INTAKE_SET_REQUESTERS, response)\r\n return Promise.resolve(response)\r\n } catch (e) {\r\n return Promise.reject(e)\r\n }\r\n },\r\n fetchIntakeProjects: async ({ commit, rootGetters }, { params }) => {\r\n const nodeId = rootGetters.getCustomerNode?.id || null\r\n if (!nodeId) {\r\n return Promise.reject('nodeId is required')\r\n }\r\n\r\n try {\r\n const { data } = await IntakeService({ nodeId }).getSearchResults(params)\r\n\r\n commit(types.INTAKE_SET_PROJECTS_ALL, data)\r\n return data\r\n } catch (err) {\r\n commit(types.INTAKE_SET_PROJECTS_ALL, [])\r\n throw err\r\n }\r\n },\r\n clearAllIntakeProjects: ({ commit }) => {\r\n commit(types.INTAKE_SET_PROJECTS_ALL, [])\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.INTAKE_SET_PROJECT_DATA](state, intakeProjectData) {\r\n state.intakeProjectData = intakeProjectData\r\n },\r\n [types.INTAKE_UPDATE_PROJECT_DATA](state, intakeProjectData) {\r\n state.intakeProjectData = {\r\n ...state.intakeProjectData,\r\n ...intakeProjectData\r\n }\r\n },\r\n [types.INTAKE_SET_PENDING_REQUESTS](state, intakePendingRequests) {\r\n state.intakePendingRequests = intakePendingRequests\r\n },\r\n [types.INTAKE_SET_NEW_PROJECT_DATA](state, newProjectData) {\r\n state.newProjectData = newProjectData\r\n },\r\n [types.INTAKE_SET_REQUESTERS](state, requesters) {\r\n state.requesters = requesters\r\n },\r\n [types.INTAKE_SET_PROJECTS_ALL](state, projects) {\r\n state.intakeProjects = projects\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n termsAndConditionsTemplates: []\r\n}\r\nexport const getters = {\r\n getTermsAndConditionsTemplates: (state) => state.termsAndConditionsTemplates\r\n}\r\nexport const actions = {\r\n fetchTermsAndConditionsTemplates: ({ commit }, group) => {\r\n if (!group) {\r\n commit(types.TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL, [])\r\n return\r\n }\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n commit(types.TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL, templates)\r\n return res\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TERMS_AND_CONDITIONS_TEMPLATES_SET_ALL]: (state, templates) => {\r\n state.termsAndConditionsTemplates = templates\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n tradeAgreements: [],\r\n tradeAgreementsSPA: []\r\n}\r\n\r\nexport const getters = {\r\n getTradeAgreements: (state) => state.tradeAgreements,\r\n getTradeAgreementsSPA: (state) => state.tradeAgreementsSPA\r\n}\r\n\r\nexport const actions = {\r\n fetchTradeAgreements: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TradeAgreement`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const tradeAgreements = response.data.data.tradeAgreementDTO.values\r\n commit(types.TRADE_AGREEMENT_SET_ALL, tradeAgreements)\r\n return tradeAgreements\r\n }\r\n })\r\n },\r\n fetchTradeAgreementsSPA: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TradeAgreement/SPAAll`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count > 0) {\r\n const tradeAgreementsSPA = response.data.data.tradeAgreementSPADTO.values\r\n commit(types.TRADE_AGREEMENT_SPA_SET_ALL, tradeAgreementsSPA)\r\n return tradeAgreementsSPA\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.TRADE_AGREEMENT_SET_ALL](state, tradeAgreements) {\r\n state.tradeAgreements = tradeAgreements\r\n },\r\n [types.TRADE_AGREEMENT_SPA_SET_ALL](state, tradeAgreementsSPA) {\r\n state.tradeAgreementsSPA = tradeAgreementsSPA\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi } from '@/api/api'\r\nimport util from '@/utils/utility.js'\r\nimport Vue from 'vue'\r\nimport * as types from '../../mutation-types'\r\n\r\n// five minutes\r\nconst MAX_THUMBNAIL_CACHE_TIME = 5 * 60 * 1000\r\n\r\nfunction commonDownload(url) {\r\n return downloadApi.get(url).then(util.forceFileDownload)\r\n}\r\n\r\nexport const state = {\r\n thumbnails: {},\r\n thumbnailNames: [],\r\n reportCategories: [],\r\n subscribedReports: [],\r\n scheduledReports: [],\r\n customReports: [],\r\n reportData: []\r\n}\r\n\r\nconst mutations = {\r\n [types.REPORTS_ADDTHUMBNAIL](state, thumbnail) {\r\n state.thumbnails[thumbnail.name] = thumbnail\r\n },\r\n [types.REPORTS_THUMBNAILNAMES](state, names) {\r\n state.thumbnailNames = names\r\n },\r\n [types.REPORTS_REPORTCATEGORIES](state, categories) {\r\n state.reportCategories = categories\r\n },\r\n [types.REPORTS_SUBSCRIBED](state, subscribed) {\r\n state.subscribedReports = subscribed\r\n },\r\n [types.REPORTS_REMOVE_RECIPIENT](state, recipientId) {\r\n state.subscribedReports = state.subscribedReports.filter((r) => r.id !== recipientId)\r\n },\r\n [types.REPORTS_SCHEDULED](state, scheduled) {\r\n state.scheduledReports = scheduled\r\n },\r\n [types.REPORTS_REMOVE_SCHEDULED](state, scheduledReportId) {\r\n state.scheduledReports = state.scheduledReports.filter((r) => r.id !== scheduledReportId)\r\n },\r\n [types.REPORTS_UPDATE_SCHEDULED](state, scheduledReport) {\r\n // find the one\r\n const report = state.scheduledReports.find((r) => r.id === scheduledReport.id)\r\n // update it\r\n report.start = scheduledReport.start\r\n report.sendAt = scheduledReport.sendAt\r\n report.frequency = scheduledReport.frequency\r\n report.recipientDTOs = scheduledReport.recipientDTOs\r\n // trigger a refresh could also use Vue.set()\r\n state.scheduledReports = [\r\n ...state.scheduledReports.filter((r) => r.id !== scheduledReport.id),\r\n report\r\n ]\r\n },\r\n [types.REPORTS_THUMBNAILCATEGORY](state, opts) {\r\n if (opts.add) {\r\n state.thumbnails[opts.name].categories.push(opts.category)\r\n } else {\r\n state.thumbnails[opts.name].categories = state.thumbnails[opts.name].categories.filter(\r\n (c) => c !== opts.category\r\n )\r\n }\r\n },\r\n [types.REPORTS_DATA](state, data) {\r\n state.reportData = data\r\n },\r\n [types.REPORTS_CUSTOM](state, custom) {\r\n state.customReports = custom\r\n },\r\n [types.REPORTS_REMOVE_CUSTOM](state, customReportId) {\r\n state.customReports = state.customReports.filter((r) => r.id !== customReportId)\r\n },\r\n [types.REPORTS_UPDATE_CUSTOM](state, customReport) {\r\n state.customReports = [\r\n ...state.customReports.filter((r) => r.id !== customReport.id),\r\n customReport\r\n ]\r\n },\r\n [types.REPORTS_CUSTOM_PENDING](state, customReports) {\r\n const s = new Set()\r\n for (const r of customReports) {\r\n s.add(r.id)\r\n }\r\n for (const c of state.customReports) {\r\n Vue.set(c, 'isPending', s.has(c.id))\r\n }\r\n }\r\n}\r\n\r\nexport const getters = {\r\n getThumbnails: (state) => state.thumbnails,\r\n getThumbnailNames: (state) => state.thumbnailNames,\r\n getReportCategories: (state) => state.reportCategories,\r\n getSubscribedReports: (state) => state.subscribedReports,\r\n getScheduledReports: (state) => state.scheduledReports,\r\n getCustomReports: (state) => state.customReports,\r\n getCustomReportData: (state) => state.reportData\r\n}\r\n\r\nexport const actions = {\r\n generateReport: async (_, reportType) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/generateReport/${reportType}`\r\n let response\r\n try {\r\n response = await api.post(url)\r\n if (response.status === 200) {\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n downloadNamedReport: (_, reportName) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Download/${reportName}`\r\n return commonDownload(url)\r\n },\r\n fetchNamedThumbnail: async ({ state, commit, rootState }, opts) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Thumbnail/${opts.name}`\r\n try {\r\n const nodeId = (rootState.authCredential.authTenderNode || {}).id || '' // localStorage.getItem('nodeId')\r\n\r\n // update the thumbnail if we must, or if it doesn't exist yet\r\n // or if we've logged in to a different agency\r\n // or if the cache has expired\r\n if (\r\n opts.required ||\r\n !state.thumbnails[opts.name] ||\r\n state.thumbnails[opts.name].nodeId !== nodeId ||\r\n state.thumbnails[opts.name].timestamp < Date.now() - MAX_THUMBNAIL_CACHE_TIME\r\n ) {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n const thumbnail = response.data.data.searchResult.values[0]\r\n thumbnail.timestamp = Date.now()\r\n thumbnail.nodeId = nodeId\r\n commit(types.REPORTS_ADDTHUMBNAIL, thumbnail)\r\n }\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n fetchThumbnailNames: async ({ state, commit }) => {\r\n if (!state.thumbnailNames.length) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Names`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_THUMBNAILNAMES, response.data.data.searchResult.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n },\r\n fetchReportCategories: async ({ state, commit }) => {\r\n if (!state.reportCategories.length) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Categories`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_REPORTCATEGORIES, response.data.data.reportCategoryNameDTO.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n },\r\n fetchSubscribedReports: async ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/ScheduledForUser`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_SUBSCRIBED, response.data.data.scheduledReportRecipientDTO.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n fetchScheduledReports: async ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/ScheduledByUser`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_SCHEDULED, response.data.data.scheduledReportDTO.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n updateFavorite: async ({ commit }, opts) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Favorite/${opts.name}`\r\n try {\r\n const response = opts.add ? await api.get(url) : await api.delete(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_THUMBNAILCATEGORY, opts)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n deleteScheduledReport: async ({ commit }, scheduledReportId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Scheduled/${scheduledReportId}`\r\n try {\r\n const response = await api.delete(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_REMOVE_SCHEDULED, scheduledReportId)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n deleteRecipient: async ({ commit }, recipientId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Recipient/${recipientId}`\r\n try {\r\n const response = await api.delete(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_REMOVE_RECIPIENT, recipientId)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n createScheduledReport: async ({ dispatch }, scheduledReport) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Scheduled`\r\n try {\r\n const response = await api.post(url, scheduledReport)\r\n if (response.status === 200) {\r\n dispatch('fetchScheduledReports')\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n updateScheduledReport: async ({ commit }, scheduledReport) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/Scheduled`\r\n try {\r\n const response = await api.put(url, scheduledReport)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_UPDATE_SCHEDULED, scheduledReport)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n\r\n fetchCustomReports: async ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/CustomProject`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200 && response.data.data.customProjectReportDTO) {\r\n commit(types.REPORTS_CUSTOM, response.data.data.customProjectReportDTO.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n fetchPendingCustomReports: async ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/PendingCustomProject`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200 && response.data.data.customProjectReportDTO) {\r\n commit(types.REPORTS_CUSTOM_PENDING, response.data.data.customProjectReportDTO.values)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n fetchCustomReportData: async ({ commit }, testReportInfo) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/CustomData`\r\n try {\r\n const response = await api.post(url, testReportInfo)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_DATA, response.data.data.searchResult.values)\r\n return Promise.resolve(response)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n downloadCustomReport: (_, customReportId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/DownloadCustomProject/${customReportId}`\r\n return commonDownload(url)\r\n },\r\n getCustomReportUri: async (_, customReportId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/GetCustomProjectUri/${customReportId}`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n const reportUrl = response.data.data.searchResult.values[0].uri\r\n const reportName = response.data.data.searchResult.values[0].name\r\n const azureResponse = await fetch(reportUrl)\r\n const blob = await azureResponse.blob()\r\n util.forceFileDownload(null, blob, reportName)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n refreshCustomReport: async (_, customReportId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/RefreshCustomProject/${customReportId}`\r\n try {\r\n const response = await api.get(url)\r\n if (response.status === 200) {\r\n // nothing to do yet - this starts a background thread\r\n // and signalr will notify when the report is refreshed\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n createCustomReport: async ({ dispatch }, customReport) => {\r\n let id = ''\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/CustomProject`\r\n\r\n try {\r\n const response = await api.post(url, customReport)\r\n if (response.status === 200) {\r\n id = response.data.data.searchResult.values[0]\r\n dispatch('fetchCustomReports')\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n return id\r\n },\r\n updateCustomReport: async ({ commit }, customReport) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/CustomProject`\r\n try {\r\n const response = await api.put(url, customReport)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_UPDATE_CUSTOM, customReport)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n deleteCustomReport: async ({ commit }, customReportId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Report/CustomProject/${customReportId}`\r\n try {\r\n const response = await api.delete(url)\r\n if (response.status === 200) {\r\n commit(types.REPORTS_REMOVE_CUSTOM, customReportId)\r\n }\r\n } catch (err) {\r\n throw err\r\n }\r\n },\r\n setCustomReportData: ({ commit }, reportData) => {\r\n commit(types.REPORTS_DATA, reportData)\r\n },\r\n resetCustomReportData: ({ commit }) => {\r\n commit(types.REPORTS_DATA, [])\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","const defaultPerformanceReport = {\r\n reportType: 'performance',\r\n performanceTemplateType: [],\r\n performanceEvaluationType: [],\r\n performanceEvaluationStatus: [],\r\n performanceDepartment: [],\r\n performanceDivision: [],\r\n performanceProcurementLead: [],\r\n performanceContractAdmin: [],\r\n dateFiltering: null,\r\n dateRangeType: null,\r\n dateRange: null,\r\n dateStart: null,\r\n dateEnd: null,\r\n dateKind: null,\r\n reportColumns: [23, 24],\r\n selectedFromIndex: null,\r\n selectedToIndex: null,\r\n endDate: null,\r\n fromBase: null,\r\n fromUnit: null,\r\n fromValue: null,\r\n name: null,\r\n node: null,\r\n phase: null,\r\n startDate: null,\r\n toBase: null,\r\n toUnit: null,\r\n toValue: null\r\n}\r\n\r\nconst initialState = () => {\r\n return {\r\n performanceReport: { ...defaultPerformanceReport }\r\n }\r\n}\r\n\r\nconst getters = {\r\n getPerformanceReport: (state) => state.performanceReport\r\n}\r\n\r\nconst actions = {\r\n setPerformanceReport: ({ commit }, update) => {\r\n commit('performanceReportSet', update)\r\n return Promise.resolve()\r\n },\r\n resetPerformanceReport: ({ commit }) => {\r\n commit('performanceReportReset')\r\n return Promise.resolve()\r\n }\r\n}\r\n\r\nconst mutations = {\r\n performanceReportSet(state, report) {\r\n state.performanceReport = { ...state.performanceReport, ...report }\r\n },\r\n performanceReportReset(state) {\r\n state.performanceReport = { ...defaultPerformanceReport }\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: true,\r\n state: initialState,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '@/store/mutation-types'\r\n\r\nconst state = {\r\n routePermission: [],\r\n routePermissionUser: {\r\n hasRoutePermissionToView: false,\r\n hasRoutePermissionToAction: false\r\n }\r\n}\r\n\r\nconst getters = {\r\n getRoutePermission: (state) => state.routePermission,\r\n getRoutePermissionUser: (state) => state.routePermissionUser\r\n}\r\n\r\nconst actions = {\r\n fetchRoutePermission: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/RoutePermissions/All'\r\n\r\n return api.get(url).then(function (response) {\r\n commit(types.ROUTEPERMISSION_SET, response.data.data.routeDTO.values)\r\n return response.data\r\n })\r\n },\r\n setRoutePermission: ({ commit }, routePermission) => {\r\n commit(types.ROUTEPERMISSION_SET, routePermission)\r\n },\r\n setRoutePermissionUser: ({ commit }, routePermissionUser) => {\r\n commit(types.ROUTEPERMISSION_USER_SET, routePermissionUser)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.ROUTEPERMISSION_SET](state, routePermission) {\r\n state.routePermission = routePermission\r\n },\r\n [types.ROUTEPERMISSION_USER_SET](state, routePermissionUser) {\r\n state.routePermissionUser = routePermissionUser\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n layoutList: null\r\n}\r\n\r\nexport const getters = {\r\n getLayoutList: (state) => {\r\n if (state.layoutList)\r\n return state.layoutList.map((l) => {\r\n return {\r\n x: l.hStart,\r\n y: l.vStart,\r\n w: l.width,\r\n h: l.height,\r\n i: l.id,\r\n component: l.widgetId\r\n }\r\n })\r\n else return []\r\n }\r\n}\r\n\r\nexport const actions = {\r\n fetchLayoutList: async ({ commit }) => {\r\n const url = '/api/v1/Snapshot/Layout'\r\n const response = await api.get(url)\r\n if (response.data.count !== 0) {\r\n const layoutList = response.data.data.snapshotLayoutDTO.values\r\n commit(types.SNAPSHOT_LAYOUT_SET_LIST, layoutList)\r\n }\r\n },\r\n saveLayoutList: async ({ commit }, list) => {\r\n const serverList = list.map((l) => {\r\n return {\r\n hStart: l.x,\r\n vStart: l.y,\r\n width: l.w,\r\n height: l.h,\r\n id: l.i,\r\n widgetId: l.component\r\n }\r\n })\r\n const url = '/api/v1/Snapshot/Layout'\r\n // save the changes\r\n await api.put(url, serverList)\r\n // go get the result (with server assigned IDs)\r\n const getResp = await api.get(url)\r\n if (getResp.data.count !== 0) {\r\n const layoutList = getResp.data.data.snapshotLayoutDTO.values\r\n commit(types.SNAPSHOT_LAYOUT_SET_LIST, layoutList)\r\n }\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.SNAPSHOT_LAYOUT_SET_LIST](state, layoutList) {\r\n state.layoutList = layoutList\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\n\r\nexport const actions = {\r\n withdrawAllSubmissions(_, tenderId) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/submissions/withdraw/${tenderId}`\r\n return api.put(url).then((response) => {\r\n const withdrawnSubmissions = response.data.data.submissionDTO.values\r\n return withdrawnSubmissions\r\n })\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n actions\r\n}\r\n","import * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n supplierSearchTerm: null,\r\n supplierSearchResults: []\r\n}\r\n\r\nexport const getters = {\r\n getSupplierSearchTerm: (state) => state.supplierSearchTerm,\r\n getSupplierSearchResults: (state) => state.supplierSearchResults\r\n}\r\n\r\nexport const actions = {\r\n setSupplierSearchTerm: ({ commit }, searchTerm) => {\r\n commit(types.SUPPLIER_SEARCH_TERM_SET, searchTerm)\r\n return new Promise((resolve) => {\r\n resolve(searchTerm)\r\n })\r\n },\r\n setSupplierSearchResults: ({ commit }, searchResults) => {\r\n commit(types.SUPPLIER_SEARCH_RESULTS_SET, searchResults)\r\n return new Promise((resolve) => {\r\n resolve(searchResults)\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.SUPPLIER_SEARCH_RESULTS_SET](state, searchResults) {\r\n state.supplierSearchResults = searchResults\r\n },\r\n [types.SUPPLIER_SEARCH_TERM_SET](state, searchTerm) {\r\n state.supplierSearchTerm = searchTerm\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n tenderTableColumns: [],\r\n currColumn: null\r\n}\r\n\r\nexport const getters = {\r\n getTenderTableColumns: (state) => state.tenderTableColumns,\r\n getTenderTableColumn: (state) => (id) => {\r\n return state.tenderTableColumns.find((ttc) => ttc.id === id)\r\n },\r\n getCurrColumn: (state) => state.currColumn\r\n}\r\nexport const actions = {\r\n fetchTenderTableColumns: ({ commit }, tenderTableId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTableColumns/${tenderTableId}`\r\n return api.get(url).then((response) => {\r\n commit(types.TENDERTABLECOLUMN_SET_FROMDTO, {\r\n tenderTableColumns: response.data.data.tenderTableColumnDTO.values,\r\n tenderTableId\r\n })\r\n return response\r\n })\r\n },\r\n createTenderTableColumn: ({ commit }, tenderTableId) => {\r\n commit(types.TENDERTABLECOLUMN_CREATE, tenderTableId)\r\n },\r\n setTenderTableColumns: ({ commit }, props) => {\r\n commit(types.TENDERTABLECOLUMN_SET_FROMDTO, props)\r\n },\r\n setTenderTableColumn: ({ commit }, props) => {\r\n commit(types.TENDERTABLECOLUMN_SET, props)\r\n },\r\n reorderTenderTableColumns: ({ commit }, props) => {\r\n commit(types.TENDERTABLECOLUMN_REORDER, props)\r\n },\r\n deleteTenderTableColumn: ({ commit }, tenderTableColumnId) => {\r\n commit(types.TENDERTABLECOLUMN_DELETE, tenderTableColumnId)\r\n },\r\n clearTenderTableColumns: ({ commit }) => {\r\n commit(types.TENDERTABLECOLUMN_CLEAR)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDERTABLECOLUMN_SET_FROMDTO](state, vals) {\r\n state.tenderTableColumns = vals.tenderTableColumns\r\n .map((ttc) => {\r\n return {\r\n id: ttc.id,\r\n tenderTableId: vals.tenderTableId,\r\n name: ttc.name,\r\n columnTypeName: ttc.columnTypeName,\r\n sortOrder: ttc.sortOrder,\r\n isEditableonPublic: ttc.isEditableonPublic,\r\n columnWidth: ttc.columnWidth,\r\n isRequired: ttc.isRequired,\r\n isSubtotalIncluded: ttc.isSubtotalIncluded,\r\n isHiddenOnPublic: ttc.isHiddenOnPublic,\r\n deleted: ttc.deleted,\r\n tenderTableTotalCalculation: ttc.tenderTableTotalCalculation\r\n }\r\n })\r\n .sort((a, b) => {\r\n return a.sortOrder - b.sortOrder\r\n })\r\n },\r\n [types.TENDERTABLECOLUMN_SET](state, updatedCol) {\r\n const colIndex = state.tenderTableColumns.findIndex((ttc) => ttc.id === updatedCol.id)\r\n\r\n if (colIndex === -1) return false\r\n\r\n Object.assign(state.tenderTableColumns[colIndex], updatedCol)\r\n },\r\n [types.TENDERTABLECOLUMN_CREATE](state, tenderTableId) {\r\n const nextSortOrder = state.tenderTableColumns.filter((ttc) => ttc.deleted === false).length\r\n\r\n state.currColumn = {\r\n id: util.guid(),\r\n tenderTableId: tenderTableId,\r\n name: 'New Column',\r\n columnTypeName: 'DescriptiveText',\r\n sortOrder: nextSortOrder,\r\n isEditableonPublic: false,\r\n columnWidth: 150,\r\n isRequired: false,\r\n isSubtotalIncluded: false,\r\n isHiddenOnPublic: false,\r\n deleted: false\r\n }\r\n\r\n state.tenderTableColumns.push(state.currColumn)\r\n },\r\n [types.TENDERTABLECOLUMN_REORDER](state, props) {\r\n const newTargetIndex =\r\n props.target <= props.columns[0] ? props.target : props.target - props.columns.length\r\n\r\n // only reorder if col and target are different\r\n if (newTargetIndex !== props.columns[0]) {\r\n const movedElems = state.tenderTableColumns.splice(props.columns[0], props.columns.length)\r\n state.tenderTableColumns.splice(newTargetIndex, 0, ...movedElems)\r\n }\r\n\r\n let newIndex = 0\r\n state.tenderTableColumns.forEach((ttc) => {\r\n if (ttc.deleted === false) {\r\n ttc.sortOrder = newIndex++\r\n }\r\n })\r\n },\r\n [types.TENDERTABLECOLUMN_DELETE](state, tenderTableColumnId) {\r\n const matchedCol = state.tenderTableColumns.find((ttc) => ttc.id === tenderTableColumnId)\r\n matchedCol.deleted = true\r\n matchedCol.sortOrder = 9999\r\n\r\n // resort the array\r\n state.tenderTableColumns.sort(function (a, b) {\r\n return a.sortOrder - b.sortOrder\r\n })\r\n\r\n // update the sortOrder\r\n let newIndex = 0\r\n state.tenderTableColumns.forEach((ttc) => {\r\n if (ttc.deleted === false) {\r\n ttc.sortOrder = newIndex++\r\n }\r\n })\r\n },\r\n [types.TENDERTABLECOLUMN_CLEAR](state) {\r\n state.tenderTableColumns = []\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n tenderTableRowColumns: [],\r\n currRowColumn: null\r\n}\r\n\r\nexport const getters = {\r\n getTenderTableRowColumns: (state) => state.tenderTableRowColumns,\r\n getCurrRowColumn: (state) => state.currRowColumn\r\n}\r\nexport const actions = {\r\n fetchTenderTableRowColumns: ({ commit }, tenderTableId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTableRowColumns/${tenderTableId}?filter.fields=TenderTableRow,TenderTableColumn`\r\n return api.get(url).then((response) => {\r\n commit(types.TENDERTABLEROWCOLUMN_SET_FROMDTO, {\r\n tenderTableRowColumns: response.data.data.tenderTableRowColumnDTO.values,\r\n tenderTableId\r\n })\r\n return response\r\n })\r\n },\r\n createTenderTableRowColumn: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROWCOLUMN_CREATE, props)\r\n },\r\n setTenderTableRowColumns: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROWCOLUMN_SET_FROMDTO, props)\r\n },\r\n setTenderTableRowColumn: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROWCOLUMN_SET, props)\r\n },\r\n deleteTenderTableRowColumn: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROWCOLUMN_DELETE, props)\r\n },\r\n clearTenderTableRowColumns: ({ commit }) => {\r\n commit(types.TENDERTABLEROWCOLUMN_CLEAR)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDERTABLEROWCOLUMN_SET_FROMDTO](state, vals) {\r\n state.tenderTableRowColumns = vals.tenderTableRowColumns.map(function (ttrc) {\r\n return {\r\n id: ttrc.id,\r\n tenderTableId: vals.tenderTableId,\r\n tenderTableRow: {\r\n id: ttrc.tenderTableRow.id\r\n },\r\n tenderTableColumn: {\r\n id: ttrc.tenderTableColumn.id\r\n },\r\n value: ttrc.value,\r\n deleted: ttrc.deleted\r\n }\r\n })\r\n },\r\n [types.TENDERTABLEROWCOLUMN_CREATE](state, props) {\r\n state.currRowColumn = {\r\n id: util.guid(),\r\n tenderTableId: props.tenderTableId,\r\n tenderTableRow: {\r\n id: props.tenderTableRowId\r\n },\r\n tenderTableColumn: {\r\n id: props.tenderTableColumnId\r\n },\r\n value: null,\r\n deleted: false\r\n }\r\n state.tenderTableRowColumns.push(state.currRowColumn)\r\n },\r\n [types.TENDERTABLEROWCOLUMN_SET](state, props) {\r\n state.currRowColumn = state.tenderTableRowColumns.find(\r\n (ttrc) => ttrc.id === props.tenderTableRowColumnId\r\n )\r\n\r\n if (!state.currRowColumn) return false\r\n\r\n state.currRowColumn.value = props.newValue\r\n },\r\n [types.TENDERTABLEROWCOLUMN_DELETE](state, props) {\r\n state.tenderTableRowColumns.forEach((ttrc) => {\r\n if (\r\n (props.tenderTableRowId != null && props.tenderTableRowId === ttrc.tenderTableRow.id) ||\r\n (props.tenderTableColumnId != null &&\r\n props.tenderTableColumnId === ttrc.tenderTableColumn.id)\r\n ) {\r\n ttrc.deleted = true\r\n }\r\n })\r\n },\r\n [types.TENDERTABLEROWCOLUMN_CLEAR](state) {\r\n state.tenderTableRowColumns = []\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n tenderTableRows: [],\r\n currRow: null\r\n}\r\n\r\nexport const getters = {\r\n getTenderTableRows: (state) => state.tenderTableRows,\r\n getCurrRow: (state) => state.currRow\r\n}\r\nexport const actions = {\r\n fetchTenderTableRows: ({ commit }, tenderTableId) => {\r\n commit(types.TENDERTABLEROW_CLEAR)\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTableRows/${tenderTableId}`\r\n return api.get(url).then((response) => {\r\n commit(types.TENDERTABLEROW_SET_FROMDTO, {\r\n tenderTableRows: response.data.data.tenderTableRowDTO.values,\r\n tenderTableId\r\n })\r\n return ''\r\n })\r\n },\r\n createTenderTableRow: ({ commit }, tenderTableId) => {\r\n commit(types.TENDERTABLEROW_CREATE, tenderTableId)\r\n },\r\n setTenderTableRows: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROW_SET_FROMDTO, props)\r\n },\r\n setTenderTableRow: ({ commit }, props) => {\r\n commit(types.TENDERTABLEROW_SET, props)\r\n },\r\n reorderTenderTableRows({ commit }, props) {\r\n commit(types.TENDERTABLEROW_REORDER, props)\r\n },\r\n deleteTenderTableRow: ({ commit }, tenderTableRowId) => {\r\n commit(types.TENDERTABLEROW_DELETE, tenderTableRowId)\r\n },\r\n clearTenderTableRows: ({ commit }) => {\r\n commit(types.TENDERTABLEROW_CLEAR)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDERTABLEROW_SET_FROMDTO](state, vals) {\r\n state.tenderTableRows = vals.tenderTableRows\r\n .map(function (ttr) {\r\n return {\r\n id: ttr.id,\r\n tenderTableId: vals.tenderTableId,\r\n isRequired: ttr.isRequired,\r\n sortOrder: ttr.sortOrder,\r\n isDynamicRow: ttr.isDynamicRow,\r\n deleted: ttr.deleted\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return a.sortOrder - b.sortOrder\r\n })\r\n },\r\n [types.TENDERTABLEROW_SET](state, updatedRow) {\r\n const rowIndex = state.tenderTableRows.findIndex((ttr) => ttr.id === updatedRow.id)\r\n Object.assign(state.tenderTableRows[rowIndex], updatedRow)\r\n },\r\n [types.TENDERTABLEROW_CREATE](state, tenderTableId) {\r\n const nextSortOrder = state.tenderTableRows.filter((ttc) => ttc.deleted === false).length\r\n\r\n state.currRow = {\r\n id: util.guid(),\r\n tenderTableId: tenderTableId,\r\n isRequired: false,\r\n sortOrder: nextSortOrder,\r\n isDynamicRow: false,\r\n deleted: false\r\n }\r\n state.tenderTableRows.push(state.currRow)\r\n },\r\n [types.TENDERTABLEROW_REORDER](state, props) {\r\n const newTargetIndex =\r\n props.target <= props.rows[0] ? props.target : props.target - props.rows.length\r\n\r\n // only reorder if col and target are different\r\n if (newTargetIndex !== props.rows[0]) {\r\n const movedElems = state.tenderTableRows.splice(props.rows[0], props.rows.length)\r\n state.tenderTableRows.splice(newTargetIndex, 0, ...movedElems)\r\n }\r\n\r\n let newIndex = 0\r\n state.tenderTableRows.forEach((ttr) => {\r\n ttr.sortOrder = newIndex++\r\n })\r\n },\r\n [types.TENDERTABLEROW_DELETE](state, tenderTableRowId) {\r\n const matchedRow = state.tenderTableRows.find((ttr) => ttr.id === tenderTableRowId)\r\n matchedRow.deleted = true\r\n matchedRow.sortOrder = 9999\r\n\r\n // resort the array\r\n state.tenderTableRows.sort(function (a, b) {\r\n return a.sortOrder - b.sortOrder\r\n })\r\n\r\n // update the sortOrder\r\n let newIndex = 0\r\n state.tenderTableRows.forEach((ttr) => {\r\n if (ttr.deleted === false) {\r\n ttr.sortOrder = newIndex++\r\n }\r\n })\r\n },\r\n [types.TENDERTABLEROW_CLEAR](state) {\r\n state.tenderTableRows = []\r\n state.currRow = null\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n tenderTable: null,\r\n tenderTableSummary: [],\r\n onlineSubmissionTemplate: []\r\n}\r\n\r\nexport const getters = {\r\n getTenderTable: (state) => state.tenderTable,\r\n getTenderTableSummary: (state) => state.tenderTableSummary,\r\n getOnlineSubmissionTemplate: (state) => state.onlineSubmissionTemplate\r\n}\r\nexport const actions = {\r\n fetchTenderTable: ({ commit }, tenderTableId) => {\r\n commit(types.TENDERTABLE_CLEAR)\r\n\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables?tenderTableId=${tenderTableId}&filter.fields=Tender`\r\n return api.get(url).then((response) => {\r\n const tenderTable = response.data.data.tenderTableDTO.values[0]\r\n commit(types.TENDERTABLE_SET_FROMDTO, {\r\n tenderTable: tenderTable,\r\n tender: tenderTable.tender,\r\n tableType: 0\r\n })\r\n return tenderTable\r\n })\r\n },\r\n fetchTenderTableSummary: ({ commit }, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/Summary?tenderId=${tenderId}`\r\n return api.get(url).then((response) => {\r\n if (response.data.count !== 0) {\r\n const tenderTable = response.data.data.searchResult.values\r\n\r\n commit(types.TENDERTABLE_SET_SUMMARY, tenderTable)\r\n\r\n return response\r\n }\r\n })\r\n },\r\n createTenderTable: ({ commit }, prop) => {\r\n commit(types.TENDERTABLE_SET_FROMDTO, {\r\n tenderTable: prop.tenderTable,\r\n tableType: prop.tableType,\r\n tender: prop.tender\r\n })\r\n },\r\n setTenderTable: ({ commit }, tenderTable) => {\r\n commit(types.TENDERTABLE_SET, tenderTable)\r\n },\r\n setTenderTableSummary: ({ commit }, tenderTableSummary) => {\r\n commit(types.TENDERTABLE_SET_SUMMARY, tenderTableSummary)\r\n },\r\n clearTenderTable: ({ commit }) => {\r\n commit(types.TENDERTABLE_CLEAR)\r\n },\r\n updateTenderTable: ({ commit }, props) => {\r\n // update the DTO with row and columns\r\n commit(types.TENDERTABLE_UPDATE, props)\r\n\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/'\r\n return api.put(url, state.tenderTable).then((response) => {\r\n // set updated objects with updated IDs\r\n const tenderTable = response.data.data.tenderTableDTO.values[0]\r\n commit(types.TENDERTABLE_SET_FROMDTO, {\r\n tenderTable: tenderTable,\r\n tender: tenderTable.tender,\r\n tableType: 0\r\n })\r\n\r\n // reset the row columns data to null\r\n commit(types.TENDERTABLE_UPDATE, {\r\n tenderTableRows: null,\r\n tenderTableColumns: null,\r\n tenderTableRowColumns: null\r\n })\r\n return Promise.resolve({\r\n id: response.data.data.tenderTableDTO.values[0].id,\r\n tenderTableRows: response.data.data.tenderTableDTO.values[0].tenderTableRows,\r\n tenderTableColumns: response.data.data.tenderTableDTO.values[0].tenderTableColumns,\r\n tenderTableRowColumns: response.data.data.tenderTableDTO.values[0].tenderTableRowColumns\r\n })\r\n })\r\n },\r\n fetchOnlineSubmissionTemplates: ({ commit }, group) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/OnlineSubmissionTemplate/Search?groupName=${group}`\r\n return api.get(url).then((res) => {\r\n const templates = res.data.data.onlineSubmissionTemplateDTO.values\r\n\r\n commit(types.TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL, templates)\r\n return res\r\n })\r\n },\r\n copyTenderTable: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/Copy/${params.tenderTableId}?tenderId=${params.tenderId}&includeData=${params.includeData}`\r\n return api.post(url).then((response) => {\r\n const tenderTableSummary = response.data.data.searchResult.values[0]\r\n commit(types.TENDERTABLE_ADD_OR_REPLACE_SUMMARY, tenderTableSummary)\r\n return tenderTableSummary\r\n })\r\n },\r\n searchTenderTables: (_, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/Search?keywords=${encodeURIComponent(\r\n params.keywords\r\n )}&type=${params.type}`\r\n return api.get(url).then((response) => {\r\n let tenderTableSummary = []\r\n\r\n if (response.data && response.data.count > 0) {\r\n tenderTableSummary = response.data.data.searchResult.values\r\n }\r\n return tenderTableSummary\r\n })\r\n },\r\n deleteTenderTable: ({ commit }, tenderTableIds) => {\r\n const ids = tenderTableIds.join()\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables?tenderTableId=${ids}`\r\n return api.delete(url).then(() => {\r\n for (let i = 0; i < tenderTableIds.length; i++) {\r\n commit(types.TENDERTABLE_REMOVE_SUMMARY, tenderTableIds[i])\r\n }\r\n return ''\r\n })\r\n },\r\n sortOrder: ({ commit }, tenderTableList) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/SortOrder/'\r\n\r\n return api.put(url, tenderTableList).then((response) => {\r\n if (response.data.count !== 0) {\r\n const tenderTable = response.data.data.searchResult.values\r\n\r\n commit(types.TENDERTABLE_SET_SUMMARY, tenderTable)\r\n\r\n return tenderTable\r\n }\r\n })\r\n },\r\n copyAllTenderTables: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/TenderTables/CopyAll?tenderId=${params.tenderId}&tenderToCopyTablesId=${params.tenderToCopyTablesId}`\r\n return api.post(url).then((response) => {\r\n const tenderTableSummary = response?.data?.data?.searchResult?.values || []\r\n commit(types.TENDERTABLE_SET_SUMMARY, tenderTableSummary)\r\n return tenderTableSummary\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDERTABLE_SET_FROMDTO](state, props) {\r\n const tenderTable = props.tenderTable\r\n\r\n state.tenderTable = {\r\n id: tenderTable ? tenderTable.id : util.guid(),\r\n name: tenderTable ? tenderTable.name : '',\r\n isLineNumberIncluded: tenderTable ? tenderTable.isLineNumberIncluded : true,\r\n startNumber: tenderTable ? tenderTable.startNumber : 1,\r\n numberofRows: tenderTable ? tenderTable.numberofRows : 1,\r\n isIncludedForSummary: tenderTable ? tenderTable.isIncludedForSummary : false,\r\n isAutoComputeTax: tenderTable ? tenderTable.isAutoComputeTax : false,\r\n sortOrder: tenderTable ? tenderTable.sortOrder : 0,\r\n isRequired: tenderTable ? tenderTable.isRequired : true,\r\n tenderTableHeadingText: tenderTable ? tenderTable.tenderTableHeadingText : '',\r\n tenderTableFooterText: tenderTable ? tenderTable.tenderTableFooterText : '',\r\n total: tenderTable ? tenderTable.total : 0,\r\n allowPlantakerToAddRows: tenderTable ? tenderTable.allowPlantakerToAddRows : false,\r\n maximumOptionalRows: tenderTable ? tenderTable.maximumOptionalRows : null,\r\n deleted: tenderTable ? tenderTable.deleted : false,\r\n tender: props.tender,\r\n tenderTableRows:\r\n tenderTable && tenderTable.tenderTableRows ? tenderTable.tenderTableRows : null,\r\n tenderTableColumns:\r\n tenderTable && tenderTable.tenderTableColumns ? tenderTable.tenderTableColumns : null,\r\n tenderTableRowColumns:\r\n tenderTable && tenderTable.tenderTableRowColumns ? tenderTable.tenderTableRowColumns : null,\r\n tableTypeName: tenderTable ? tenderTable.tableTypeName : '',\r\n tableType: tenderTable ? tenderTable.tableType : props.tableType,\r\n taxes: tenderTable ? tenderTable.taxes : null,\r\n taxesDropdownList: tenderTable ? tenderTable.taxesDropdownList : null,\r\n hasPromptPayDiscount: tenderTable ? tenderTable.hasPromptPayDiscount : null,\r\n promptPayDiscountType: tenderTable ? tenderTable.promptPayDiscountType : null\r\n }\r\n },\r\n [types.TENDERTABLE_SET](state, tenderTable) {\r\n state.tenderTable = tenderTable\r\n },\r\n [types.TENDERTABLE_SET_SUMMARY](state, tenderTableSummary) {\r\n state.tenderTableSummary = tenderTableSummary\r\n },\r\n [types.TENDERTABLE_ADD_OR_REPLACE_SUMMARY](state, tenderTableSummary) {\r\n if (state.tenderTableSummary === null) state.tenderTableSummary = []\r\n\r\n const matchedIndex = state.tenderTableSummary.findIndex(\r\n (tts) => tts.tenderTableId === tenderTableSummary.tenderTableId\r\n )\r\n if (matchedIndex !== -1) {\r\n state.tenderTableSummary.splice(matchedIndex, 1)\r\n }\r\n state.tenderTableSummary.push(tenderTableSummary)\r\n },\r\n [types.TENDERTABLE_REMOVE_SUMMARY](state, id) {\r\n const matchedIndex = state.tenderTableSummary.findIndex((tts) => tts.tenderTableId === id)\r\n if (matchedIndex !== -1) {\r\n state.tenderTableSummary.splice(matchedIndex, 1)\r\n }\r\n },\r\n [types.TENDERTABLE_UPDATE](state, props) {\r\n state.tenderTable.tenderTableRows = props.tenderTableRows\r\n state.tenderTable.tenderTableColumns = props.tenderTableColumns\r\n state.tenderTable.tenderTableRowColumns = props.tenderTableRowColumns\r\n },\r\n [types.TENDERTABLE_INSTRUCTION_TEMPLATE_SET_ALL]: (state, templates) => {\r\n state.onlineSubmissionTemplate = templates\r\n },\r\n [types.TENDERTABLE_CLEAR](state) {\r\n state.tenderTable = null\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../../mutation-types'\r\n\r\nexport const state = {\r\n tenderNode: null,\r\n saveRequired: false\r\n}\r\nexport const getters = {\r\n getTenderNode: (state) => state.tenderNode,\r\n getTenderNodeSaveRequired: (state) => state.saveRequired,\r\n getTenderNodeLvp: (state) => (state.tenderNode ? state.tenderNode.lvp : null),\r\n getIsAwardApprovalPaidVerion: (state) =>\r\n !!(state.tenderNode && state.tenderNode.includeBidApprovalWorkflow)\r\n}\r\nexport const actions = {\r\n setTenderNode: ({ commit }, tenderNode) => {\r\n commit(types.TENDERNODE_SET, tenderNode)\r\n },\r\n fetchTenderNode: ({ commit }, tenderNodeId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Tenders/TenderNode?tenderNodeId=${tenderNodeId}`\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.tenderNodeDTO.values[0]\r\n commit(types.TENDERNODE_SET, response.data.data.tenderNodeDTO.values[0])\r\n return data\r\n })\r\n },\r\n updateTenderNode: ({ commit }, tenderNode) => {\r\n const newTenderNode = Object.assign({}, state.tenderNode, tenderNode)\r\n commit(types.TENDERNODE_SET, newTenderNode)\r\n },\r\n updateTenderNodeSaveRequired: ({ commit }, value) => {\r\n commit(types.TENDERNODE_SAVE_REQUIRED, value)\r\n },\r\n saveTenderNode: (_, tenderNode) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/TenderNodes'\r\n return api.put(url, tenderNode).then((response) => {\r\n const tenderNode = response.data.data.tenderNodeDTO.values\r\n return tenderNode\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDERNODE_SET](state, tenderNode) {\r\n state.tenderNode = tenderNode\r\n },\r\n [types.TENDERNODE_SAVE_REQUIRED](state, value) {\r\n state.saveRequired = value\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n tender: null,\r\n tenderTypes: [],\r\n tenderSearch: []\r\n}\r\n\r\nexport const getters = {\r\n getTender: (state) => state.tender,\r\n getTenderTypes: (state) => state.tenderTypes,\r\n getTenderSearch: (state) => state.tenderSearch\r\n}\r\nexport const actions = {\r\n fetchTender: ({ commit }, tenderId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Tenders?tenderId=${tenderId}&filter.fields=Tender`\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.tenderDTO.values[0]\r\n commit(types.TENDER_SET, data)\r\n return data\r\n })\r\n },\r\n fetchTenderSearch: ({ commit }, params) => {\r\n let url = '/api/v1/customer/{customerId}/node/{nodeId}/Tenders/Search?'\r\n let connectAmpersand = false\r\n\r\n if (params.limit) {\r\n url += `filter.limit=${params.limit}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.start) {\r\n url += `${connectAmpersand ? '&' : ''}filter.start=${params.start}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.dateFrom && params.dateFrom.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateFrom=${\r\n params.dateFrom ? new Date(params.dateFrom).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.dateTo && params.dateTo.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateTo=${\r\n params.dateTo ? new Date(params.dateTo).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.status && params.status.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.status=${params.status}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.searchText && params.searchText.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.searchText=${params.searchText}`\r\n }\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const result = response.data.data.searchResult\r\n ? response.data.data.searchResult.values\r\n : null\r\n commit(types.TENDER_SET_SEARCH, result)\r\n return new Promise(function (resolve) {\r\n resolve(result)\r\n })\r\n })\r\n .catch((err) => {\r\n commit(types.TENDER_SET_SEARCH, null)\r\n throw err\r\n })\r\n },\r\n resetTenderSearch: ({ commit }) => {\r\n commit(types.TENDER_SET_SEARCH, null)\r\n },\r\n fetchTenderTypes: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/TenderType'\r\n return api.get(url).then((result) => {\r\n const tenderTypes = result.data.data.tenderTypeDTO.values\r\n commit(types.TENDER_TYPE_SET_ALL, tenderTypes)\r\n return tenderTypes\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.TENDER_SET](state, tender) {\r\n state.tender = {\r\n id: tender ? tender.id : util.guid(),\r\n number: tender ? tender.number : '',\r\n name: tender ? tender.name : '',\r\n submissionNoteDocument: tender ? tender.submissionNoteDocument : ''\r\n }\r\n },\r\n [types.TENDER_TYPE_SET_ALL](state, tenderTypes) {\r\n state.tenderTypes = tenderTypes\r\n },\r\n [types.TENDER_SET_SEARCH](state, tenders) {\r\n state.tenderSearch = tenders\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","export function alphaSort(a, b, c, d) {\r\n a = a.toLowerCase()\r\n b = b.toLowerCase()\r\n if (c && d) {\r\n c = c.toLowerCase()\r\n d = d.toLowerCase()\r\n return a < b ? -1 : a > b ? 1 : c < d ? -1 : c > d ? 1 : 0\r\n } else {\r\n return a < b ? -1 : a > b ? 1 : 0\r\n }\r\n}\r\n\r\nconst getDate = (d) => {\r\n return (d && d.length > 0 && new Date(d)) || null\r\n}\r\n\r\nconst getString = (d) => {\r\n return (!!d && d.length > 0 && d.toString()) || null\r\n}\r\n\r\n// Evaluate for performance hits.\r\n// creating new date inside sort may not be ideal.\r\nexport const sortDateBy = (a, b, dateField = 'date') => {\r\n const dateA = getDate(a[dateField])\r\n const dateB = getDate(b[dateField])\r\n\r\n if (dateA === null || dateB === null) {\r\n return (dateA === null) - (dateB === null)\r\n }\r\n\r\n return (dateA === null) - (dateB === null) || dateB - dateA\r\n}\r\n\r\nexport const sortStringBy = (a, b, field) => {\r\n const compA = getString(a[field])\r\n const compB = getString(b[field])\r\n\r\n if (compA === null || compB === null) {\r\n return (compA === null) - (compB === null)\r\n }\r\n\r\n return compA.localeCompare(compB)\r\n}\r\n\r\nexport const aSortDateBy = (arr, dateField = 'date', reverse = false) => {\r\n const arrCopy = [...arr]\r\n\r\n return reverse\r\n ? arrCopy.sort((a, b) => sortDateBy(b, a, dateField))\r\n : arrCopy.sort((a, b) => sortDateBy(a, b, dateField))\r\n}\r\n\r\nexport const aSortStringBy = (arr, field, reverse = false) => {\r\n if (!field) return 0\r\n const arrCopy = [...arr]\r\n return reverse\r\n ? arrCopy.sort((a, b) => sortStringBy(b, a, field))\r\n : arrCopy.sort((a, b) => sortStringBy(a, b, field))\r\n}\r\n","import { useVersionedApi } from '@/composables/api/useVersionedApi'\r\n\r\nfunction CustomerMapper(version) {\r\n function mapUsersFromVersionedEndpoint(userData) {\r\n const users = version === 1 ? userData.data.userDTO.values : userData.items\r\n\r\n if (version === 1) return users\r\n\r\n return users\r\n }\r\n\r\n function mapGroupsFromVersionedEndpoint(groupsData) {\r\n const groups = version === 1 ? groupsData.data.userGroupDTO.values : groupsData\r\n\r\n if (version === 1) return groups\r\n\r\n return groups.map((group) => {\r\n const { userIds, ...rest } = group\r\n return {\r\n ...rest,\r\n users: userIds\r\n }\r\n })\r\n }\r\n\r\n return {\r\n mapUsersFromVersionedEndpoint,\r\n mapGroupsFromVersionedEndpoint\r\n }\r\n}\r\n\r\nfunction CustomerService(config) {\r\n const { api, getEndpointVersion } = useVersionedApi(config)\r\n\r\n async function getUsers(reqParams = {}) {\r\n const version = getEndpointVersion('api2Customer', 'getUsers')\r\n\r\n const defaultParams = {\r\n filters: '',\r\n offset: 0,\r\n limit: 10000\r\n }\r\n const params = { ...defaultParams, ...reqParams }\r\n\r\n let url = `/api/v${version}/customer/{customerId}/Users?filter.fields=permissions`\r\n if (params.filters?.length) url += `,${params.filters}`\r\n if (version !== 1) {\r\n url += `&offset=${params.offset}&limit=${params.limit}`\r\n }\r\n\r\n const response = await api.get(url)\r\n\r\n return CustomerMapper(version).mapUsersFromVersionedEndpoint(response.data)\r\n }\r\n\r\n async function getUserGroups() {\r\n const version = getEndpointVersion('api2Customer', 'getUserGroups')\r\n const url = `/api/v${version}/customer/{customerId}/node/{nodeId}/UserGroups?filter.fields=Users,ProPermissions`\r\n\r\n const response = await api.get(url)\r\n\r\n return CustomerMapper(version).mapGroupsFromVersionedEndpoint(response.data)\r\n }\r\n\r\n return {\r\n getUsers,\r\n getUserGroups\r\n }\r\n}\r\n\r\nexport default CustomerService\r\n","import { api } from '@/api/api'\r\nimport * as types from '@/store/mutation-types'\r\nimport { alphaSort } from '@/utils/array'\r\nimport CustomerService from '@/services/customer/customer.service'\r\n\r\nconst state = {\r\n groups: [],\r\n isTeamGroupSidebarVisible: false,\r\n activeUsersInCurrentGroup: [],\r\n activeUsersNotInCurrentGroup: [],\r\n isPermissionsOverlayVisible: false\r\n}\r\n\r\nconst getters = {\r\n getGroups: (state) => state.groups,\r\n getGroup: (state) => (id) => state.groups.find((group) => group.id === id),\r\n getGroupByName: (state) => (name) => state.groups.find((group) => group.name === name),\r\n getIsTeamGroupSidebarVisible: (state) => state.isTeamGroupSidebarVisible,\r\n getActiveUsersInCurrentGroup: (state) => state.activeUsersInCurrentGroup,\r\n getActiveUsersNotInCurrentGroup: (state) => state.activeUsersNotInCurrentGroup,\r\n getIsPermissionsOverlayVisible: (state) => state.isPermissionsOverlayVisible\r\n}\r\n\r\nconst actions = {\r\n fetchGroups: async ({ commit }, forceRefresh) => {\r\n if (state.groups.length && !forceRefresh) {\r\n return Promise.resolve(state.data)\r\n }\r\n\r\n const groups = await CustomerService().getUserGroups()\r\n\r\n commit(types.GROUP_SET_GROUPS, groups)\r\n return groups\r\n },\r\n createGroup: ({ commit }, payload) => {\r\n // special case, User groups takes the customerId for both the customer and node\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/UserGroups'\r\n return api.post(url, payload).then((response) => {\r\n commit(types.GROUP_SET_GROUPS, response.data.data.userGroupDTO.values)\r\n return response\r\n })\r\n },\r\n saveGroup: ({ commit }, payload) => {\r\n // special case, User groups takes the customerId for both the customer and node\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/UserGroups'\r\n return api.put(url, payload).then((response) => {\r\n commit(types.GROUP_SET_GROUPS, response.data.data.userGroupDTO.values)\r\n return response\r\n })\r\n },\r\n deleteGroup: ({ commit }, payload) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/UserGroups?userGroupId=${payload.userGroupId}`\r\n return api.delete(url).then(function (response) {\r\n commit(types.GROUP_SET_GROUPS, response.data.data.userGroupDTO.values)\r\n return ''\r\n })\r\n },\r\n removeUsersFromGroups: ({ commit }, payload) => {\r\n const userIds = payload.users.map((x) => x.id).join(',')\r\n const groupIds = payload.groups.map((x) => x.id).join(',')\r\n return api\r\n .delete(\r\n `/api/v1/customer/{customerId}/node/{nodeId}/UserGroups/Users?userId=${userIds}&userGroupId=${groupIds}`\r\n )\r\n .then((response) => {\r\n const groups = response.data.data.userGroupDTO.values\r\n commit(types.GROUP_SET_GROUPS, groups)\r\n commit(types.USER_REMOVE_GROUPS, {\r\n userIds: userIds,\r\n groupIds: groupIds,\r\n groups: groups\r\n })\r\n return groups\r\n })\r\n },\r\n addUsersToGroups: ({ commit }, payload) => {\r\n const model = {\r\n userId: payload.users.map((x) => x.id).join(','),\r\n groupId: payload.groups.map((x) => x.id).join(',')\r\n }\r\n\r\n return api\r\n .post('/api/v1/customer/{customerId}/node/{nodeId}/UserGroups/Users', model)\r\n .then(function (response) {\r\n const groups = response.data.data.userGroupDTO.values\r\n commit(types.GROUP_SET_GROUPS, groups)\r\n commit(types.USER_ADD_GROUPS, {\r\n userIds: model.userId,\r\n groupIds: model.groupId,\r\n groups: groups\r\n })\r\n return groups\r\n })\r\n },\r\n setIsTeamGroupSidebarVisible: ({ commit }, payload) => {\r\n commit(types.GROUP_SET_SIDEBAR_VISIBILITY, payload)\r\n },\r\n toggleIsTeamGroupSidebarVisible: ({ commit }) => {\r\n commit(types.GROUP_TOGGLE_SIDEBAR_VISIBILITY)\r\n },\r\n setActiveUsersInCurrentGroup: ({ commit }, payload) => {\r\n commit(types.GROUP_SET_ACTIVE_USERS_IN_GROUP, payload)\r\n },\r\n setActiveUsersNotInCurrentGroup: ({ commit }, payload) => {\r\n commit(types.GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP, payload)\r\n },\r\n setIsPermissionsOverlayVisible: ({ commit }, payload) => {\r\n commit(types.GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY, payload)\r\n }\r\n}\r\n\r\nconst mutations = {\r\n [types.GROUP_SET_GROUPS](state, groups) {\r\n state.groups = groups.sort((a, b) => alphaSort(a.name, b.name))\r\n },\r\n [types.GROUP_SET_SIDEBAR_VISIBILITY](state, isVisible) {\r\n state.isTeamGroupSidebarVisible = isVisible\r\n },\r\n [types.GROUP_TOGGLE_SIDEBAR_VISIBILITY](state) {\r\n state.isTeamGroupSidebarVisible = !state.isTeamGroupSidebarVisible\r\n },\r\n [types.GROUP_SET_ACTIVE_USERS_IN_GROUP](state, userList) {\r\n state.activeUsersInCurrentGroup = userList\r\n },\r\n [types.GROUP_SET_ACTIVE_USERS_NOT_IN_GROUP](state, userList) {\r\n state.activeUsersNotInCurrentGroup = userList\r\n },\r\n [types.GROUP_SET_PERMISSIONS_OVERLAY_VISIBILITY](state, isVisible) {\r\n state.isPermissionsOverlayVisible = isVisible\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\nimport CustomerService from '@/services/customer/customer.service'\r\n\r\nconst state = {\r\n user: {\r\n id: '',\r\n firstName: '',\r\n lastName: '',\r\n fullName: '',\r\n avatar: '',\r\n customers: []\r\n },\r\n users: [],\r\n purchasers: [],\r\n procurementLeads: []\r\n}\r\n\r\nexport const getters = {\r\n getLoggedInUser: (state) => state.user,\r\n getUsers: (state) => state.users,\r\n getPurchasers: (state) => state.purchasers,\r\n getProcurementLeads: (state) => state.procurementLeads,\r\n getUser: (state) => (userId) => {\r\n return state.users.find((u) => u.id === userId)\r\n },\r\n getIsSiteAdmin: (state) => {\r\n return (\r\n state.user.customers &&\r\n state.user.customers.length > 0 &&\r\n state.user.customers.some((c) => c.id === import.meta.env.VITE_ESOL_CUST_ID)\r\n )\r\n }\r\n}\r\nexport const actions = {\r\n setLoggedInUser: ({ commit }, user) => {\r\n commit(types.USER_SET, user)\r\n },\r\n fetchUser: ({ commit }, userId) => {\r\n const url = `/api/v1/customer/{customerId}/Users/?userId=${userId}&filter.fields=permissions`\r\n return api.get(url).then((response) => {\r\n const user = response.data.data.userDTO.values[0]\r\n commit(types.USER_SET, user)\r\n return user\r\n })\r\n },\r\n fetchUsers: async ({ commit, rootGetters }, filters) => {\r\n const users = await CustomerService().getUsers({ filters })\r\n // We have to populate the groups list from the store for v2\r\n if (rootGetters.getFeatureEnabled('api2Customer').enabled) {\r\n const groups = rootGetters.getGroups\r\n\r\n users.forEach((user) => {\r\n if (user.groupIds !== null && user.groupIds.length > 0) {\r\n user.userGroups = groups.filter((g) => user.groupIds.indexOf(g.id) > -1)\r\n }\r\n })\r\n }\r\n\r\n commit(types.USER_SET_ALL, users)\r\n return users\r\n },\r\n fetchPurchasers: ({ commit }, filter) => {\r\n let url = '/api/v1/customer/{customerId}/Users?isPurchaser=true'\r\n if (filter != null && filter.length > 0) {\r\n url += `&filter.fields=${filter}`\r\n }\r\n return api.get(url).then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_PURCHASERS, data)\r\n return data\r\n })\r\n },\r\n updateLoggedInUser: ({ commit }, user) => {\r\n // updates the currently logged-in user\r\n return api.put(`/api/v1/customer/{customerId}/Users`, user).then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_ALL, data)\r\n return data\r\n })\r\n },\r\n updateUser: ({ commit, rootGetters }, user) => {\r\n // updates a different user, checking the logged-in user's permissions first\r\n const loggedInUser = rootGetters['getLoggedInUser']?.id || ''\r\n const url = `api/v1/customer/{customerId}/Users/${loggedInUser}/teamMember`\r\n\r\n return api.put(url, user).then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_ALL, data)\r\n return data\r\n })\r\n },\r\n unlockUser: ({ commit }, userId) => {\r\n return api\r\n .put(`/api/v1/customer/{customerId}/Users/Unlock?userid=${userId}`)\r\n .then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_ALL, data)\r\n return data\r\n })\r\n },\r\n updateUserStatus: ({ commit }, params) => {\r\n const userIds = params.users.map((u) => u.id)\r\n\r\n return api\r\n .put(\r\n `/api/v1/customer/{customerId}/Users/Status?active=${params.status}&userId=${userIds.join(\r\n ','\r\n )}`\r\n )\r\n .then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_ALL, data)\r\n return data\r\n })\r\n },\r\n createUser: ({ commit }, user) => {\r\n return api.post(`/api/v1/customer/{customerId}/Users`, user).then((response) => {\r\n const data = response.data.data.userDTO.values\r\n commit(types.USER_SET_ALL, data)\r\n return data\r\n })\r\n },\r\n updateUsersGroupAssociations: ({ commit }, group) => {\r\n commit(types.USER_REPLACE_USERS_GROUP, group)\r\n },\r\n deleteUsersGroupAssociations: ({ commit }, groupId) => {\r\n commit(types.USER_DELETE_USERS_GROUP, groupId)\r\n },\r\n updateAvatar: (_, payload) => {\r\n const { userId, formData } = payload\r\n const avatarRoute = `/api/v1/customer/{customerId}/Users/Upload?userId=${userId.toUpperCase()}`\r\n return uploadApi.post(avatarRoute, formData)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.USER_SET](state, user) {\r\n state.user.id = user.id\r\n state.user.firstName = user.firstName\r\n state.user.lastName = user.lastName\r\n state.user.fullName = `${user.firstName} ${user.lastName}`\r\n state.user.avatar =\r\n user.avatarUrl ||\r\n `https://ui-avatars.com/api/?size=64&name=${user.firstName}+${user.lastName}`\r\n state.user.inActive = user.inActive\r\n state.user.purchaser = user.purchaser\r\n state.user.userGroups = user.userGroups\r\n state.user.customers = user.customers\r\n state.user.username = user.username\r\n state.user.permissions = user.permissions\r\n state.user.proPermissions = user.proPermissions\r\n state.user.email = user.email\r\n },\r\n [types.USER_CREATE](state, user) {\r\n state.user.id = user.id\r\n state.user.firstName = user.firstName\r\n state.user.lastName = user.lastName\r\n state.user.fullName = `${user.firstName} ${user.lastName}`\r\n state.user.avatar =\r\n user.avatarUrl ||\r\n `https://ui-avatars.com/api/?size=64&name=${user.firstName}+${user.lastName}`\r\n state.user.inActive = user.inActive\r\n state.user.purchaser = user.purchaser\r\n state.user.userGroups = user.userGroups\r\n },\r\n [types.USER_SET_ALL](state, users) {\r\n // TODO - this should not be required. State storage of entities should be consistent\r\n users.forEach((u) => {\r\n u.avatarUrl =\r\n u.avatarUrl == null ||\r\n u.avatarUrl ===\r\n `https://service.bidsandtenders.ca/resources/images/avatar/https://ui-avatars.com/api/?size=64&name=${u.firstName}+${u.lastName}`\r\n ? `https://ui-avatars.com/api/?size=64&name=${u.firstName}+${u.lastName}`\r\n : u.avatarUrl\r\n })\r\n // TODO -same as above we need to standardize the naming for objects in NEXT to objects from the DTOS\r\n state.users = users\r\n },\r\n [types.USER_SET_PURCHASERS](state, users) {\r\n if (users && users.length > 0) {\r\n users.sort((a, b) => a.firstName.localeCompare(b.firstName, 'en', { sensitivity: 'base' }))\r\n state.purchasers = users.filter((u) => u.purchaser)\r\n const updatedProcurementLeads = [...users]\r\n state.procurementLeads = updatedProcurementLeads.filter((g) => g.inActive === false)\r\n }\r\n },\r\n\r\n [types.USER_ADD_GROUPS](state, payload) {\r\n const groups = payload.groups.filter((g) => payload.groupIds.split(',').indexOf(g.id) > -1)\r\n const users = state.users.filter((u) => payload.userIds.split(',').indexOf(u.id) > -1)\r\n\r\n users.forEach((user) => {\r\n groups.forEach((group) => {\r\n if (user.userGroups === null) {\r\n user.userGroups = []\r\n } else if (user.userGroups.filter((g) => g.id === group.id).length === 0) {\r\n user.userGroups.push({\r\n id: group.id,\r\n name: group.name\r\n })\r\n }\r\n })\r\n })\r\n },\r\n [types.USER_REMOVE_GROUPS](state, payload) {\r\n const groups = payload.groups.filter((g) => payload.groupIds.split(',').indexOf(g.id) > -1)\r\n const users = state.users.filter((u) => payload.userIds.split(',').indexOf(u.id) > -1)\r\n\r\n users.forEach((user) => {\r\n const userGroupIds = user.userGroups.map((g) => g.id)\r\n groups.forEach((group) => {\r\n if (user.userGroups == null) {\r\n user.userGroups = []\r\n } else {\r\n const groupIndex = userGroupIds.indexOf(group.id)\r\n if (groupIndex >= 0) {\r\n user.userGroups.splice(groupIndex, 1)\r\n }\r\n }\r\n })\r\n })\r\n },\r\n [types.USER_REPLACE_USERS_GROUP](state, group) {\r\n state.users.forEach((user) => {\r\n if (user.userGroups != null && user.userGroups.length > 0) {\r\n const groupMatchIndex = user.userGroups.map((g) => g.id).indexOf(group.id)\r\n if (groupMatchIndex >= 0) {\r\n user.userGroups[groupMatchIndex] = group\r\n }\r\n }\r\n })\r\n },\r\n [types.USER_DELETE_USERS_GROUP](state, groupId) {\r\n state.users.forEach((user) => {\r\n if (user.userGroups != null && user.userGroups.length > 0) {\r\n const groupMatchIndex = user.userGroups.map((g) => g.id).indexOf(groupId)\r\n if (groupMatchIndex >= 0) {\r\n user.userGroups.splice(groupMatchIndex, 1)\r\n }\r\n }\r\n })\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n vendorList: [],\r\n vendorLists: []\r\n}\r\n\r\nexport const getters = {\r\n getVendorList: (state) => state.vendorList,\r\n getVendorLists: (state) => state.vendorLists\r\n}\r\nexport const actions = {\r\n fetchVendorLists: ({ commit }) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/VendorLists'\r\n return api.get(url).then((response) => {\r\n const lists = response.data.data.vendorListDTO.values\r\n commit(types.VENDOR_LISTS_SET, lists)\r\n return lists\r\n })\r\n },\r\n fetchVendorList: ({ commit }, vendorListId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorLists/${vendorListId}/`\r\n return api.get(url).then((response) => {\r\n const vendorlist = response.data.data.vendorListDTO.values\r\n commit(types.VENDOR_LIST_SET, vendorlist)\r\n return vendorlist\r\n })\r\n },\r\n saveVendorList: (_, model) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/VendorLists`\r\n return api.post(url, model).then((response) => response.data)\r\n },\r\n addVendorToList: (_, model) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/VendorLists/AddVendorToList`\r\n return api.post(url, model).then((response) => {\r\n const savedVendorList = response.data\r\n return [null, savedVendorList]\r\n })\r\n }\r\n}\r\nexport const mutations = {\r\n [types.VENDOR_LISTS_SET](state, lists) {\r\n state.vendorLists = lists\r\n },\r\n [types.VENDOR_LIST_SET](state, list) {\r\n state.vendorList = list\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nconst state = {\r\n searchTenderResults: null,\r\n searchCriteraResults: null,\r\n totalNumSearchCriteriaResults: null,\r\n lastRotationalListUpdate: null\r\n}\r\n\r\nexport const getters = {\r\n getBidInvitationSearchTenderResults: (state) => state.searchTenderResults,\r\n getBidInvitationSearchCriteriaResults: (state) => state.searchCriteraResults,\r\n getBidInvitationSearchCriteriaResultsTotal: (state) => state.totalNumSearchCriteriaResults,\r\n getLastRotationalListUpdate: (state) => state.lastRotationalListUpdate\r\n}\r\n\r\nexport const actions = {\r\n fetchBidInvitationSearchResultsByCriteria: ({ commit }, criteria) => {\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/VendorInvitations/SearchCriteria' +\r\n '?filter.limit='\r\n }${criteria.limit}&filter.start=${criteria.start}&filter.sortColumn=${\r\n criteria.sortColumn\r\n }&filter.sortDirection=${criteria.sortDirection}`\r\n\r\n const model = {\r\n companyName: criteria.companyName,\r\n contactFirstName: criteria.contactFirstName,\r\n contactLastName: criteria.contactLastName,\r\n email: criteria.email,\r\n city: criteria.city,\r\n localVendor: criteria.localVendor,\r\n emergencyVendor: criteria.emergencyVendor,\r\n certifiedDiverseSupplier: criteria.certifiedDiverseSupplier,\r\n categoryIds:\r\n criteria.categoryIds !== null && criteria.categoryIds.length > 0\r\n ? criteria.categoryIds\r\n : '',\r\n adminOnlyCategoryIds:\r\n criteria.adminOnlyCategoryIds !== null && criteria.adminOnlyCategoryIds.length > 0\r\n ? criteria.adminOnlyCategoryIds\r\n : '',\r\n CertifiedDiverseSupplierClassificationIds:\r\n criteria.diversityClassificationIds !== null &&\r\n criteria.diversityClassificationIds.length > 0\r\n ? criteria.diversityClassificationIds\r\n : ''\r\n }\r\n\r\n return api.post(url, model).then((response) => {\r\n if (response.data.count !== 0) {\r\n const searchCriteraResults = response.data.data.searchResult.values[0]\r\n\r\n commit(types.INVITATION_SET_SEARCH_CRITERIA_RESULT, searchCriteraResults)\r\n commit(\r\n types.INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT,\r\n response.data.data.searchResult.total\r\n )\r\n return response\r\n }\r\n })\r\n },\r\n fetchBidInvitationSearchResultsByTender: ({ commit }, criteria) => {\r\n const url = `${\r\n '/api/v1/customer/{customerId}/node/{nodeId}/VendorInvitations/SearchTender' + '?tenderId='\r\n }${criteria.tenderId}&plantakerOptions=${criteria.plantakerOptions}&filter.sortColumn=${\r\n criteria.sortColumn\r\n }&filter.sortDirection=${criteria.sortDirection}`\r\n\r\n return api.get(url).then((response) => {\r\n if (response.data.count !== 0) {\r\n const searchTenderResults = response.data.data.searchResult.values[0]\r\n\r\n commit(types.INVITATION_SET_SEARCH_TENDER_RESULT, searchTenderResults)\r\n\r\n return response\r\n }\r\n })\r\n },\r\n lookupEmailInvitee: (_, param) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorInvitations/LookupEmailInvitee?tenderId=${param.tenderId}&email=${param.email}`\r\n return api.get(url)\r\n },\r\n setLastRotationalListUpdate: ({ commit }, date) => {\r\n commit(types.INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE, date)\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.INVITATION_SET_SEARCH_TENDER_RESULT](state, searchTenderResults) {\r\n state.searchTenderResults = searchTenderResults\r\n },\r\n [types.INVITATION_SET_SEARCH_CRITERIA_RESULT](state, searchCriteraResults) {\r\n state.searchCriteraResults = searchCriteraResults\r\n },\r\n [types.INVITATION_SET_SEARCH_CRITERIA_RESULT_TOTAL_COUNT](state, count) {\r\n state.totalNumSearchCriteriaResults = count\r\n },\r\n [types.INVITATION_SET_LAST_ROTATIONAL_LIST_UPDATE](state, date) {\r\n state.lastRotationalListUpdate = date\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n performanceStatuses: [],\r\n performanceSummary: null,\r\n // performanceStatusEvaluation: null || { satisfactory: Number, nonSatisfactory: Number }\r\n performanceStatusEvaluation: null\r\n}\r\nexport const getters = {\r\n getPerformanceStatuses: (state) => state.performanceStatuses,\r\n getPerformanceSummary: (state) => state.performanceSummary,\r\n getPerformanceStatusEvaluation: (state) => state.performanceStatusEvaluation\r\n}\r\nexport const actions = {\r\n fetchVendorPerformanceStatusAll: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceStatuses/All`\r\n return api.get(url).then((response) => {\r\n let performanceStatuses = []\r\n if (response.data.count > 0) {\r\n performanceStatuses = response.data.data.performanceStatusDTO.values\r\n commit(types.PERFORMANCE_STATUS_SET_ALL, performanceStatuses)\r\n }\r\n return performanceStatuses\r\n })\r\n },\r\n fetchPerformanceStatusSummary: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceStatuses/Summary`\r\n return api.get(url).then((response) => {\r\n const data = response?.data?.data?.performanceData?.values?.[0] || {}\r\n commit(types.PERFORMANCE_STATUS_SET_SUMMARY, data)\r\n return data\r\n })\r\n },\r\n fetchPerformanceStatusEvaluation: ({ commit }) => {\r\n const url = `api/v1/customer/{customerId}/node/{nodeId}/PerformanceStatuses/PerformanceEvaluation`\r\n return api.get(url).then((response) => {\r\n const data =\r\n response?.data?.data?.performanceEvaluationSatisfactoryReportDTO?.values?.[0] || null\r\n if (data) {\r\n const { satisfactory, nonSatisfactory } = data\r\n\r\n // Don't update the store if there are no evaluations that meet criteria\r\n if (satisfactory + nonSatisfactory > 0) {\r\n commit(types.PERFORMANCE_STATUS_EVALUATION_SET, data)\r\n }\r\n }\r\n return data\r\n })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.PERFORMANCE_STATUS_SET_ALL](state, performanceStatus) {\r\n state.performanceStatuses = performanceStatus\r\n },\r\n [types.PERFORMANCE_STATUS_SET_SUMMARY](state, performanceSummary) {\r\n state.performanceSummary = performanceSummary\r\n },\r\n [types.PERFORMANCE_STATUS_EVALUATION_SET](state, performanceStatusEvaluation) {\r\n state.performanceStatusEvaluation = performanceStatusEvaluation\r\n }\r\n}\r\nexport default {\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api, downloadApi } from '@/api/api'\r\nimport util from '@/utils/utility'\r\nimport * as types from '../../mutation-types'\r\nimport axios from 'axios'\r\n\r\nlet cancelTokenSource = axios.CancelToken.source()\r\nconst state = {\r\n vendor: null,\r\n vendorSearch: [],\r\n vendorSearchTotal: null,\r\n vendorHistory: [],\r\n vendorDiversityClassificationType: []\r\n}\r\n\r\nexport const getters = {\r\n getVendor: (state) => state.vendor,\r\n getVendorSearch: (state) => state.vendorSearch,\r\n getVendorSearchTotal: (state) => state.vendorSearchTotal,\r\n getVendorHistory: (state) => state.vendorHistory,\r\n getVendorDiversityClassificationType: (state) => state.vendorDiversityClassificationType\r\n}\r\nexport const actions = {\r\n fetchVendor: ({ commit, rootState }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Vendors?vendorId=${vendorId}&filter.fields=Tender`\r\n return api.get(url).then((response) => {\r\n const vendor = response.data.data.vendorDTO.values[0]\r\n commit(types.VENDOR_SET, { vendor, rootState })\r\n return vendor\r\n })\r\n },\r\n fetchVendorSubmissions: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Vendors/SubmissionHistory?vendorId=${vendorId}`\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const result = response.data.data.searchResult\r\n ? response.data.data.searchResult.values\r\n : null\r\n commit(types.SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET, result)\r\n return result\r\n })\r\n .catch((err) => {\r\n commit(types.SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET, null)\r\n throw err\r\n })\r\n },\r\n fetchVendorSearch: ({ commit }, params) => {\r\n let url = '/api/v1/customer/{customerId}/node/{nodeId}/Vendors/Search?'\r\n let connectAmpersand = false\r\n\r\n if (params.limit) {\r\n url += `filter.limit=${params.limit}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.start) {\r\n url += `${connectAmpersand ? '&' : ''}filter.start=${params.start}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.dateFrom && params.dateFrom.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateFrom=${\r\n params.dateFrom ? new Date(params.dateFrom).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.dateTo && params.dateTo.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateTo=${\r\n params.dateTo ? new Date(params.dateTo).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.status && params.status.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.status=${params.status}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.searchText && params.searchText.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.searchText=${params.searchText}`\r\n }\r\n const config = { cancelToken: cancelTokenSource.token }\r\n return api\r\n .get(url, config)\r\n .then((response) => {\r\n const result = response.data.data.searchResult\r\n ? response.data.data.searchResult.values\r\n : null\r\n commit(types.VENDOR_SET_SEARCH, result)\r\n return result\r\n })\r\n .catch((err) => {\r\n commit(types.VENDOR_SET_SEARCH, null)\r\n throw err\r\n })\r\n },\r\n\r\n cancelFetchVendorSearch: ({ commit }) => {\r\n if (cancelTokenSource) {\r\n cancelTokenSource.cancel('Request canceled by user')\r\n }\r\n cancelTokenSource = axios.CancelToken.source()\r\n commit(types.VENDOR_SET_SEARCH, null)\r\n },\r\n\r\n fetchVendorSearchWithPerformanceEval: ({ commit }, params) => {\r\n let url = '/api/v1/customer/{customerId}/node/{nodeId}/Vendors/SearchWithPerformaceEvaluation?'\r\n let connectAmpersand = false\r\n\r\n if (params.dateFrom && params.dateFrom.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateFrom=${\r\n params.dateFrom ? new Date(params.dateFrom).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.dateTo && params.dateTo.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateTo=${\r\n params.dateTo ? new Date(params.dateTo).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (params.status && params.status.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.status=${params.status}`\r\n connectAmpersand = true\r\n }\r\n url += `${connectAmpersand ? '&' : ''}filter.searchText=${params.searchText}`\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n const result = response.data.data.searchResult\r\n ? response.data.data.searchResult.values\r\n : null\r\n commit(types.VENDOR_SET_SEARCH, result)\r\n return result\r\n })\r\n .catch((err) => {\r\n commit(types.VENDOR_SET_SEARCH, null)\r\n throw err\r\n })\r\n },\r\n fetchVendorDiversityClassificationType: ({ commit }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/Vendors/DiversityClassificationType/All`\r\n\r\n return api.get(url).then((response) => {\r\n const result = response?.data?.data?.vendorDiversityClassificationTypeDTO?.values || []\r\n\r\n commit(types.VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET, result)\r\n return result\r\n })\r\n },\r\n fetchVendorAdvancedSearch: ({ commit }, model) => {\r\n let url = '/api/v1/customer/{customerId}/node/{nodeId}/Vendors/AdvancedSearch?'\r\n let connectAmpersand = false\r\n\r\n if (model.limit) {\r\n url += `filter.limit=${model.limit}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.start) {\r\n url += `${connectAmpersand ? '&' : ''}filter.start=${model.start}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.sortColumn) {\r\n url += `${connectAmpersand ? '&' : ''}filter.sortColumn=${model.sortColumn}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.sortDirection) {\r\n url += `${connectAmpersand ? '&' : ''}filter.sortDirection=${model.sortDirection}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.dateFrom && model.dateFrom.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateFrom=${\r\n model.dateFrom ? new Date(model.dateFrom).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.dateTo && model.dateTo.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateTo=${\r\n model.dateTo ? new Date(model.dateTo).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.status && model.status.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.status=${model.status}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.keywords && model.keywords.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.searchText=${model.keywords}`\r\n }\r\n\r\n return api\r\n .post(url, model)\r\n .then((response) => {\r\n const result = response.data.data.searchResult\r\n ? response.data.data.searchResult.values\r\n : null\r\n\r\n commit(types.VENDOR_SET_SEARCH, result)\r\n\r\n if (response.data.count !== 0) {\r\n commit(types.VENDOR_SET_SEARCH_TOTAL, response.data.data.searchResult.total)\r\n } else {\r\n commit(types.VENDOR_SET_SEARCH_TOTAL, null)\r\n }\r\n\r\n return new Promise(function (resolve) {\r\n resolve(result)\r\n })\r\n })\r\n .catch((err) => {\r\n commit(types.VENDOR_SET_SEARCH, null)\r\n throw err\r\n })\r\n },\r\n exportVendorAdvancedSearch: (_, model) => {\r\n let url = '/api/v1/customer/{customerId}/node/{nodeId}/Vendors/AdvancedSearchResultExport?'\r\n let connectAmpersand = false\r\n\r\n if (model.limit) {\r\n url += `filter.limit=${model.limit}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.start) {\r\n url += `${connectAmpersand ? '&' : ''}filter.start=${model.start}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.sortColumn) {\r\n url += `${connectAmpersand ? '&' : ''}filter.sortColumn=${model.sortColumn}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.sortDirection) {\r\n url += `${connectAmpersand ? '&' : ''}filter.sortDirection=${model.sortDirection}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.dateFrom && model.dateFrom.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateFrom=${\r\n model.dateFrom ? new Date(model.dateFrom).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.dateTo && model.dateTo.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.dateTo=${\r\n model.dateTo ? new Date(model.dateTo).toISOString() : ''\r\n }`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.status && model.status.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.status=${model.status}`\r\n connectAmpersand = true\r\n }\r\n\r\n if (model.searchText && model.searchText.length > 0) {\r\n url += `${connectAmpersand ? '&' : ''}filter.searchText=${model.searchText}`\r\n }\r\n\r\n return downloadApi.post(url, model).then(util.forceFileDownload)\r\n },\r\n updateVendor: (_, vendor) => {\r\n const url = '/api/v1/customer/{customerId}/node/{nodeId}/Vendors/'\r\n return api.put(url, vendor).then((response) => response.data.data.vendorDTO.values[0])\r\n },\r\n resetVendorSearch: ({ commit }) => {\r\n commit(types.VENDOR_SET_SEARCH, null)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.VENDOR_SET](state, { vendor, rootState }) {\r\n // cover classificaiton type\r\n let vendorDiversityClassificationTypeDescription = null\r\n if (vendor.vendorDiversityClassificationTypeDescription) {\r\n vendorDiversityClassificationTypeDescription =\r\n vendor.vendorDiversityClassificationTypeDescription\r\n } else if (vendor.vendorDiversityClassificationType) {\r\n vendorDiversityClassificationTypeDescription =\r\n vendor.vendorDiversityClassificationType.description\r\n }\r\n\r\n state.vendor = {\r\n id: vendor ? vendor.id : util.guid(),\r\n companyName: vendor ? vendor.companyName : '',\r\n relevantName: vendor ? vendor.relevantName : '',\r\n address1: vendor ? vendor.address1 : '',\r\n address2: vendor ? vendor.address2 : '',\r\n city: vendor ? vendor.city : '',\r\n provinceState: vendor ? vendor.provinceState : '',\r\n country: vendor ? vendor.country : '',\r\n postalCode: vendor ? vendor.postalCode : '',\r\n faxAreaCode: vendor ? vendor.faxAreaCode : '',\r\n faxPrefix: vendor ? vendor.faxPrefix : '',\r\n faxSuffix: vendor ? vendor.faxSuffix : '',\r\n primaryContact: vendor ? vendor.primaryContact : null,\r\n contacts: vendor ? vendor.contacts : null,\r\n accountStatus: vendor ? vendor.isActive : null,\r\n website: vendor ? vendor.website : null,\r\n localVendorAgencies: vendor && vendor.localVendorAgencies ? vendor.localVendorAgencies : [],\r\n isLocalVendor: vendor.isLocalVendor ? vendor.isLocalVendor : false,\r\n isEmergencyVendor: vendor ? vendor.emergencyVendor : null,\r\n subscription: vendor ? vendor.vendorPaySubscription : null,\r\n hstNumber: vendor ? vendor.hstNumber : null,\r\n agencyNotifications: vendor ? vendor.agencyNotifications : null,\r\n categories: vendor ? vendor.categories : null,\r\n previousCompanyName: vendor ? vendor.previousCompanyName : null,\r\n customerNode: (rootState.authCredential.authCustomerNode || {}).id || '', // localStorage.getItem('customerNodeId'),\r\n certifiedDiverseSupplier: vendor ? vendor.certifiedDiverseSupplier : null,\r\n vendorDiversityClassificationTypeDescription,\r\n vendorDiversityVerified:\r\n vendor && vendor.vendorDiversityVerified ? vendor.vendorDiversityVerified : [],\r\n isvendorDiversityVerified:\r\n vendor && vendor.isvendorDiversityVerified ? vendor.isvendorDiversityVerified : false,\r\n isActive: vendor && vendor.isActive ? vendor.isActive : false,\r\n isDeleted: vendor && vendor.isDeleted ? vendor.isDeleted : false,\r\n testVendor: vendor && vendor.testVendor ? vendor.testVendor : false,\r\n belongsToNodeId: vendor && vendor.belongsToNodeId ? vendor.belongsToNodeId : false\r\n }\r\n },\r\n [types.VENDOR_SET_SEARCH](state, vendors) {\r\n state.vendorSearch = vendors\r\n },\r\n [types.VENDOR_SET_SEARCH_TOTAL](state, rowCount) {\r\n state.vendorSearchTotal = rowCount\r\n },\r\n [types.SUPPLIER_SUBMISSION_SUBMISSION_RESULTS_SET](state, history) {\r\n state.vendorHistory = history\r\n },\r\n [types.VENDOR_DIVERSITY_CLASSIFICATION_TYPE_SET](state, vendorDiversityClassificationType) {\r\n state.vendorDiversityClassificationType = vendorDiversityClassificationType\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\n\r\nexport const actions = {\r\n fetchVendorQuestions(_, tenderId) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorQuestions?tenderId=${tenderId}`\r\n\r\n return api.get(url).then((response) => response.data.data.tenderVendorQuestionDTO.values)\r\n },\r\n updateVendorQuestion(_, { vendorQuestion, answerViaEmail }) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorQuestions?answerViaEmail=${answerViaEmail}`\r\n\r\n return api.put(url, vendorQuestion).then((response) => {\r\n const vendorQuestion = response.data.data.tenderVendorQuestionDTO.values[0]\r\n return vendorQuestion\r\n })\r\n },\r\n createVendorQuestion(_, vendorQuestion) {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorQuestions`\r\n\r\n return api.post(url, vendorQuestion).then((response) => {\r\n const vendorQuestion = response.data.data.tenderVendorQuestionDTO.values[0]\r\n return vendorQuestion\r\n })\r\n }\r\n}\r\n\r\nexport default {\r\n namespaced: false,\r\n actions\r\n}\r\n","import { api, uploadApi } from '@/api/api'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n vendorDocuments: []\r\n}\r\nexport const getters = {\r\n getVendorDocuments: (state) => state.vendorDocuments\r\n}\r\nexport const actions = {\r\n fetchVendorDocuments: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/vendor/${vendorId}/VendorDocuments`\r\n return api.get(url).then((response) => {\r\n let vendorDocuments = []\r\n\r\n if (response.data.count > 0) {\r\n vendorDocuments = response.data.data.vendorDocumentDTO.values\r\n commit(types.VENDOR_DOCUMENTS_SET, vendorDocuments)\r\n }\r\n return vendorDocuments\r\n })\r\n },\r\n createVendortDocument: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/vendor/${model.vendorId}/VendorDocuments`\r\n return uploadApi.post(url, model.formData)\r\n },\r\n updateVendorDocument: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/vendor/${model.vendorId}/VendorDocuments`\r\n return api.put(url, model.model)\r\n },\r\n deleteVendorDocument: (_, model) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/vendor/${model.vendorId}/VendorDocuments/${model.vendorDocumentId}`\r\n return api.delete(url)\r\n }\r\n}\r\nexport const mutations = {\r\n [types.VENDOR_DOCUMENTS_SET](state, vendorDocuments) {\r\n state.vendorDocuments = vendorDocuments\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import { api } from '@/api/api'\r\nimport findIndex from 'lodash/findIndex'\r\nimport Vue from 'vue'\r\nimport * as types from '../../mutation-types'\r\n\r\nexport const state = {\r\n vendorPerformanceSummary: null,\r\n vendorPerformanceEvaluation: [],\r\n vendorPerformanceStatusLog: null,\r\n vendorPerformanceStatusLogHistory: []\r\n}\r\nexport const getters = {\r\n getVendorPerformanceSummary: (state) => state.vendorPerformanceSummary,\r\n getVendorPerformanceEvaluation: (state) => state.vendorPerformanceEvaluation,\r\n getVendorPerformanceStatusLog: (state) => state.vendorPerformanceStatusLog,\r\n getVendorPerformanceStatusLogHistory: (state) => state.vendorPerformanceStatusLogHistory\r\n}\r\nexport const actions = {\r\n fetchVendorPerformanceSummary: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorPerformances/GetVendorPerformanceSummary?vendorId=${vendorId}`\r\n\r\n return api\r\n .get(url)\r\n .then((response) => {\r\n if (response.data.count > 0) {\r\n const performance = response.data.data.vendorPerformanceSummaryDTO.values[0]\r\n commit(types.VENDOR_PERFORMANCE_SUMMARY_SET, performance)\r\n return performance\r\n }\r\n })\r\n .catch((err) => {\r\n commit(types.VENDOR_PERFORMANCE_SUMMARY_SET, null)\r\n throw err\r\n })\r\n },\r\n fetchVendorPerformanceEvaluation: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/VendorPerformances/PerformanceEvaluation?vendorId=${vendorId}`\r\n return api.get(url).then((response) => {\r\n let vendorPerformanceEvaluation = []\r\n if (response.data.count > 0) {\r\n vendorPerformanceEvaluation = response.data.data.evaluationSummary.values\r\n commit(types.VENDOR_PERFORMANCE, vendorPerformanceEvaluation)\r\n }\r\n return vendorPerformanceEvaluation\r\n })\r\n },\r\n\r\n fetchVendorPerformanceStatusLog: ({ commit }, params) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceVendorStatusLogs/Current?vendorId=${params.vendorId}&isActive=${params.isActive}`\r\n return api.get(url).then((response) => {\r\n let performanceStatus = null\r\n if (response.data.count > 0) {\r\n performanceStatus = response.data.data.performanceVendorStatusLogDTO.values[0]\r\n }\r\n\r\n commit(types.VENDOR_PERFORMANCE_STATUS_LOG_SET, performanceStatus)\r\n return performanceStatus\r\n })\r\n },\r\n AddVendorPerformanceStatusLog: ({ commit }, statusLog) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceVendorStatusLogs`\r\n return api.post(url, statusLog).then((response) => {\r\n const status = response.data.data.performanceVendorStatusLogDTO.values[0]\r\n commit(types.VENDOR_PERFORMANCE_STATUS_LOG_SET, status)\r\n return status\r\n })\r\n },\r\n UpdateVendorPerformanceStatusLog: ({ commit }, { statusLog, fromHistory }) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceVendorStatusLogs?fromHistory=${fromHistory}`\r\n return api.put(url, statusLog).then((response) => {\r\n const status = response.data.data.performanceVendorStatusLogDTO.values[0]\r\n commit(types.VENDOR_PERFORMANCE_STATUS_LOG_SET, status)\r\n\r\n return status\r\n })\r\n },\r\n fetchVendorPerformanceStatusLogHistory: ({ commit }, vendorId) => {\r\n const url = `/api/v1/customer/{customerId}/node/{nodeId}/PerformanceVendorStatusLogs/History?vendorId=${vendorId}`\r\n\r\n return api.get(url).then((response) => {\r\n let performanceStatus = []\r\n if (response.data.count > 0) {\r\n performanceStatus = response.data.data.performanceVendorStatusLogDTO.values\r\n }\r\n\r\n commit(types.VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL, performanceStatus)\r\n return performanceStatus\r\n })\r\n },\r\n updateVendorPerformanceStatusLogHistory: ({ commit }, vendorPerformanceStatusLog) => {\r\n commit('tempUpdateHistory', { vendorPerformanceStatusLog })\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n [types.VENDOR_PERFORMANCE_SUMMARY_SET](state, performance) {\r\n state.vendorPerformanceSummary = performance\r\n },\r\n [types.VENDOR_PERFORMANCE]: (state, vendorPerformanceEvaluation) => {\r\n state.vendorPerformanceEvaluation = vendorPerformanceEvaluation\r\n },\r\n [types.VENDOR_PERFORMANCE_STATUS_LOG_SET]: (state, vendorPerformanceStatusLog) => {\r\n state.vendorPerformanceStatusLog = vendorPerformanceStatusLog\r\n },\r\n [types.VENDOR_PERFORMANCE_STATUS_LOG_HISTORY_SET_ALL]: (\r\n state,\r\n vendorPerformanceStatusLogHistory\r\n ) => {\r\n state.vendorPerformanceStatusLogHistory = vendorPerformanceStatusLogHistory\r\n },\r\n tempUpdateHistory: (state, { vendorPerformanceStatusLog }) => {\r\n const { id, complete } = vendorPerformanceStatusLog\r\n\r\n if (complete) {\r\n const status = state.vendorPerformanceStatusLogHistory.find((e) => e.id === id)\r\n\r\n if (status) {\r\n const index = findIndex(state.vendorPerformanceStatusLogHistory, { id })\r\n Vue.set(state.vendorPerformanceStatusLogHistory, index, vendorPerformanceStatusLog)\r\n } else {\r\n state.vendorPerformanceStatusLogHistory.unshift(vendorPerformanceStatusLog)\r\n }\r\n } else {\r\n const history = state.vendorPerformanceStatusLogHistory.filter((e) => e.id !== id)\r\n state.vendorPerformanceStatusLogHistory = history\r\n }\r\n },\r\n [types.VENDOR_PERFORMANCE_REMOVE]: (state, id) => {\r\n const performanceEvaluations = state.vendorPerformanceEvaluation.filter(\r\n (e) => e.evaluationId !== id\r\n )\r\n\r\n state.vendorPerformanceEvaluation = performanceEvaluations\r\n }\r\n}\r\nexport default {\r\n namespaced: false,\r\n state,\r\n getters,\r\n actions,\r\n mutations\r\n}\r\n","import util from '@/utils/utility'\r\nimport SecureLS from 'secure-ls'\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport createPersistedState from 'vuex-persistedstate'\r\nimport audit from './modules/audit/audit'\r\nimport auth from './modules/auth'\r\nimport authCredential from './modules/authCredential'\r\nimport awardApproval from './modules/awards/award-approval'\r\nimport certificate from './modules/contract/certificate'\r\nimport certificateType from './modules/contract/certificateType'\r\nimport contractBondDocument from './modules/contract/contractBondDocument'\r\nimport contractBondDocumentType from './modules/contract/contractBondDocumentType'\r\nimport contractBuilderLicenseConfiguration from './modules/contract/contractBuilderLicenseConfiguration'\r\nimport contractDocument from './modules/contract/contractDocument'\r\nimport contractPerformance from './modules/contract/contractPerformance'\r\nimport contractPOType from './modules/contract/contractPOType'\r\nimport contractVendorDocument from './modules/contract/contractVendorDocument'\r\nimport contractVendorDocumentType from './modules/contract/contractVendorDocumentType'\r\nimport insurance from './modules/contract/insurance'\r\nimport insuranceType from './modules/contract/insuranceType'\r\nimport performanceEvaluationDocuments from './modules/contract/performanceEvaluationDocuments'\r\nimport performanceEvaluationStatus from './modules/contract/performanceEvaluationStatus'\r\nimport performanceEvaluationType from './modules/contract/performanceEvaluationType'\r\nimport performanceTemplate from './modules/contract/performanceTemplate'\r\nimport performanceWorkflow from './modules/contract/performanceWorkflow'\r\nimport procurementMethodLimitedType from './modules/contract/procurementMethodLimitedType'\r\nimport contractSignature from './modules/contract/signature'\r\nimport controlPanel from './modules/control-panel/control-panel'\r\nimport libraryContent from './modules/control-panel/library-content'\r\nimport systemContent from './modules/control-panel/system-content'\r\nimport customer from './modules/customer/customer'\r\nimport customerNode from './modules/customer/node/customerNode'\r\nimport customerSsoSaml from './modules/customerSsoSaml/customerSsoSaml'\r\nimport dashboard from './modules/dashboard/dashboard'\r\nimport email from './modules/email/email'\r\nimport evaluation from './modules/evaluation/evaluation.module.js'\r\nimport exportFile from './modules/exportFile/exportFile'\r\nimport global from './modules/global'\r\nimport login from './modules/login/login'\r\nimport menus from './modules/menus/menus'\r\nimport permission from './modules/permission/permission'\r\nimport plantaker from './modules/plantaker/plantaker'\r\nimport projectRole from './modules/project-role/project-role'\r\nimport projectUser from './modules/project-user/project-user'\r\nimport awards from './modules/project/awards'\r\nimport category from './modules/project/category'\r\nimport commodityCategories from './modules/project/commodityCategories'\r\nimport contract from './modules/project/contract'\r\nimport department from './modules/project/department'\r\nimport division from './modules/project/division'\r\nimport document from './modules/project/document'\r\nimport documentTemplate from './modules/project/documentTemplate'\r\nimport features from './modules/features/features'\r\nimport instructionTemplate from './modules/project/instructionTemplate'\r\nimport irrevocablePeriod from './modules/project/irrevocablePeriod'\r\nimport leadAgencyName from './modules/project/leadAgencyName'\r\nimport procurementtype from './modules/project/procurementtype'\r\nimport project from './modules/project/project'\r\nimport projectComment from './modules/project/ProjectComment'\r\nimport projectJournal from './modules/project/projectJournal'\r\nimport projectJournalDocument from './modules/project/projectJournalDocument'\r\nimport projectSearch from './modules/project/projectSearch'\r\nimport projectTask from './modules/project/ProjectTask'\r\nimport questionTemplate from './modules/project/questionTemplate'\r\nimport securityTemplate from './modules/project/securityTemplate'\r\nimport tax from './modules/project/tax'\r\nimport term from './modules/project/term'\r\nimport intake from './modules/intake/intake.module'\r\nimport termsAndConditions from './modules/project/termsAndConditions'\r\nimport tradeagreement from './modules/project/tradeagreement'\r\nimport reports from './modules/reports/reports'\r\nimport reportsWizard from './modules/reports/reports-wizard'\r\nimport routePermission from './modules/routePermission/routePermission'\r\nimport snapshotLayout from './modules/snapshot/layout'\r\nimport submission from './modules/submission/submission'\r\nimport suppliersSearch from './modules/suppliers/suppliers-search'\r\nimport tendertablecolumn from './modules/tender-table-column/tender-table-column'\r\nimport tendertablerowcolumn from './modules/tender-table-row-column/tender-table-row-column'\r\nimport tendertablerow from './modules/tender-table-row/tender-table-row'\r\nimport tendertable from './modules/tender-table/tender-table'\r\nimport tenderNode from './modules/tender/node/tenderNode'\r\nimport tender from './modules/tender/tender'\r\nimport group from './modules/user/group'\r\nimport user from './modules/user/user'\r\nimport vendorInvitationList from './modules/vendor-invitation-list/vendor-invitation-list'\r\nimport vendorInvitation from './modules/vendor/invitation'\r\nimport performanceStatus from './modules/vendor/performanceStatus'\r\nimport vendor from './modules/vendor/vendor'\r\nimport vendorquestion from './modules/vendor/vendor-question'\r\nimport vendorDocument from './modules/vendor/vendorDocument'\r\nimport vendorPerformance from './modules/vendor/vendorPerformance'\r\nconst authGuid = util.createAuthGuidIfNeed()\r\nconst ls = new SecureLS({ encodingType: 'aes' })\r\n\r\nVue.use(Vuex)\r\n\r\nconst initialState = () => ({})\r\n\r\n// eslint-disable-next-line no-undef\r\nconst debug = import.meta.env.MODE !== 'production'\r\n\r\nconst store = new Vuex.Store({\r\n state: initialState,\r\n mutations: {\r\n reset: (state) => {\r\n Object.assign(state, initialState())\r\n }\r\n },\r\n modules: {\r\n audit,\r\n auth,\r\n authCredential,\r\n certificate,\r\n certificateType,\r\n contractBondDocument,\r\n contractBondDocumentType,\r\n contractDocument,\r\n contractPOType,\r\n contractVendorDocumentType,\r\n contractVendorDocument,\r\n customer,\r\n customerNode,\r\n email,\r\n evaluation,\r\n features,\r\n global,\r\n group,\r\n insurance,\r\n insuranceType,\r\n login,\r\n project,\r\n division,\r\n department,\r\n document,\r\n category,\r\n leadAgencyName,\r\n irrevocablePeriod,\r\n intake,\r\n tradeagreement,\r\n instructionTemplate,\r\n termsAndConditions,\r\n questionTemplate,\r\n securityTemplate,\r\n documentTemplate,\r\n procurementtype,\r\n awards,\r\n tax,\r\n tender,\r\n tenderNode,\r\n contract,\r\n tendertable,\r\n tendertablecolumn,\r\n tendertablerow,\r\n tendertablerowcolumn,\r\n user,\r\n vendorInvitation,\r\n vendorInvitationList,\r\n vendorDocument,\r\n vendorPerformance,\r\n term,\r\n dashboard,\r\n exportFile,\r\n plantaker,\r\n projectUser,\r\n submission,\r\n vendor,\r\n vendorquestion,\r\n projectRole,\r\n controlPanel,\r\n libraryContent,\r\n systemContent,\r\n suppliersSearch,\r\n routePermission,\r\n permission,\r\n projectSearch,\r\n projectComment,\r\n projectTask,\r\n projectJournal,\r\n projectJournalDocument,\r\n menus,\r\n customerSsoSaml,\r\n procurementMethodLimitedType,\r\n snapshotLayout,\r\n reports,\r\n reportsWizard,\r\n performanceEvaluationType,\r\n performanceTemplate,\r\n performanceWorkflow,\r\n contractPerformance,\r\n contractSignature,\r\n performanceStatus,\r\n performanceEvaluationStatus,\r\n commodityCategories,\r\n contractBuilderLicenseConfiguration,\r\n awardApproval,\r\n performanceEvaluationDocuments\r\n },\r\n plugins: [\r\n createPersistedState({\r\n key: authGuid,\r\n paths: ['auth', 'authCredential', 'projectSearch', 'suppliersSearch'],\r\n storage: {\r\n getItem: (key) => ls.get(key),\r\n setItem: (key, value) => ls.set(key, value),\r\n removeItem: (key) => ls.remove(key)\r\n }\r\n })\r\n ],\r\n actions: {},\r\n getters: {},\r\n strict: debug /*\r\n plugins: debug ? [createLogger()] : [] */\r\n})\r\n\r\nexport default store\r\n\r\nexport const useStore = () => store\r\n","import store from '@/store'\r\nimport axios from 'axios'\r\n\r\nlet apiHeaders = {\r\n 'Content-Type': 'application/json'\r\n}\r\n\r\nlet uploadApiMultipartHeaders = {\r\n 'Content-Type': 'multipart/form-data'\r\n}\r\n\r\nlet accessHeaders = {}\r\n\r\n// eslint-disable-next-line no-undef\r\nif (import.meta.env.MODE === 'development' || import.meta.env.VITE_IS_LOCAL) {\r\n accessHeaders = {\r\n // eslint-disable-next-line no-undef\r\n externalaccessapikey: import.meta.env.VITE_ACCESS_API_KEY\r\n }\r\n\r\n apiHeaders = { ...apiHeaders, ...accessHeaders }\r\n uploadApiMultipartHeaders = { ...uploadApiMultipartHeaders, ...accessHeaders }\r\n}\r\n\r\nexport const api = axios.create({\r\n // eslint-disable-next-line no-undef\r\n baseURL: import.meta.env.VITE_API_BASE,\r\n // 5 minutes\r\n timeout: 300000,\r\n withCredentials: true,\r\n headers: apiHeaders\r\n})\r\n\r\nexport const uploadApi = axios.create({\r\n // eslint-disable-next-line no-undef\r\n baseURL: import.meta.env.VITE_API_BASE,\r\n // increase to 30 minutes as per request of CustomDev\r\n timeout: 1800000,\r\n contentType: false,\r\n withCredentials: true,\r\n processData: false,\r\n headers: accessHeaders\r\n})\r\n\r\nexport const uploadApiMultipart = axios.create({\r\n // eslint-disable-next-line no-undef\r\n baseURL: import.meta.env.VITE_API_BASE,\r\n // increase to 30 minutes as per request of CustomDev\r\n timeout: 1800000,\r\n contentType: false,\r\n withCredentials: true,\r\n processData: false,\r\n headers: uploadApiMultipartHeaders\r\n})\r\n\r\nexport const downloadApi = axios.create({\r\n // eslint-disable-next-line no-undef\r\n baseURL: import.meta.env.VITE_API_BASE,\r\n // 30 minutes - might still not be enough for large files over slow connections\r\n timeout: 1800000,\r\n withCredentials: true,\r\n contentType: false,\r\n responseType: 'blob',\r\n headers: accessHeaders\r\n})\r\n\r\nfunction replaceString(baseString, customerId, nodeId) {\r\n return baseString\r\n .replace(/\\{[ ]{0,}customerId[ ]{0,}\\}/, customerId)\r\n .replace(/\\{[ ]{0,}nodeId[ ]{0,}\\}/, nodeId)\r\n}\r\n\r\nfunction processConfig(config, replaceTagsInData) {\r\n const customerId = (store.getters.getAuthCustomer || {}).id || ''\r\n const nodeId = (store.getters.getAuthTenderNode || {}).id || ''\r\n\r\n // replace tags in url\r\n config.url = replaceString(config.url, customerId, nodeId)\r\n\r\n // replace tags in posted data\r\n if (replaceTagsInData && config.data) {\r\n config.data = JSON.parse(replaceString(JSON.stringify(config.data), customerId, nodeId))\r\n }\r\n\r\n return config\r\n}\r\n\r\napi.interceptors.request.use((config) => processConfig(config, true))\r\n\r\nuploadApi.interceptors.request.use((config) => processConfig(config))\r\n\r\ndownloadApi.interceptors.request.use((config) => processConfig(config))\r\n\r\nuploadApiMultipart.interceptors.request.use((config) => processConfig(config))\r\n\r\n// 401 exemptions\r\nexport const allowedEndpoints = [\r\n ['PUT', '/teamMember']\r\n // ['POST', '/allowedEndpoint'],\r\n // ['GET', '/allowedEndpoint'],\r\n]\r\n\r\nexport const isAllowedEndpoint = (error) =>\r\n allowedEndpoints.some((endpoint) => {\r\n return (\r\n error.config.method.toUpperCase() === endpoint[0] && error.config.url.includes(endpoint[1])\r\n )\r\n })\r\n\r\n// Add a response interceptor\r\napi.interceptors.response.use(\r\n (response) => {\r\n localStorage.setItem('session-timeout', Date.now())\r\n return response\r\n },\r\n (error) => {\r\n if (error.status && error.status !== 401) {\r\n localStorage.setItem('session-timeout', Date.now())\r\n }\r\n if (error.response?.status && error.response.status === 401 && isAllowedEndpoint(error)) {\r\n // Certain 401 errors are allowed\r\n localStorage.setItem('session-timeout', Date.now())\r\n }\r\n\r\n if (error?.response?.data?.length === 2 && error.response.data[0] === 'agencyMismatch') {\r\n error.message = error.response.data[1]\r\n }\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\nexport default {\r\n api\r\n}\r\n","import { isAllowedEndpoint } from '@/api/api'\r\nimport i18n from '@/plugins/i18n'\r\nimport { useStore } from '@/store'\r\nimport { Notification } from 'element-ui'\r\nimport { ref } from 'vue'\r\nimport { useRoute, useRouter } from 'vue-router/composables'\r\n\r\nfunction handleUiError(context, message) {\r\n context.$notify({\r\n title: context.$t('ui.components.notifications.titles.error'),\r\n message: message,\r\n type: 'error'\r\n })\r\n}\r\n\r\nfunction handleUiWarning(context, message) {\r\n context.$notify({\r\n title: context.$t('ui.components.notifications.titles.error'),\r\n message: message,\r\n type: 'warning'\r\n })\r\n}\r\nfunction handleApiError(context, error, messages = []) {\r\n const title = context.$t('ui.components.notifications.titles.error')\r\n let message = error.message\r\n if (error && error.response) {\r\n if (error.response.status === 401 && !isAllowedEndpoint(error)) {\r\n let msg = ''\r\n if (error.response.data && error.response.data.length > 0) {\r\n msg = error.response.data[0]\r\n } else {\r\n msg = 'Session has expired.'\r\n }\r\n context.$store.dispatch('clearLoginType')\r\n const route = context.$route.path\r\n if (route && typeof route === 'string' && !route.includes('/login')) {\r\n context.$router.push({\r\n path: `/login?err=${msg}`\r\n })\r\n }\r\n } else {\r\n const { status } = error.response\r\n if (messages.length && messages[status]) {\r\n error.message = messages[status]\r\n }\r\n message = context.$t(error.message)\r\n }\r\n } else {\r\n if (messages && messages.length > 0) {\r\n message = messages.join()\r\n }\r\n }\r\n\r\n if (message && message.length > 0) {\r\n context.$notify({\r\n title,\r\n message,\r\n type: 'error'\r\n })\r\n }\r\n if (context.$loading) {\r\n context.$loading().close()\r\n }\r\n}\r\n\r\nexport class NotFoundError extends Error {\r\n constructor(message = 'Not Found', ...params) {\r\n super(params)\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, NotFoundError)\r\n }\r\n\r\n this.name = 'Not Found Error'\r\n this.message = message\r\n this.status = 404\r\n this.date = new Date()\r\n }\r\n}\r\n\r\nexport class NotAllowedError extends Error {\r\n constructor(message = 'Not Allowed', ...params) {\r\n super(params)\r\n\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, NotAllowedError)\r\n }\r\n\r\n this.name = 'Not Allowed Error'\r\n this.message = message\r\n this.status = 409\r\n this.date = new Date()\r\n }\r\n}\r\n\r\nexport function useErrorNotification() {\r\n const $store = useStore()\r\n const $route = useRoute()\r\n const $router = useRouter()\r\n\r\n function notifyApiError(error, messages, config = {}) {\r\n const title = i18n.t('ui.components.notifications.titles.error')\r\n const message = ref('')\r\n\r\n if (error && error.response) {\r\n if (error.response.status === 401) {\r\n let msg = ''\r\n if (error.response.data && error.response.data.length > 0) {\r\n msg = error.response.data[0]\r\n } else {\r\n msg = 'Session has expired.'\r\n }\r\n $store.dispatch('clearLoginType')\r\n const route = $route.path\r\n if (route && typeof route === 'string' && !route.includes('/login')) {\r\n $router.push({\r\n path: `/login?err=${msg}`\r\n })\r\n }\r\n } else {\r\n const { status } = error.response\r\n if (messages.length && messages[status]) {\r\n error.message = messages[status]\r\n }\r\n message.value = i18n.t(error.message)\r\n }\r\n } else {\r\n if (messages && messages.length > 0) {\r\n message.value = messages.filter((m) => m?.length > 0).join(', ')\r\n } else {\r\n message.value = i18n.t('api.common.errors.unknownError')\r\n }\r\n }\r\n\r\n if (message.value?.length > 0) {\r\n Notification({\r\n title,\r\n message,\r\n type: 'error',\r\n ...config\r\n })\r\n }\r\n }\r\n\r\n return {\r\n notifyApiError\r\n }\r\n}\r\n\r\nexport default {\r\n handleApiError,\r\n handleUiError,\r\n handleUiWarning\r\n}\r\n","export const validEmail = (val, options) => {\r\n // eslint-disable-next-line no-undefined\r\n if (options === undefined || options === null) {\r\n options = {\r\n asMulti: false,\r\n mandatory: false\r\n }\r\n }\r\n\r\n // Null value is valid if not mandatory\r\n if (val === null && !options.mandatory) return true\r\n else if (val === null && options.mandatory) val = ''\r\n\r\n // allow blank strings\r\n if (!options.mandatory && (val === null || val.trim().length === 0)) return true\r\n\r\n const emailRegexPattern = new RegExp(\r\n /^[a-zA-Z0-9']+([._-]?[a-zA-Z0-9']+)*@[a-zA-Z0-9']+([._-][a-zA-Z0-9]+)*(\\.[a-zA-Z]{2,})+$/\r\n )\r\n let isValid =\r\n !val.includes(';,') && !val.includes(',;') && !val.includes(',,') && !val.includes(';;')\r\n\r\n if (!isValid) return false\r\n\r\n if (options.asMulti) {\r\n const splitVal = val.split(/[\\s,;]+/)\r\n\r\n for (let ii = 0; ii < splitVal.length; ii++) {\r\n const innerVal = splitVal[ii]\r\n const cleanVal = innerVal.replace(/\\s/g, '')\r\n\r\n isValid = (!cleanVal || emailRegexPattern.test(cleanVal)) && cleanVal.length > 0\r\n\r\n if (!isValid) {\r\n break\r\n }\r\n }\r\n } else {\r\n isValid = emailRegexPattern.test(val)\r\n }\r\n\r\n return isValid\r\n}\r\n\r\nexport default {\r\n validEmail\r\n}\r\n","import Loading from 'element-ui/lib/loading'\r\nimport { nextTick, ref } from 'vue'\r\n\r\nfunction showLoading(context, force = false) {\r\n if (context.$loading || force) {\r\n context.$loading({\r\n fullscreen: true,\r\n lock: true,\r\n text: 'Please Wait'\r\n })\r\n }\r\n}\r\n\r\nfunction hideLoading(context) {\r\n if (context.$loading) {\r\n context.$loading().close()\r\n }\r\n}\r\n\r\nexport function useElementLoading(\r\n options = {\r\n fullscreen: true,\r\n lock: true,\r\n text: 'Please Wait'\r\n }\r\n) {\r\n const loader = ref(null)\r\n\r\n function showLoading() {\r\n loader.value = Loading.service(options)\r\n }\r\n\r\n async function hideLoading() {\r\n loader.value.close()\r\n await nextTick()\r\n loader.value = null\r\n }\r\n\r\n return {\r\n showLoading,\r\n hideLoading,\r\n loader\r\n }\r\n}\r\n\r\nexport function setTreeNodeDisabled(node, disabled) {\r\n const newNode = {\r\n ...node,\r\n disabled\r\n }\r\n if (node.children) {\r\n newNode.children = newNode.children.map((child) => setTreeNodeDisabled(child, disabled))\r\n }\r\n return newNode\r\n}\r\n\r\nexport default {\r\n showLoading,\r\n hideLoading\r\n}\r\n","import cloneDeep from 'lodash/cloneDeep'\r\nimport { mapActions, mapGetters } from 'vuex'\r\n\r\nexport default {\r\n props: {\r\n step: {\r\n type: [Number, String],\r\n default: 0\r\n }\r\n },\r\n inject: ['WizardBus', 'totalSteps'],\r\n computed: {\r\n ...mapGetters([\r\n 'getNewEmail',\r\n 'getNewEmailProjectUsers',\r\n 'getNewEmailContacts',\r\n 'getNewEmailInvitees'\r\n ]),\r\n currentStep() {\r\n return this.step\r\n },\r\n email() {\r\n return this.getNewEmail\r\n },\r\n emailProjectUsers() {\r\n let emailProjUsers = this.getNewEmailProjectUsers\r\n\r\n if (emailProjUsers && emailProjUsers.length !== 0) {\r\n emailProjUsers = emailProjUsers.filter((r) => r && r.user && r.user.inActive === false)\r\n }\r\n\r\n return emailProjUsers\r\n },\r\n emailContacts() {\r\n const registeredCompanies = this.getNewEmailContacts\r\n const invitees = this.getNewEmailInvitees\r\n\r\n // filter out any invitees already in the registered company list\r\n const filteredInvitees = invitees.filter(\r\n (i) => !registeredCompanies.some((rc) => rc.contact.id === i.contact.id)\r\n )\r\n\r\n return registeredCompanies\r\n .concat(filteredInvitees)\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n }\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.email-wizard.email-wizard-view.',\r\n sendOptions: {\r\n NOW: 1,\r\n LATER: 2\r\n }\r\n }\r\n },\r\n methods: {\r\n ...mapActions(['updateNewEmail']),\r\n updateEmail(property, value) {\r\n const clonedEmail = cloneDeep(this.email)\r\n clonedEmail[property] = value\r\n this.updateNewEmail(clonedEmail)\r\n }\r\n }\r\n}\r\n","export const tokens = [\r\n // Contract Only\r\n { Token: '#ContractID#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContractName#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContractNumber#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContractStatus#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContractDateClosing#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContractDateOpen#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#Document#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#InsuranceType#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#UploadedBy#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#UploadedDate#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ReminderDescription#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ReminderDueDate#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#TenderId#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderName#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderNumber#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderStatus#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderDateClosing#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderDateAvailable#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#VendorId#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#CompanyName#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Username#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#PasswordResetUrl#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#Address1#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Address2#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Province#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Country#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#City#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#PostalCode#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#CompanyContacts#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#CompanyContactsCompact#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Contracts#', Bids: null, Contracts: 'X', Other: null },\r\n { Token: '#ContactID#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#FirstName#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#LastName#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Email#', Bids: 'X', Contracts: 'X', Other: null },\r\n { Token: '#Username#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#UserID#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#YearMonthDay#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#MonthDayYear#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#DayMonthYear#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#CurrentDate#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#CurrentTime#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#LoggedInUser#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#NoBidReasons#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#QuestionText#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#DateSubmitted#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: 'http://ClientPUblicUrl.com', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#PerformanceEvaluationUrl#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#ClientDisplayName#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderInvitationLink#', Bids: 'X', Contracts: null, Other: null },\r\n {\r\n Token: '#SiteMeetingDate# (These are used for 24 hour site meeting email)',\r\n Bids: 'X',\r\n Contracts: null,\r\n Other: null\r\n },\r\n {\r\n Token:\r\n '#SiteMeetingStartTime# - #SiteMeetingCloseTime# (These are used for 24 hour site meeting email)',\r\n Bids: 'X',\r\n Contracts: null,\r\n Other: null\r\n },\r\n {\r\n Token: '#SiteMeetingLocation# (These are used for 24 hour site meeting email)',\r\n Bids: 'X',\r\n Contracts: null,\r\n Other: null\r\n },\r\n { Token: '#CurrentDate# - Based on local setttings', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#CurrentTime#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderQuestionDeadlineDate#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#TenderQuestionDeadlineTime#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#MeetingLocations#', Bids: 'X', Contracts: null, Other: null },\r\n { Token: '#PurchasingRep#', Bids: 'X', Contracts: 'X', Other: null }\r\n]\r\n\r\nexport const columnDefs = [\r\n {\r\n headerName: 'TOKEN',\r\n field: 'Token'\r\n },\r\n {\r\n headerName: 'Bids',\r\n field: 'Bids'\r\n },\r\n {\r\n headerName: 'Contracts',\r\n field: 'Contracts'\r\n },\r\n {\r\n headerName: 'Other',\r\n field: 'Other'\r\n }\r\n]\r\n","import emailUtil from '@/utils/email'\r\nimport uiHandler from '@/utils/ui'\r\nimport emailWizardMixins from '@/views/email-wizard/email-wizard-mixins.js'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport { columnDefs, tokens } from './tokens.js'\r\n\r\nexport default {\r\n name: 'email-wizard-step-compose',\r\n mixins: [emailWizardMixins],\r\n watch: {\r\n selectedTemplate(val) {\r\n if (val && val !== this.selectedTemplate.id) {\r\n const newTemplate = this.getEmailTemplates.find((et) => et.id === val)\r\n\r\n this.senderList = newTemplate.sender\r\n this.ccList = newTemplate.cc\r\n this.bccList = newTemplate.bcc\r\n if (newTemplate.groupName === 'RejectDocument') {\r\n const doc = this.getEmailDocument\r\n this.subject = `${doc.category.name} - ${newTemplate.subject}: ${doc.displayName}`\r\n } else {\r\n this.subject = newTemplate.subject\r\n }\r\n this.content = newTemplate.body\r\n this.editorKey++\r\n }\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'getEmailTemplates',\r\n 'getNewEmail',\r\n 'getEmailTenderId',\r\n 'getEmailContractId',\r\n 'getEmailDocument'\r\n ]),\r\n templateList() {\r\n let templates = this.getEmailTemplates.filter((et) => et.active)\r\n templates = templates.sort((a, b) => {\r\n return a.name != null && a.name.localeCompare(b.name)\r\n })\r\n\r\n return templates\r\n },\r\n senderList: {\r\n get() {\r\n return this.replyTo\r\n },\r\n set(val) {\r\n this.replyTo = val\r\n this.updateEmail('sender', val)\r\n }\r\n },\r\n ccList: {\r\n get() {\r\n return this.ccEmail\r\n },\r\n set(val) {\r\n this.ccEmail = val\r\n\r\n const list = (val && val.replace(/\\s+/g, ' ').trim().split(/[;, ]/)) || ''\r\n this.updateEmail('cc', list)\r\n }\r\n },\r\n bccList: {\r\n get() {\r\n return this.bccEmail\r\n },\r\n set(val) {\r\n this.bccEmail = val\r\n\r\n const list = (val && val.replace(/\\s+/g, ' ').trim().split(/[;, ]/)) || ''\r\n this.updateEmail('bcc', list)\r\n }\r\n },\r\n subject: {\r\n get() {\r\n return this.email.subject\r\n },\r\n set(val) {\r\n this.updateEmail('subject', val !== null && val ? val : '')\r\n }\r\n },\r\n content: {\r\n get() {\r\n return this.email.body\r\n },\r\n set(val) {\r\n this.updateEmail('body', val !== null && val ? val : '')\r\n }\r\n },\r\n parsedFileList() {},\r\n senderListValid() {\r\n return this.testEmail(this.senderList, false, true)\r\n },\r\n senderListFormatValid() {\r\n return this.testEmail(this.senderList, false, true)\r\n },\r\n subjectValid() {\r\n return this.isNotNullOrEmpty(this.subject)\r\n },\r\n contentValid() {\r\n return this.isNotNullOrEmpty(this.content)\r\n },\r\n emailIsValid() {\r\n const valid =\r\n this.senderListValid &&\r\n this.senderListFormatValid &&\r\n this.subjectValid &&\r\n this.contentValid &&\r\n this.bccValid &&\r\n this.ccValid\r\n\r\n return valid\r\n },\r\n bccValid() {\r\n return this.testEmail(this.bccList, true, false)\r\n },\r\n ccValid() {\r\n return this.testEmail(this.ccList, true, false)\r\n }\r\n },\r\n data() {\r\n return {\r\n templates: [],\r\n fileList: [],\r\n selectedTemplate: null,\r\n fileUploaded: false,\r\n showTokens: false,\r\n tokens,\r\n columnDefs,\r\n editorKey: 0,\r\n ccEmail: '',\r\n bccEmail: '',\r\n replyTo: ''\r\n }\r\n },\r\n mounted() {},\r\n methods: {\r\n ...mapActions(['updateNewEmail', 'uploadEmailAttachment', 'deleteDocument']),\r\n handleClickPreview() {\r\n // if there's a file selected but not uploaded notify\r\n if (this.fileList && this.fileList.length > 0 && !this.fileUploaded) {\r\n this.$notify({\r\n message: this.$t(`${this.viewString}warnFileNotUploaded`),\r\n type: 'warning'\r\n })\r\n return\r\n }\r\n\r\n // button is disabled, but in case they manage this anyway\r\n if (!this.emailIsValid) return\r\n\r\n this.WizardBus.$emit('next')\r\n },\r\n handleClickBack() {\r\n this.WizardBus.$emit('previous')\r\n },\r\n cleanEmailList(item) {\r\n return item.replace(',,', ',')\r\n },\r\n handleClickViewTokens() {\r\n this.showTokens = true\r\n },\r\n handleCloseTokens() {\r\n this.showTokens = false\r\n },\r\n handleExceed() {},\r\n handleFileUpload(files) {\r\n if (files && files.length > 0) {\r\n // if we're replacing an existing file delete the previous file\r\n if (this.email.attachments && this.email.attachments.length > 0) {\r\n this.deleteDocument(this.email.attachments[0].id)\r\n this.updateEmail('attachments', [])\r\n }\r\n\r\n if (files[0].size > 3145728) {\r\n this.$notify.error({\r\n message: this.$t('ui.errors.global.emailAttachFailTooLarge')\r\n })\r\n return\r\n }\r\n\r\n const formData = new FormData()\r\n formData.append('file', files[0])\r\n formData.append('DisplayName', files[0].name)\r\n\r\n if (this.getEmailTenderId !== null && this.getEmailTenderId.length > 0) {\r\n formData.append('ReferenceId', this.getEmailTenderId)\r\n } else if (this.getEmailContractId !== null && this.getEmailContractId.length > 0) {\r\n formData.append('ReferenceId', this.getEmailContractId)\r\n }\r\n uiHandler.showLoading(this)\r\n this.uploadEmailAttachment(formData)\r\n .then((response) => {\r\n this.fileUploaded = true\r\n uiHandler.hideLoading(this)\r\n this.updateEmail('attachments', [response])\r\n this.$notify({\r\n message: this.$t(`${this.viewString}notifAttachSuccessful`),\r\n type: 'success'\r\n })\r\n })\r\n .catch(() => {\r\n this.$refs.emailUpload.clear()\r\n this.updateEmail('attachments', [])\r\n uiHandler.hideLoading(this)\r\n this.$notify.error({\r\n message: this.$t(`${this.viewString}notifAttachFail`)\r\n })\r\n })\r\n }\r\n },\r\n handleFileUploadClear() {\r\n this.fileUploaded = false\r\n this.fileList = []\r\n if (this.email.attachments && this.email.attachments.length > 0) {\r\n this.deleteDocument(this.email.attachments[0].id)\r\n this.updateEmail('attachments', [])\r\n }\r\n },\r\n isNotNullOrEmpty(prop) {\r\n if (Array.isArray(prop)) return prop !== null && prop.length > 0\r\n return prop !== null && prop !== '' && prop !== '

 

'\r\n },\r\n isNullOrEmpty(val) {\r\n return val === '' || val === null\r\n },\r\n testEmail(val, multi = true, mand = false) {\r\n return emailUtil.validEmail(val, { asMulti: multi, mandatory: mand })\r\n }\r\n }\r\n}\r\n","/**\r\n * these are the newer, easier to use mixins that provide a data model\r\n * that can be set.\r\n * \r\n * old table-mixins can be found in /utils\r\n * \r\n * Implementation\r\n * ==================\r\n * -include the mixins,\r\n * -declare a new dataSource() computed field that provides your required data source\r\n * -the table you are using should then use ...\r\n * -inside the table, use the visibleColumns computed to filter columns \r\n * if the columns button is present eg: \r\n is also provided to turn the columns on and off. You can filter columnDefs \r\n * to exclude any columns that shouldn't be toggled\r\n * \r\n * if you need alternate filtering capabilities, \r\n * you'll have to declare a new function, 'filterDataSource'\r\n * \r\n * Alternately, you can provide an entirely different tableData computed field \r\n * but note that it currently performs the slicing for pagination\r\n */\r\n\r\nconst columnDropdown = {\r\n name: 'table-column-dropdown',\r\n props: {\r\n columnDefs: {\r\n type: Array,\r\n default: () => []\r\n }\r\n },\r\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n}\r\n\r\nimport dayjs from '@/utils/dayjs'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\n\r\nexport default {\r\n components: {\r\n columnDropdown\r\n },\r\n computed: {\r\n gridTotalPages() {\r\n const totalPages = Math.ceil(this.gridTotalRows / this.gridPageSize)\r\n\r\n return Math.ceil(totalPages > 0 ? totalPages : 1)\r\n },\r\n gridTotalRows() {\r\n return this.filteredTableData.length\r\n },\r\n visibleColumns() {\r\n if (!this.columnDefs.length) return []\r\n return this.columnDefs.filter(\r\n (column) => !column.hasOwnProperty('visible') || column.visible === true\r\n )\r\n },\r\n dataSource() {\r\n return []\r\n },\r\n filteredTableData() {\r\n if (!this.dataSource?.length) return []\r\n\r\n return this.dataSource.filter(this.filterDataSource)\r\n },\r\n tableData() {\r\n const filteredData = this.filteredTableData\r\n\r\n const startIndex = (this.gridCurrentPage - 1) * this.gridPageSize\r\n const endIndex = startIndex + this.gridPageSize\r\n\r\n return filteredData.slice(startIndex, endIndex)\r\n }\r\n },\r\n data() {\r\n return {\r\n columnDefs: [],\r\n gridPageSize: 20,\r\n gridCurrentPage: 1\r\n }\r\n },\r\n created() {\r\n if (!this.columnDefs.length) {\r\n this.columnDefs = this.getDefaultColumnDefs()\r\n }\r\n },\r\n mounted() {\r\n // eslint-disable-next-line no-undef\r\n if (import.meta.env.MODE === 'development') {\r\n if (!this.columnDefs.length) {\r\n // eslint-disable-next-line\r\n console.warn(\r\n 'please add columnDefs data property to your component with the following schema:'\r\n )\r\n // eslint-disable-next-line\r\n console.warn(`[\r\n {\r\n field: String, the name of the field on the tableData object,\r\n columnHeading: String, the translated column header,\r\n visible: Boolean, whether or not the column is visible'\r\n }\r\n ]`)\r\n }\r\n }\r\n },\r\n methods: {\r\n filterDataSource() {\r\n // add a new filter function if you're going to filter your data\r\n return true\r\n },\r\n handleClickPrev() {\r\n this.gridCurrentPage--\r\n },\r\n handleClickNext() {\r\n this.gridCurrentPage++\r\n },\r\n handleGridPageSizeChange(size) {\r\n this.gridCurrentPage = 1\r\n this.gridPageSize = Number(size)\r\n },\r\n toggleColumn(index) {\r\n this.columnDefs[index].visible = !this.columnDefs[index].visible\r\n },\r\n getDefaultColumnDefs() {\r\n if (!this.tableData.length) return []\r\n\r\n return Object.keys(this.tableData[0]).map((key) => {\r\n return {\r\n columnHeading: key,\r\n field: key,\r\n visible: true\r\n }\r\n })\r\n },\r\n standardTableSortWithDate(row, data, dateTypeCols = []) {\r\n return cloneDeep(data).sort((a, b) => {\r\n const [a1, b1] = this.setSortValues(row.prop, a, b, dateTypeCols)\r\n // Needed to check for null values as localeCompare doesn't like these\r\n // https://stackoverflow.com/a/29829370 to see an example of the code below\r\n\r\n // nulls sort after anything else\r\n if (a1 === null) return 1\r\n if (b1 === null) return -1\r\n\r\n return row.order === 'ascending'\r\n ? typeof a1 === 'number'\r\n ? a1 - b1\r\n : `${a1}`.localeCompare(b1)\r\n : typeof a1 === 'number'\r\n ? b1 - a1\r\n : `${b1}`.localeCompare(a1)\r\n })\r\n },\r\n setSortValues(columnName, a, b, dateTypeCols) {\r\n const a1 = a[columnName]\r\n const b1 = b[columnName]\r\n if (dateTypeCols.includes(columnName)) {\r\n return [\r\n !a1 || a1 === 'N/A' ? null : dayjs(a1).valueOf() || 0,\r\n !b1 || b1 === 'N/A' ? null : dayjs(b1).valueOf() || 0\r\n ]\r\n } else {\r\n return [!a1 || a1 === 'N/A' ? null : a1, !b1 || b1 === 'N/A' ? null : b1]\r\n }\r\n },\r\n isColumnVisible({ key, val }) {\r\n return this.columnDefs.find((c) => c[key] === val)\r\n }\r\n }\r\n}\r\n","import tableMixins from '@/mixins/table-mixins.js'\r\nimport emailWizardMixins from '@/views/email-wizard/email-wizard-mixins.js'\r\n\r\nexport default {\r\n name: 'email-wizard-step-contacts',\r\n mixins: [emailWizardMixins, tableMixins],\r\n computed: {\r\n includeProjectUsers: {\r\n get() {\r\n return this.email.includeProjectUsers\r\n },\r\n set(val) {\r\n this.updateEmail('includeProjectUsers', val)\r\n if (val) {\r\n this.updateEmail('projectUsers', [...this.emailProjectUsers])\r\n } else {\r\n this.updateEmail('projectUsers', [])\r\n }\r\n }\r\n },\r\n hasProjectUsers() {\r\n return this.emailProjectUsers && this.emailProjectUsers.length > 0\r\n }\r\n },\r\n data() {\r\n return {\r\n companies: [],\r\n allCompanyContacts: [],\r\n removedCompanyContacts: [],\r\n selectedProjectUsers: [],\r\n gridCurrentPage: 1,\r\n gridPageSize: 5,\r\n columnDefs: [\r\n {\r\n headerName: this.$t('ui.views.email-wizard.email-wizard-view.headingCompany'),\r\n field: 'name',\r\n visible: true\r\n },\r\n {\r\n headerName: this.$t('ui.views.email-wizard.email-wizard-view.headingContact'),\r\n field: 'contact',\r\n visible: true\r\n }\r\n ]\r\n }\r\n },\r\n created() {\r\n this.allCompanyContacts = [...this.emailContacts]\r\n },\r\n methods: {\r\n handleRemoveMember(userId) {\r\n // function to call when the contacts are removed\r\n const filteredList = this.email.projectUsers.filter((tm) => tm.user.id !== userId)\r\n this.updateEmail('projectUsers', filteredList)\r\n\r\n if (filteredList.length === 0) {\r\n this.includeProjectUsers = false\r\n }\r\n },\r\n handleSelectionChange(selectedRows) {\r\n this.updateEmail('contacts', selectedRows)\r\n },\r\n\r\n handleClickCompose() {\r\n this.WizardBus.$emit('next')\r\n },\r\n getContactDisplayName(contact) {\r\n if (contact.name && contact.name !== null) {\r\n return contact.name\r\n } else {\r\n return contact.email\r\n }\r\n }\r\n }\r\n}\r\n","import { useDataSanitizing } from '@/utils/dataSanitizing.js'\r\nimport dayjs from '@/utils/dayjs'\r\nimport uiHandler from '@/utils/ui'\r\nimport emailWizardMixins from '@/views/email-wizard/email-wizard-mixins.js'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nconst { sanitizeHTMLData } = useDataSanitizing()\r\n\r\nexport default {\r\n name: 'email-wizard-step-preview',\r\n mixins: [emailWizardMixins],\r\n props: {\r\n groupName: String\r\n },\r\n data() {\r\n return {}\r\n },\r\n computed: {\r\n emailPreview: {\r\n get() {\r\n const preview = `${`

${this.email.subject}

` + '
'}${\r\n this.email.body\r\n }`\r\n return sanitizeHTMLData(preview)\r\n },\r\n set() {\r\n // nothing, really. We don't want to set.\r\n return false\r\n }\r\n },\r\n isSendLater() {\r\n return this.sendWhen === this.sendOptions.LATER\r\n },\r\n formValid() {\r\n return this.sendWhen === this.sendOptions.NOW || (this.isSendLater && this.sendDate !== null)\r\n },\r\n sendWhen: {\r\n get() {\r\n return this.email.sendWhen\r\n },\r\n set(val) {\r\n this.updateEmail('sendWhen', val)\r\n }\r\n },\r\n sendDate: {\r\n get() {\r\n return this.email.sendDate\r\n },\r\n set(val) {\r\n this.updateEmail('sendDate', val)\r\n }\r\n },\r\n ...mapGetters([\r\n 'getCustomerTimeZone',\r\n 'getEmailTenderId',\r\n 'getEmailContractId',\r\n 'getEmailDocument'\r\n ])\r\n },\r\n mounted() {},\r\n methods: {\r\n handleClickSend() {\r\n let sendDateUtc\r\n if (this.sendWhen === this.sendOptions.NOW) {\r\n sendDateUtc = null\r\n } else {\r\n sendDateUtc = dayjs([\r\n this.sendDate.getFullYear(),\r\n this.sendDate.getMonth(),\r\n this.sendDate.getDate(),\r\n this.sendDate.getHours(),\r\n this.sendDate.getMinutes(),\r\n this.sendDate.getSeconds()\r\n ])\r\n .tz(this.getCustomerTimeZone, true)\r\n .utc()\r\n .toISOString()\r\n }\r\n const newMailRequest = {\r\n projectUserIds: this.email.projectUsers.map((tm) => tm.id),\r\n contactIds: this.email.contacts\r\n .filter((c) => c.contact.id !== null)\r\n .map((c) => c.contact.id),\r\n invitationIds: this.email.contacts\r\n .filter((c) => c.contact.id === null)\r\n .map((c) => c.invitationId),\r\n ccs: this.email.cc,\r\n bccs: this.email.bcc,\r\n attachmentIds: this.email.attachments.map((a) => a.id),\r\n sender: this.email.sender,\r\n replyTo: this.email.reply,\r\n subject: this.email.subject,\r\n body: this.email.body,\r\n sendDateUtc: sendDateUtc,\r\n contractId: this.getEmailContractId,\r\n tenderId: this.getEmailTenderId,\r\n groupName: this.groupName,\r\n document: this.getEmailDocument\r\n }\r\n\r\n uiHandler.showLoading(this)\r\n this.scheduleNewEmail(newMailRequest)\r\n .then(() => {\r\n uiHandler.hideLoading(this)\r\n this.WizardBus.$emit('next')\r\n })\r\n .catch((err) => {\r\n uiHandler.hideLoading(this)\r\n if (err.response && err.response.data && err.response.data.length > 0) {\r\n let msg = '`\r\n\r\n this.$notify.error({\r\n dangerouslyUseHTMLString: true,\r\n message: msg,\r\n duration: 0\r\n })\r\n }\r\n })\r\n },\r\n handleClickBack() {\r\n this.WizardBus.$emit('previous')\r\n },\r\n ...mapActions(['scheduleNewEmail'])\r\n }\r\n}\r\n","export default \"__VITE_ASSET__DLIDD99B__\"","export default \"__VITE_ASSET__B97Jjx7e__\"","export default \"__VITE_ASSET__D$LzIasE__\"","export default \"__VITE_ASSET__XonQX1zT__\"","export default \"__VITE_ASSET__D$SoeCoX__\"","export default \"__VITE_ASSET__Bu5ZB0KN__\"","import accountInfoImage from '@/assets/images/SVGs/account-info.svg'\r\nimport emailSentImage from '@/assets/images/SVGs/email-wizard-sent.svg'\r\nimport intakeUnvailableImage from '@/assets/images/SVGs/intake-unavailable.svg'\r\nimport projectSearchImage from '@/assets/images/SVGs/project-search.svg'\r\nimport projectValidationErrorImage from '@/assets/images/SVGs/project-validation-error.svg'\r\nimport uploadDocumentImage from '@/assets/images/SVGs/uploadDocument.svg'\r\n\r\nexport default function UseImages() {\r\n const images = {\r\n accountInfoImage,\r\n emailSentImage,\r\n intakeUnvailableImage,\r\n projectSearchImage,\r\n projectValidationErrorImage,\r\n uploadDocumentImage\r\n }\r\n\r\n return {\r\n ...images\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import WizardMixins from '@/mixins/wizard-mixins'\r\nimport errorHandler from '@/utils/error'\r\nimport EmailWizardStepCompose from '@/views/email-wizard/email-wizard-steps/email-wizard-step-compose/email-wizard-step-compose.vue'\r\nimport EmailWizardStepContacts from '@/views/email-wizard/email-wizard-steps/email-wizard-step-contacts/email-wizard-step-contacts.vue'\r\nimport EmailWizardStepPreview from '@/views/email-wizard/email-wizard-steps/email-wizard-step-preview/email-wizard-step-preview.vue'\r\nimport EmailWizardStepSent from '@/views/email-wizard/email-wizard-steps/email-wizard-step-sent/email-wizard-step-sent.vue'\r\nimport Vue from 'vue'\r\nimport { mapActions, mapGetters } from 'vuex'\r\n\r\nconst WizardBus = new Vue()\r\n\r\nexport default {\r\n name: 'email-wizard',\r\n mixins: [WizardMixins],\r\n components: {\r\n EmailWizardStepContacts,\r\n EmailWizardStepCompose,\r\n EmailWizardStepPreview,\r\n EmailWizardStepSent\r\n },\r\n props: {\r\n visible: Boolean,\r\n plantakers: Array,\r\n projectUsers: Array,\r\n invitees: Array,\r\n groupName: String,\r\n tenderId: String,\r\n contractId: String,\r\n document: Object\r\n },\r\n provide() {\r\n return {\r\n WizardBus,\r\n totalSteps: this.totalStepCount - 1\r\n }\r\n },\r\n watch: {\r\n plantakers(pts) {\r\n this.setNewEmailContacts(this.mapContacts(pts))\r\n },\r\n projectUsers(val) {\r\n this.setNewEmailProjectUsers(val)\r\n },\r\n invitees(invs) {\r\n this.setNewEmailInvitees(this.mapInvitees(invs))\r\n },\r\n tenderId(val) {\r\n this.setNewEmailTenderId(val)\r\n },\r\n contractId(val) {\r\n this.setNewEmailContractId(val)\r\n },\r\n document(val) {\r\n this.setNewEmailDocument(val)\r\n }\r\n },\r\n computed: {\r\n totalStepCount() {\r\n return 4\r\n },\r\n ...mapGetters(['getEmailTemplates', 'getNewEmail'])\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.email-wizard.email-wizard-view.',\r\n test: 'florp'\r\n }\r\n },\r\n created() {\r\n if (this.groupName && this.groupName.length > 0) {\r\n this.fetchEmailTemplates(this.groupName).catch((err) =>\r\n errorHandler.handleApiError(this, err)\r\n )\r\n }\r\n\r\n if (this.plantakers) {\r\n this.setNewEmailContacts(this.mapContacts(this.plantakers))\r\n } else {\r\n this.setNewEmailContacts([])\r\n }\r\n\r\n if (this.invitees) {\r\n this.setNewEmailInvitees(this.mapInvitees(this.invitees))\r\n } else {\r\n this.setNewEmailInvitees([])\r\n }\r\n\r\n this.setNewEmailProjectUsers(this.projectUsers ? this.projectUsers : [])\r\n this.setNewEmailTenderId(this.tenderId ? this.tenderId : '')\r\n this.setNewEmailContractId(this.contractId ? this.contractId : '')\r\n this.setNewEmailDocument(this.document ? this.document : '')\r\n },\r\n mounted() {\r\n WizardBus.$on('next', this.handleClickNext)\r\n WizardBus.$on('previous', this.handleClickPrevious)\r\n this.setNewEmail()\r\n },\r\n methods: {\r\n ...mapActions([\r\n 'updateNewEmail',\r\n 'setNewEmailContacts',\r\n 'setNewEmailProjectUsers',\r\n 'setNewEmailInvitees',\r\n 'setNewEmailTenderId',\r\n 'setNewEmailContractId',\r\n 'deleteDocument',\r\n 'setNewEmailDocument'\r\n ]),\r\n reset() {\r\n this.currentStepNumber = 1\r\n this.setNewEmail()\r\n },\r\n mapContacts(pts) {\r\n const plantakers = []\r\n\r\n if (pts !== null) {\r\n pts.forEach((pt) => {\r\n if (pt.vendor !== null && pt.vendor.contacts !== null) {\r\n pt.vendor.contacts.forEach((c) => {\r\n plantakers.push({\r\n id: pt.vendor.id,\r\n name: pt.vendor.companyName,\r\n contact: {\r\n id: c.id,\r\n name: `${c.firstName} ${c.lastName}`,\r\n email: c.email\r\n }\r\n })\r\n })\r\n }\r\n })\r\n }\r\n\r\n return plantakers\r\n },\r\n mapInvitees(invs) {\r\n const invitees = []\r\n invs.forEach((inv) => {\r\n invitees.push({\r\n id: inv.vendor.id,\r\n invitationId: inv.id,\r\n name: inv.vendor.companyName,\r\n contact: {\r\n id: inv.contactId,\r\n name: inv.contactName,\r\n email: inv.email\r\n }\r\n })\r\n })\r\n return invitees\r\n },\r\n createNewEmail() {\r\n return {\r\n includeProjectUsers: false,\r\n projectUsers: [],\r\n contacts: [],\r\n template: null,\r\n reply: null,\r\n sender: null,\r\n cc: [],\r\n bcc: [],\r\n attachments: [],\r\n subject: null,\r\n body: '',\r\n sendWhen: null,\r\n sendDate: null\r\n }\r\n },\r\n setNewEmail() {\r\n const email = this.createNewEmail()\r\n this.updateNewEmail(email)\r\n },\r\n ...mapActions(['fetchEmailTemplates'])\r\n }\r\n}\r\n","export default \"__VITE_ASSET__DDr2GMIz__\"","\r\n\r\n\r\n\r\n\r\n","import { ref, nextTick, onMounted, onUnmounted } from 'vue'\r\n\r\nexport default function useClickOutside(elementRef, callback) {\r\n const isClickOutside = ref(false)\r\n\r\n const checkClickOutside = async (event) => {\r\n if (elementRef.value && !elementRef.value.contains(event.target)) {\r\n callback(event)\r\n isClickOutside.value = true\r\n } else {\r\n isClickOutside.value = false\r\n }\r\n await nextTick()\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('click', checkClickOutside, true)\r\n })\r\n\r\n onUnmounted(() => {\r\n document.removeEventListener('click', checkClickOutside, true)\r\n })\r\n\r\n return { isClickOutside }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { useStore } from '@/store'\r\nconst store = useStore()\r\nimport { ref } from 'vue'\r\n\r\nexport function useFeatureHelpers(givenStore = store) {\r\n const storeToUse = ref(givenStore || store)\r\n\r\n const navBlockedError = new Error('Gated navigation aborted')\r\n navBlockedError.name = 'GateNavigationAborted'\r\n\r\n function isFeatureEnabled(featureId) {\r\n return storeToUse.value.getters.getFeatureEnabled(featureId).enabled\r\n }\r\n\r\n function isModuleEnabled(featureId, moduleId) {\r\n return storeToUse.value.getters.getModuleEnabled(featureId, moduleId).enabled\r\n }\r\n\r\n function featureGateRoute(featureId) {\r\n return (to, from, next) => {\r\n const { enabled } = storeToUse.value.getters.getFeatureEnabled(featureId)\r\n if (enabled) {\r\n next()\r\n } else {\r\n const nextPath = from.path === '/login' ? navBlockedError : '/login'\r\n next(nextPath)\r\n }\r\n }\r\n }\r\n\r\n function moduleGateRoute(featureId, moduleId) {\r\n return (to, from, next) => {\r\n const { enabled } = storeToUse.value.getters.getModuleEnabled(featureId, moduleId)\r\n if (enabled) {\r\n next()\r\n } else {\r\n const nextPath = from.path === '/login' ? navBlockedError : '/login'\r\n next(nextPath)\r\n }\r\n }\r\n }\r\n\r\n return {\r\n featureGateRoute,\r\n moduleGateRoute,\r\n navBlockedError,\r\n isFeatureEnabled,\r\n isModuleEnabled\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","const navItems = [\r\n {\r\n path: '/control-panel/project-settings',\r\n label: 'ui.components.app-mainnav.adminNavControlPanel'\r\n },\r\n {\r\n path: '/team/all',\r\n label: 'ui.components.app-mainnav.adminNavTeamMembers'\r\n },\r\n {\r\n path: '/messages',\r\n label: 'ui.components.app-mainnav.adminNavMessageCentre',\r\n disabled: true\r\n },\r\n {\r\n path: 'https://bidsandtenders.zendesk.com/hc/en-us/categories/360002752152-Buyer-Support-Portal-Pro',\r\n label: 'ui.components.app-mainnav.learningCentre',\r\n target: '_blank',\r\n tag: 'a'\r\n },\r\n {\r\n path: 'https://bidsandtenders.zendesk.com/hc/en-us/community/topics',\r\n label: 'ui.components.app-mainnav.communityHub',\r\n target: '_blank',\r\n tag: 'a'\r\n },\r\n {\r\n path: 'https://bidsandtenders.zendesk.com/hc/en-us/requests/new ',\r\n label: 'ui.components.app-mainnav.submitFeedback',\r\n target: '_blank',\r\n tag: 'a'\r\n },\r\n {\r\n path: 'https://calendar.bidsandtenders.ca/default/Month',\r\n label: 'ui.components.app-mainnav.bidClosingCalendar',\r\n target: '_blank',\r\n tag: 'a'\r\n },\r\n {\r\n path: '/contract-builder-dashboard',\r\n label: 'ui.views.projects.contract.contract-nav-view.contractBuilderNavItem',\r\n esolutionsOnly: true\r\n }\r\n]\r\n\r\nexport default navItems\r\n","\r\n\r\n\r\n\r\n\r\n","export default \"__VITE_ASSET__B3jNaBzx__\"","\r\n\r\n\r\n\r\n","import { Notification } from 'element-ui'\r\nimport uiHandler from '@/utils/ui'\r\nimport errorHandler from '@/utils/error'\r\n\r\n// NOTE: any component calling this function must add\r\n// downloadCompletedSubmissionsAll\r\n// addAllSubmissionsNotification\r\n// to its mapActions list\r\nexport function createCompletedSubmissionsAllNotification(thisComponent, name, guid) {\r\n const notify = Notification.success({\r\n title: thisComponent.$t('ui.components.notifications.titles.exportAll'),\r\n message: `${thisComponent.$t(\r\n 'ui.components.notifications.bodies.exportAllLead'\r\n )} ${name} ${thisComponent.$t('ui.components.notifications.bodies.exportAllTrail')}`,\r\n duration: 0,\r\n showClose: false,\r\n position: 'top-left',\r\n onClick: async function () {\r\n // when this notification is clicked, download the submission\r\n uiHandler.showLoading(thisComponent)\r\n try {\r\n await thisComponent.downloadCompletedSubmissionsAll(this.tenderGuid)\r\n } catch (e) {\r\n errorHandler.handleApiError(thisComponent, e)\r\n }\r\n uiHandler.hideLoading(thisComponent)\r\n // close the notification\r\n this.close()\r\n }\r\n })\r\n // attach the guid to the notification object\r\n notify.tenderGuid = guid\r\n // remember it so we can close it later, if user logs out\r\n thisComponent.addAllSubmissionsNotification({ closeFn: notify.close, tenderGuid: guid })\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","export default \"__VITE_ASSET__56GQzzj7__\"","\r\n\r\n\r\n\r\n\r\n","export default \"data:image/svg+xml,%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewbox='0%200%20100%20100'%20width='18'%20height='16'%20xml:space='preserve'%20fill='%23082B49'%20%3e%3cg%20id='main'%20data-name='Group%20117'%20transform='translate(0.025)'%3e%3cpath%20id='ArrowTop'%20data-name='Path%20112'%20class='cls-2'%20d='M16.909,7.809,9.435.335A1.17,1.17,0,0,0,8.63,0a1.237,1.237,0,0,0-.8.335L.352,7.809a1.153,1.153,0,0,0,0,1.609,1.17,1.17,0,0,0,.8.335h0a1.237,1.237,0,0,0,.8-.335l6.7-6.7,6.7,6.7a1.153,1.153,0,0,0,1.609,0A1.227,1.227,0,0,0,16.909,7.809Z'%20transform='translate(-0.025)'%20/%3e%3cpath%20id='ArrowMid'%20data-name='Path%20113'%20class='cls-2'%20d='M20.207,23.826,15.783,19.4a1.033,1.033,0,0,0-.67-.3.936.936,0,0,0-.67.268L9.952,23.859a.955.955,0,0,0,.67,1.642h0a.965.965,0,0,0,.7-.3l3.754-3.754L18.833,25.2a.992.992,0,0,0,1.374,0A.933.933,0,0,0,20.207,23.826Z'%20transform='translate(-6.441%20-12.698)'%20/%3e%3cpath%20id='ArrowBottom'%20data-name='Path%20114'%20class='cls-2'%20d='M22.912,38.379l-1.944-1.944a.791.791,0,0,0-.536-.235.667.667,0,0,0-.536.235l-1.944,1.944a.749.749,0,0,0,0,1.073.791.791,0,0,0,.536.235h0a.667.667,0,0,0,.536-.235l1.408-1.408,1.441,1.408a.749.749,0,0,0,1.073,0A.858.858,0,0,0,22.912,38.379Z'%20transform='translate(-11.793%20-24.067)'%20/%3e%3c/g%3e%3c/svg%3e\"","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","export const Icons = {\r\n methods: {\r\n getIconClass() {\r\n if (!this.document.type) return ''\r\n return `fiv-sqo fiv-icon-${this.document.type}`\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","export const wizardStepDef = {\r\n SELECTION: 'SELECTION',\r\n ADD_SUPPLIER: 'ADD_SUPPLIER',\r\n DOCUMENTS: 'DOCUMENTS',\r\n WORKFLOW: 'WORKFLOW',\r\n PREVIEW: 'PREVIEW'\r\n}\r\n\r\nexport const approvalTypes = {\r\n UPLOAD: 'UPLOAD',\r\n UPLOAD_CREATE: 'UPLOAD_CREATE'\r\n}\r\n\r\nexport const approvalStatus = {\r\n INCOMPLETE: 'Incomplete',\r\n APPROVED: 'Approved',\r\n DRAFT: 'Draft',\r\n PENDING_APPROVAL: 'Pending Approval',\r\n EMAIL_SENT: 'Email Sent',\r\n CORRECTING: 'Correcting',\r\n DECLINED: 'Declined',\r\n CANCELLED: 'Cancelled',\r\n CLOSED: 'Closed'\r\n}\r\n\r\nexport const addNewMemberTypes = {\r\n TEAM_MEMBER: 'TEAM_MEMBER',\r\n EMAIL: 'EMAIL'\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","export default {\r\n name: 'dashboard-component',\r\n props: {\r\n border: Boolean,\r\n marker: String,\r\n size: {\r\n type: String,\r\n default: 'medium'\r\n },\r\n height: String,\r\n icon: String,\r\n title: String,\r\n hasDelete: Boolean,\r\n sizeText: String,\r\n isLoading: Boolean,\r\n hasError: Boolean,\r\n customIcon: String\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.dashboard-view.'\r\n }\r\n },\r\n computed: {\r\n hasCustomIcon() {\r\n return this.customIcon\r\n },\r\n hasHeader() {\r\n return this.icon || this.title\r\n },\r\n hasIcon() {\r\n return !!this.icon\r\n },\r\n hasComponent() {\r\n return this.$slots['component']\r\n },\r\n markerClass() {\r\n if (!this.marker) return ''\r\n return `has-marker-${this.marker}`\r\n },\r\n heightClass() {\r\n if (this.height === null || !this.height) return ''\r\n return `is-height-${this.height}`\r\n },\r\n sizeClass() {\r\n if (this.size === null) return 'column is-12'\r\n if (this.size === 'auto') return 'is-size-auto'\r\n switch (this.size) {\r\n case 'large':\r\n return 'column is-full-mobile is-three-quarters-widescreen'\r\n case 'medium':\r\n return 'column is-full-mobile is-half-widescreen'\r\n case 'small':\r\n return 'column is-6 is-one-quarter-widescreen'\r\n case 'full':\r\n return 'column is-12'\r\n }\r\n }\r\n },\r\n methods: {\r\n handleCommand(command) {\r\n switch (command) {\r\n case 'delete':\r\n this.$emit('delete')\r\n break\r\n case 'changeSize':\r\n this.$emit('changeSize')\r\n break\r\n }\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import DashboardComponent from '@/views/dashboard/components/dashboard-component/dashboard-component.vue'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport OverviewExpiredDocs from './overview-expired-docs/overview-expired-docs.vue'\r\nimport OverviewProjectsEnding from './overview-projects-ending/overview-projects-ending.vue'\r\nimport OverviewProjects from './overview-projects/overview-projects.vue'\r\nimport OverviewDocumentUploads from './overview-uploads/overview-uploads.vue'\r\n\r\nexport default {\r\n name: 'dashboard-buyer-overview',\r\n components: {\r\n DashboardComponent,\r\n OverviewProjects,\r\n OverviewDocumentUploads,\r\n OverviewProjectsEnding,\r\n OverviewExpiredDocs\r\n },\r\n props: {\r\n hasDelete: Boolean,\r\n sizeText: String\r\n },\r\n data() {\r\n return {\r\n activeTab: 'projects',\r\n dashboardReady: true,\r\n viewString: 'ui.views.dashboard.buyer-dashboard-view.',\r\n viewStringCommon: 'ui.views.dashboard.dashboard-view.',\r\n tabsList: ['projects', 'uploads', 'expired', 'ending'],\r\n tabLoadState: {}\r\n }\r\n },\r\n created() {\r\n this.setupTabLoadState()\r\n },\r\n methods: {\r\n handleCommand(command) {\r\n switch (command) {\r\n case 'delete':\r\n this.$emit('delete')\r\n break\r\n case 'changeSize':\r\n this.$emit('changeSize')\r\n break\r\n }\r\n },\r\n setupTabLoadState() {\r\n const list = {}\r\n this.tabsList.forEach(\r\n (tab) =>\r\n (list[tab] = {\r\n loading: false,\r\n error: false\r\n })\r\n )\r\n this.tabLoadState = cloneDeep(list)\r\n },\r\n handleLoading(val) {\r\n this.tabLoadState[this.activeTab].loading = val\r\n },\r\n handleError(val) {\r\n this.tabLoadState[this.activeTab].error = val\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import FeedItem from '@/views/dashboard/components/dashboard-feed-component/dashboard-feed-component-item.vue'\r\nimport Activity from '@/views/dashboard/components/dashboard-item-activity.vue'\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n name: 'dashboard-feed',\r\n components: {\r\n Activity,\r\n FeedItem\r\n },\r\n props: {\r\n data: {\r\n type: Array,\r\n default: () => []\r\n },\r\n type: String,\r\n max: Number\r\n },\r\n computed: {\r\n ...mapGetters(['getUsers', 'apiRoot']),\r\n activeComponent() {\r\n return this.type\r\n },\r\n useFeedItem() {\r\n return this.type !== 'comment' && this.type !== 'activity' && this.type !== 'custom'\r\n },\r\n hasActions() {\r\n return this.$slots.actions\r\n },\r\n itemList() {\r\n return this.max ? this.data.slice(0, this.max) : this.data\r\n }\r\n },\r\n data() {\r\n return {\r\n defaultLinks: {\r\n build: 'settings',\r\n contract: 'dates',\r\n source: 'companies'\r\n },\r\n viewString: 'ui.views.projects.messages.message-center-view.'\r\n }\r\n },\r\n methods: {\r\n getUserAvatar(id) {\r\n const user = this.getUsers.find((u) => u.id === id)\r\n return user?.avatarUrl || ''\r\n },\r\n getUserAvatarUrl(user) {\r\n if (\r\n user.avatarUrl === null ||\r\n user.avatarUrl ===\r\n `https://service.bidsandtenders.ca/resources/images/avatar/https://ui-avatars.com/api/?size=64&name=${user.firstName}+${user.lastName}`\r\n )\r\n return `https://ui-avatars.com/api/?size=64&name=${user.firstName}+${user.lastName}`\r\n let avatar = user.avatarUrl\r\n if (avatar.indexOf('/') === -1) {\r\n avatar = `${this.apiRoot}/resources/images/avatar/${avatar}`\r\n }\r\n return this.getUserAvatar(user.id) || avatar\r\n },\r\n getProjectLink(params) {\r\n const phase = this.$t(params.phase.localization).toLowerCase()\r\n const { id } = params\r\n const projectLink = `/projects/${id}/${phase}/${this.defaultLinks[phase]}`\r\n return projectLink\r\n }\r\n }\r\n}\r\n","export default \"__VITE_ASSET__YZxncT6c__\"","export const eventTypes = {\r\n CLOSING: 'closed',\r\n PUBLISHED: 'published',\r\n QUESTION_DEADLINE: 'question-deadline',\r\n SITE_MEETING: 'site-meeting',\r\n AWARDED: 'awarded'\r\n}\r\n\r\nexport const calendarViews = {\r\n DAY: 'day',\r\n MONTH: 'month'\r\n}\r\n\r\nexport const statusTypes = {\r\n IN_PROGRESS: 'In Progress',\r\n PLANNED: 'Planned',\r\n PUBLISHED: 'Published',\r\n SCHEDULED: 'Scheduled',\r\n CLOSED_UNOFFICIAL: 'Closed/Unofficial',\r\n AWARDED: 'Awarded',\r\n CANCELLED: 'Cancelled'\r\n}\r\n\r\nexport const statusColorsMap = new Map()\r\nexport const statusTextColorsMap = new Map()\r\n\r\n// statusColorsMap.set(statusTypes.IN_PROGRESS, '#FFE083')\r\n// statusColorsMap.set(statusTypes.PLANNED, '#E6DDFE')\r\n// statusColorsMap.set(statusTypes.PUBLISHED, '#BED89')\r\n// statusColorsMap.set(statusTypes.SCHEDULED, '#D6D6D6')\r\n// statusColorsMap.set(statusTypes.CLOSED_UNOFFICIAL, '#3F3F3F')\r\n// statusColorsMap.set(statusTypes.AWARDED, '#97DDE4')\r\n// statusColorsMap.set(statusTypes.CANCELLED, '#F5C2C7')\r\n\r\nstatusColorsMap.set(statusTypes.IN_PROGRESS, 'var(--status-in-progress)')\r\nstatusColorsMap.set(statusTypes.PLANNED, 'var(--status-planned)')\r\nstatusColorsMap.set(statusTypes.PUBLISHED, 'var(--status-published)')\r\nstatusColorsMap.set(statusTypes.SCHEDULED, 'var(--status-scheduled)')\r\nstatusColorsMap.set(statusTypes.CLOSED_UNOFFICIAL, 'var(--status-closed-unofficial)')\r\nstatusColorsMap.set(statusTypes.AWARDED, 'var(--status-awarded)')\r\nstatusColorsMap.set(statusTypes.CANCELLED, 'var(--status-cancelled)')\r\nstatusTextColorsMap.set(statusTypes.CLOSED_UNOFFICIAL, '#ffffff')\r\n","\r\n\r\n\r\n","import dayjs from '@/utils/dayjs'\r\nimport uiHandler from '@/utils/ui'\r\nimport { calendarViews, eventTypes } from '@/views/dashboard/dashboard-defs'\r\nimport VueCal from 'vue-cal'\r\nimport 'vue-cal/dist/vuecal.css'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport CalendarEvent from './dashboard-important-dates-event.vue'\r\n\r\nexport default {\r\n name: 'dashboard-important-dates',\r\n components: {\r\n VueCal,\r\n CalendarEvent\r\n },\r\n computed: {\r\n ...mapGetters(['getDashboardCalendar']),\r\n eventsList() {\r\n return this.getDashboardCalendar || []\r\n },\r\n filteredEventsCalendarList() {\r\n return this.eventsList\r\n .filter((event) => this.selectedProcurementLeads.includes(event.procurementLead))\r\n .map((event) => {\r\n return {\r\n event,\r\n start: dayjs(event.calendarDate).format('YYYY-MM-DD HH:00'),\r\n end: dayjs(event.calendarDate).add(1, 'hour').format('YYYY-MM-DD HH:00'),\r\n class: event.type.includes(this.selectedEventType) ? event.type : 'is-disabled',\r\n content: `${event.projectNumber} ${event.projectName}`\r\n }\r\n })\r\n },\r\n currentProcurementLeads() {\r\n return [...new Set(this.eventsList.map((event) => event.procurementLead))]\r\n },\r\n calendarEventsMapByDate() {\r\n const eventMap = new Map('', [])\r\n this.filteredEventsCalendarList.forEach((e) => {\r\n const date = dayjs(e.event.calendarDate).format('MMMM D, YYYY')\r\n eventMap.set(date, [...(eventMap.get(date) || []), e])\r\n })\r\n\r\n return eventMap\r\n },\r\n eventsToDisplay() {\r\n if (this.activeView === calendarViews.DAY) {\r\n return this.filteredEventsCalendarList\r\n } else {\r\n const eventsByDate = [...this.calendarEventsMapByDate.values()]\r\n .map((val) => {\r\n if (val.length > 3) {\r\n const newArr = val.slice(0, 3)\r\n newArr.push({\r\n start: dayjs(val[0].event.calendarDate).format('YYYY-MM-DD HH:00'),\r\n end: dayjs(val[0].event.calendarDate).add(1, 'hour').format('YYYY-MM-DD HH:00'),\r\n class: this.customEventClass,\r\n content: `+${val.length - 3} more`\r\n })\r\n return newArr\r\n }\r\n return val\r\n })\r\n .flat()\r\n return eventsByDate || []\r\n }\r\n }\r\n },\r\n props: {\r\n size: String\r\n },\r\n watch: {\r\n currentProcurementLeads(val) {\r\n this.selectedProcurementLeads = val\r\n },\r\n calendarEventsMapByDate(val) {\r\n this.activeNames = [...Array(val.size).keys()]\r\n },\r\n activeView(val) {\r\n if (val === calendarViews.DAY) {\r\n setTimeout(() => {\r\n // scroll to hours * height of each cell\r\n document\r\n .querySelector('#vuecal .vuecal__bg')\r\n .scrollTo({ top: 23 * 40, behavior: 'smooth' })\r\n }, 500)\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.dashboard-view.',\r\n selectedProcurementLeads: [],\r\n selectedEventType: '',\r\n allProcurementLeadsSelected: true,\r\n eventTypes,\r\n activeView: calendarViews.MONTH,\r\n activeNames: [],\r\n selectedDate: null,\r\n customEventClass: 'more-elements'\r\n }\r\n },\r\n methods: {\r\n ...mapActions(['fetchDashboardCalendar']),\r\n toggleAllProcurementLeads() {\r\n this.allProcurementLeadsSelected = !this.allProcurementLeadsSelected\r\n this.selectedProcurementLeads = []\r\n if (this.allProcurementLeadsSelected) {\r\n this.selectedProcurementLeads = [...this.currentProcurementLeads]\r\n }\r\n },\r\n handleViewChange(event) {\r\n this.$emit('loading', true)\r\n\r\n if (event.startDate && event.endDate) {\r\n const startDate = dayjs(event.startDate.valueOf()).format('YYYY-MM-DD')\r\n const endDate = dayjs(event.endDate.valueOf()).format('YYYY-MM-DD')\r\n\r\n this.fetchDashboardCalendar({ startDate: startDate, endDate: endDate })\r\n .then(() => this.$emit('error', false))\r\n .catch(() => this.$emit('error', true))\r\n .finally(() => this.$emit('loading', false))\r\n }\r\n },\r\n onEventClick(event) {\r\n if (event.class === this.customEventClass) {\r\n this.activeView = calendarViews.DAY\r\n this.selectedDate = event.start\r\n } else if (event.class !== 'is-disabled') {\r\n this.handleEventClick(event.event)\r\n }\r\n },\r\n handleEventClick(event) {\r\n uiHandler.showLoading(this)\r\n this.$router.push(`/projects/${event.projectId}/build/settings`)\r\n },\r\n setActiveType(eventType) {\r\n this.selectedEventType = eventType\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","export const NULL_DATE = new Date('9999-12-31T00:00:00Z')\r\nexport const NULL_GUID = '00000000-0000-0000-0000-000000000000'\r\n","import IntakeService from '@/services/intake/intake.service'\r\nimport { useStore } from '@/store'\r\nimport { NULL_DATE } from '@/utils/constants'\r\nimport { currencyStringToFloat } from '@/utils/utility'\r\nimport { sourceMethods } from '@/views/projects/project-new-wizard-view/project-wizard-defs'\r\nimport dayjs from 'dayjs'\r\nimport uuid from 'uuid/v1'\r\nimport { computed } from 'vue'\r\n/**\r\n * Limited new project struct copied\r\n * from project store\r\n * extend if we intend to use more fields\r\n * or set the currentNewProject data directly\r\n * from the intake project data\r\n */\r\nconst StructNewProjectData = {\r\n contractDetails: {\r\n amount: null,\r\n contractDocuments: null,\r\n otherDocuments: null,\r\n otherDocumentsList: []\r\n },\r\n defaultTeamLead: null,\r\n departmentProjectLead: null,\r\n divisionCategory: null,\r\n id: null,\r\n isCopy: false,\r\n projectDepartment: null,\r\n projectName: null,\r\n projectType: null,\r\n sourceDetails: {\r\n bidClassification: null,\r\n bidMeetings: null,\r\n closingMethod: null,\r\n dateEstimatedAward: null,\r\n description: null,\r\n id: null,\r\n includeOtherDocument: false,\r\n plannedIssueDate: null,\r\n plannedIssueDateUtc: null,\r\n procurementMethodLimitedType: [],\r\n procurementMethodLimitedTypeDescription: null,\r\n procurementType: null,\r\n type: null,\r\n initialPurchasingStartDate: null\r\n },\r\n sourceMethod: null,\r\n teamLead: null\r\n}\r\n\r\nconst MeetingLocationStruct = {\r\n deleted: false,\r\n description: '',\r\n endDate: null,\r\n id: null,\r\n location: '',\r\n required: false,\r\n startDate: null,\r\n tempId: null\r\n}\r\n\r\nconst TeamMemberStruct = {\r\n id: null,\r\n firstName: null,\r\n lastName: null,\r\n email: null\r\n}\r\n\r\nexport default function UseIntakeNewProject(config = {}) {\r\n const store = config.store || useStore()\r\n const intakeService = config.intakeService || IntakeService()\r\n const hasIntakeNewProjectData = computed(() => store.getters.getNewIntakeProjectData !== null)\r\n\r\n function getMappedProcurementType(procurementTypeText) {\r\n const procurementTypes = store.getters.getProcurementTypes\r\n const type =\r\n procurementTypes.find((pt) => pt.text === procurementTypeText) || procurementTypeText\r\n if (type) return type.id\r\n return null\r\n }\r\n\r\n function getUserOrTeamMember({ firstName, lastName, email }) {\r\n if (!email) return null\r\n\r\n // first user in store.getters.getUsers where email === user.email\r\n const users = store.getters.getUsers\r\n const userInStore = users.find((u) => u.email === email)\r\n if (userInStore) return userInStore\r\n\r\n // if not found, create a new team member\r\n return {\r\n ...TeamMemberStruct,\r\n firstName,\r\n lastName,\r\n email\r\n }\r\n }\r\n\r\n function mapLocationsToSiteMeetings(locations) {\r\n return locations.map((location) => {\r\n const { city, country, postalCode, province, streetAddress, unit } = location\r\n\r\n const tempId = uuid()\r\n\r\n const startDate = dayjs(NULL_DATE).format('YYYY-MM-DDTHH:mm:ss')\r\n\r\n const locationString = [streetAddress, unit, city, province, postalCode, country]\r\n .filter(Boolean)\r\n .join(', ')\r\n return {\r\n ...MeetingLocationStruct,\r\n location: locationString,\r\n id: tempId,\r\n tempId,\r\n startDate\r\n }\r\n })\r\n }\r\n\r\n function mapIntakeDataToProjectData(intakeData) {\r\n if (!intakeData) return null\r\n\r\n let emails = []\r\n\r\n if (intakeData.projectDetail.supplierEmails) {\r\n emails = intakeData.projectDetail.supplierEmails\r\n .split(';')\r\n .map((e) => ({ email: e, isEmailInvitee: true }))\r\n }\r\n\r\n const dataFromIntake = {\r\n intakeRequestId: intakeData.id,\r\n projectName: intakeData.projectDetail.projectName,\r\n projectDepartment: intakeData.contactDetails.departmentId,\r\n divisionCategory: intakeData.contactDetails.divisionId,\r\n teamLead: intakeData.contactDetails.procurementLeadId,\r\n users: [],\r\n sourceMethod:\r\n intakeData.projectDetail.applyToProject === 'NONE' ||\r\n !intakeData.projectDetail.applyToProject\r\n ? sourceMethods.PUBLIC\r\n : sourceMethods.LIMITED\r\n }\r\n\r\n let bidClassification = intakeData.projectDetail.classification\r\n if (bidClassification.toLowerCase() === 'services related to goods') {\r\n bidClassification = 'ServicesRelatedToGoods'\r\n }\r\n\r\n const sourceDataFromIntake = Object.assign({}, StructNewProjectData.sourceDetails, {\r\n procurementType: getMappedProcurementType(intakeData.projectDetail.bidType),\r\n type: getMappedProcurementType(intakeData.projectDetail.bidType),\r\n bidClassification,\r\n bidMeetings: intakeData.projectDetail.isSiteVisit,\r\n description: intakeData.projectDetail.description,\r\n categories: intakeData.projectDetail.categoryIds.map((c) => ({ id: c })),\r\n dateEstimatedAward: intakeData.projectDetail.deliveryConstructionStartDate,\r\n dateAvailable: intakeData.projectDetail.estimatedPostingDate\r\n ? dayjs(\r\n new Date(intakeData.projectDetail.estimatedPostingDate).setHours(12, 0, 0, 0)\r\n ).format('YYYY-MM-DDTHH:mm:ss')\r\n : null,\r\n estimatedAnnualValue: currencyStringToFloat(intakeData.financialDetails.projectBudget),\r\n estimatedValue: currencyStringToFloat(intakeData.financialDetails.estimatedTotalProjectValue),\r\n meetingLocations: null,\r\n vendorInvitationListNew: emails,\r\n initialPurchasingStartDate: intakeData.projectDetail.dateCreatedUtc,\r\n teamMembers: []\r\n })\r\n // add meeting locations\r\n if (intakeData.projectDetail.isSiteVisit) {\r\n sourceDataFromIntake.meetingLocations = mapLocationsToSiteMeetings(\r\n intakeData.projectDetail.locations\r\n )\r\n }\r\n\r\n // add requestor as user or team member\r\n const requestor = getUserOrTeamMember(intakeData.contactDetails)\r\n if (requestor.id) {\r\n dataFromIntake.users.push(requestor)\r\n }\r\n\r\n const contractDataFromIntake = Object.assign({}, StructNewProjectData.contractDetails, {})\r\n\r\n return {\r\n ...StructNewProjectData,\r\n ...dataFromIntake,\r\n sourceDetails: sourceDataFromIntake,\r\n contractDetails: contractDataFromIntake\r\n }\r\n }\r\n\r\n async function getIntakeDataById(id) {\r\n try {\r\n const response = await intakeService.getIntakeProjectData(id)\r\n return { ...response.data, id }\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n async function createProjectFromIntakeData(intakeData) {\r\n try {\r\n if (!store.getters.getProcurementTypes.length) {\r\n await store.dispatch('fetchProcurementTypes')\r\n }\r\n const mappedData = mapIntakeDataToProjectData(intakeData)\r\n await store.dispatch('createNewProjectFromIntake', mappedData)\r\n const newIntake = await store.getters.getNewIntakeProjectData\r\n return newIntake\r\n } catch (err) {\r\n throw err\r\n }\r\n }\r\n\r\n return {\r\n createProjectFromIntakeData,\r\n getIntakeDataById,\r\n mapIntakeDataToProjectData,\r\n hasIntakeNewProjectData\r\n }\r\n}\r\n","import exportFromJSON from 'export-from-json'\r\n\r\nfunction transformData(data, columns) {\r\n if (!columns) return data\r\n return data.map((val) => {\r\n const dto = {}\r\n for (let i = 0; i < columns.length; i++) {\r\n dto[columns[i].headerName || columns[i].columnHeading] = val[columns[i].field]\r\n }\r\n return dto\r\n })\r\n}\r\n\r\nexport function exportTableToXLS(fileName, exportData, columns) {\r\n exportFromJSON({\r\n fileName,\r\n data: transformData(exportData, columns),\r\n exportType: exportFromJSON.types.xls,\r\n fileNameFormatter: (name) => name\r\n })\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import UseIntakeNewProject from '@/composables/project/newIntakeProject'\r\nimport tableMixins from '@/mixins/table-mixins'\r\nimport i18n from '@/plugins/i18n'\r\nimport dayjs from '@/utils/dayjs'\r\nimport errorHandler from '@/utils/error'\r\nimport { exportTableToXLS } from '@/utils/exportTable'\r\nimport ui from '@/utils/ui'\r\nimport ApproveModal from '@/views/projects/project-view/project-sub-views/intake/modals/intake-view-approve-modal'\r\nimport DeclineModal from '@/views/projects/project-view/project-sub-views/intake/modals/intake-view-decline-modal'\r\nimport { Notification } from 'element-ui'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport { mapActions, mapGetters } from 'vuex'\r\n\r\nexport default {\r\n name: 'intake-essentials-widget',\r\n mixins: [tableMixins],\r\n components: { ApproveModal, DeclineModal },\r\n computed: {\r\n ...mapGetters([\r\n 'getDepartments',\r\n 'getUsers',\r\n 'getIntakePendingRequests',\r\n 'getProcurementLeads'\r\n ]),\r\n dataSource() {\r\n let projects = []\r\n\r\n if (this.mappedData?.length) {\r\n projects = this.mappedData.filter((val) => {\r\n let showVal = true\r\n if (this.selectedRequester && this.selectedRequester != 'ALL') {\r\n showVal = val.requester?.includes(this.selectedRequester)\r\n }\r\n if (showVal && this.selectedDepartment && this.selectedDepartment != 'ALL') {\r\n showVal = val.department?.includes(\r\n this.departmentList.find((dept) => dept.id === this.selectedDepartment).name\r\n )\r\n }\r\n if (showVal && this.selectedTeamMember && this.selectedTeamMember !== 'ALL') {\r\n if (this.selectedTeamMember === 'NULL') {\r\n showVal = !val.procurementLead\r\n } else {\r\n showVal = val.procurementLead?.includes(this.selectedTeamMember)\r\n }\r\n }\r\n if (showVal && this.keywordFilter) {\r\n showVal = val.projectName?.toLowerCase().includes(this.keywordFilter.toLowerCase())\r\n }\r\n return showVal\r\n })\r\n }\r\n\r\n return projects\r\n },\r\n storedIntakeRequests() {\r\n return this.getIntakePendingRequests\r\n },\r\n departmentList() {\r\n return this.getDepartments\r\n }\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.intake-widget.',\r\n mappedData: [],\r\n fields: [\r\n 'id',\r\n 'dateCreatedUtc',\r\n 'projectName',\r\n 'firstName',\r\n 'lastName',\r\n 'procurementLead',\r\n 'department',\r\n 'bidType',\r\n 'classification',\r\n 'estimatedPostingDate',\r\n 'deliveryConstructionStartDate',\r\n 'projectBudget',\r\n 'estimatedTotalProjectValue'\r\n ],\r\n columnDefs: [\r\n {\r\n columnHeading: 'Request date',\r\n field: 'dateCreatedUtc',\r\n visible: true,\r\n isDate: true\r\n },\r\n {\r\n columnHeading: 'Request name',\r\n field: 'projectName',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Requester',\r\n field: 'requester',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Procurement lead',\r\n field: 'procurementLead',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Department',\r\n field: 'department',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Type',\r\n field: 'bidType',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Classification',\r\n field: 'classification',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Estimated posting date',\r\n field: 'estimatedPostingDate',\r\n visible: true,\r\n isDate: true\r\n },\r\n {\r\n columnHeading: 'Delivery start date',\r\n field: 'deliveryConstructionStartDate',\r\n visible: true,\r\n isDate: true\r\n },\r\n {\r\n columnHeading: 'Estimated annual project value',\r\n field: 'projectBudget',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Estimated total project value',\r\n field: 'estimatedTotalProjectValue',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Action',\r\n field: 'manage',\r\n align: 'center',\r\n visible: true\r\n }\r\n ],\r\n selectedRequester: '',\r\n selectedTeamMember: '',\r\n selectedDepartment: '',\r\n keywordFilter: '',\r\n sortedTeamMemberList: [],\r\n sortedRequesterList: [],\r\n projectDepartments: [],\r\n showAcceptModal: false,\r\n showDeclineModal: false,\r\n declineComment: '',\r\n selectedIntake: null\r\n }\r\n },\r\n watch: {\r\n mappedData: {\r\n handler: function () {\r\n this.sortRequesterList()\r\n },\r\n deep: true,\r\n immediate: true\r\n }\r\n },\r\n mounted() {\r\n this.sortTeamMemberList()\r\n this.getMappedRequests()\r\n this.getProcurementLeadsList()\r\n },\r\n methods: {\r\n ...mapActions([\r\n 'fetchDepartments',\r\n 'fetchIntakePendingRequests',\r\n 'fetchPurchasers',\r\n 'approveDeclineIntakeProject'\r\n ]),\r\n getProcurementLeadsList() {\r\n this.fetchPurchasers()\r\n .then(() => {\r\n this.sortedTeamMemberList = this.getProcurementLeads\r\n this.$emit('error', false)\r\n })\r\n .catch((e) => {\r\n this.$emit('error', true)\r\n errorHandler.handleApiError(this, e)\r\n })\r\n .finally(() => this.$emit('loading', false))\r\n },\r\n getMappedRequests() {\r\n this.$emit('loading', true)\r\n this.fetchIntakePendingRequests()\r\n .then(() => {\r\n this.mappedData = this.getIntakePendingRequests\r\n this.$emit('error', false)\r\n })\r\n .catch((e) => {\r\n this.$emit('error', true)\r\n errorHandler.handleApiError(this, e)\r\n })\r\n .finally(() => this.$emit('loading', false))\r\n },\r\n sortRequesterList() {\r\n const members = [...new Set(this.mappedData.map((data) => data.requester))].sort((a, b) =>\r\n a.localeCompare(b)\r\n )\r\n this.sortedRequesterList = members\r\n },\r\n sortTeamMemberList() {\r\n return this.sortedTeamMemberList.sort((a, b) => {\r\n const aFN = (a.firstName || '') + (a.lastName || '')\r\n const bFN = (b.firstName || '') + (b.lastName || '')\r\n return aFN.localeCompare(bFN)\r\n })\r\n },\r\n handleColumnReorder(row) {\r\n switch (row.prop) {\r\n case 'projectBudget':\r\n case 'estimatedTotalProjectValue':\r\n this.mappedData = this.mappedData.sort((a, b) => {\r\n const a1 = a[row.prop]\r\n const a2 = b[row.prop]\r\n const c1 = parseFloat(a1.replace(/[^0-9.]/g, '')) || null\r\n const c2 = parseFloat(a2.replace(/[^0-9.]/g, '')) || null\r\n if (c1 === null) return 1\r\n if (c2 === null) return -1\r\n return row.order === 'ascending' ? c1 - c2 : c2 - c1\r\n })\r\n break\r\n default:\r\n this.mappedData = this.standardTableSortWithDate(\r\n row,\r\n this.mappedData,\r\n this.columnDefs\r\n .filter((columnDef) => columnDef.isDate)\r\n .map((columnDef) => columnDef.field)\r\n )\r\n }\r\n },\r\n async approveSelectedIntakeRequest() {\r\n this.$emit('loading', true)\r\n const intakeData = cloneDeep(this.selectedIntake)\r\n\r\n try {\r\n // These composable functions will set the intake data to the store @ intake.module fyi\r\n const { createProjectFromIntakeData, getIntakeDataById } = UseIntakeNewProject({\r\n store: this.$store\r\n })\r\n const fullIntakeData = await getIntakeDataById(intakeData.id)\r\n await createProjectFromIntakeData(fullIntakeData)\r\n\r\n ui.showLoading(this)\r\n\r\n this.$router.push({ name: 'ProjectNewView' })\r\n } catch (e) {\r\n this.$emit('error', true)\r\n errorHandler.handleApiError(this, e)\r\n } finally {\r\n this.showAcceptModal = false\r\n this.$emit('loading', false)\r\n ui.hideLoading(this)\r\n }\r\n },\r\n async statusIntakeResult(result) {\r\n try {\r\n await this.approveDeclineIntakeProject({\r\n intakeId: this.selectedIntake.id,\r\n status: result.status,\r\n reason: result.details\r\n })\r\n Notification.success({\r\n title: 'Success',\r\n message:\r\n result.status === 2\r\n ? i18n.t('ui.views.projectIntakeView.approveModal.modalApproved')\r\n : i18n.t('ui.views.projectIntakeView.declineModal.modalDeclined'),\r\n type: 'success'\r\n })\r\n this.getMappedRequests()\r\n } catch (err) {\r\n const statusCode = err.response?.status || '500'\r\n const message = `${i18n.t(\r\n 'ui.views.projectIntakeView.declineModal.modalDeclinedError'\r\n )}\\n[${statusCode}]`\r\n Notification.error({\r\n title: 'Error',\r\n message,\r\n type: 'error',\r\n customClass: 'is-white-space-pre-line'\r\n })\r\n } finally {\r\n this.showAcceptModal = false\r\n this.showDeclineModal = false\r\n }\r\n },\r\n viewIntakeProject(intakeId) {\r\n this.$router.push({\r\n path: `/projects/${intakeId}/intake`\r\n })\r\n },\r\n handleManage([intakeId, action]) {\r\n this.selectedIntake = this.mappedData.find((item) => item.id === intakeId)\r\n switch (action) {\r\n case 'view':\r\n return this.viewIntakeProject(intakeId)\r\n case 'approve':\r\n this.showAcceptModal = true\r\n break\r\n case 'decline':\r\n this.showDeclineModal = true\r\n break\r\n }\r\n },\r\n handleExportData(exportAll) {\r\n const name = exportAll ? 'All Data' : 'Filtered'\r\n const data = exportAll\r\n ? this.mapExportTable(this.mappedData)\r\n : this.mapExportTable(this.dataSource)\r\n\r\n exportTableToXLS(\r\n `Intake_ Pending Requests - ${name} - ${dayjs().format('MM.DD.YYYY')}`,\r\n data,\r\n exportAll ? this.columnDefs : this.visibleColumns\r\n )\r\n },\r\n mapExportTable(data) {\r\n return data.map((item) => {\r\n return Object.assign({}, item, { procurementLead: item.procurementLead || 'Not sure' })\r\n })\r\n },\r\n renderColumnContents(columnName, data) {\r\n switch (columnName) {\r\n case 'procurementLead':\r\n return data ? data : 'Not sure'\r\n default:\r\n return data ? data : 'N/A'\r\n }\r\n }\r\n }\r\n}\r\n","export default \"__VITE_ASSET__CV_Zvu____\"","\r\n\r\n\r\n","\r\n\r\n\r\n","import cloneDeep from 'lodash/cloneDeep'\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n name: 'projects-buyers',\r\n computed: {\r\n ...mapGetters(['getDashboardUserProjectLeads']),\r\n procurementLeadProjectList() {\r\n return cloneDeep(this.getDashboardUserProjectLeads).sort((a, b) =>\r\n a.name.localeCompare(b.name)\r\n )\r\n }\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.manager-dashboard-view.',\r\n selectedProjectLead: null,\r\n columnDefs: [\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingName`),\r\n field: 'name',\r\n width: 300,\r\n sortable: true\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingInProgress`),\r\n field: 'design',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingScheduled`),\r\n field: 'scheduled',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingPlanned`),\r\n field: 'planned',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingPublished`),\r\n field: 'open',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingClosedUnofficial`),\r\n field: 'closed',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingAwarded`),\r\n field: 'awarded',\r\n sortable: false\r\n },\r\n {\r\n header: this.$t(`ui.views.dashboard.manager-dashboard-view.headingTotal`),\r\n field: 'total',\r\n sortable: false\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n","import tableMixins from '@/mixins/table-mixins'\r\nimport dayjs from '@/utils/dayjs'\r\nimport { exportTableToXLS } from '@/utils/exportTable'\r\nimport { statusColorsMap, statusTypes, statusTextColorsMap } from '@/views/dashboard/dashboard-defs'\r\nimport { mapActions, mapGetters } from 'vuex'\r\n\r\nexport default {\r\n name: 'projects-team-members',\r\n mixins: [tableMixins],\r\n watch: {\r\n getMappedTeamMemberProjects(val) {\r\n this.mappedData = val\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['getUsers', 'getTeamMemberProjects', 'getTenderTypes', 'getProcurementLeads']),\r\n dataSource() {\r\n let projects = []\r\n\r\n if (this.mappedData?.length) {\r\n projects = this.mappedData\r\n .filter((val) => [val.userId, 'ALL'].includes(this.selectedTeamMember.toUpperCase()))\r\n .filter((value) => this.selectedStatus.indexOf(value.status) > -1)\r\n\r\n if (this.selectedBidClosingRange !== 'Any day') {\r\n projects = projects.filter(({ closingDate }) => {\r\n const daysLeft = this.differenceInDaysFromToday(closingDate)\r\n return daysLeft && daysLeft >= 0 && daysLeft < this.selectedBidClosingRange\r\n })\r\n }\r\n }\r\n\r\n return projects\r\n },\r\n tenderTypeList() {\r\n return this.getTenderTypes.reduce((obj, type) => ({ ...obj, [type.id]: type.text }), {})\r\n },\r\n getMappedTeamMemberProjects() {\r\n return (this.getTeamMemberProjects || [])\r\n .filter(\r\n (project) =>\r\n Object.values(statusTypes).indexOf(project.status) > -1 &&\r\n this.getUsers.find((user) => project.userId.toUpperCase() === user.id.toUpperCase())\r\n )\r\n .map((project) => {\r\n const daysLeft = this.differenceInDaysFromToday(project.closingDate)\r\n const userObj = this.getUsers.find(\r\n (user) => project.userId.toUpperCase() === user.id.toUpperCase()\r\n )\r\n return {\r\n ...project,\r\n role: project.userRoles?.filter((x) => !!x)?.join(' | '),\r\n user: `${userObj.firstName} ${userObj.lastName}`,\r\n tenderType: this.tenderTypeList[project.typeId],\r\n daysLeft: daysLeft ? Math.max(0, daysLeft) : 'N/A'\r\n }\r\n })\r\n }\r\n },\r\n data() {\r\n return {\r\n mappedData: [],\r\n columnDefs: [\r\n {\r\n columnHeading: 'Project Number',\r\n field: 'projectNumber',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Project Name',\r\n field: 'projectName',\r\n width: 300,\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Team Member',\r\n field: 'user',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Role',\r\n field: 'role',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Type',\r\n field: 'tenderType',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Status',\r\n field: 'status',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Published Date',\r\n field: 'publishDate',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Closing Date',\r\n field: 'closingDate',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Registered Suppliers',\r\n field: 'numberOfRegisteredSuppliers',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Addenda',\r\n field: 'numberOfAddenda',\r\n visible: false\r\n },\r\n {\r\n columnHeading: 'Days Left',\r\n field: 'daysLeft',\r\n visible: true\r\n },\r\n {\r\n columnHeading: 'Estimated Value',\r\n field: 'estimatedValue',\r\n visible: false\r\n }\r\n ],\r\n allStatusTypesSelected: false,\r\n bidClosingRanges: ['Any day', 1, 7, 14, 21, 30, 60, 90, 180],\r\n selectedBidClosingRange: 'Any day',\r\n selectedTeamMember: '',\r\n selectedStatus: [],\r\n showStatusTypes: [],\r\n sortedTeamMemberList: []\r\n }\r\n },\r\n mounted() {\r\n this.sortTeamMemberList()\r\n this.setShowStatuses()\r\n },\r\n methods: {\r\n ...mapActions(['fetchPurchasers']),\r\n getProcurementLeadsList() {\r\n this.fetchPurchasers()\r\n .then(() => {\r\n this.sortedTeamMemberList = this.getProcurementLeads\r\n this.$emit('error', false)\r\n })\r\n .catch(() => {\r\n this.$emit('error', true)\r\n })\r\n .finally(() => this.$emit('loading', false))\r\n },\r\n sortTeamMemberList() {\r\n return this.sortedTeamMemberList.sort((a, b) => {\r\n const aFN = (a.firstName || '') + (a.lastName || '')\r\n const bFN = (b.firstName || '') + (b.lastName || '')\r\n return aFN.localeCompare(bFN)\r\n })\r\n },\r\n setShowStatuses() {\r\n this.showStatusTypes = Object.values(statusTypes)\r\n this.selectedStatus.push(statusTypes.IN_PROGRESS)\r\n },\r\n toggleAllStatuses() {\r\n this.allStatusTypesSelected = !this.allStatusTypesSelected\r\n this.selectedStatus = []\r\n if (this.allStatusTypesSelected) {\r\n this.selectedStatus = Object.values(statusTypes)\r\n }\r\n },\r\n bidDaysString(range) {\r\n if (range === 'Any day') {\r\n return ''\r\n }\r\n return range > 1 ? this.$t('ui.common.days') : this.$t('ui.common.day')\r\n },\r\n handleColumnReorder(row) {\r\n switch (row.prop) {\r\n case 'estimatedValue':\r\n this.mappedData = this.mappedData.sort((a, b) => {\r\n const c1 = parseFloat(a[row.prop].replace(',', ''))\r\n const c2 = parseFloat(b[row.prop].replace(',', ''))\r\n return row.order === 'ascending' ? c1 - c2 : c2 - c1\r\n })\r\n break\r\n default:\r\n this.mappedData = this.standardTableSortWithDate(row, this.mappedData, [\r\n 'publishDate',\r\n 'closingDate'\r\n ])\r\n }\r\n },\r\n getStatusColor(statusString) {\r\n return statusColorsMap.get(statusString)\r\n },\r\n getTextColor(statusString) {\r\n return statusTextColorsMap.get(statusString)\r\n },\r\n differenceInDaysFromToday(closingDate) {\r\n if (!closingDate || closingDate === 'N/A') {\r\n return null\r\n }\r\n return dayjs(closingDate, 'ddd MMM DD, YYYY h:mm A').diff(dayjs(), 'days')\r\n },\r\n handleExportData(exportAll) {\r\n const name = exportAll ? 'All Data' : 'Filtered'\r\n exportTableToXLS(\r\n `Source Projects by Team Member - ${name} - ${dayjs().format('MM.DD.YYYY')}`,\r\n exportAll ? this.mappedData : this.dataSource,\r\n exportAll ? this.columnDefs : this.visibleColumns\r\n )\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n","export default \"__VITE_ASSET__DBBA0vyV__\"","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='22'%20viewBox='0%200%2021%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14%201V7.00161H20'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6%200C5.20426%200%204.44117%200.316192%203.87858%200.878931C3.31601%201.44166%203%202.20483%203%203.00054V3.96167H5V3.00054C5%202.73509%205.10542%202.48057%205.29299%202.29296C5.48054%202.10535%205.73487%202%206%202H13.5857L19%207.41574V19.0048C19%2019.2703%2018.8946%2019.5248%2018.707%2019.7124C18.5195%2019.9%2018.2651%2020.0054%2018%2020.0054H6C5.73487%2020.0054%205.48055%2019.9%205.29299%2019.7124C5.10542%2019.5248%205%2019.2703%205%2019.0048V17.9617H3V19.0048C3%2019.8005%203.31601%2020.5637%203.87858%2021.1264C4.44117%2021.6892%205.20426%2022.0054%206%2022.0054H18C18.7957%2022.0054%2019.5588%2021.6892%2020.1214%2021.1264C20.684%2020.5637%2021%2019.8005%2021%2019.0048V7.00161C21%206.73644%2020.8947%206.48212%2020.7072%206.2946L14.7072%200.292988C14.5197%200.105394%2014.2653%200%2014%200H6Z'%20fill='black'/%3e%3cpath%20d='M4%208.00195V14.0036'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7%2011.0029H1'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import intakeSVG from '@/assets/images/icon-intake.svg'\r\n\r\nconst buyerDashboardWidgets = [\r\n {\r\n id: 'EBF846DD-3189-4D63-A53D-6435B244209B',\r\n component: 'projectCounter',\r\n name: 'Project Counter',\r\n icon: 'sliders',\r\n description: 'View the total number of projects by status in your organization.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [12, 6]\r\n }\r\n },\r\n {\r\n id: 'B277CD3B-E39B-467B-9E8D-7D7DD8EDD670',\r\n component: 'calendar',\r\n name: 'Important Dates',\r\n icon: 'calendar',\r\n description: 'Calendar view of important dates and events for your projects.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [12, 24]\r\n }\r\n },\r\n {\r\n id: '0774BB30-AF6B-435B-B0DD-707C7E999168',\r\n component: 'totalProjects',\r\n name: 'My Total Projects',\r\n icon: 'flag',\r\n description: 'View the total number of projects that you are the procurement lead on.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [6, 4]\r\n }\r\n },\r\n {\r\n id: '8C55D13D-ACA6-45FF-B3A3-1CFB7B337E10',\r\n component: 'comments',\r\n name: 'Comments',\r\n icon: 'message-square',\r\n description: 'View all of the comments left on your projects.',\r\n selected: false,\r\n sizes: {\r\n selected: 'min',\r\n min: [6, 12],\r\n max: [12, 12]\r\n }\r\n },\r\n {\r\n id: 'A5DEDC9F-CCC5-496B-906E-E47637102C82',\r\n component: 'openProjects',\r\n name: 'My Open Sourcing Projects',\r\n icon: 'book-open',\r\n description: 'View all your published projects.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [6, 4]\r\n }\r\n },\r\n {\r\n id: 'CC6DD10C-CEC9-4FD3-973E-C383F460C476',\r\n component: 'questionsSubmitted',\r\n name: 'Questions Submitted',\r\n icon: 'help-circle',\r\n description: 'View all of your unanswered supplier questions on your projects.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [6, 4]\r\n }\r\n },\r\n {\r\n id: 'FE23BEC1-E977-4060-B56B-CAC5D4CFCADC',\r\n component: 'awardedValue',\r\n name: 'Value of My Awarded Projects',\r\n icon: 'dollar-sign',\r\n description: 'View the total value of all your projects in the Awarded status.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [6, 4]\r\n }\r\n },\r\n {\r\n id: 'CD4B0B74-8AB3-44CB-892A-81FBE21AEE8D',\r\n component: 'tasks',\r\n name: 'My Tasks',\r\n icon: 'bookmark',\r\n description: 'View all of your assigned tasks.',\r\n selected: false,\r\n sizes: {\r\n selected: 'min',\r\n min: [6, 12],\r\n max: [12, 12]\r\n }\r\n },\r\n {\r\n id: '449C521A-3F76-42EC-847F-9F8A7DDA96AF',\r\n component: 'expiredContractDocuments',\r\n name: 'Expired Contract Documents',\r\n icon: 'alert-circle',\r\n description: 'View the total number of expired documents for all projects.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [6, 4]\r\n }\r\n },\r\n {\r\n id: 'AE01D371-E043-4F5F-A59B-E84387C44A89',\r\n component: 'overview',\r\n name: 'Overview',\r\n icon: 'eye',\r\n description:\r\n 'View information including: Your Projects, Document Uploads Pending Approval, Expired Documents, and Project Ending.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [12, 12]\r\n }\r\n },\r\n {\r\n id: '958D0790-9A5B-4C7D-84FD-A6AFB7DD8BB8',\r\n component: 'projectBuyers',\r\n name: 'Source Projects by Lead',\r\n icon: 'trending-up',\r\n description: 'View all the source projects by status and procurement lead. ',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: [6, 8],\r\n max: [12, 8]\r\n }\r\n },\r\n {\r\n id: '68E3CF3B-7550-4FAA-8F30-48B9DCEC303A',\r\n component: 'projectTeamMembers',\r\n name: 'Source Projects by Team Member',\r\n icon: 'crosshair',\r\n description: 'View and filter source projects by team member.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: [6, 12],\r\n max: [12, 12]\r\n }\r\n },\r\n {\r\n id: '2178f9c0-8e23-11ee-8c24-b70e6f9f504c',\r\n component: 'intakeEssentials',\r\n name: 'Intake: pending requests',\r\n icon: '',\r\n customIcon: intakeSVG,\r\n description: 'View and filter pending intake requests.',\r\n selected: false,\r\n sizes: {\r\n selected: 'max',\r\n min: null,\r\n max: [12, 20]\r\n }\r\n }\r\n]\r\n\r\nexport default buyerDashboardWidgets\r\n","import AppTag from '@/components/app-tag/app-tag.vue'\r\nimport errorHandler from '@/utils/error'\r\nimport { useFeatureHelpers } from '@/utils/featureHelpers'\r\nimport uiHandler from '@/utils/ui'\r\nimport DashboardBuyerOverview from '@/views/dashboard/components/dashboard-buyer-overview/dashboard-buyer-overview.vue'\r\nimport DashboardComponent from '@/views/dashboard/components/dashboard-component/dashboard-component.vue'\r\nimport DashboardFeed from '@/views/dashboard/components/dashboard-feed-component/dashboard-feed-component.vue'\r\nimport DashboardImportantDates from '@/views/dashboard/components/dashboard-important-dates/dashboard-important-dates.vue'\r\nimport DashboardIntakeEssentialsButton from '@/views/dashboard/components/dashboard-intake-essentials/dashboard-intake-essentials-button.vue'\r\nimport DashboardIntakeEssentials from '@/views/dashboard/components/dashboard-intake-essentials/dashboard-intake-essentials-component.vue'\r\nimport DashboardList from '@/views/dashboard/components/dashboard-list-component.vue'\r\nimport DashboardProjectCounter from '@/views/dashboard/components/dashboard-project-counter-component/dashboard-project-counter-component.vue'\r\nimport DashboardProjectsBuyers from '@/views/dashboard/components/dashboard-projects-buyers-component/dashboard-projects-buyers-component.vue'\r\nimport DashboardProjectsTeamMembers from '@/views/dashboard/components/dashboard-projects-team-members-component/dashboard-projects-team-members-component.vue'\r\nimport DashboardStat from '@/views/dashboard/components/dashboard-stat-component.vue'\r\nimport DashboardTasksFeed from '@/views/dashboard/components/dashboard-tasks-feed/dashboard-tasks-feed.vue'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport VueGridLayout from 'vue-grid-layout'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport AddWidgetModal from './add-widget-modal/add-widget-modal.vue'\r\nimport widgetList from './buyer-dashboard-widgets.js'\r\nimport intakeSVG from '@/assets/images/icon-intake.svg'\r\nconst { isModuleEnabled } = useFeatureHelpers()\r\n\r\nconst LAYOUT_COLUMNS = 12\r\nconst ROW_HEIGHT = 30\r\nconst MARGIN_SIZE = 10\r\nconst MAX_HEIGHT = 1000\r\n\r\nexport default {\r\n name: 'BuyerDashboardView',\r\n components: {\r\n AppTag,\r\n DashboardComponent,\r\n DashboardStat,\r\n DashboardList,\r\n DashboardFeed,\r\n DashboardProjectsBuyers,\r\n DashboardImportantDates,\r\n DashboardProjectCounter,\r\n DashboardBuyerOverview,\r\n DashboardTasksFeed,\r\n DashboardProjectsTeamMembers,\r\n DashboardIntakeEssentials,\r\n DashboardIntakeEssentialsButton,\r\n AddWidgetModal,\r\n GridLayout: VueGridLayout.GridLayout,\r\n GridItem: VueGridLayout.GridItem\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'getLoggedInUser',\r\n 'getUsers',\r\n 'getProjectTasksbyUser',\r\n 'getDashboardwidgets',\r\n 'getUserProjectComments',\r\n 'getDashboardUserWidgets',\r\n 'getDashboardUserProjectLeads',\r\n 'getDepartments',\r\n 'getTenderNode'\r\n ]),\r\n user() {\r\n return this.getLoggedInUser\r\n },\r\n userRole() {\r\n return 'Buyer'\r\n },\r\n projectTasksbyUser() {\r\n return this.getProjectTasksbyUser\r\n },\r\n projectComments() {\r\n return this.getUserProjectComments\r\n },\r\n openProjects() {\r\n return this.getDashboardwidgets?.openProjects?.[0]?.count || 0\r\n },\r\n awardedProjects() {\r\n return this.getDashboardwidgets?.awardedProjects?.[0]?.amount || '0'\r\n },\r\n totalProjects() {\r\n return this.getDashboardwidgets?.totalProjects?.[0]?.count || 0\r\n },\r\n incompleteQuestions() {\r\n return this.getDashboardwidgets?.incompleteQuestions || []\r\n },\r\n incompleteQuestionsCount() {\r\n return (\r\n this.getDashboardwidgets?.incompleteQuestions?.reduce((a, c) => a + c.questionsCount, 0) ||\r\n 0\r\n )\r\n },\r\n incompleteQuestionsProjectsCount() {\r\n return this.getDashboardwidgets?.incompleteQuestions?.length || 0\r\n },\r\n expiredContractDocuments() {\r\n return this.getDashboardwidgets?.expiredContractDocuments?.[0]?.count || 0\r\n },\r\n widgetsToAdd() {\r\n return this.widgetList.filter((w) => !this.layout.find((l) => l.component === w.component))\r\n },\r\n isIntakeEssentialsEnabled() {\r\n return this.getTenderNode?.enableIntakeEssentials\r\n }\r\n },\r\n data() {\r\n return {\r\n widgetList,\r\n layout: [],\r\n layoutColumns: LAYOUT_COLUMNS,\r\n rowHeight: ROW_HEIGHT,\r\n marginSize: MARGIN_SIZE,\r\n viewString: 'ui.views.dashboard.buyer-dashboard-view.',\r\n viewStringCommon: 'ui.views.dashboard.dashboard-view.',\r\n projectsCounterAll: [],\r\n addDialogVisible: false,\r\n widgetsState: {},\r\n intakeSVG: intakeSVG\r\n }\r\n },\r\n mounted() {\r\n this.setupWidgetsState()\r\n\r\n uiHandler.showLoading(this)\r\n const promises = []\r\n\r\n promises.push(this.fetchUserWidgets().catch((e) => errorHandler.handleApiError(this, e)))\r\n\r\n if (!this.getUsers.length) {\r\n promises.push(this.fetchUsers().catch((e) => errorHandler.handleApiError(this, e)))\r\n }\r\n\r\n Promise.all(promises)\r\n .then(() => {\r\n this.featureGateWidgetsList()\r\n this.setUserWidgets()\r\n })\r\n .finally(() => uiHandler.hideLoading(this))\r\n },\r\n methods: {\r\n ...mapActions([\r\n 'fetchUsers',\r\n 'fetchDashboardWidget',\r\n 'fetchUserProjectComments',\r\n 'fetchProjectTasksByUser',\r\n 'saveUserWidget',\r\n 'fetchUserWidgets',\r\n 'fetchSourceProjectandLeads',\r\n 'fetchTenderTypes',\r\n 'fetchSourceProjectsByTeamMember',\r\n 'fetchDepartments'\r\n ]),\r\n setupWidgetsState() {\r\n const list = {}\r\n this.widgetList.forEach(\r\n (widget) =>\r\n (list[widget.component] = {\r\n loading: false,\r\n error: false\r\n })\r\n )\r\n this.widgetsState = cloneDeep(list)\r\n },\r\n setUserWidgets() {\r\n const userWidgets = this.getDashboardUserWidgets\r\n\r\n if (!userWidgets.length) {\r\n this.addAllWidgets()\r\n } else {\r\n const layoutDTO = []\r\n userWidgets.forEach((element) => {\r\n const widget = this.widgetList.filter(\r\n (r) => r.id.toLowerCase() === element.widgetId.toLowerCase()\r\n )[0]\r\n\r\n if (!widget) return // as in, if we removed it from the list of widgets\r\n\r\n widget.x = element.positionX\r\n widget.y = element.positionY\r\n widget.sizes.selected = element.size\r\n\r\n layoutDTO.push(widget)\r\n })\r\n\r\n layoutDTO.forEach((w) => this.positionNewItem(w))\r\n this.loadWidgetsData()\r\n }\r\n },\r\n featureGateWidgetsList() {\r\n const featureGateComponents = []\r\n if (!this.isIntakeEssentialsEnabled) featureGateComponents.push('intakeEssentials')\r\n if (!isModuleEnabled('BuyerDashboard.MyTasks')) featureGateComponents.push('tasks')\r\n\r\n this.widgetList = this.widgetList.filter((w) => !featureGateComponents.includes(w.component))\r\n },\r\n loadWidgetsData() {\r\n this.layout.forEach((widget) => {\r\n if (widget.component === 'projectCounter') {\r\n this.loadProjectCounter()\r\n } else if (widget.component === 'totalProjects') {\r\n this.loadTotalProjects()\r\n } else if (widget.component === 'comments') {\r\n this.loadProjectComments()\r\n } else if (widget.component === 'openProjects') {\r\n this.loadOpenProjects()\r\n } else if (widget.component === 'questionsSubmitted') {\r\n this.loadQuestionsSubmitted()\r\n } else if (widget.component === 'awardedValue') {\r\n this.loadAwardedProjects()\r\n } else if (widget.component === 'tasks') {\r\n this.loadProjectTask()\r\n } else if (widget.component === 'expiredContractDocuments') {\r\n this.loadExpiredContractDocuments()\r\n } else if (widget.component === 'projectBuyers') {\r\n this.loadProjectBuyers()\r\n } else if (widget.component === 'projectTeamMembers') {\r\n this.loadProjectTeamMembers()\r\n } else if (widget.component === 'intakeEssentials') {\r\n this.loadIntakeEssentials()\r\n }\r\n })\r\n },\r\n loadProjectTask() {\r\n if (!this.getProjectTasksbyUser.length && this.user.id) {\r\n const promises = [this.fetchProjectTasksByUser(this.user.id)]\r\n\r\n if (!this.getUsers) promises.push(this.fetchUsers())\r\n\r\n this.loadApiForWidget('tasks', promises)\r\n }\r\n },\r\n loadProjectBuyers() {\r\n if (!this.getDashboardUserProjectLeads.length) {\r\n this.loadApiForWidget('projectBuyers', [this.fetchSourceProjectandLeads()])\r\n }\r\n },\r\n loadIntakeEssentials() {\r\n const promises = []\r\n\r\n if (!this.getUsers.length) promises.push(this.fetchUsers())\r\n if (!this.getDepartments.length) promises.push(this.fetchDepartments())\r\n\r\n this.loadApiForWidget('projectTeamMembers', promises)\r\n },\r\n loadProjectTeamMembers() {\r\n const promises = [this.fetchTenderTypes(), this.fetchSourceProjectsByTeamMember()]\r\n\r\n if (!this.getUsers) promises.push(this.fetchUsers())\r\n\r\n this.loadApiForWidget('projectTeamMembers', promises)\r\n },\r\n loadExpiredContractDocuments() {\r\n if (this.getDashboardwidgets.expiredContractDocuments === null) {\r\n this.loadApiForWidget('expiredContractDocuments', [\r\n this.fetchDashboardWidget('expiredContractDocuments')\r\n ])\r\n }\r\n },\r\n loadAwardedProjects() {\r\n if (this.getDashboardwidgets.awardedProjects === null) {\r\n this.loadApiForWidget('awardedValue', [this.fetchDashboardWidget('awardedProjects')])\r\n }\r\n },\r\n loadQuestionsSubmitted() {\r\n if (this.getDashboardwidgets.incompleteQuestions === null) {\r\n this.loadApiForWidget('questionsSubmitted', [\r\n this.fetchDashboardWidget('incompleteQuestions')\r\n ])\r\n }\r\n },\r\n loadOpenProjects() {\r\n if (this.getDashboardwidgets.openProjects === null) {\r\n this.loadApiForWidget('openProjects', [this.fetchDashboardWidget('openProjects')])\r\n }\r\n },\r\n loadTotalProjects() {\r\n if (this.getDashboardwidgets.totalProjects === null) {\r\n this.loadApiForWidget('totalProjects', [this.fetchDashboardWidget('totalProjects')])\r\n }\r\n },\r\n loadProjectComments() {\r\n if (!this.getUserProjectComments.length) {\r\n const projCommentParams = {\r\n limit: 10,\r\n start: null,\r\n keywords: null\r\n }\r\n const promises = [this.fetchUserProjectComments(projCommentParams)]\r\n\r\n if (!this.getUsers) promises.push(this.fetchUsers())\r\n\r\n this.loadApiForWidget('comments', promises)\r\n }\r\n },\r\n handleWidgetErrorState(widget, val) {\r\n this.widgetsState[widget].error = val\r\n },\r\n handleWidgetLoadingState(widget, val) {\r\n this.widgetsState[widget].loading = val\r\n },\r\n loadProjectCounter() {\r\n const promises = []\r\n\r\n if (this.getDashboardwidgets.allDraftProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allDraftProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allPlannedProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allPlannedProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allOpenProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allOpenProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allClosedProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allClosedProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allAwardedProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allAwardedProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allActiveProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allActiveProjects'))\r\n }\r\n\r\n if (this.getDashboardwidgets.allWarrantyProjects === null) {\r\n promises.push(this.fetchDashboardWidget('allWarrantyProjects'))\r\n }\r\n\r\n this.loadApiForWidget('projectCounter', promises)\r\n },\r\n loadApiForWidget(name, promises) {\r\n this.widgetsState[name].loading = true\r\n this.widgetsState[name].error = false\r\n Promise.all(promises)\r\n .then(() => (this.widgetsState[name].error = false))\r\n .catch(() => (this.widgetsState[name].error = true))\r\n .finally(() => (this.widgetsState[name].loading = false))\r\n },\r\n addWidgets(widgetsArray) {\r\n widgetsArray.forEach((w) => this.positionNewItem(w))\r\n\r\n this.saveWidgets()\r\n this.loadWidgetsData()\r\n },\r\n positionNewItem(widget) {\r\n this.addDialogVisible = false\r\n\r\n const widgetMinWidth = widget.sizes[widget.sizes.selected][0]\r\n const widgetMinHeight = widget.sizes[widget.sizes.selected][1]\r\n\r\n // find the max height for each column\r\n const maxHeights = Array(LAYOUT_COLUMNS).fill(0)\r\n\r\n for (const l of this.layout) {\r\n for (let i = 0; i < l.w; i++) {\r\n if (maxHeights[l.x + i] < l.y + l.h) maxHeights[l.x + i] = l.y + l.h\r\n }\r\n }\r\n\r\n // find the minimum max where there's minimum width for this widget columns worth of space\r\n let startCol = widget.x >= 0 ? widget.x : 0\r\n let startHeight = widget.y >= 0 ? widget.y : MAX_HEIGHT\r\n\r\n if (!(widget.x >= 0)) {\r\n for (let col = 0; col <= LAYOUT_COLUMNS - widgetMinWidth; col++) {\r\n // if we might find better place to start\r\n if (startHeight > maxHeights[col]) {\r\n const curHeight = maxHeights[col]\r\n // if there's room at this height, remember this height and starting column\r\n let isRoom = true\r\n for (let i = 1; i < widgetMinWidth; i++) {\r\n if (maxHeights[col + i] > curHeight) isRoom = false\r\n }\r\n if (isRoom) {\r\n startCol = col\r\n startHeight = curHeight\r\n }\r\n }\r\n }\r\n }\r\n\r\n const next = this.layout.length + 1\r\n\r\n // reorder index values in case some widgets were removed from between\r\n const layout = cloneDeep(\r\n this.layout.map((val, index) => {\r\n val.i = index + 1\r\n return val\r\n })\r\n )\r\n layout.push({\r\n x: startCol,\r\n y: startHeight,\r\n w: widgetMinWidth,\r\n h: widgetMinHeight,\r\n i: next,\r\n sizes: widget.sizes,\r\n component: widget.component,\r\n id: widget.id\r\n })\r\n\r\n this.layout = layout\r\n },\r\n addAllWidgets() {\r\n for (const widget of this.widgetsToAdd) {\r\n this.positionNewItem(widget)\r\n }\r\n\r\n this.saveWidgets()\r\n this.loadWidgetsData()\r\n },\r\n removeWidget(widgetName) {\r\n this.layout = this.layout.filter((col) => col.component !== widgetName)\r\n\r\n this.saveWidgets()\r\n },\r\n changeSize(comp) {\r\n comp.sizes.selected = comp.sizes.selected === 'min' ? 'max' : 'min'\r\n comp.w = comp.sizes[comp.sizes.selected][0]\r\n comp.h = comp.sizes[comp.sizes.selected][1]\r\n this.reArrangeLayout()\r\n },\r\n reArrangeLayout() {\r\n const clone = cloneDeep(this.layout)\r\n this.layout = []\r\n clone.forEach((w) => this.positionNewItem(w))\r\n\r\n this.saveWidgets()\r\n },\r\n movedEvent(i, newX, newY) {\r\n const widget = this.layout.filter((r) => r.i === i)[0]\r\n widget.x = newX\r\n widget.y = newY\r\n\r\n this.saveWidgets()\r\n },\r\n saveWidgets() {\r\n const layoutDTO = []\r\n\r\n this.layout.forEach((element) => {\r\n layoutDTO.push({\r\n widgetId: element.id,\r\n size: element.sizes.selected,\r\n positionX: element.x,\r\n positionY: element.y\r\n })\r\n })\r\n\r\n uiHandler.showLoading(this)\r\n\r\n this.saveUserWidget(layoutDTO)\r\n .then(() => {\r\n this.addDialogVisible = false\r\n uiHandler.hideLoading(this)\r\n\r\n this.$notify({\r\n title: 'Success',\r\n message: this.$t(`${this.viewString}msgSaveSuccess`),\r\n type: 'success'\r\n })\r\n })\r\n .catch((e) => {\r\n uiHandler.hideLoading(this)\r\n const errorMessages = []\r\n errorMessages[e.response.status] = e.response.data[0]\r\n errorHandler.handleApiError(this, e, errorMessages)\r\n })\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import tableMixins from '@/mixins/table-mixins.js'\r\nimport dayjs from '@/utils/dayjs'\r\nimport errorHandler from '@/utils/error'\r\nimport { exportTableToXLS } from '@/utils/exportTable'\r\nimport uiHandler from '@/utils/ui'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport sortBy from 'lodash/sortBy'\r\nimport uuid from 'uuid/v1'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport AgencyTransactionsModal from './agency-transactions-modal.vue'\r\n\r\nexport default {\r\n name: 'ContractBuilderDashboardView',\r\n mixins: [tableMixins],\r\n components: {\r\n AgencyTransactionsModal\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.contract-builder-dashboard-view.',\r\n gridCurrentPage: 1,\r\n gridPageSize: 20,\r\n isAgencyTransactionsModalVisible: false,\r\n isManageMode: false,\r\n agencyDetails: {},\r\n addNewAgencyDefault: {\r\n id: null,\r\n allowContractBuilder: false,\r\n agencyId: null,\r\n contactEmail: '',\r\n activityData: [],\r\n reminder: [\r\n { id: 25, label: '25 Envelopes Left', val: false },\r\n { id: 5, label: '5 Envelopes Left', val: false },\r\n { id: 0, label: 'No Envelopes Left', val: false }\r\n ],\r\n billingPeriods: [\r\n {\r\n id: uuid(),\r\n startDate: '',\r\n endDate: '',\r\n purchased: 100,\r\n price: '',\r\n transactionUsed: 0,\r\n error: null,\r\n remaining: null,\r\n status: ''\r\n }\r\n ]\r\n },\r\n columnDefs: [\r\n {\r\n columnHeading: this.$t(`ui.views.dashboard.contract-builder-dashboard-view.agencyName`),\r\n field: 'agencyDisplay',\r\n visible: true,\r\n sortable: true\r\n },\r\n {\r\n columnHeading: this.$t(\r\n 'ui.views.dashboard.contract-builder-dashboard-view.currentBillingPeriod'\r\n ),\r\n field: 'currentBillingPeriod',\r\n visible: true,\r\n sortable: false\r\n },\r\n {\r\n columnHeading: this.$t(\r\n 'ui.views.dashboard.contract-builder-dashboard-view.purchasedTransactions'\r\n ),\r\n field: 'currentPurchasedTransactions',\r\n visible: true,\r\n sortable: true\r\n },\r\n {\r\n columnHeading: this.$t(\r\n 'ui.views.dashboard.contract-builder-dashboard-view.completedTransactions'\r\n ),\r\n field: 'currentCompletedTransactions',\r\n visible: true,\r\n sortable: true\r\n },\r\n {\r\n columnHeading: this.$t(\r\n 'ui.views.dashboard.contract-builder-dashboard-view.remainingTransactions'\r\n ),\r\n field: 'currentRemainingTransactions',\r\n visible: true,\r\n sortable: true\r\n },\r\n {\r\n columnHeading: this.$t('ui.views.dashboard.contract-builder-dashboard-view.manage'),\r\n field: 'manage',\r\n visible: true,\r\n sortable: false\r\n }\r\n ]\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'getContractBuilderLicenseConfigurations',\r\n 'contractBuilderLicenseConfigurationFetchRequired'\r\n ]),\r\n gridTotalRows() {\r\n return this.transactionsList.length\r\n },\r\n gridTotalPages() {\r\n return Math.ceil(this.transactionsList.length / this.gridPageSize)\r\n },\r\n transactionsByPage() {\r\n const start = (this.gridCurrentPage - 1) * this.gridPageSize\r\n return this.transactionsList.slice(start, start + this.gridPageSize)\r\n },\r\n filteredColumnDefs() {\r\n return this.columnDefs.filter((col) => col.visible)\r\n },\r\n contractBuilderLicenseConfigurationsAll() {\r\n if (this.contractBuilderLicenseConfigurationFetchRequired) {\r\n this.loadContractBuilderLicenseConfigurationAll()\r\n }\r\n\r\n return cloneDeep(this.getContractBuilderLicenseConfigurations)\r\n },\r\n eSolutionsLicense() {\r\n if (!this.contractBuilderLicenseConfigurationsAll) return null\r\n\r\n const license = this.transactionsList.filter(\r\n (r) => r.agencyId.toUpperCase() === '0C2CBE28-1B56-4A37-BFAE-D1F49CF3CC36'\r\n )[0]\r\n\r\n return license\r\n },\r\n esolCurrentPurchasedTransactions() {\r\n if (!this.eSolutionsLicense) return ''\r\n\r\n return this.eSolutionsLicense.currentPurchasedTransactions\r\n },\r\n esolCurrentCompletedTransactions() {\r\n if (!this.eSolutionsLicense || this.eSolutionsLicense.currentCompletedTransactions === '')\r\n return ''\r\n\r\n const completedTransaction = this.transactionsList\r\n .map((r) => r.billingPeriods)\r\n .concat.apply(\r\n [],\r\n this.transactionsList.map((r) => r.billingPeriods)\r\n )\r\n .filter(\r\n (bPeriod) =>\r\n (new Date(this.eSolutionsLicense.currentBillingPeriodStartDate) <=\r\n new Date(bPeriod.startDate) &&\r\n new Date(this.eSolutionsLicense.currentBillingPeriodEndDate) >=\r\n new Date(bPeriod.startDate)) ||\r\n (new Date(this.eSolutionsLicense.currentBillingPeriodStartDate) <=\r\n new Date(bPeriod.endDate) &&\r\n new Date(this.eSolutionsLicense.currentBillingPeriodEndDate) >=\r\n new Date(bPeriod.endDate))\r\n )\r\n .map((r) => r.transactionUsed)\r\n .reduce((a, b) => a + b)\r\n\r\n return completedTransaction\r\n },\r\n esolCurrentRemainingTransactions() {\r\n if (!this.eSolutionsLicense || this.eSolutionsLicense.currentRemainingTransactions === '')\r\n return ''\r\n\r\n return this.esolCurrentPurchasedTransactions - this.esolCurrentCompletedTransactions\r\n },\r\n esolCurrentBillingPeriod() {\r\n if (!this.eSolutionsLicense) return ''\r\n\r\n return this.eSolutionsLicense.currentBillingPeriod\r\n },\r\n transactionsList() {\r\n const configList = []\r\n const today = dayjs(new Date()).format('YYYY-MM-DD')\r\n\r\n if (!this.contractBuilderLicenseConfigurationsAll) return []\r\n\r\n this.contractBuilderLicenseConfigurationsAll.forEach((r) => {\r\n const periods = []\r\n const activityList = []\r\n let currentPeriod = null\r\n\r\n r.billingPeriods.forEach((bPeriod) => {\r\n const period = {\r\n id: bPeriod.id,\r\n startDate: dayjs(bPeriod.dateStartUTC).format('ddd, DD MMM YYYY'),\r\n endDate: dayjs(bPeriod.dateEndUTC).format('ddd, DD MMM YYYY'),\r\n purchased: bPeriod.transactionPurchased,\r\n price: bPeriod.pricePerTransaction,\r\n transactionUsed: bPeriod.transactionUsed,\r\n error: null,\r\n remaining: bPeriod.transactionPurchased - bPeriod.transactionUsed\r\n }\r\n\r\n if (dayjs(new Date(bPeriod.dateEndUTC)).format('YYYY-MM-DD') < today) {\r\n period.status = 'Expired'\r\n } else if (\r\n !currentPeriod &&\r\n dayjs(new Date(bPeriod.dateStartUTC)).format('YYYY-MM-DD') <= today &&\r\n dayjs(new Date(bPeriod.dateEndUTC)).format('YYYY-MM-DD') >= today\r\n ) {\r\n period.status = 'Current'\r\n currentPeriod = period\r\n } else if (dayjs(new Date(bPeriod.dateStartUTC)).format('YYYY-MM-DD') > today) {\r\n period.status = 'Future'\r\n }\r\n\r\n periods.push(period)\r\n })\r\n\r\n if (r.auditEvent) {\r\n r.auditEvent.forEach((auditEvent) => {\r\n const audit = {\r\n date: dayjs(auditEvent.created).format('ddd, DD MMM YYYY hh:mm a'),\r\n type: auditEvent.userFriendlyMessage,\r\n activity: auditEvent.description\r\n }\r\n\r\n activityList.push(audit)\r\n })\r\n }\r\n\r\n configList.push({\r\n id: r.id,\r\n allowContractBuilder: r.allowContractBuilder,\r\n agencyDisplay: r.node.customer.name,\r\n agencyId: r.node.id,\r\n contactEmail: r.contactEmail,\r\n activityData: activityList,\r\n reminder: [\r\n {\r\n id: 25,\r\n label: '25 Envelopes Left',\r\n val: r.reminders.some((r) => r.remainingTransactionCount === 25)\r\n },\r\n {\r\n id: 5,\r\n label: '5 Envelopes Left',\r\n val: r.reminders.some((r) => r.remainingTransactionCount === 5)\r\n },\r\n {\r\n id: 0,\r\n label: 'No Envelopes Left',\r\n val: r.reminders.some((r) => r.remainingTransactionCount === 0)\r\n }\r\n ],\r\n billingPeriods: periods,\r\n currentBillingPeriodStartDate: currentPeriod ? dayjs(currentPeriod.startDate) : '',\r\n currentBillingPeriodEndDate: currentPeriod ? dayjs(currentPeriod.endDate) : '',\r\n currentBillingPeriod: currentPeriod\r\n ? `${dayjs(currentPeriod.startDate).format('ddd, DD MMM YYYY')} - ${dayjs(\r\n currentPeriod.endDate\r\n ).format('ddd, DD MMM YYYY')}`\r\n : '',\r\n currentPurchasedTransactions: currentPeriod ? currentPeriod.purchased : '',\r\n currentCompletedTransactions: currentPeriod ? currentPeriod.transactionUsed : '',\r\n currentRemainingTransactions: currentPeriod\r\n ? currentPeriod.purchased - currentPeriod.transactionUsed\r\n : ''\r\n })\r\n })\r\n\r\n return sortBy(configList, 'agencyDisplay')\r\n }\r\n },\r\n mounted() {\r\n this.loadContractBuilderLicenseConfigurationAll()\r\n },\r\n methods: {\r\n ...mapActions(['fetchContractBuilderLicenseConfigurationAll']),\r\n handleExport() {\r\n exportTableToXLS(\r\n 'Contract Builder Agencies Report',\r\n this.transactionsList,\r\n this.visibleColumns.filter((r) => r.field !== 'manage')\r\n )\r\n },\r\n openAgencyModal(row) {\r\n this.isAgencyTransactionsModalVisible = true\r\n this.isManageMode = !!row\r\n this.agencyDetails = cloneDeep(row) || cloneDeep(this.addNewAgencyDefault)\r\n },\r\n closeAgencyModal() {\r\n this.isAgencyTransactionsModalVisible = false\r\n },\r\n loadContractBuilderLicenseConfigurationAll() {\r\n uiHandler.showLoading(this)\r\n\r\n this.fetchContractBuilderLicenseConfigurationAll()\r\n .catch((e) => errorHandler.handleApiError(this, e))\r\n .finally(() => uiHandler.hideLoading(this))\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","export const performanceRatingScales = {\r\n LOWEST: '22AC04E5-F56C-4784-B25F-5A177BE28019',\r\n AVG: 'E521BFE7-D164-4D24-B285-BD7260C41970',\r\n SUM: 'AC202685-0818-41D4-AE37-DA062BE4E43E',\r\n SECTIONWEIGHT: '08C92DC9-4A27-4A70-9B54-94017B8931B0'\r\n}\r\n\r\nexport const performanceEvaluationStatus = {\r\n PENDING_REQUISITIONER_SUPER: 'PENDING_REQUISITIONER_SUPER',\r\n PENDING_DIRECTOR: 'PENDING_DIRECTOR',\r\n COMPLETE: 'COMPLETE',\r\n PENDING_PURCHASER: 'PENDING_PURCHASER',\r\n PENDING_REQUISITIONER: 'PENDING_REQUISITIONER',\r\n PENDING_MANAGER: 'PENDING_MANAGER',\r\n PENDING_VENDOR: 'PENDING_VENDOR',\r\n SCHEDULED: 'SCHEDULED',\r\n EXPIRED: 'EXPIRED',\r\n COMPLETE_APPEALCOMPLETE: 'COMPLETE_APPEALCOMPLETE',\r\n UNDER_APPEAL: 'UNDER_APPEAL',\r\n DRAFT: 'DRAFT'\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import PieChart from '@/components/pie-chart/pie-chart.vue'\r\nimport uiHandler from '@/utils/ui'\r\nimport DashboardComponent from '@/views/dashboard/components/dashboard-component/dashboard-component.vue'\r\nimport DashboardStat from '@/views/dashboard/components/dashboard-stat-component.vue'\r\nimport { performanceRatingScales } from '@/views/projects/project-view/project-sub-views/contract/contract-performance-view/contract-performance-view-definitions.js'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport ChartDataCard from './supplier-dashboard-components/chart-data-card.vue'\r\nimport OverviewDataCard from './supplier-dashboard-components/overview-data-card.vue'\r\nimport PctSatisfactoryChart from './supplier-dashboard-components/pct-satisfactory-chart.vue'\r\n\r\nconst pctFormat = new Intl.NumberFormat('en-CA', {\r\n style: 'percent',\r\n maximumFractionDigits: 1,\r\n minimumFractionDigits: 1\r\n})\r\nconst numFormat = new Intl.NumberFormat('en-CA', { style: 'decimal' })\r\n\r\nexport default {\r\n name: 'SupplierDashboardView',\r\n components: {\r\n DashboardComponent,\r\n DashboardStat,\r\n PieChart,\r\n PctSatisfactoryChart,\r\n OverviewDataCard,\r\n ChartDataCard\r\n },\r\n data() {\r\n return {\r\n viewString: 'ui.views.dashboard.supplier-dashboard-view.',\r\n performanceData: null,\r\n loaded: false,\r\n chartData: [],\r\n counter: -1,\r\n colorsArray: [\r\n // [foreground, background, text]\r\n ['#007a8d', '#66afbb', '#FFFFFF'],\r\n ['#6d7075', '#2f8a69', '#FFFFFF'],\r\n ['#6d7075', '#ffcd79', '#000000'],\r\n ['#6d7075', '#3c2e28', '#FFFFFF']\r\n ]\r\n }\r\n },\r\n watch: {\r\n contractPerformanceEnabled() {\r\n this.checkContractPerformanceEnabled()\r\n }\r\n },\r\n computed: {\r\n ...mapGetters([\r\n 'getPerformanceSummary',\r\n 'getTenderNode',\r\n 'getCustomer',\r\n 'getPerformanceStatusEvaluation'\r\n ]),\r\n contractPerformanceEnabled() {\r\n return this.getTenderNode?.contractorPerformance\r\n },\r\n evaluationData() {\r\n return this.getPerformanceStatusEvaluation\r\n },\r\n overviewData() {\r\n if (!this.performanceData) return []\r\n\r\n return [\r\n {\r\n marker: 'blue',\r\n heading: this.$t(`${this.viewString}supplierHeading`),\r\n icon: 'users',\r\n dataPct: pctFormat.format(this.performanceData.suppliers.pctEvaluated),\r\n data1Text: this.$t(`${this.viewString}supplierRegistered`),\r\n data1Value: numFormat.format(this.performanceData.suppliers.numRegistered),\r\n data2Text: this.$t(`${this.viewString}supplierEvaluated`),\r\n data2Value: numFormat.format(this.performanceData.suppliers.numEvaluated)\r\n },\r\n {\r\n marker: 'pink',\r\n heading: this.$t(`${this.viewString}contractHeading`),\r\n icon: 'file-text',\r\n dataPct: pctFormat.format(this.performanceData.contracts.pctEvaluated),\r\n data1Text: this.$t(`${this.viewString}contractRegistered`),\r\n data1Value: numFormat.format(this.performanceData.contracts.numRegistered),\r\n data2Text: this.$t(`${this.viewString}contractEvaluated`),\r\n data2Value: numFormat.format(this.performanceData.contracts.numEvaluated)\r\n },\r\n {\r\n marker: 'green',\r\n heading: this.$t(`${this.viewString}evaluationsHeading`),\r\n icon: 'edit',\r\n dataPct: numFormat.format(this.performanceData.evaluations.numEvaluated),\r\n data1Text: this.$t(`${this.viewString}evaluationsInterim`),\r\n data1Value: numFormat.format(this.performanceData.evaluations.numInterim),\r\n data2Text: this.$t(`${this.viewString}evaluationsFinal`),\r\n data2Value: numFormat.format(this.performanceData.evaluations.numFinal)\r\n }\r\n ]\r\n },\r\n ratingPerEvaluationScaleId() {\r\n return (\r\n this.getTenderNode?.performanceConfig?.ratingPerEvaluationScale?.id?.toLowerCase() || null\r\n )\r\n },\r\n showPerformanceEvaluationWidget() {\r\n const show =\r\n this.evaluationData !== null &&\r\n this.ratingPerEvaluationScaleId !== performanceRatingScales.AVG.toLowerCase() &&\r\n this.ratingPerEvaluationScaleId !== performanceRatingScales.SUM.toLowerCase() &&\r\n this.ratingPerEvaluationScaleId !== performanceRatingScales.LOWEST.toLowerCase()\r\n\r\n return show\r\n },\r\n templateLogo() {\r\n return this.getCustomer?.agencyImageUrl\r\n }\r\n },\r\n mounted() {\r\n uiHandler.showLoading(this)\r\n\r\n Promise.all([this.fetchPerformanceStatusSummary(), this.fetchPerformanceStatusEvaluation()])\r\n .then((response) => {\r\n this.performanceData = response[0]\r\n this.buildChartData()\r\n\r\n this.loaded = true\r\n })\r\n .finally(() => uiHandler.hideLoading(this))\r\n },\r\n methods: {\r\n ...mapActions(['fetchPerformanceStatusSummary', 'fetchPerformanceStatusEvaluation']),\r\n buildChartData() {\r\n if (!this.performanceData) return\r\n\r\n for (const d of this.performanceData.departments) {\r\n const [foreground, background, textColor] = this.getChartColors()\r\n\r\n this.chartData.push({\r\n heading: d.name,\r\n expired: `${this.$t(`${this.viewString}deptExpired`)} ${numFormat.format(d.numExpired)}`,\r\n inprogress: `${this.$t(`${this.viewString}deptInProgress`)} ${numFormat.format(\r\n d.numInProgress\r\n )}`,\r\n interim: `${this.$t(`${this.viewString}deptInterim`)} ${numFormat.format(d.numInterim)}`,\r\n final: `${this.$t(`${this.viewString}deptFinal`)} ${numFormat.format(d.numFinal)}`,\r\n custom: `${this.$t(`${this.viewString}deptCustom`)} ${numFormat.format(d.numCustom)}`,\r\n percentage: pctFormat.format(d.pctEvaluated),\r\n textColor,\r\n datasets: [\r\n {\r\n backgroundColor: [foreground, background],\r\n data: [d.pctEvaluated, 1 - d.pctEvaluated]\r\n }\r\n ]\r\n })\r\n }\r\n },\r\n getChartColors() {\r\n this.counter = this.counter + 1\r\n if (this.counter >= this.colorsArray.length) this.counter = 0\r\n return this.colorsArray[this.counter]\r\n },\r\n checkContractPerformanceEnabled() {\r\n if (!this.contractPerformanceEnabled) {\r\n this.$router.push('/')\r\n }\r\n }\r\n }\r\n}\r\n","export default \"__VITE_ASSET__Cd4ddNB___\"","export default \"__VITE_ASSET__ef6frL8P__\"","export default \"__VITE_ASSET__C8Kkej$X__\"","import { ref, toRefs, watch, computed, onMounted } from 'vue'\r\nimport debounce from 'lodash/debounce'\r\n\r\nconst TooltipTypes = {\r\n NONE: null,\r\n OVERFLOW: 'OVERFLOW',\r\n VALUE: 'VALUE'\r\n}\r\n\r\nexport function useStandardInput({ emit, props, overrides, el }) {\r\n const field = ref(el || null)\r\n const touched = ref(false)\r\n const isDirty = ref(false)\r\n const firstPass = ref(false)\r\n const isValid = ref(false)\r\n const tooltip = ref(null)\r\n const hiddenEl = ref(null)\r\n const contentOverflowing = ref(false)\r\n\r\n const { value, errorMessage } = (props && toRefs(props)) || {\r\n value: ref(null),\r\n errorMessage: ref(null)\r\n }\r\n\r\n const tooltipType = computed(() => props?.tooltipType || TooltipTypes.NONE)\r\n\r\n const showRequiredError = computed(() => {\r\n if (!props) return false\r\n return props.required && touched.value && !value.value\r\n })\r\n\r\n function EstablishEvents() {\r\n let OnBlur = () => true\r\n let OnInputChanged = () => true\r\n\r\n if (!emit)\r\n return {\r\n OnBlur,\r\n OnInputChanged\r\n }\r\n\r\n OnBlur = () => {\r\n if (touched.value === true) {\r\n isDirty.value = true\r\n }\r\n if (!props.required && value?.value?.length && value.value.length === 0) {\r\n isDirty.value = false\r\n }\r\n firstPass.value = true\r\n }\r\n\r\n OnInputChanged = (e) => {\r\n if (touched.value === true) {\r\n isDirty.value = true\r\n }\r\n touched.value = true\r\n\r\n if (emit) {\r\n emit('input', e)\r\n }\r\n }\r\n\r\n return { OnBlur, OnInputChanged }\r\n }\r\n\r\n const ValidateValue = debounce((val) => {\r\n if (!props || !emit) return\r\n let valid = true\r\n\r\n if (props.required && (!val || (val.length && val.length === 0))) {\r\n isValid.value = false\r\n emit('isValid', false)\r\n return\r\n }\r\n\r\n if (props && props.validate) {\r\n valid = props.validate(val)\r\n }\r\n\r\n isValid.value = valid\r\n emit('isValid', valid)\r\n }, 30)\r\n\r\n const UseAppropriateValidation = overrides?.ValidateValue || ValidateValue\r\n\r\n function checkOverflow(value) {\r\n // if inputEl is a vue wrapper, get the native element\r\n if (!field.value || !hiddenEl.value) return\r\n\r\n const input = field.value.$el || field.value\r\n hiddenEl.value.innerText = value\r\n\r\n // test hiddenEl.value width against inputEl width\r\n contentOverflowing.value = hiddenEl.value.offsetWidth > input.offsetWidth\r\n }\r\n\r\n const ManageTooltip = debounce((val) => {\r\n if (!tooltipType.value) return\r\n\r\n const ttype = tooltipType.value.toUpperCase()\r\n switch (ttype) {\r\n case TooltipTypes.OVERFLOW:\r\n if (!field.value) return\r\n checkOverflow(val)\r\n tooltip.value = (contentOverflowing.value && val) || null\r\n break\r\n case TooltipTypes.VALUE:\r\n tooltip.value = val\r\n break\r\n default:\r\n tooltip.value = null\r\n }\r\n }, 30)\r\n\r\n function AssignTooltipText() {\r\n if (!tooltipType.value || tooltipType.value.toUpperCase() !== TooltipTypes.VALUE) return\r\n tooltip.value = value.value\r\n }\r\n\r\n function CreateOverflowCheck() {\r\n if (!field.value || tooltipType.value?.toUpperCase() !== TooltipTypes.OVERFLOW) return\r\n\r\n hiddenEl.value = document.createElement('span')\r\n hiddenEl.value.style.visibility = 'hidden'\r\n hiddenEl.value.style.whiteSpace = 'nowrap'\r\n hiddenEl.value.style.position = 'absolute'\r\n hiddenEl.value.style.width = 'auto'\r\n hiddenEl.value.style.top = '0'\r\n hiddenEl.value.style.left = '-9999px'\r\n hiddenEl.value.setAttribute('aria-hidden', 'true')\r\n hiddenEl.value.classList.add('overflow-check')\r\n document.body.appendChild(hiddenEl.value)\r\n }\r\n\r\n watch(value, UseAppropriateValidation)\r\n\r\n watch(() => value.value, ManageTooltip, { immediate: true })\r\n\r\n onMounted(() => {\r\n UseAppropriateValidation(value.value)\r\n AssignTooltipText()\r\n CreateOverflowCheck()\r\n })\r\n\r\n const { OnBlur, OnInputChanged } = EstablishEvents()\r\n\r\n return {\r\n field,\r\n touched,\r\n isDirty,\r\n firstPass,\r\n isValid,\r\n value,\r\n tooltip,\r\n errorMessage,\r\n showRequiredError,\r\n OnBlur,\r\n OnInputChanged\r\n }\r\n}\r\n\r\nexport function useValidationGroup(refs) {\r\n const toValidate = ref(refs)\r\n const validationGroup = computed(() => {\r\n return toValidate.value?.map((ref) => ref?.value?.isValid)\r\n })\r\n\r\n const errorIndecies = computed(() => {\r\n return validationGroup.value.map((v, i) => (v ? 0 : i)).filter((v) => v !== 0)\r\n })\r\n\r\n return { validationGroup, errorIndecies }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import heroImage from '@/assets/images/SVGs/heroLarge@2x.svg'\r\nimport logoColorFallback from '@/assets/images/BTLogos/PNG/B&T_Logo_Name_Colour.png'\r\nimport logo from '@/assets/images/BTLogos/SVG/B&T_Logo_Name_Colour.svg'\r\nimport AppInputText from '@/components/app-input-text/app-input-text.vue'\r\nimport AppLogo from '@/components/app-logo/app-logo.vue'\r\nimport { useDataSanitizing } from '@/utils/dataSanitizing.js'\r\nimport { validEmail } from '@/utils/email.js'\r\nimport errorHandler from '@/utils/error'\r\nimport { createCompletedSubmissionsAllNotification } from '@/utils/notification'\r\nimport uiHandler from '@/utils/ui'\r\nimport VueForm from 'vue-form'\r\nimport { mapActions, mapGetters } from 'vuex'\r\nimport LoginFooter from './login-view-footer.vue'\r\nconst { sanitizeHTMLData } = useDataSanitizing()\r\n\r\nexport default {\r\n name: 'Login',\r\n mixins: [VueForm],\r\n components: {\r\n AppLogo,\r\n AppInputText,\r\n LoginFooter\r\n },\r\n data() {\r\n return {\r\n model: {\r\n username: '',\r\n password: '',\r\n domain: ''\r\n },\r\n resetModel: {\r\n user: '',\r\n domain: ''\r\n },\r\n viewString: 'ui.views.login.login-view.',\r\n errMsg: '',\r\n resetErrMsg: '',\r\n formstate: {\r\n username: {},\r\n password: {},\r\n domain: {}\r\n },\r\n resetformstate: {\r\n user: {},\r\n domain: {}\r\n },\r\n usernameValid: false,\r\n resetPasswordUsernameValid: false,\r\n domainValid: false,\r\n passwordValid: false,\r\n resetPassword: false,\r\n resetPasswordSent: false,\r\n loaded: false,\r\n animationReady: false,\r\n articles: [],\r\n administratorContact: 'help@esolutionsgroup.ca',\r\n lockedDialogVisible: false,\r\n userRequestsSso: true,\r\n showLocalAuthUI: false,\r\n logo,\r\n logoColorFallback,\r\n heroImage\r\n }\r\n },\r\n beforeDestroy() {\r\n clearTimeout(this.loadedTimer)\r\n clearTimeout(this.readyTimer)\r\n clearTimeout(this.cleanResetTimer)\r\n },\r\n watch: {\r\n showLocalAuthUI: function (newval, oldval) {\r\n // focus on username input when local auth UI is shown\r\n if (newval && newval !== oldval) {\r\n this.$nextTick().then(() => {\r\n const input = document.getElementById('username')\r\n input.focus()\r\n })\r\n }\r\n }\r\n },\r\n computed: {\r\n readyRequestedTenders() {\r\n return this.getReadyRequestedTenders\r\n },\r\n validationCheck() {\r\n return {\r\n loginForm: this.$refs?.usernameInput?.isValid && this.$refs?.passwordInput?.isValid,\r\n resetForm: this.$refs?.resetUserInput?.isValid,\r\n domainForm: this.$refs?.domainInput?.isValid\r\n }\r\n },\r\n displayName() {\r\n const customer = this.getCustomer\r\n return customer ? customer.DisplayName : 'Town of Lorem'\r\n },\r\n loginFormValid() {\r\n return this.usernameValid && this.passwordValid\r\n },\r\n resetFormValid() {\r\n return this.resetPasswordUsernameValid\r\n },\r\n domainFormValid() {\r\n return this.domainValid\r\n },\r\n ...mapGetters([\r\n 'isLocalAuth',\r\n 'hasLocalAuthOption',\r\n 'getAuthCustomer',\r\n 'getAuthUser',\r\n 'getAuthTenderNode',\r\n 'getCustomer',\r\n 'getAuthCustomerNode',\r\n 'getGroups',\r\n 'getReadyRequestedTenders',\r\n 'getRoutePermission',\r\n 'getIsSiteAdmin'\r\n ])\r\n },\r\n methods: {\r\n async handleSubmit() {\r\n this.errMsg = ''\r\n if (this.showLocalAuthUI) {\r\n if (!this.loginFormValid) return\r\n this.authorizeUser()\r\n } else {\r\n if (!this.domainFormValid) return\r\n try {\r\n await this.getLoginType(this.model)\r\n // if the system is configured for sso only\r\n if (!this.isLocalAuth && !this.hasLocalAuthOption) {\r\n window.location = `${import.meta.env.VITE_API_BASE}/api/v1/sso/ssoStart?domain=${\r\n this.model.domain\r\n }`\r\n // if the system is configured for both local and sso\r\n } else if (!this.isLocalAuth && this.hasLocalAuthOption) {\r\n // see what the user wants to do\r\n if (this.userRequestsSso)\r\n window.location = `${import.meta.env.VITE_API_BASE}/api/v1/sso/ssoStart?domain=${\r\n this.model.domain\r\n }`\r\n else this.showLocalAuthUI = true\r\n } else if (this.isLocalAuth) {\r\n this.showLocalAuthUI = true\r\n }\r\n } catch (e) {\r\n const status = e.response?.status || 0\r\n this.errMsg =\r\n status === 400\r\n ? this.$t('ui.views.login.login-view.errorInvalidDomain')\r\n : this.$t('ui.views.login.login-view.errorInvalidCredentials')\r\n }\r\n }\r\n },\r\n handleResetSubmit() {\r\n if (!this.resetFormValid) return\r\n uiHandler.showLoading(this)\r\n const { user } = this.resetModel\r\n const { domain } = this.model\r\n this.resetErrMsg = ''\r\n this.sendForgotPassword({ domain, email: user, isTeammemberportal: false })\r\n .then(() => {\r\n this.resetPasswordSent = true\r\n this.$notify({\r\n title: this.$t('ui.common.success'),\r\n message: this.$t('ui.views.login.login-view.sentPasswordReset'),\r\n type: 'success'\r\n })\r\n setTimeout(() => {\r\n uiHandler.hideLoading(this)\r\n this.handleCancelReset()\r\n }, 1000)\r\n })\r\n .catch((e) => {\r\n const errorMessages = []\r\n errorMessages[404] = this.$t('ui.views.login.login-view.errorUserNotFound')\r\n errorMessages[400] = this.$t('ui.views.login.login-view.errorInvalidEmail')\r\n const { status } = e.response\r\n if (status && errorMessages[status]) {\r\n this.resetErrMsg = errorMessages[status]\r\n } else {\r\n this.resetErrMsg = this.$t('ui.views.login.login-view.errorInvalidCredentials')\r\n }\r\n\r\n uiHandler.hideLoading(this)\r\n })\r\n },\r\n handleReset() {\r\n this.resetPassword = true\r\n },\r\n handleCancelReset() {\r\n this.resetPassword = false\r\n this.cleanResetTimer = setTimeout(() => {\r\n this.resetformstate._reset()\r\n }, 500)\r\n },\r\n showLockedDialog() {\r\n this.lockedDialogVisible = true\r\n },\r\n authorizeUser: function () {\r\n if (this.model.username.includes('@')) {\r\n if (!this.validEmail(this.model.username)) {\r\n this.appInitialized = false\r\n this.errMsg = this.$t('ui.views.login.login-view.invalidEmailFormat')\r\n return\r\n }\r\n }\r\n\r\n uiHandler.showLoading(this)\r\n this.errMsg = ''\r\n this.authorize(this.model)\r\n .then(() => {\r\n this.initializeData()\r\n })\r\n .catch((e) => {\r\n this.appInitialized = false\r\n if (e.response && e.response.status === 429) {\r\n this.showLockedDialog()\r\n } else {\r\n errorHandler.handleApiError(this, e)\r\n this.errMsg = this.$t('ui.views.login.login-view.errorInvalidCredentials')\r\n }\r\n this.showLoading(1)\r\n })\r\n },\r\n randomIntFromInterval(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min)\r\n },\r\n showLoading(index) {\r\n // load for up to [index] seconds\r\n setTimeout(() => {\r\n uiHandler.hideLoading(this)\r\n }, Math.random() * (1000 * index))\r\n },\r\n initializeData: function () {\r\n this.showLoading(3)\r\n\r\n const customer = this.getAuthCustomer\r\n this.setCustomer(customer)\r\n this.setCustomerTimeZone(customer.timeZoneDetail.code)\r\n this.fetchCustomer(customer.id)\r\n\r\n const user = this.getAuthUser\r\n this.setLoggedInUser(user)\r\n\r\n const tenderNode = this.getAuthTenderNode\r\n this.setTenderNode(tenderNode)\r\n\r\n const customerNode = this.getAuthCustomerNode\r\n this.setCustomerNode(customerNode)\r\n\r\n // fetch the customer\r\n\r\n if (this.getIsSiteAdmin === true) {\r\n this.fetchCustomerAll()\r\n }\r\n\r\n if (!this.getGroups.length) {\r\n this.fetchGroups()\r\n }\r\n\r\n if (!this.getRoutePermission.length) {\r\n this.fetchRoutePermission()\r\n }\r\n\r\n // get all the pending submissions from session storage\r\n this.restoreCompletedSubmissionsAll()\r\n if (this.readyRequestedTenders) {\r\n // create a notification for those that are ready to be downloaded\r\n for (const tenderStatus of this.readyRequestedTenders) {\r\n createCompletedSubmissionsAllNotification(this, tenderStatus.name, tenderStatus.id)\r\n }\r\n }\r\n\r\n customer.gaId = 'UA-54516992-1'\r\n customer.logo = 'https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg'\r\n\r\n // Clear previous search filters if any\r\n this.updateProjectSearchFilters(null)\r\n\r\n this.appInitialized = true\r\n this.$router.push('/')\r\n },\r\n sliceFormTitles(list) {\r\n list.forEach((item) => {\r\n const text = item.innerText.trim().split('')\r\n const markup = text.map(\r\n (letter, index) =>\r\n `${\r\n letter.match(/\\s/) ? ' ' : letter\r\n }`\r\n )\r\n item.innerHTML = markup.join('')\r\n })\r\n },\r\n handleResetDomain() {\r\n this.showLocalAuthUI = false\r\n },\r\n validEmail(email) {\r\n return validEmail(email)\r\n },\r\n sanitizeHTMLData,\r\n ...mapActions([\r\n 'authorize',\r\n 'setCustomer',\r\n 'setCustomerTimeZone',\r\n 'sendForgotPassword',\r\n 'setTenderNode',\r\n 'setLoggedInUser',\r\n 'setCustomerNode',\r\n 'fetchCustomer',\r\n 'fetchCustomerAll',\r\n 'fetchGroups',\r\n 'restoreCompletedSubmissionsAll',\r\n 'downloadCompletedSubmissionsAll',\r\n 'addAllSubmissionsNotification',\r\n 'getLoginType',\r\n 'fetchRoutePermission',\r\n 'updateProjectSearchFilters'\r\n ])\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","export default {\r\n path: '/control-panel',\r\n name: 'ControlPanelView',\r\n component: () => import('@/views/control-panel/control-panel-view/control-panel-view.vue'),\r\n meta: { Auth: true, isLanding: true },\r\n props: true,\r\n children: [\r\n {\r\n path: 'account-information',\r\n name: 'CPAccountInfo',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-account-info-view/cpanel-account-info-view.vue'\r\n )\r\n },\r\n {\r\n path: 'project-settings',\r\n name: 'CPProjectSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-project-settings-view/cpanel-project-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'intake-settings',\r\n name: 'CPIntakeSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-intake-settings-view/cpanel-intake-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'source-settings',\r\n name: 'CPSourceSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-source-settings-view/cpanel-source-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'evaluation-settings',\r\n name: 'CPEvaluationSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-evaluation-settings-view/cpanel-evaluation-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'contract-settings',\r\n name: 'CPContractSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-contract-settings-view/cpanel-contract-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'dropdown-settings',\r\n name: 'CPDropDownSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-dropdown-settings-view/cpanel-dropdown-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'email-notifications',\r\n name: 'CPanelEmailNotifications',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-email-notifications-view/cpanel-email-notifications-view.vue'\r\n )\r\n },\r\n {\r\n path: 'system-content',\r\n name: 'CPanelSystemContent',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-system-content-view/cpanel-system-content-view.vue'\r\n )\r\n },\r\n {\r\n path: 'library-content',\r\n name: 'CPanelLibraryContent',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-library-content-view/cpanel-library-content-view.vue'\r\n )\r\n },\r\n {\r\n path: 'sso-settings',\r\n name: 'CPSsoSettings',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-sso-settings-view/cpanel-sso-settings-view.vue'\r\n )\r\n },\r\n {\r\n path: 'contract-builder',\r\n name: 'CPContractBuilder',\r\n component: () =>\r\n import(\r\n '@/views/control-panel/control-panel-sections/cpanel-contract-builder-view/cpanel-contract-builder-view.vue'\r\n )\r\n }\r\n ]\r\n}\r\n","import { useFeatureHelpers } from '@/utils/featureHelpers'\r\nconst { featureGateRoute } = useFeatureHelpers()\r\n\r\nconst docsRoutes = {\r\n path: '/docs',\r\n name: 'docs',\r\n beforeEnter: featureGateRoute('documentation'),\r\n meta: {\r\n Auth: true\r\n },\r\n component: () => import('@/views/docs/docs-view.vue'),\r\n children: [\r\n {\r\n path: 'styles-intro',\r\n name: 'styles-intro',\r\n component: () => import('@/views/docs/app-components/docs-styles-intro')\r\n },\r\n {\r\n path: 'styles-bulma',\r\n name: 'styles-bulma',\r\n component: () => import('@/views/docs/app-components/docs-styles-bulma')\r\n },\r\n {\r\n path: 'styles-helpers',\r\n name: 'styles-helpers',\r\n component: () => import('@/views/docs/app-components/docs-styles-helpers')\r\n },\r\n {\r\n path: 'styles-animatecss',\r\n name: 'styles-animatecss',\r\n component: () => import('@/views/docs/app-components/docs-vue-animate')\r\n },\r\n {\r\n path: 'app-avatar',\r\n name: 'app-avatar',\r\n component: () => import('@/views/docs/app-components/docs-avatar')\r\n },\r\n {\r\n path: 'app-panel',\r\n name: 'app-panel',\r\n component: () => import('@/views/docs/app-components/docs-panel')\r\n },\r\n {\r\n path: 'app-button',\r\n name: 'app-button',\r\n component: () => import('@/views/docs/app-components/docs-button')\r\n },\r\n {\r\n path: 'app-checkbox',\r\n name: 'app-checkbox',\r\n component: () => import('@/views/docs/app-components/docs-checkbox')\r\n },\r\n {\r\n path: 'document-preview',\r\n name: 'document-preview',\r\n component: () => import('@/views/docs/app-components/docs-document-preview.vue')\r\n },\r\n {\r\n path: 'app-grid',\r\n name: 'app-grid',\r\n component: () => import('@/views/docs/app-components/docs-grid')\r\n },\r\n {\r\n path: 'app-icon',\r\n name: 'app-icon',\r\n component: () => import('@/views/docs/app-components/docs-icon')\r\n },\r\n {\r\n path: 'app-sidebar',\r\n name: 'app-sidebar',\r\n component: () => import('@/views/docs/app-components/docs-sidebar')\r\n },\r\n {\r\n path: 'app-svg',\r\n name: 'app-svg',\r\n component: () => import('@/views/docs/app-components/docs-app-svg')\r\n },\r\n {\r\n path: 'app-toolbar',\r\n name: 'app-toolbar',\r\n component: () => import('@/views/docs/app-components/docs-toolbar')\r\n },\r\n {\r\n path: 'app-title',\r\n name: 'app-title',\r\n component: () => import('@/views/docs/app-components/docs-title')\r\n },\r\n {\r\n path: 'app-subnav',\r\n name: 'app-subnav',\r\n component: () => import('@/views/docs/app-components/docs-subnav')\r\n },\r\n {\r\n path: 'app-listgroup',\r\n name: 'app-listgroup',\r\n component: () => import('@/views/docs/app-components/docs-listgroup')\r\n },\r\n {\r\n path: 'app-logo',\r\n name: 'app-logo',\r\n component: () => import('@/views/docs/app-components/docs-app-logo')\r\n },\r\n {\r\n path: 'app-empty',\r\n name: 'app-empty',\r\n component: () => import('@/views/docs/app-components/docs-empty')\r\n },\r\n {\r\n path: 'app-editor',\r\n name: 'app-editor',\r\n component: () => import('@/views/docs/app-components/docs-editor')\r\n },\r\n {\r\n path: 'app-reveal',\r\n name: 'app-reveal',\r\n component: () => import('@/views/docs/app-components/docs-reveal')\r\n },\r\n {\r\n path: 'azure-blob',\r\n name: 'azure-blob',\r\n component: () => import('@/views/docs/features/docs-azure-blob')\r\n },\r\n {\r\n path: 'table-mixins',\r\n name: 'table-mixins',\r\n component: () => import('@/views/docs/app-components/docs-table-mixins.vue')\r\n },\r\n {\r\n path: 'el-dropdown',\r\n name: 'el-dropdown',\r\n component: () => import('@/views/docs/app-components/docs-el-dropdown')\r\n },\r\n {\r\n path: 'el-tabs',\r\n name: 'el-tabs',\r\n component: () => import('@/views/docs/app-components/docs-el-tabs')\r\n },\r\n {\r\n path: 'el-autocomplete',\r\n name: 'el-autocomplete',\r\n component: () => import('@/views/docs/app-components/docs-el-autocomplete')\r\n },\r\n {\r\n path: 'el-date-picker',\r\n name: 'el-date-picker',\r\n component: () => import('@/views/docs/app-components/docs-el-date-picker')\r\n },\r\n {\r\n path: 'el-time-select',\r\n name: 'el-time-select',\r\n component: () => import('@/views/docs/app-components/docs-el-time-select')\r\n },\r\n {\r\n path: 'el-popover',\r\n name: 'el-popover',\r\n component: () => import('@/views/docs/app-components/docs-el-popover')\r\n },\r\n {\r\n path: 'el-select',\r\n name: 'el-select',\r\n component: () => import('@/views/docs/app-components/docs-el-select')\r\n },\r\n {\r\n path: 'el-switch',\r\n name: 'el-switch',\r\n component: () => import('@/views/docs/app-components/docs-el-switch')\r\n },\r\n {\r\n path: 'el-dialog',\r\n name: 'el-dialog',\r\n component: () => import('@/views/docs/app-components/docs-el-dialog')\r\n },\r\n {\r\n path: 'el-table',\r\n name: 'el-table',\r\n component: () => import('@/views/docs/app-components/docs-el-table')\r\n },\r\n {\r\n path: 'el-intro',\r\n name: 'el-intro',\r\n component: () => import('@/views/docs/app-components/docs-el-intro')\r\n },\r\n {\r\n path: 'el-cascader',\r\n name: 'el-cascader',\r\n component: () => import('@/views/docs/app-components/docs-el-cascader')\r\n },\r\n {\r\n path: 'wizard',\r\n name: 'wizard',\r\n component: () => import('@/views/docs/app-components/docs-app-wizard')\r\n },\r\n {\r\n path: 'wizard-components',\r\n name: 'wizard-components',\r\n component: () => import('@/views/docs/app-components/docs-app-wizard-components')\r\n },\r\n {\r\n path: 'wizard-form',\r\n name: 'wizard-form',\r\n component: () => import('@/views/docs/app-components/docs-app-wizard-form')\r\n },\r\n {\r\n path: 'app-tree-filter',\r\n name: 'app-tree-filter',\r\n component: () => import('@/views/docs/app-components/docs-app-tree-filter')\r\n },\r\n {\r\n path: 'email-wizard',\r\n name: 'email-wizard',\r\n component: () => import('@/views/docs/app-components/docs-email-wizard.vue')\r\n },\r\n {\r\n path: 'app-input-currency',\r\n name: 'app-input-currency',\r\n component: () => import('@/views/docs/app-components/docs-app-input-currency.vue')\r\n },\r\n {\r\n path: 'app-input-date',\r\n name: 'app-input-date',\r\n component: () => import('@/views/docs/app-components/docs-app-input-date.vue')\r\n },\r\n {\r\n path: 'app-input-mask',\r\n name: 'app-input-mask',\r\n component: () => import('@/views/docs/app-components/docs-app-input-mask.vue')\r\n },\r\n {\r\n path: 'app-input-file',\r\n name: 'app-input-file',\r\n component: () => import('@/views/docs/app-components/docs-app-input-file.vue')\r\n },\r\n {\r\n path: 'app-input-text',\r\n name: 'app-input-text',\r\n component: () => import('@/views/docs/app-components/docs-app-input-text.vue')\r\n },\r\n {\r\n path: 'app-input-time',\r\n name: 'app-input-time',\r\n component: () => import('@/views/docs/app-components/docs-app-input-time.vue')\r\n },\r\n {\r\n path: 'app-ellipsis',\r\n name: 'app-ellipsis',\r\n component: () => import('@/views/docs/app-components/docs-app-ellipsis.vue')\r\n },\r\n {\r\n path: 'app-question-field',\r\n name: 'app-question-field',\r\n component: () => import('@/views/docs/app-components/docs-app-question-field')\r\n },\r\n {\r\n path: 'app-select',\r\n name: 'app-select',\r\n component: () => import('@/views/docs/app-components/docs-app-select.vue')\r\n },\r\n {\r\n path: 'data-sanitizing',\r\n name: 'dataSanitizing',\r\n component: () => import('@/views/docs/utils/docs-data-sanitizing.vue')\r\n },\r\n {\r\n path: 'feature-flagging',\r\n name: 'featureFlagging',\r\n component: () => import('@/views/docs/features/docs-feature-flagging.vue')\r\n },\r\n {\r\n path: 'input-permissions',\r\n name: 'inputPermissions',\r\n component: () => import('@/views/docs/composables/docs-input-permissions.vue')\r\n },\r\n {\r\n path: 'vue-2-7',\r\n name: 'vue-2-7',\r\n component: () => import('@/views/docs/docs-vue-2-7.vue')\r\n },\r\n {\r\n path: 'evaluation-tree',\r\n name: 'evaluation-tree',\r\n component: () => import('@/views/docs/docs-evaluation-tree.vue')\r\n },\r\n {\r\n path: 'hot',\r\n name: 'hot',\r\n component: () => import('@/views/docs/vendor/docs-hot-view.vue')\r\n },\r\n {\r\n path: '*',\r\n component: () => import('@/views/docs/app-components/docs-el-intro')\r\n }\r\n ]\r\n}\r\n\r\ndocsRoutes.children.forEach((route) => {\r\n route.beforeEnter = featureGateRoute('documentation')\r\n})\r\n\r\nexport default docsRoutes\r\n","export default [\r\n {\r\n name: 'ProjectAwardSummary',\r\n path: 'summary',\r\n meta: { area: 'award' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/award/award-summary-view/award-summary-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectAwardApproval',\r\n path: 'approval',\r\n meta: { area: 'award' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/award/award-approval-view/award-approval-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectAwardAwards',\r\n path: 'awards',\r\n meta: { area: 'award' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/award/awards-view/awards-view.vue')\r\n }\r\n]\r\n","import store from '@/store'\r\nimport { ref } from 'vue'\r\n\r\nfunction ProtectLockedProjectSubreq() {\r\n return (to, from, next) => {\r\n const $store = ref(store)\r\n\r\n const project = $store.value.getters['getProject']\r\n const isLocked = $store.value.getters['getProjectLocked']\r\n\r\n if (!project || project.id !== to.params?.id || isLocked !== false) {\r\n next({ name: 'ProjectBuildSubreqsEdit', params: to.params })\r\n } else {\r\n next()\r\n }\r\n }\r\n}\r\n\r\nexport default [\r\n {\r\n name: 'ProjectBuildSettings',\r\n path: 'settings',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/settings-view/settings-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildDetails',\r\n path: 'details',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/build/details-view/details-view.vue')\r\n },\r\n {\r\n name: 'ProjectBuildDocuments',\r\n path: 'documents',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/document-upload-view/document-upload-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildCompliance',\r\n path: 'compliance',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/compliance-view/compliance-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildInvitations',\r\n path: 'invitations',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/invitations-view/invitations-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildDates',\r\n path: 'dates',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/build/dates-view/dates-view.vue')\r\n },\r\n {\r\n name: 'ProjectPreparePublish',\r\n path: 'publish',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/prepare-publish-view/prepare-publish-view.vue'\r\n )\r\n },\r\n // Submission requirements\r\n {\r\n name: 'ProjectBuildSubreqs',\r\n path: 'submission-requirements',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildSubreqsEdit',\r\n path: 'submission-requirements/edit',\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildSubreqsDocumentUploads',\r\n path: 'submission-requirements/documents',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/document-uploads-subview/document-uploads-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildBuildInstructions',\r\n path: 'submission-requirements/instructions',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/instructions-subview/instructions-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildPriceSchedule',\r\n path: 'submission-requirements/prices',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/prices-schedule-subview/prices-schedule-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildQuestions',\r\n path: 'submission-requirements/questions',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/questions-subview/questions-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildReferences',\r\n path: 'submission-requirements/references',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/references-subview/references-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildSecurity',\r\n path: 'submission-requirements/security',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/security-subview/security-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildSpecifications',\r\n path: 'submission-requirements/specifications',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/specifications-subview/specifications-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildSubcontractors',\r\n path: 'submission-requirements/subcontractors',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/subcontractors-subview/subcontractors-subview.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectBuildTerms',\r\n path: 'submission-requirements/terms',\r\n beforeEnter: ProtectLockedProjectSubreq(),\r\n meta: { area: 'build' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/build/submission-requirements-view/submission-requirements-subviews/terms-subview/terms-subview.vue'\r\n )\r\n }\r\n]\r\n","export default [\r\n {\r\n name: 'ProjectContractDates',\r\n path: 'dates',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-dates-view/contract-dates-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectContractSuppliers',\r\n path: 'suppliers',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-suppliers-view/contract-suppliers-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectContractBuilder',\r\n path: 'contract-builder',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-builder-view/contract-builder-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectContractDocuments',\r\n path: 'documents',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-documents-view/contract-documents-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectContractPurchaseOrders',\r\n path: 'purchase-orders',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-purchaseorders-view/contract-purchaseorders-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectContractPerformance',\r\n path: 'performance',\r\n meta: { area: 'contract' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/contract/contract-performance-view/contract-performance-view.vue'\r\n )\r\n }\r\n]\r\n","export default [\r\n {\r\n name: 'ProjectEvaluateBuild',\r\n path: 'build',\r\n meta: { area: 'evaluate' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/evaluate/evaluate-build.vue')\r\n },\r\n {\r\n name: 'ProjectEvaluateTeam',\r\n path: 'team',\r\n meta: { area: 'evaluate' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/evaluate/evaluate-team.vue')\r\n },\r\n {\r\n name: 'ProjectEvaluateMeetings',\r\n path: 'meetings',\r\n meta: { area: 'evaluate' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/evaluate/evaluate-meetings.vue')\r\n },\r\n {\r\n name: 'ProjectEvaluateSupplierStatus',\r\n path: 'supplier-status',\r\n meta: { area: 'evaluate' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/evaluate/evaluate-supplier-status.vue'\r\n )\r\n }\r\n]\r\n","export default [\r\n {\r\n name: 'ProjectIntake',\r\n path: '/',\r\n meta: { area: 'intake' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/intake/intake-view.vue')\r\n }\r\n]\r\n","export default [\r\n {\r\n name: 'ProjectIntakeView',\r\n path: '/',\r\n meta: { area: 'intake' },\r\n component: () =>\r\n import('@/views/projects/project-view/project-sub-views/intake/intake-project-view.vue')\r\n }\r\n]\r\n","export default [\r\n {\r\n name: 'ProjectSourceCompanies',\r\n path: 'companies',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/registered-companies-view/registered-companies-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectSourceQuestions',\r\n path: 'questions',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/questions-addenda-view/questions-addenda-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectSourceMeetings',\r\n path: 'bid-meetings',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/bid-meetings-view/bid-meetings-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectSourceSubmissions',\r\n path: 'submissions',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/submissions-view/submissions-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectSourceCompliance',\r\n path: 'compliance',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/compliance-view/compliance-view.vue'\r\n )\r\n },\r\n {\r\n name: 'ProjectSourceEvaluations',\r\n path: 'evaluations',\r\n meta: { area: 'source' },\r\n component: () =>\r\n import(\r\n '@/views/projects/project-view/project-sub-views/source/evaluation-view/evaluation-view.vue'\r\n )\r\n }\r\n]\r\n","import ProjectAwardRoutes from './project-award-routes.js'\r\nimport ProjectBuildRoutes from './project-build-routes.js'\r\nimport ProjectContractRoutes from './project-contract-routes.js'\r\nimport ProjectEvaluateRoutes from './project-evaluate-routes.js'\r\nimport ProjectIntakeRoutes from './project-intake-routes.js'\r\nimport ProjectIntakeViewRoutes from './project-intake-view-routes.js'\r\nimport ProjectSourceRoutes from './project-source-routes.js'\r\n\r\nexport default [\r\n {\r\n path: '/projects',\r\n meta: { Auth: true },\r\n name: 'ProjectSearchView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-search-view/project-search-view.vue'\r\n )\r\n },\r\n {\r\n path: '/projects/new',\r\n meta: { Auth: true },\r\n name: 'ProjectNewView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-new-wizard-view/project-wizard.vue'\r\n )\r\n },\r\n {\r\n path: '/projects/:id/form/:tabletype/',\r\n name: 'ProjectTableNewView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-table-view/project-table-view.vue'\r\n ),\r\n props: true,\r\n exact: true,\r\n children: [\r\n {\r\n path: '/projects/:id/form/:tabletype/:formid',\r\n name: 'ProjectTableEditView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-table-view/project-table-view.vue'\r\n ),\r\n props: true\r\n }\r\n ]\r\n },\r\n {\r\n path: '/projects/:id/activities',\r\n meta: { Auth: true, activeLink: 'activities' },\r\n name: 'ProjectActivitiesView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/activities/activity-feed-view.vue'\r\n )\r\n },\r\n {\r\n path: '/projects/:id/messages',\r\n meta: { Auth: true, activeLink: 'messages' },\r\n name: 'ProjectMessagesView',\r\n component: () =>\r\n import(/* webpackChunkName: \"rproject\" */ '@/views/projects/messages/message-center-view.vue')\r\n },\r\n {\r\n path: '/projects/:id/team',\r\n meta: { Auth: true, activeLink: 'team', view: 'all' },\r\n name: 'ProjectTeamView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-team-view/project-team-view.vue'\r\n ),\r\n children: [\r\n {\r\n path: 'add',\r\n meta: { Auth: true, activeLink: 'team', view: 'add' },\r\n name: 'ProjectTeamViewAdd',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-team-view/team-view-add/project-team-view-add.vue'\r\n )\r\n },\r\n {\r\n path: 'member/:userId',\r\n meta: { Auth: true, activeLink: 'team', view: 'edit' },\r\n name: 'ProjectTeamViewEdit',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-team-view/team-view-edit/project-team-view-edit.vue'\r\n ),\r\n props: true\r\n }\r\n ]\r\n },\r\n {\r\n path: '/projects/:id/snapshot',\r\n meta: { Auth: true },\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-snapshot-view/project-snapshot-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: '/projects/:id/intake',\r\n name: 'ViewIntakeRequest',\r\n meta: { Auth: true },\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/intake/intake-view.vue'\r\n ),\r\n props: true,\r\n children: ProjectIntakeRoutes\r\n },\r\n {\r\n path: '/projects/:id',\r\n name: 'ProjectBaseView',\r\n meta: { Auth: true },\r\n component: () =>\r\n import(/* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-view.vue'),\r\n props: true,\r\n redirect: (to) => {\r\n return `${to.path}/build/settings`\r\n },\r\n children: [\r\n {\r\n path: 'build',\r\n name: 'ProjectBuildView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-build.vue'\r\n ),\r\n meta: { area: 'build' },\r\n children: ProjectBuildRoutes\r\n },\r\n {\r\n path: 'source',\r\n name: 'ProjectSourceView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-source.vue'\r\n ),\r\n meta: { area: 'source' },\r\n children: ProjectSourceRoutes\r\n },\r\n {\r\n path: 'contract',\r\n name: 'ProjectContractView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-contract.vue'\r\n ),\r\n meta: { area: 'contract' },\r\n children: ProjectContractRoutes\r\n },\r\n {\r\n path: 'award',\r\n name: 'ProjectAwardView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-award.vue'\r\n ),\r\n meta: { area: 'award' },\r\n children: ProjectAwardRoutes\r\n },\r\n {\r\n path: '/projects/:id/intake-project',\r\n name: 'ViewIntakeProject',\r\n meta: { Auth: true },\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-intake-project'\r\n ),\r\n props: true,\r\n children: ProjectIntakeViewRoutes\r\n },\r\n {\r\n path: 'evaluate',\r\n name: 'ProjectEvaluateView',\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"rproject\" */ '@/views/projects/project-view/project-sub-views/view-evaluate.vue'\r\n ),\r\n meta: { area: 'evaluate' },\r\n children: ProjectEvaluateRoutes\r\n },\r\n {\r\n path: '*',\r\n name: 'ProjectPageNotFound',\r\n redirect: (to) => {\r\n const { id } = to.params\r\n const rPath = id ? `/projects/${id}/build/settings` : '/projects/'\r\n return rPath\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n","export default {\r\n path: '/reports',\r\n name: 'reports-view',\r\n meta: { Auth: true },\r\n component: () => import('@/views/reports/reports-view/reports-view.vue'),\r\n children: [\r\n {\r\n path: 'library',\r\n component: () => import('@/views/reports/reports-library/reports-library-view.vue'),\r\n name: 'reportsLibrary'\r\n },\r\n {\r\n path: 'center',\r\n component: () => import('@/views/reports/reports-center/reports-center-view.vue'),\r\n name: 'reportsCentre'\r\n }\r\n ]\r\n}\r\n","export default {\r\n path: '/suppliers',\r\n meta: { Auth: true },\r\n name: 'Suppliers',\r\n component: () => import('@/views/suppliers/suppliers-view/suppliers-view.vue'),\r\n children: [\r\n {\r\n path: '/suppliers',\r\n component: () => import('@/views/suppliers/suppliers-all-view/suppliers-all-view.vue'),\r\n name: 'SuppliersAllView'\r\n },\r\n {\r\n path: '/suppliers/:id',\r\n name: 'SuppliersSupplierView',\r\n component: () =>\r\n import('@/views/suppliers/suppliers-supplier-view/suppliers-supplier-view.vue'),\r\n children: [\r\n {\r\n path: 'history',\r\n name: 'SupplierHistory',\r\n component: () =>\r\n import(\r\n '@/views/suppliers/suppliers-supplier-view/supplier-history-view/supplier-history-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: 'performance',\r\n name: 'SupplierPerformance',\r\n component: () =>\r\n import(\r\n '@/views/suppliers/suppliers-supplier-view/supplier-performance-view/supplier-performance-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: 'emails',\r\n name: 'SupplierEmails',\r\n component: () =>\r\n import(\r\n '@/views/suppliers/suppliers-supplier-view/supplier-emails-view/supplier-emails-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: 'activity-feed',\r\n name: 'SupplierActivityFeed',\r\n component: () =>\r\n import(\r\n '@/views/suppliers/suppliers-supplier-view/supplier-activity-feed-view/supplier-activity-feed-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: 'documents',\r\n name: 'SupplierDocuments',\r\n component: () =>\r\n import(\r\n '@/views/suppliers/suppliers-supplier-view/supplier-documents-view/supplier-documents-view.vue'\r\n ),\r\n props: true\r\n },\r\n {\r\n path: '*',\r\n name: 'SuppliersFallback',\r\n component: () =>\r\n import('@/views/suppliers/suppliers-supplier-view/suppliers-supplier-view.vue'),\r\n redirect: { name: 'SuppliersSupplierView' },\r\n props: true\r\n }\r\n ]\r\n }\r\n ]\r\n}\r\n","export default {\r\n path: '/team',\r\n name: 'TeamView',\r\n component: () => import('@/views/team/team-view/team-view.vue'),\r\n // redirect to team all view,\r\n redirect: { name: 'TeamAllView' },\r\n props: true,\r\n children: [\r\n {\r\n path: 'teammember/:userId',\r\n name: 'TeamEditMemberView',\r\n component: () => import('@/views/team/team-member-view/team-member-view.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'addteammember',\r\n name: 'TeamAddTeamMemberView',\r\n component: () => import('@/views/team/team-member-view/team-member-view.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'all',\r\n name: 'TeamAllView',\r\n component: () => import('@/views/team/team-all-view/team-all-view.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'groups/:groupId',\r\n component: () => import('@/views/team/team-group-view/team-group-view.vue'),\r\n name: 'TeamGroupView'\r\n }\r\n ]\r\n}\r\n","import PermissionsMixins from '@/security/permissions/permissions-mixins.js'\r\nimport store from '@/store'\r\nimport { useFeatureHelpers } from '@/utils/featureHelpers.js'\r\nimport ApprovalView from '@/views/award-approval/award-approval-view.vue'\r\nimport BuyerDashboardView from '@/views/dashboard/buyer-dashboard-view/buyer-dashboard-view.vue'\r\nimport ContractBuilderDashboardView from '@/views/dashboard/contract-builder-dashboard-view/contract-builder-dashboard-view.vue'\r\nimport SupplierDashboardView from '@/views/dashboard/supplier-dashboard-view/supplier-dashboard-view.vue'\r\nimport LoginView from '@/views/login/login-view/login-view.vue'\r\nimport ProjectBusView from '@/views/projects/project-view/project-bus-view/project-bus-view.vue'\r\nimport Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport ControlPanelRoutes from './control-panel/control-panel-routes.js'\r\nimport DocsRoutes from './docs/routes-docs.js'\r\nimport ProjectRoutes from './project/project-routes.js'\r\nimport ReportsRoutes from './reports/reports-routes.js'\r\nimport SupplierRoutes from './supplier/supplier-routes.js'\r\nimport TeamRoutes from './team/team-routes.js'\r\n\r\nVue.use(Router)\r\n\r\nconst { featureGateRoute } = useFeatureHelpers()\r\n\r\nconst DocsDevRedirect = {\r\n path: '/docs',\r\n redirect: { name: 'Dashboard' }\r\n}\r\n\r\nconst UseDocsRoutes = store.getters.getFeatureEnabled('documentation').enabled\r\n ? DocsRoutes\r\n : DocsDevRedirect\r\n\r\nconst router = new Router({\r\n routes: [\r\n UseDocsRoutes,\r\n ReportsRoutes,\r\n SupplierRoutes,\r\n TeamRoutes,\r\n ControlPanelRoutes,\r\n {\r\n path: '/debug-view',\r\n meta: { Auth: true },\r\n name: 'DebugView',\r\n beforeEnter: featureGateRoute('DEBUG_VIEW'),\r\n component: () => import('@/views/debug/debug-view.vue')\r\n },\r\n {\r\n path: '/approval/:awardApprovalId/approver/:awardApprovalWorkflowId',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'Approval',\r\n component: ApprovalView\r\n },\r\n {\r\n path: '/login',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'Login',\r\n component: LoginView\r\n },\r\n {\r\n path: '/verifyEmail',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'VerifyResetEmail',\r\n beforeEnter: featureGateRoute('resetPassword'),\r\n component: () => import('@/views/login/reset-password/verify-email-view.vue')\r\n },\r\n {\r\n path: '/resetpassword',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'ResetPassword',\r\n beforeEnter: featureGateRoute('resetPassword'),\r\n component: () => import('@/views/login/reset-password/reset-password-view.vue')\r\n },\r\n {\r\n path: '/esignature/landing',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'esignature',\r\n component: () => import('@/views/esignature/esignature-view.vue'),\r\n beforeEnter: (to, from, next) => {\r\n next()\r\n }\r\n },\r\n {\r\n path: '/maintenance/landing',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'maintenance',\r\n component: () => import('@/views/maintenance/maintenance-view.vue'),\r\n beforeEnter: (to, from, next) => {\r\n next()\r\n }\r\n },\r\n {\r\n path: '/intake-request',\r\n meta: { Auth: false, hideAppBar: true },\r\n name: 'intake',\r\n component: () => import('@/views/intake-request/intake-request.vue')\r\n },\r\n {\r\n path: '/',\r\n meta: { Auth: true },\r\n name: 'Dashboard',\r\n component: BuyerDashboardView\r\n },\r\n {\r\n path: '/supplier-dashboard',\r\n meta: { Auth: true },\r\n name: 'SupplierDashboard',\r\n component: SupplierDashboardView,\r\n beforeEnter: (to, from, next) => {\r\n if (store.getters.getTenderNode && !store.getters.getTenderNode.contractorPerformance) {\r\n next({ path: '/' })\r\n } else {\r\n next()\r\n }\r\n }\r\n },\r\n {\r\n path: '/contract-builder-dashboard',\r\n meta: { Auth: true },\r\n name: 'ContractBuilderDashboard',\r\n component: ContractBuilderDashboardView\r\n },\r\n ...ProjectRoutes,\r\n {\r\n path: '/project-loading',\r\n meta: { Auth: true },\r\n name: 'ProjectLoadingView',\r\n component: ProjectBusView\r\n },\r\n {\r\n path: '*',\r\n redirect: { path: '/' }\r\n }\r\n ]\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n if (to.meta.hideAppBar) {\r\n store.dispatch('setShowAppBar', { showAppBar: false })\r\n } else {\r\n store.dispatch('setShowAppBar', { showAppBar: true })\r\n }\r\n\r\n if (import.meta.env?.VITE_MAINTENANCE_MODE === 'true') {\r\n const storeNoRedirect = localStorage?.getItem('NoRedirect') || 'false'\r\n const queryNoRedirect = to.query?.noredirect || 'false'\r\n\r\n if (to?.name !== 'maintenance' && queryNoRedirect === 'false' && storeNoRedirect === 'false') {\r\n localStorage.setItem('NoRedirect', 'false')\r\n next('/maintenance/landing')\r\n } else if (\r\n to?.name === 'maintenance' &&\r\n (queryNoRedirect === 'true' || storeNoRedirect === 'true')\r\n ) {\r\n localStorage.setItem('NoRedirect', 'true')\r\n next('/login')\r\n }\r\n } else if (to?.name === 'maintenance' && import.meta.env?.VITE_MAINTENANCE_MODE === 'false') {\r\n localStorage.setItem('NoRedirect', 'true')\r\n next('/login')\r\n }\r\n\r\n // close any open menus\r\n store.dispatch('setUserNavMenuOpen', false)\r\n store.dispatch('setActivityFeedMenuOpen', false)\r\n store.dispatch('setMessageCentreMenuOpen', false)\r\n // don't close snapshot mode if it is snapshot that's navigating us back to the project\r\n if (to.path.indexOf('build\\\\snapshot') < 0) store.dispatch('setProjectSnapshotOpen', false)\r\n\r\n // move the feedback thing on project pages\r\n let zenvaVerticalPosition = '0px'\r\n let zenvaHorizontalPosition = '20px'\r\n\r\n if (to.path.match(/projects\\//)) {\r\n zenvaVerticalPosition = '1200px'\r\n zenvaHorizontalPosition = '20px'\r\n }\r\n\r\n setTimeout(() => {\r\n if (window.zE) {\r\n window.zE('webWidget', 'updateSettings', {\r\n webWidget: {\r\n offset: {\r\n horizontal: zenvaHorizontalPosition,\r\n vertical: zenvaVerticalPosition,\r\n zIndex: '99999'\r\n }\r\n }\r\n })\r\n }\r\n }, 30)\r\n\r\n if (to.params.area) {\r\n if (to.params.area === 'source') {\r\n store.dispatch('checkProject', to.params.id).then((response) => {\r\n const project = response\r\n if (project.tenders === null || project.tenders.length === 0) {\r\n next(`/projects/${to.params.id}/build`)\r\n }\r\n })\r\n }\r\n\r\n if (to.params.area === 'contract') {\r\n store.dispatch('checkProject', to.params.id).then((response) => {\r\n const project = response\r\n if (project.contracts === null || project.contracts.length === 0) {\r\n next(`/projects/${to.params.id}/build`)\r\n }\r\n })\r\n }\r\n }\r\n\r\n PermissionsMixins.methods.checkRoutePermission(store, to)\r\n\r\n if (to.matched.some((record) => record.meta.Auth)) {\r\n const passthrough = to.query.passthrough\r\n\r\n if (!passthrough && !store.getters.isAuthorized) {\r\n next({\r\n path: '/login',\r\n query: { redirect: to.fullPath }\r\n })\r\n } else {\r\n if (passthrough) {\r\n store.dispatch('validateSession').then(() => {\r\n // remove passthrough on query string to prevent infinite loop, then reload the page\r\n window.location = window.location.href.split('?')[0]\r\n window.location.reload()\r\n })\r\n } else next()\r\n }\r\n } else {\r\n next()\r\n }\r\n})\r\n\r\nexport default router\r\n","import { Dropdown, Table } from 'element-ui'\r\n\r\nexport function extendElementUIComponents() {\r\n const extendedDropdown = {\r\n extends: Dropdown,\r\n methods: {\r\n ...Dropdown.methods,\r\n async initDomOperation() {\r\n Dropdown.methods.initDomOperation.call(this)\r\n await this.$nextTick()\r\n this.triggerElm.setAttribute('aria-haspopup', 'listbox')\r\n }\r\n }\r\n }\r\n\r\n const extendedTable = {\r\n extends: Table,\r\n updated() {\r\n if (Table.updated) Table.updated.call(this)\r\n this.$nextTick(() => {\r\n this.$refs.bodyWrapper\r\n .querySelectorAll('.el-table-column--selection .el-checkbox__original')\r\n .forEach((el) => {\r\n // set the aria label to be the value of nearest .el-tree-node__label innerText or ('Select node')\r\n const labelText = 'Select Row'\r\n el.setAttribute('aria-label', labelText)\r\n })\r\n\r\n this.$refs.tableHeader.$el\r\n .querySelectorAll('.el-table-column--selection .el-checkbox__original')\r\n .forEach((el) => {\r\n // set the aria label to be the value of nearest .el-tree-node__label innerText or ('Select node')\r\n const labelText = 'Select All'\r\n el.setAttribute('aria-label', labelText)\r\n })\r\n })\r\n }\r\n }\r\n\r\n return {\r\n extendedDropdown,\r\n extendedTable\r\n }\r\n}\r\n","import AppAvatar from '@/components/app-avatar/app-avatar.vue'\r\nimport AppButton from '@/components/app-button/app-button.vue'\r\nimport AppColumnButton from '@/components/app-button/app-column-button.vue'\r\nimport AppCheckbox from '@/components/app-checkbox/app-checkbox.vue'\r\nimport AppDialogBox from '@/components/app-dialog/app-dialogbox.vue'\r\nimport AppEditor from '@/components/app-editor/app-editor.vue'\r\nimport AppEmpty from '@/components/app-empty/app-empty.vue'\r\nimport AppField from '@/components/app-field/app-field.vue'\r\nimport AppGrid from '@/components/app-grid/app-grid.vue'\r\nimport AppGridActions from '@/components/app-grid/app-grid-actions/app-grid-actions.vue'\r\nimport AppGridPagination from '@/components/app-grid/app-grid-pagination/app-grid-pagination.vue'\r\nimport AppIcon from '@/components/app-icon/app-icon.vue'\r\nimport AppInputFile from '@/components/app-input-file/app-input-file.vue'\r\nimport AppInput from '@/components/app-input/app-input.vue'\r\nimport { AppListGroup, AppListGroupItem } from '@/components/app-listgroup/index.js'\r\nimport { AppPanel, AppPanelContent, AppPanelHeader } from '@/components/app-panel/index.js'\r\nimport AppPermissionTooltip from '@/components/app-permission-tooltip/app-permission-tooltip.vue'\r\nimport AppPrivateFieldLabel from '@/components/app-private-field-warning/app-private-field-label.vue'\r\nimport AppPrivateFieldWarning from '@/components/app-private-field-warning/app-private-field-warning.vue'\r\nimport AppPublicVisibilityLabel from '@/components/app-public-visibility-warning/app-public-visibility-label.vue'\r\nimport AppPublicVisibilityWarning from '@/components/app-public-visibility-warning/app-public-visibility-warning.vue'\r\nimport AppRadio from '@/components/app-radio/app-radio.vue'\r\nimport AppReveal from '@/components/app-reveal/app-reveal.vue'\r\nimport AppSelect from '@/components/app-select/app-select.vue'\r\nimport { AppSidebar } from '@/components/app-sidebar/index.js'\r\nimport AppSwitch from '@/components/app-switch/app-switch.vue'\r\nimport AppTitle from '@/components/app-title/app-title.vue'\r\nimport { AppToolbar, AppToolbarGroup } from '@/components/app-toolbar/index.js'\r\nimport AppVerifiedCheckmark from '@/components/app-verified-checkmark/app-verified-checkmark.vue'\r\nimport AppWidget from '@/components/app-widget/app-widget.vue'\r\nimport CapitalizeFilter from '@/filters/capitalize.js'\r\nimport CurrencyCommaFilter from '@/filters/currencyComma.js'\r\nimport DateStringFilter from '@/filters/dateString.js'\r\nimport DateStringFilterShort from '@/filters/dateStringShort.js'\r\nimport i18n from '@/plugins/i18n.js'\r\nimport EmailWizard from '@/views/email-wizard/email-wizard-view.vue'\r\nimport ProjectViewWrapper from '@/views/projects/project-view/project-components/project-view-wrapper.vue'\r\nimport ElementUI from 'element-ui'\r\nimport locale from 'element-ui/lib/locale'\r\nimport lang from 'element-ui/lib/locale/lang/en'\r\nimport Vue from 'vue'\r\nimport VueDraggable from 'vue-draggable'\r\nimport Trap from 'vue-focus-lock'\r\nimport App from './App.vue'\r\nimport router from './router/index.js'\r\nimport store from './store/index.js'\r\nimport CKEditor from '@ckeditor/ckeditor5-vue2'\r\n\r\nimport { extendElementUIComponents } from './utils/accessibilityPatches.js'\r\n\r\n// configure language for element.ui\r\nlocale.use(lang)\r\n\r\n// use elemnt framework\r\nVue.use(ElementUI)\r\n\r\nVue.use(VueDraggable)\r\nVue.use(CKEditor)\r\n\r\nVue.component('app-grid', AppGrid)\r\nVue.component('app-empty', AppEmpty) //*\r\nVue.component('app-grid-pagination', AppGridPagination)\r\nVue.component('app-grid-actions', AppGridActions)\r\nVue.component('app-sidebar', AppSidebar)\r\nVue.component('app-panel', AppPanel)\r\nVue.component('app-panel-header', AppPanelHeader)\r\nVue.component('app-panel-content', AppPanelContent)\r\nVue.component('app-title', AppTitle)\r\nVue.component('app-reveal', AppReveal) // *\r\nVue.component('app-toolbar', AppToolbar)\r\nVue.component('app-toolbar-group', AppToolbarGroup) // *\r\nVue.component('app-listgroup', AppListGroup)\r\nVue.component('app-listgroup-item', AppListGroupItem)\r\nVue.component('app-avatar', AppAvatar)\r\nVue.component('app-input', AppInput)\r\nVue.component('app-field', AppField)\r\nVue.component('app-checkbox', AppCheckbox)\r\nVue.component('app-dialogbox', AppDialogBox)\r\nVue.component('app-radio', AppRadio)\r\nVue.component('app-icon', AppIcon)\r\nVue.component('app-button', AppButton)\r\nVue.component('app-input-file', AppInputFile)\r\nVue.component('app-editor', AppEditor)\r\nVue.component('app-column-button', AppColumnButton)\r\nVue.component('app-select', AppSelect)\r\nVue.component('email-wizard', EmailWizard)\r\nVue.component('project-view-wrapper', ProjectViewWrapper)\r\nVue.component('app-switch', AppSwitch)\r\nVue.component('app-permission-tooltip', AppPermissionTooltip)\r\nVue.component('app-public-visibility-warning', AppPublicVisibilityWarning)\r\nVue.component('app-public-visibility-label', AppPublicVisibilityLabel)\r\nVue.component('app-private-field-warning', AppPrivateFieldWarning)\r\nVue.component('app-private-field-label', AppPrivateFieldLabel)\r\nVue.component('app-widget', AppWidget) // *\r\nVue.component('app-verified-checkmark', AppVerifiedCheckmark) // *\r\nVue.component('app-focus-trap', Trap)\r\nVue.filter('dateString', DateStringFilter)\r\nVue.filter('dateStringShort', DateStringFilterShort)\r\nVue.filter('currencyComma', CurrencyCommaFilter)\r\nVue.filter('capitalize', CapitalizeFilter)\r\n\r\n// Accessibility patches\r\nconst { extendedDropdown, extendedTable } = extendElementUIComponents()\r\nVue.component('ElDropdown', extendedDropdown)\r\nVue.component('ElTable', extendedTable)\r\n\r\nVue.config.productionTip = false\r\n\r\n/* eslint-disable no-new */\r\n/* eslint-disable no-unused-vars */\r\nconst vm = new Vue({\r\n el: '#app',\r\n components: {\r\n App\r\n },\r\n render: (h) => h(App),\r\n store,\r\n router,\r\n i18n\r\n})\r\n"],"file":"assets/js/index-D46xoGdM.js"}