{"version":3,"file":"js/900-8c94f8d565de89c1653c.js","mappings":"kFAAA,IAAIA,EAAM,CACT,mBAAoB,KACpB,oBAAqB,KACrB,kCAAmC,KACnC,sCAAuC,KACvC,wCAAyC,KACzC,4CAA6C,KAC7C,yBAA0B,KAC1B,6BAA8B,KAC9B,oCAAqC,KACrC,wCAAyC,KACzC,yBAA0B,KAC1B,4BAA6B,KAC7B,0BAA2B,KAC3B,+BAAgC,KAChC,yBAA0B,KAC1B,4BAA6B,KAC7B,iBAAkB,KAClB,kBAAmB,KACnB,8BAA+B,KAC/B,kCAAmC,KACnC,uBAAwB,KACxB,2BAA4B,KAC5B,wBAAyB,KACzB,6BAA8B,KAC9B,yBAA0B,KAC1B,0BAA2B,KAC3B,8CAA+C,KAC/C,kDAAmD,KACnD,+BAAgC,KAChC,mCAAoC,KACpC,gCAAiC,KACjC,qCAAsC,KACtC,yBAA0B,KAC1B,0BAA2B,KAC3B,8CAA+C,KAC/C,kDAAmD,KACnD,oDAAqD,KACrD,wDAAyD,KACzD,wCAAyC,KACzC,4CAA6C,KAC7C,4CAA6C,KAC7C,gDAAiD,KACjD,oCAAqC,KACrC,wCAAyC,KACzC,+BAAgC,KAChC,mCAAoC,KACpC,mCAAoC,KACpC,wCAAyC,KACzC,gCAAiC,KACjC,qCAAsC,KACtC,+BAAgC,KAChC,kCAAmC,KACnC,qBAAsB,KACtB,sBAAuB,KACvB,sCAAuC,KACvC,0CAA2C,KAC3C,iCAAkC,KAClC,qCAAsC,KACtC,2BAA4B,KAC5B,+BAAgC,KAChC,4BAA6B,KAC7B,iCAAkC,KAClC,2BAA4B,KAC5B,+BAAgC,KAChC,wBAAyB,KACzB,yBAA0B,KAC1B,4CAA6C,KAC7C,gDAAiD,KACjD,+BAAgC,KAChC,mCAAoC,KACpC,8BAA+B,KAC/B,kCAAmC,KACnC,+BAAgC,KAChC,oCAAqC,KACrC,mBAAoB,KACpB,oBAAqB,KACrB,iCAAkC,IAClC,qCAAsC,IACtC,kCAAmC,KACnC,sCAAuC,KACvC,+BAAgC,KAChC,yBAA0B,KAC1B,6BAA8B,KAC9B,0BAA2B,KAC3B,+BAAgC,KAChC,oBAAqB,KACrB,qBAAsB,KACtB,oCAAqC,KACrC,wCAAyC,KACzC,0BAA2B,KAC3B,8BAA+B,KAC/B,2BAA4B,KAC5B,gCAAiC,MAIlC,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,CACP,CACA,OAAOP,EAAIE,EACZ,CACAD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,EACpB,EACAC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,I,6ECtDpB,UAvDsD,SAAHY,GAAA,IACjDC,EAASD,EAATC,UACAC,EAAQF,EAARE,SACAC,EAAKH,EAALG,MACAC,EAAQJ,EAARI,SACAC,EAAsBL,EAAtBK,uBACAC,EAAsBN,EAAtBM,uBAAsB,OAEtBC,EAAAA,cAAA,OAAKC,UAAWP,EAAY,gCAAkC,sBAC3DL,OAAOa,OAAON,GAAOlB,KAAI,SAACyB,EAAwBC,GAAK,OACtDJ,EAAAA,cAAA,OACEK,IAAKF,EAAWG,KAChBL,UAAU,sBACVM,SAAU,EACVC,QAAS,kBAAMT,EAAuBI,EAAW,GAEhDA,EAAWM,YACVT,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOC,EAAAA,yBAAyBR,EAAWG,MAC3CM,KAAI,8BAAAC,OAAgCT,EAAK,WACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,WAG1CJ,EAAAA,cAAA,OAAKC,UAAU,qBACbD,EAAAA,cAAA,SACEM,KAAK,WACLL,UAAU,gBACVa,QAASX,EAAWM,WACpBM,UAAQ,KAGZf,EAAAA,cAAA,OAAKC,UAAU,+BACbD,EAAAA,cAAA,OAAKC,UAAU,mBAAmBE,EAAWa,QAClC,OAAVb,QAAU,IAAVA,OAAU,EAAVA,EAAYc,WACXjB,EAAAA,cAAA,OAAKC,UAAU,sBAAsBE,EAAWc,UAEjDd,EAAWM,YACVT,EAAAA,cAAA,OACEC,UAAU,uBACViB,OAAQ,kBAAMpB,EAAuBK,EAAW,GAE/CA,EAAWgB,YAAYzC,KAAI,SAAC0C,GAAU,OACrCpB,EAAAA,cAAAA,EAAAA,SAAA,MACGqB,EAAAA,EAAAA,kBAAiBlB,EAAYiB,EAAYvB,EAAUH,EAAWC,EAAUS,GACxE,MAKP,IAEJ,C,ynECzCR,IA8PA,EA9PkE,SAAHX,GAExD,IADLE,EAAQF,EAARE,SAAU2B,EAAkB7B,EAAlB6B,mBAEJ5B,ECnByB,WAE/B,IAAI6B,EAAW,iEAAiEC,KAAKC,UAAUC,WAG/F,IAAKH,EAAU,CACb,IAAMI,EAAcC,OAAOC,OAAOC,MAC5BC,EAAeH,OAAOC,OAAOG,OACnCT,EAAYI,EAAc,KAAOI,EAAe,GAClD,CAQA,GALKR,IACHA,EAAa,iBAAkBK,QAAYH,UAAUQ,eAAiB,IAInEV,EAAU,CACb,IAAMW,EAAcC,SAASC,qBAAqB,QAAQ,GAC1Db,GAAmG,IAAxFK,OAAOS,iBAAiBH,GAAaI,iBAAiB,WAAWC,QAAQ,SACtF,CAEA,OAAOhB,CACT,CDJoBiB,GAEZC,GAAgBC,EAAAA,EAAAA,UAAQ,WAC5B,GAAkC,IAA9BpB,EAAmBqB,OACrB,OAAOC,EAAAA,EAAAA,sBAEP,IAAIC,GAAkBD,EAAAA,EAAAA,sBA0EtB,OAxEAtB,EAAmBwB,SAAQ,SAACC,GAAuB,IAADC,EAAAC,EAChD,OAAQF,EAAkBzC,MACxB,KAAKK,EAAAA,yBAAyBuC,kBAC5BL,EAAgBM,EAAAA,eAAeD,mBAAkBE,EAAAA,EAAA,GAC5CP,EAAgBK,mBAAiB,IACpCG,MAAON,EAAkBO,cACzBC,WAAYR,EAAkBQ,WAC9B9C,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyB6C,mBAC5BX,EAAgBM,EAAAA,eAAeK,oBAAmBJ,EAAAA,EAAA,GAC7CP,EAAgBW,oBAAkB,IACrCrE,KAAM4D,EAAkB5D,KACxBoE,WAAYR,EAAkBQ,WAC9B9C,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyB8C,gBAC5BZ,EAAgBM,EAAAA,eAAeM,iBAAgBL,EAAAA,EAAA,GAC1CP,EAAgBY,iBAAe,IAClCtE,KAAM4D,EAAkB5D,KACxBoE,WAAYR,EAAkBQ,WAC9B9C,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyB+C,SAC5Bb,EAAgBM,EAAAA,eAAeO,UAASN,EAAAA,EAAA,GACnCP,EAAgBa,UAAQ,IAC3BvE,KAAM4D,EAAkB5D,KACxBoE,WAAYR,EAAkBQ,WAC9B9C,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyBgD,UAC5Bd,EAAgBM,EAAAA,eAAeQ,WAAUP,EAAAA,EAAA,GACpCP,EAAgBc,WAAS,IAC5BJ,WAAYR,EAAkBQ,WAC9B9C,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyBiD,kBAC5Bf,EAAgBM,EAAAA,eAAeS,mBAAkBR,EAAAA,EAAA,GAC5CP,EAAgBe,mBAAiB,IACpCC,SAAUd,EAAkBe,aAC5BC,YAAmD,QAAxCf,EAAED,EAAkBiB,4BAAoB,IAAAhB,OAAA,EAAtCA,EAAwCiB,MAAM,EAAG,IAC9DC,UAAiD,QAAtCjB,EAAAF,EAAkBiB,4BAAoB,IAAAf,GAAtCA,EAAwCkB,SAAS,OAASpB,EAAkBiB,qBAAqBI,MAAM,QAAQ,GAAK,GAC/HC,MAAOtB,EAAkBuB,cACzB7D,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyB4D,YAC5B1B,EAAgBM,EAAAA,eAAeoB,aAAYnB,EAAAA,EAAA,GACtCP,EAAgB0B,aAAW,IAC9BC,QAASzB,EAAkB0B,SAC3BC,MAAO3B,EAAkB4B,OACzBlE,YAAY,IAEd,MACF,KAAKE,EAAAA,yBAAyBiE,QAC5B/B,EAAgBM,EAAAA,eAAeyB,SAAW,CACxCtE,KAAM6C,EAAAA,eAAeyB,QACrB5D,MAAO6D,EAAAA,oBAAoBD,QAC3BzD,YAAa,CAAC2D,EAAAA,eAAevB,YAC7BwB,yBAAyB,EACzBxB,WAAYR,EAAkBQ,WAC9B9C,YAAY,GAEhB,QACE,OAAOoC,EAEb,IACOA,CAEX,GAAG,CAACvB,IAE2D0D,EAAAC,GAAlCC,EAAAA,EAAAA,YAAWC,EAAAA,QAAS1C,GAAc,GAAxD7C,EAAKoF,EAAA,GAAEI,EAAWJ,EAAA,GACnBnF,EAAW,SAACQ,EAAqBK,GAAU,OAAK0E,EAAY,CAAE9E,KAAM+E,EAAAA,OAAOC,IAAKjF,IAAAA,EAAKK,MAAAA,GAAS,EAE9F6E,GAAsB7C,EAAAA,EAAAA,UAAQ,kBAAMrD,OAAOa,OAAON,GAAO4F,QAAO,SAACrF,GAAU,OAAKA,EAAWM,UAAU,GAAC,GAAE,CAACb,IAEzG6F,GAA4B/C,EAAAA,EAAAA,UAAQ,WACxC,IAAIgD,GAAqC,EACrCC,EAAoC,EACpCC,EAAsD,OAAnBL,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqB5C,OAE5D,IAAuB,OAAnB4C,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqB5C,QAAS,EAAG,CAgDnC,GA/CA4C,EAAoBzC,SAAQ,SAAC3C,GAAqB,IAAD0F,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC/C,OAAQtG,EAAWG,MACjB,KAAK6C,EAAAA,eAAeD,kBAClB,IAAoB,QAAhB2C,EAAA1F,EAAWkD,aAAK,IAAAwC,OAAA,EAAhBA,EAAkBlD,QAAS,IAA0B,QAArBmD,EAAA3F,EAAWoD,kBAAU,IAAAuC,OAAA,EAArBA,EAAuBnD,QAAS,EAElE,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeK,mBAClB,IAAmB,QAAfuC,EAAA5F,EAAWhB,YAAI,IAAA4G,OAAA,EAAfA,EAAiBpD,QAAS,IAA0B,QAArBqD,EAAA7F,EAAWoD,kBAAU,IAAAyC,OAAA,EAArBA,EAAuBrD,QAAS,EAEjE,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeO,SAClB,IAAmB,QAAfuC,EAAA9F,EAAWhB,YAAI,IAAA8G,OAAA,EAAfA,EAAiBtD,QAAS,IAA0B,QAArBuD,EAAA/F,EAAWoD,kBAAU,IAAA2C,OAAA,EAArBA,EAAuBvD,QAAS,EAEjE,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeM,gBAClB,IAAmB,QAAf0C,EAAAhG,EAAWhB,YAAI,IAAAgH,OAAA,EAAfA,EAAiBxD,QAAS,IAA0B,QAArByD,EAAAjG,EAAWoD,kBAAU,IAAA6C,OAAA,EAArBA,EAAuBzD,QAAS,EAEjE,YADA+C,GAA4B,GAGhC,KAAKvC,EAAAA,eAAeQ,UAClB,IAAyB,QAArB0C,EAAAlG,EAAWoD,kBAAU,IAAA8C,OAAA,EAArBA,EAAuB1D,QAAS,EAElC,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeS,kBAClB,IAAuB,QAAnB0C,EAAAnG,EAAW0D,gBAAQ,IAAAyC,OAAA,EAAnBA,EAAqB3D,QAAS,IAA2B,QAAtB4D,EAAApG,EAAW4D,mBAAW,IAAAwC,OAAA,EAAtBA,EAAwB5D,SAAU,GAEvE,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeoB,YAClB,IAAsB,QAAlBiC,EAAArG,EAAWqE,eAAO,IAAAgC,OAAA,EAAlBA,EAAoB7D,QAAS,EAE/B,YADAgD,IAGJ,KAAKxC,EAAAA,eAAeyB,QAClB,IAAyB,QAArB6B,EAAAtG,EAAWoD,kBAAU,IAAAkD,OAAA,EAArBA,EAAuB9D,QAAS,EAElC,YADAgD,IAGJ,QAAS,OAEb,IAGIJ,EAAoBmB,MAAK,SAACvG,GAAU,OAAKA,EAAWG,OAAS6C,EAAAA,eAAeM,eAAe,KAC1FiC,GACAC,IAA8BC,EAA2B,EAC5D,OAAO,EAET,GAAID,EAA4B,GAAKA,IAA8BC,EAA0B,OAAO,CACtG,CACA,OAAO,CACT,GAAG,CAACL,IAyFJ,OAVAoB,EAAAA,EAAAA,YAAU,WACR,GAAIlB,EAAkB,CACpB,IAAImB,EAAQ,IAAIC,MAAM,+BACtB1E,SAAS2E,cAAcF,EACzB,KAAO,CACDA,EAAQ,IAAIC,MAAM,iCACtB1E,SAAS2E,cAAcF,EACzB,CACF,GAAG,CAACnB,IAGHzF,EAAAA,cAAC+G,EAAAA,QAAc,CACdrH,UAAWA,EACXC,SAAUA,EACVC,MAAOA,EACPC,SAAUA,EACVC,uBAzF6B,SAACK,GAAqB,IAAD6G,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAClD,GAAK1H,EAAWM,WAAhB,CAGA,IAAMqH,EAAkB1E,EAAA,GAAOjD,GAC/B,OAAQA,EAAWG,MACjB,KAAK6C,EAAAA,eAAeD,kBACb7D,OAAOa,OAAO6H,EAAAA,qBAAqB5D,SAAShE,EAAWkD,SAC1DyE,EAAmBE,gBAAiB,IAEb,QAArBhB,EAAA7G,EAAWoD,kBAAU,IAAAyD,OAAA,EAArBA,EAAuBrE,QAAS,IAClCmF,EAAmBG,qBAAsB,GAE3C,MACF,KAAK9E,EAAAA,eAAeK,oBACC,QAAfyD,EAAA9G,EAAWhB,YAAI,IAAA8H,OAAA,EAAfA,EAAiBiB,OAAOC,QAAQ,WAAY,IAAIxF,QAAS,IAC3DmF,EAAmBM,eAAgB,IAEZ,QAArBlB,EAAA/G,EAAWoD,kBAAU,IAAA2D,OAAA,EAArBA,EAAuBvE,QAAS,IAClCmF,EAAmBG,qBAAsB,GAE3C,MAEF,KAAK9E,EAAAA,eAAeM,gBAClB,IAAmB,QAAf0D,EAAAhH,EAAWhB,YAAI,IAAAgI,OAAA,EAAfA,EAAiBe,OAAOC,QAAQ,WAAY,IAAIxF,QAAS,IAA0B,QAArByE,EAAAjH,EAAWoD,kBAAU,IAAA6D,OAAA,EAArBA,EAAuBzE,QAAS,EAAG,CACnGmF,EAAmBM,eAAgB,EACnCN,EAAmBG,qBAAsB,EACzC,KACF,CACA,IAAmB,QAAfZ,EAAAlH,EAAWhB,YAAI,IAAAkI,OAAA,EAAfA,EAAiB1E,QAAS,IAA0B,QAArB2E,EAAAnH,EAAWoD,kBAAU,IAAA+D,OAAA,EAArBA,EAAuB3E,QAAS,EAAG,CACpEmF,EAAmBM,eAAgB,EACnCN,EAAmBG,qBAAsB,EACzC,KACF,CACF,KAAK9E,EAAAA,eAAeO,UACC,QAAf6D,EAAApH,EAAWhB,YAAI,IAAAoI,OAAA,EAAfA,EAAiBW,OAAOC,QAAQ,WAAY,IAAIxF,QAAS,IAC3DmF,EAAmBM,eAAgB,IAEZ,QAArBZ,EAAArH,EAAWoD,kBAAU,IAAAiE,OAAA,EAArBA,EAAuB7E,QAAS,IAClCmF,EAAmBG,qBAAsB,GAE3C,MACF,KAAK9E,EAAAA,eAAeQ,WACO,QAArB8D,EAAAtH,EAAWoD,kBAAU,IAAAkE,OAAA,EAArBA,EAAuB9E,QAAS,IAClCmF,EAAmBG,qBAAsB,GAE3C,MACF,KAAK9E,EAAAA,eAAeS,mBACK,QAAnB8D,EAAAvH,EAAW0D,gBAAQ,IAAA6D,OAAA,EAAnBA,EAAqB/E,QAAS,IAChCmF,EAAmBO,mBAAoB,IAEf,QAAtBV,EAAAxH,EAAW4D,mBAAW,IAAA4D,OAAA,EAAtBA,EAAwBhF,QAAS,KACnCmF,EAAmBQ,sBAAuB,IAExB,QAAhBV,EAAAzH,EAAWkE,aAAK,IAAAuD,OAAA,EAAhBA,EAAkBjF,QAAS,IAAM,eAAenB,KAAKrB,EAAWkE,SAClEyD,EAAmBS,gBAAiB,GAEtC,MACF,KAAKpF,EAAAA,eAAeoB,YACblF,OAAOa,OAAOP,GAAUwE,SAAShE,EAAWqE,UAC/CsD,EAAmBU,iBAErB,MACF,KAAKrF,EAAAA,eAAeyB,SACO,QAArBiD,EAAA1H,EAAWoD,kBAAU,IAAAsE,OAAA,EAArBA,EAAuBlF,QAAS,IAClCmF,EAAmBG,qBAAsB,GAK/CpI,EAASM,EAAWG,KAAMwH,EAnE1B,CAoEF,EAmBE/H,uBA9F6B,SAACI,GAAe,OAC7CN,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEM,YAAaN,EAAWM,aAAa,GAgGpF,C,yDE1QA,UAAegI,EAAoB,O,kHCEtBC,EAAsB,SAAC3E,GAAmB,OAAKA,EAAYoE,QAAQ,MAAO,IAAIQ,UAAU,EAAG,GAAI,EAM/FC,EAAoB,SAAC7E,GAChC,IAAKA,EAAa,OAAOA,EACzB,IAAM8E,EAAaH,EAAoB3E,GAEvC,OAAI8E,EAAWlG,OAAS,EAAUkG,EAC9BA,EAAWlG,OAAS,EAChB,IAAN9B,OAAWgI,EAAW5E,MAAM,EAAG,GAAE,MAAApD,OAAKgI,EAAW5E,MAAM,IAGnD,IAANpD,OAAWgI,EAAW5E,MAAM,EAAG,GAAE,MAAApD,OAAKgI,EAAW5E,MAAM,EAAG,GAAE,KAAApD,OAAIgI,EAAW5E,MAAM,EAAG,IACtF,E,4/BCVO,IAAM5C,EAAmB,SAC9BlB,EACAiB,EACAvB,EACAH,EACAC,EACAS,GAEA,OAAQgB,GACN,KAAK0D,EAAAA,eAAezB,MAClB,OACErD,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,2BAC5CD,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWkD,MAClBzC,KAAI,8BAAAC,OAAgCT,EAAK,oBACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,oBAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,UACEY,KAAK,mBACLX,UAAWE,EAAW6H,eAAiB,8BAAgC,uBACvEc,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEkD,MAAOpE,EAAE8J,OAAOrI,QAAQ,EACpFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE6H,gBAAgB,IAAQ,EAClFxH,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,EAC3DC,KAAMzJ,EAAY,EAAI,GAEtBM,EAAAA,cAAA,UAAQK,IAAK,eAAe,IAAE+I,EAAAA,0BAA0B/F,MAAM,KAC7DhE,OAAOa,OAAO6H,EAAAA,qBAAqBrJ,KAAI,SAAC2K,GAAe,OACtDrJ,EAAAA,cAAA,UAAQK,IAAKgJ,GAAiB,IAAEA,EAAgB,IAAU,KAG7DlJ,EAAW6H,gBACVhI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoBjG,SAMjC,KAAKyB,EAAAA,eAAe3F,KAClB,OACEa,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,2BAC5CD,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWhB,KAClByB,KAAI,8BAAAC,OAAgCT,EAAK,WACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,WAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEU,MAAOP,EAAWhB,KAClBoK,YAAaH,EAAAA,0BAA0BjK,KACvCc,UAAWE,EAAWiI,cAAgB,yBAA2B,kBACjEoB,UAAW,GACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEhB,KAAMF,EAAE8J,OAAOrI,QAAQ,EACnFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEiI,eAAe,IAAQ,EACjF5H,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAE5D/I,EAAWiI,eACVpI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoBnK,QAMjC,KAAK2F,EAAAA,eAAevB,WAClB,OACEvD,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,oCAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWoD,WAClB3C,KAAI,8BAAAC,OAAgCT,EAAK,iBACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,iBAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAC/C1B,EACCM,EAAAA,cAAA,YACEyJ,KAAM,EACN/I,MAAOP,EAAWoD,WAClBgG,YAAaH,EAAAA,0BAA0B7F,WACvCtD,UAAWE,EAAW8H,oBAAsB,mBAAqB,YACjEuB,UAAW,IACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEoD,WAAYtE,EAAE8J,OAAOrI,QAAQ,EACzFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE8H,qBAAqB,IAAQ,EACvFzH,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAG7DlJ,EAAAA,cAAA,SACEU,MAAOP,EAAWoD,WAClBgG,YAAaH,EAAAA,0BAA0B7F,WACvCtD,UAAWE,EAAW8H,oBAAsB,mBAAqB,YACjEuB,UAAW,IACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEoD,WAAYtE,EAAE8J,OAAOrI,QAAQ,EACzFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE8H,qBAAqB,IAAQ,EACvFzH,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAG9D/I,EAAW8H,qBACVjI,EAAAA,cAAA,OAAKC,UAAU,uBACZE,EAAWG,OAAS6C,EAAAA,eAAeM,iBAAmB6F,EAAAA,oBAAoBI,oBAC1EvJ,EAAWG,OAAS6C,EAAAA,eAAeO,UAAY4F,EAAAA,oBAAoBK,eACnExJ,EAAWG,OAAS6C,EAAAA,eAAeQ,WAAa2F,EAAAA,oBAAoBM,oBACpEzJ,EAAWG,OAAS6C,EAAAA,eAAeD,mBAAqBoG,EAAAA,oBAAoBO,kBAC5E1J,EAAWG,OAAS6C,EAAAA,eAAeK,oBAAsB8F,EAAAA,oBAAoBO,qBAM1F,KAAK/E,EAAAA,eAAejB,SAClB,OACE7D,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,oCAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAW0D,SAClBjD,KAAI,8BAAAC,OAAgCT,EAAK,mBACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,mBAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEC,UAAWE,EAAWkI,kBAAoB,mBAAqB,YAC/D3H,MAAOP,EAAW0D,SAClB0F,YAAaH,EAAAA,0BAA0BvF,SACvC2F,UAAW,GACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE0D,SAAU5E,EAAE8J,OAAOrI,QAAQ,EACvFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEkI,mBAAmB,IAAQ,EACrF7H,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAE5D/I,EAAWkI,mBACVrI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoBzF,YAMjC,KAAKiB,EAAAA,eAAeJ,MAClB,OACE1E,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,oCAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWuE,MAClB9D,KAAI,8BAAAC,OAAgCT,EAAK,aACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,aAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEC,UAAU,YACVS,MAAOP,EAAWuE,MAClB6E,YAAaH,EAAAA,0BAA0B1E,MACvC8E,UAAW,GACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEuE,MAAOzF,EAAE8J,OAAOrI,QAAQ,EACpFF,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,MAKrE,KAAKpE,EAAAA,eAAeN,QAClB,OACExE,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,oCAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWqE,QAClB5D,KAAI,8BAAAC,OAAgCT,EAAK,eACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,eAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,UACEC,UAAWE,EAAWqI,iBAAmB,uBAAyB,gBAClEM,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEqE,QAASvF,EAAE8J,OAAOrI,QAAQ,EACtFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEqI,kBAAkB,IAAQ,EACpFhI,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,EAC3DC,KAAMzJ,EAAY,EAAI,GAErBL,OAAOa,OAAOP,GAAUmK,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,cAAcC,cAAcF,EAAEC,cAAc,IAAEvL,KAAI,SAACyL,GAAO,OAClGnK,EAAAA,cAAA,UAAQK,IAAK8J,GAAS,IAAEA,EAAQ,IAAU,KAG7ChK,EAAWqI,kBACVxI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoB9E,WAMjC,KAAKM,EAAAA,eAAef,YAClB,OACE/D,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,oCAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAK,GAAAG,OAAK+H,EAAkBzI,EAAW4D,cAAYlD,OAAGV,EAAW+D,UAAS,QAAArD,OAAWV,EAAW+D,WAAc,IAC9GtD,KAAI,8BAAAC,OAAgCT,EAAK,2BACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,2BAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEuJ,YAAaH,EAAAA,0BAA0BrF,YACvC9D,UAAWE,EAAWmI,qBAAuB,mBAAqB,YAClE5H,MAAOkI,EAAkBzI,EAAW4D,aACpC+E,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE4D,YAAa2E,EAAoBzJ,EAAE8J,OAAOrI,SAAS,EAC/GsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEmI,sBAAsB,IAAQ,EACxF9H,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAE5D/I,EAAWmI,sBACVtI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoBvF,eAMjC,KAAKe,EAAAA,eAAeZ,UAClB,OACElE,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,2BAC5CD,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEU,MAAOP,EAAW+D,UAClBqF,YAAaH,EAAAA,0BAA0BlF,UACvCjE,UAAU,kBACVuJ,UAAW,EACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAE+D,UAAWjF,EAAE8J,OAAOrI,QAAQ,EACxFF,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,MAKrE,KAAKpE,EAAAA,eAAeT,MAClB,OACErE,EAAAA,cAAA,OAAKK,IAAG,GAAAQ,OAAKO,EAAU,KAAAP,OAAIT,GAASH,UAAU,8CAC5CD,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,SACEM,KAAK,SACLI,MAAOP,EAAWkE,MAClBzD,KAAI,8BAAAC,OAAgCT,EAAK,oBACzCvB,GAAE,6BAAAgC,OAA+BT,EAAK,oBAExCJ,EAAAA,cAAA,SAAOC,UAAU,mBAAkB,IAAEmB,EAAW,KAChDpB,EAAAA,cAAA,SACEC,UAAWE,EAAWoI,eAAiB,mBAAqB,YAC5D7H,MAAOP,EAAWkE,MAClBkF,YAAaH,EAAAA,0BAA0B/E,MACvCmF,UAAW,IACXV,SAAU,SAAC7J,GAAC,OAAKY,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEkE,MAAOpF,EAAE8J,OAAOrI,QAAQ,EACpFsI,QAAS,kBAAMnJ,EAASM,EAAWG,KAAI8C,EAAAA,EAAA,GAAOjD,GAAU,IAAEoI,gBAAgB,IAAQ,EAClF/H,QAAS,SAACvB,GAAQA,EAAEgK,iBAAkBhK,EAAEiK,iBAAmB,IAE5D/I,EAAWoI,gBACVvI,EAAAA,cAAA,OAAKC,UAAU,uBACZqJ,EAAAA,oBAAoBjF,SAMjC,QACE,OACErE,EAAAA,cAAAA,EAAAA,SAAA,MAGR,C,moCC3QO,IAAM4C,EAAqB,WAAH,MAAgC,CAC7DY,mBAAoB4G,EAAAA,+BACpBlH,kBAAmBmH,EAAAA,8BACnBzG,kBAAmB0G,EAAAA,8BACnB3G,UAAW4G,EAAAA,sBACX9G,gBAAiB+G,EAAAA,4BACjB9G,SAAU+G,EAAAA,qBACVlG,YAAamG,EAAAA,wBACd,EAEYvF,EAAU,SAACvF,EAA4B+K,GAClD,OAAQA,EAAOrK,MACb,KAAK+E,EAAAA,OAAOC,IACV,OAAAlC,EAAAA,EAAA,GAAYxD,GAAK,GAAAgL,EAAA,GAAGD,EAAOtK,IAAgBsK,EAAOjK,QACpD,KAAK2E,EAAAA,OAAOwF,SACV,OAAAzH,EAAAA,EAAA,GAAYxD,GAAU+K,EAAOjK,OAC/B,KAAK2E,EAAAA,OAAOyF,MACV,OAAOlI,IACT,QACE,OAAOhD,EAEb,C,yuBCjCO,IAAKiF,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,yCAAnBA,EAAmB,iCAAnBA,EAAmB,yCAAnBA,EAAmB,uBAAnBA,EAAmB,mCAAnBA,EAAmB,qBAAnBA,EAAmB,0BAAnBA,EAAmB,8CAAnBA,CAAmB,MAWnBkG,EAAsB,SAAtBA,GAAsB,OAAtBA,EAAsB,yDAAtBA,EAAsB,0KAAtBA,EAAsB,oGAAtBA,EAAsB,uEAAtBA,CAAsB,MAOtBjG,EAAc,SAAdA,GAAc,OAAdA,EAAc,YAAdA,EAAc,wBAAdA,EAAc,cAAdA,EAAc,qBAAdA,EAAc,2BAAdA,EAAc,iBAAdA,EAAc,mBAAdA,EAAc,eAAdA,EAAc,cAAdA,CAAc,MAYdwE,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,yBAAnBA,EAAmB,kEAAnBA,EAAmB,sEAAnBA,EAAmB,2DAAnBA,EAAmB,uDAAnBA,EAAmB,yBAAnBA,EAAmB,yCAAnBA,EAAmB,yCAAnBA,EAAmB,iCAAnBA,EAAmB,oCAAnBA,CAAmB,MAanBF,EAAyB,SAAzBA,GAAyB,OAAzBA,EAAyB,YAAzBA,EAAyB,sEAAzBA,EAAyB,qBAAzBA,EAAyB,oBAAzBA,EAAyB,6BAAzBA,EAAyB,gBAAzBA,EAAyB,0BAAzBA,EAAyB,mBAAzBA,EAAyB,4BAAzBA,CAAyB,MAYzBrB,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,uBAAnBA,EAAmB,gBAAnBA,EAAmB,wBAAnBA,EAAmB,cAAnBA,CAAmB,MAgGnB1C,EAAM,SAANA,GAAM,OAANA,EAAM,UAANA,EAAM,qBAANA,EAAM,cAANA,CAAM,MAMNlC,EAAc,SAAdA,GAAc,OAAdA,EAAc,wCAAdA,EAAc,sCAAdA,EAAc,sCAAdA,EAAc,sBAAdA,EAAc,kCAAdA,EAAc,oBAAdA,EAAc,0BAAdA,EAAc,kBAAdA,CAAc,MAWdxC,EAAwB,SAAxBA,GAAwB,OAAxBA,EAAwB,2DAAxBA,EAAwB,yDAAxBA,EAAwB,yDAAxBA,EAAwB,yCAAxBA,EAAwB,qDAAxBA,EAAwB,uCAAxBA,EAAwB,6CAAxBA,EAAwB,4BAAxBA,CAAwB,MA4BvB0J,EAAuD,CAClE/J,KAAM6C,EAAeD,kBACrBlC,MAAO6D,EAAoBmG,WAC3B/J,SAAU8J,EAAuBC,WACjCvK,YAAY,EACZU,YAAa,CAAC2D,EAAezB,MAAOyB,EAAevB,YACnDF,MAAO,GACPE,WAAY,GACZyE,gBAAgB,EAChBC,qBAAqB,GAGVmC,EAAyD,CACpE9J,KAAM6C,EAAeK,mBACrBxC,MAAO6D,EAAoBrB,mBAC3BvC,cAAUgK,EACVxK,YAAY,EACZU,YAAa,CAAC2D,EAAe3F,KAAM2F,EAAevB,YAClDpE,KAAM,GACNoE,WAAY,GACZ6E,eAAe,EACfH,qBAAqB,GAGVqC,EAAuD,CAClEhK,KAAM6C,EAAeS,kBACrB5C,MAAO6D,EAAoBjB,kBAC3B3C,SAAU8J,EAAuBnH,kBACjCnD,YAAY,EACZU,YAAa,CAAC2D,EAAejB,SAAUiB,EAAef,YAAae,EAAeZ,UAAWY,EAAeT,OAC5GR,SAAU,GACVE,YAAa,GACbG,UAAW,GACXG,MAAO,GACPgE,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,GAGLgC,EAAuC,CAClDjK,KAAM6C,EAAeQ,UACrB3C,MAAO6D,EAAoBlB,UAC3B1C,cAAUgK,EACVxK,YAAY,EACZU,YAAa,CAAC2D,EAAevB,YAC7BA,WAAY,GACZ0E,qBAAqB,GAGVuC,EAAmD,CAC9DlK,KAAM6C,EAAeM,gBACrBzC,MAAO6D,EAAoBpB,gBAC3BxC,SAAU8J,EAAuBtH,gBACjChD,YAAY,EACZU,YAAa,CAAC2D,EAAe3F,KAAM2F,EAAevB,YAClDpE,KAAM,GACNoE,WAAY,GACZ6E,eAAe,EACfH,qBAAqB,GAGVwC,EAAqC,CAChDnK,KAAM6C,EAAeO,SACrB1C,MAAO6D,EAAoBnB,SAC3BzC,cAAUgK,EACVxK,YAAY,EACZU,YAAa,CAAC2D,EAAe3F,KAAM2F,EAAevB,YAClDpE,KAAM,GACNoE,WAAY,GACZ6E,eAAe,EACfH,qBAAqB,GAGVyC,EAA2C,CACtDpK,KAAM6C,EAAeoB,YACrBvD,MAAO6D,EAAoBN,YAC3BtD,SAAU8J,EAAuBxG,YACjC9D,YAAY,EACZU,YAAa,CAAC2D,EAAeN,QAASM,EAAeJ,OACrDF,QAAS,GACTE,MAAO,GACP8D,kBAAkB,E,wGCvQpB,EAVoB,YAChB7B,EAAAA,EAAAA,YAAU,WACN,IAAMuE,EAAKtJ,OAAeuJ,OAErBD,GAELA,EAAE,2BAA2BE,SACjC,GAAG,GACP,E,02ECXuB,IAChBC,EAAiB,SAAAC,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,QAAAuL,EAAA,m9BAAAC,KAAA,cAAjBH,EAAiBI,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,kCACjBC,EAAY,SAAAL,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,QAAAuL,EAAA,qGAAAC,KAAA,UAAAI,OAAA,UAAAC,YAAA,OAAA7L,EAAAA,cAAA,QAAAuL,EAAA,8EAAAC,KAAA,UAAAI,OAAA,UAAAC,YAAA,OAAA7L,EAAAA,cAAA,QAAAuL,EAAA,iEAAAC,KAAA,UAAAI,OAAA,UAAAC,YAAA,SAAZF,EAAYF,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,kCACZI,EAAe,SAAAR,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,QAAAuL,EAAA,unBAAAC,KAAA,cAAfM,EAAeL,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,kCACfK,EAAa,SAAAT,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,KAAAgM,SAAA,WAAAhM,EAAAA,cAAA,QAAAuL,EAAA,8IAAAC,KAAA,UAAAxL,EAAAA,cAAA,YAAAA,EAAAA,cAAA,YAAAnB,GAAA,KAAAmB,EAAAA,cAAA,QAAAwL,KAAA,OAAAD,EAAA,sBAAbQ,EAAaN,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,kCACbO,EAAY,SAAAX,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,KAAAgM,SAAA,WAAAhM,EAAAA,cAAA,QAAAuL,EAAA,iKAAAC,KAAA,UAAAxL,EAAAA,cAAA,YAAAA,EAAAA,cAAA,YAAAnB,GAAA,KAAAmB,EAAAA,cAAA,QAAAwL,KAAA,OAAAD,EAAA,sBAAZU,EAAYR,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,8BA0BnB,IAqUA,EArUsC,SAAHjM,GAA+G,IAA1GyM,EAAazM,EAAbyM,cAAeC,EAAoB1M,EAApB0M,qBAAsBC,EAAO3M,EAAP2M,QAASC,EAAc5M,EAAd4M,eAA4BC,EAAiB7M,EAA7B8M,WAA+BC,EAAM/M,EAAN+M,OACmCC,EAAAxH,GAApIyH,EAAAA,EAAAA,UAA0BR,GAAiBI,EAAkB3J,OAAS,EAAI,aAAgB0J,EAAexN,GAAK,cAAgB,MAAM,GAA7J8N,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GACwCI,EAAA5H,GAAtCyH,EAAAA,EAAAA,UAASL,EAAeS,SAAW,IAAG,GAA7DA,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC0CG,EAAA/H,GAAtCyH,EAAAA,EAAAA,UAASL,EAAeY,SAAW,IAAG,GAA7DA,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC+JG,EAAAlI,GAArJyH,EAAAA,EAAAA,UAASJ,EAAkB3J,OAAS,EAAI2J,EAAoB,CAAC,CAAE1L,KAAM,GAAI/B,GAAI,KAAMuO,cAAe,MAAO,CAAExM,KAAM,GAAI/B,GAAI,KAAMuO,cAAe,QAAO,GAAlLb,EAAUY,EAAA,GAAEE,EAAaF,EAAA,GAC4CG,EAAArI,GAAtByH,EAAAA,EAAAA,UAAmB,IAAG,GAArEa,EAAmBD,EAAA,GAAEE,EAAsBF,EAAA,GACLG,EAAAxI,GAAjByH,EAAAA,EAAAA,UAAc,CAAC,GAAE,GAAtCgB,EAAMD,EAAA,GAAEE,EAASF,EAAA,GAExBG,KAEAjH,EAAAA,EAAAA,YAAU,WACN,IAAMkH,EAAe1L,SAAS2L,eAAe,sBAEzCnB,GAA2C,IAA/BtN,OAAOD,KAAKsO,GAAQ/K,OAChCkL,EAAaE,UAAW,EAExBF,EAAaE,UAAW,CAEhC,GAAG,CAACpB,EAAUe,IAEd,IAAaM,GAAWC,EAAAA,EAAAA,iBAAgB,CACpCzB,OAAQA,EACR0B,gBAAiB,SAACC,GACdpB,EAAWoB,EAAMC,kBACrB,EACAC,QAAS,CACLC,MAAO,CAAC,WACRC,sBAAuB,CAACC,QAAS,CAAC,KAAM,UAPxCC,IAWFC,EAAmB,SAACC,GACtB/B,EAAY+B,GACO,cAAfA,EACAC,EAAoB3B,EAAS,GAE7BC,EAAWX,EAAW,GAAG3L,KAEjC,EAEMgO,EAAsB,SAAChO,EAAMR,GAC/B,GAAIQ,GAAQ2L,EAAW7N,KAAI,SAAAmQ,GAAS,OAAIA,EAAUjO,IAAI,IAAEuD,SAASvD,GAC7D+M,EAASvK,EAAAA,EAAC,CAAC,EAAGsK,GAAM,GAAA9C,EAAA,GAAGxK,EAAQ,CAAC0O,UAAU,UACvC,CACH,IAAIC,EAAS3L,EAAA,GAAOsK,UACbqB,EAAU3O,GACjBuN,EAAUoB,EACd,CAEA,IAAIC,EAAaC,EAAO1C,GACxByC,EAAc5O,GAAMgD,EAAAA,EAAA,GAAOmJ,EAAWnM,IAAM,IAAEQ,KAAAA,IAC9CyM,EAAc2B,EAClB,EAEME,EAA+B,SAAC9B,EAAehN,GACjD,IAAI4O,EAAaC,EAAO1C,GACxByC,EAAc5O,GAAMgD,EAAAA,EAAA,GAAOmJ,EAAWnM,IAAM,IAAEgN,cAAAA,IAC9CC,EAAc2B,EAClB,EAeA,OACIhP,EAAAA,cAAAA,EAAAA,SAAA,MACMkM,GAAiBE,IACfpM,EAAAA,cAAA,OAAKC,UAAU,cACViM,GACGlM,EAAAA,cAAA,aAAO,oCAIXA,EAAAA,cAAA,OAAKC,UAAU,OACXD,EAAAA,cAAA,OAAK,cAAY,UAAUgB,MAAM,8CAA8Cf,UAAU,wBACrFD,EAAAA,cAAA,SAAOC,UAAU,2BACVW,KAAK,wCACLN,KAAK,QACLI,MAAM,cACNyO,UAAU,EACVrO,QAAsB,gBAAb6L,EACT7D,SAAU,SAAC7J,GACHA,EAAE8J,OAAOjI,SACT4N,EAAiB,cAEzB,IACP1O,EAAAA,cAAA,SAAOC,UAAU,+BAA+BO,QAAS,WACrDkO,EAAiB,cACrB,GACI1O,EAAAA,cAAA,OAAKC,UAAU,oCACXD,EAAAA,cAAA,QAAMC,UAAU,kBAAiBD,EAAAA,cAAC8L,EAAe,OAAS,gBAIlE9L,EAAAA,cAAA,OAAKC,UAAU,yBAAwB,mCAI1CiM,GACGlM,EAAAA,cAAA,OAAK,cAAY,UAAUgB,MAAM,4DAA4Df,UAAU,mBACnGD,EAAAA,cAAA,SAAOC,UAAU,2CACVW,KAAK,wCACLN,KAAK,QACLI,MAAM,aACNyO,UAAU,EACVrO,QAAsB,eAAb6L,EACT7D,SAAU,SAAC7J,GACHA,EAAE8J,OAAOjI,SACT4N,EAAiB,aAEzB,IACP1O,EAAAA,cAAA,SAAOC,UAAU,+BAA+BO,QAAS,WACrDkO,EAAiB,aACrB,GACI1O,EAAAA,cAAA,OAAKC,UAAU,oCACXD,EAAAA,cAAA,QAAMC,UAAU,kBAAiBD,EAAAA,cAACqL,EAAiB,OAAS,oBAM3Ee,GACCpM,EAAAA,cAAA,OAAKC,UAAU,mBACbD,EAAAA,cAAA,SAAOC,UAAU,2BACVW,KAAK,wCACLN,KAAK,QACLI,MAAM,MACNyO,UAAU,EACVrO,QAAsB,QAAb6L,EACT7D,SAAU,SAAC7J,GACHA,EAAE8J,OAAOjI,SACT4N,EAAiB,MAEzB,IACP1O,EAAAA,cAAA,SAAOC,UAAU,+BAA+BO,QAAS,WACrDkO,EAAiB,MACrB,GACI1O,EAAAA,cAAA,OAAKC,UAAU,oCACXD,EAAAA,cAAA,QAAMC,UAAU,kBAAiBD,EAAAA,cAAC2L,EAAY,OAAS,WAUjE,QAAbgB,GACG3M,EAAAA,cAAA,OAAKC,UAAS,cAAAY,OAA8B,OAAb8L,EAAoB,YAAc,KAC7D3M,EAAAA,cAAA,SAAOoP,QAAQ,0BAAyB,WAGxCpP,EAAAA,cAAA,SAAOC,UAAU,eACVsJ,YAAY,GACZ1K,GAAG,yBACH4P,IAAKT,EACLmB,UAAU,EACV7O,KAAK,OACLI,MAAOoM,EACPlM,KAAK,sCACLkI,SAAU,SAAC7J,GAAC,OAAK8N,EAAW9N,EAAE8J,OAAOrI,MAAM,KAI5C,gBAAbiM,GACG3M,EAAAA,cAAA,OAAKC,UAAU,kCACXD,EAAAA,cAAA,SAAOoP,QAAQ,sCAAqC,iCAGpDpP,EAAAA,cAAA,SAAOC,UAAU,eACVK,KAAK,OACLzB,GAAG,qCACH+B,KAAK,uCACLF,MAAOuM,EACPnE,SAAU,SAAC7J,GAAC,OAAKiO,EAAWjO,EAAE8J,OAAOrI,MAAM,KAI5C,eAAbiM,GACG3M,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,SAAOM,KAAK,SAASI,MAAO,eAAgBE,KAAK,0CAEhD2L,EAAW7N,KAAI,SAACmQ,EAAWzO,GAAK,IAAAiP,EAAA,OAC7BrP,EAAAA,cAAA,OAAKK,IAAKD,EAAMkP,WAAYrP,UAAU,QAClCD,EAAAA,cAAA,OAAKC,UAAU,sBACXD,EAAAA,cAAA,OAAKC,UAAU,wCACXD,EAAAA,cAAA,OAAKC,UAAU,qDACXD,EAAAA,cAAA,SAAOC,UAAU,MAAMmP,QAAO,gCAAAvO,OAAkCT,EAAK,UAAS,sBAG7E+L,GAEGnM,EAAAA,cAAA,OAAKC,UAAU,+CACXD,EAAAA,cAAA,SAAOC,UAAU,iCACbK,KAAK,QACLM,KAAI,iCAAAC,OAAmCT,EAAK,qBAC5CM,MAAM,WACNI,QAAqC,aAA5B+N,EAAUzB,cACnBtE,SAAU,SAAC7J,GAAC,OAAKiQ,EAA6BjQ,EAAE8J,OAAOrI,MAAON,EAAM,EACpEvB,GAAE,gCAAAgC,OAAkCT,EAAK,4BACzC+O,UAAU,IACdnP,EAAAA,cAAA,SAAOC,UAAU,MAAMmP,QAAQ,UAAS,YAExCpP,EAAAA,cAAA,SAAOC,UAAU,iCACbK,KAAK,QACLM,KAAI,iCAAAC,OAAmCT,EAAK,qBAC5CM,MAAM,SACNI,QAAqC,WAA5B+N,EAAUzB,cACnBtE,SAAU,SAAC7J,GAAC,OAAKiQ,EAA6BjQ,EAAE8J,OAAOrI,MAAON,EAAM,EACpEvB,GAAE,gCAAAgC,OAAkCT,EAAK,0BACzC+O,UAAU,IACdnP,EAAAA,cAAA,SAAOC,UAAU,MAAMmP,QAAQ,UAAS,YAIpDpP,EAAAA,cAAA,OAAKC,UAAU,qDACXD,EAAAA,cAAA,SAAOC,UAAU,mBACbsP,aAAa,MACbJ,UAAU,EACV7O,KAAK,OACLI,MAAOmO,EAAUjO,KACjBkI,SAAU,SAAC7J,GACP2P,EAAoB3P,EAAE8J,OAAOrI,MAAON,EACxC,EACAQ,KAAI,iCAAAC,OAAmCT,EAAK,WAC5CvB,GAAE,gCAAAgC,OAAkCT,EAAK,WAC7CJ,EAAAA,cAAA,UAAQC,UAAU,iBAAiBK,KAAK,SAASkP,OAAQpP,EAAQ,EAAGI,QAAS,kBAhLzF,SAACJ,GACjBmM,EAAWnM,GAAOvB,IAClB2O,EAAuB,GAAD3M,OAAAoO,EAAK1B,GAAmB,CAAEhB,EAAWnM,GAAOvB,MAEtE,IAAImQ,EAAaC,EAAO1C,GACxByC,EAAcS,OAAOrP,EAAO,GAC5BiN,EAAc2B,EAClB,CAyKuHU,CAAgBtP,EAAM,GACrGJ,EAAAA,cAAA,QAAMC,UAAU,0BAAyBD,EAAAA,cAAC+L,EAAa,UAG/B,KAAxB,OAAN2B,QAAM,IAANA,GAAe,QAAT2B,EAAN3B,EAAStN,UAAM,IAAAiP,OAAT,EAANA,EAAiBP,WACf9O,EAAAA,cAAA,OAAKC,UAAU,sCAAqC,qEAM/DkM,GACGnM,EAAAA,cAAA,OAAKC,UAAU,UACXD,EAAAA,cAAA,SAAOC,UAAU,SACbK,KAAK,QACLM,KAAI,iCAAAC,OAAmCT,EAAK,qBAC5CM,MAAM,GACN7B,GAAE,gCAAAgC,OAAkCT,EAAK,8BACzC+O,UAAU,IACdnP,EAAAA,cAAA,OAAKC,UAAU,yBAAwB,4CAK9C4O,EAAUhQ,IACPmB,EAAAA,cAAA,SAAOM,KAAK,SACRI,MAAOmO,EAAUhQ,GACjB+B,KAAI,iCAAAC,OAAmCT,EAAK,WAElD,IAGVJ,EAAAA,cAAA,OAAKC,UAAU,mBACXD,EAAAA,cAAA,UAAQM,KAAK,SAASL,UAAU,kCAAkCO,QAxMjE,WACjB6M,EAAc,GAADxM,OAAAoO,EAAK1C,GAAU,CAAE,CAAC1N,GAAI,KAAM+B,KAAM,GAAIwM,cAAe,QACtE,GAuMwBpN,EAAAA,cAAA,QAAMC,UAAU,sBAAqBD,EAAAA,cAACiM,EAAY,OAAS,cAQ7D,QAAbU,GACC3M,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,cACXD,EAAAA,cAAA,SAAOoP,QAAQ,qCAAoC,sBACnDpP,EAAAA,cAAA,SAAOC,UAAU,eAAeK,KAAK,OAAOzB,GAAG,oCACxC+B,KAAK,yCAEhBZ,EAAAA,cAAA,OAAKC,UAAU,cACXD,EAAAA,cAAA,SAAOoP,QAAQ,wBAAuB,2BACtCpP,EAAAA,cAAA,SAAOC,UAAU,eAAeK,KAAK,OAAOzB,GAAG,uBACxC+B,KAAK,2BAEhBZ,EAAAA,cAAA,OAAKC,UAAU,cACXD,EAAAA,cAAA,SAAOoP,QAAQ,sCAAqC,YACpDpP,EAAAA,cAAA,SAAOC,UAAU,eAAeK,KAAK,SAASzB,GAAG,qCAAqC8Q,IAAI,MACnFC,IAAI,KAAKC,KAAK,mBACdV,UAAU,EAAMvO,KAAK,0CAEhCZ,EAAAA,cAAA,OAAKC,UAAU,cACXD,EAAAA,cAAA,SAAOoP,QAAQ,uCAAsC,8CAErDpP,EAAAA,cAAA,SAAOC,UAAU,eAAeK,KAAK,SAASzB,GAAG,sCAAsC8Q,IAAI,OACpFC,IAAI,MAAMC,KAAK,mBACfV,UAAU,EAAMvO,KAAK,4CAOrC,GAAAC,OAAAoO,EACM1B,GAAmB0B,EACL,gBAAbtC,EAA6BJ,EAAW7N,KAAI,SAACmQ,GAAS,OAAKA,EAAUhQ,EAAE,IAAE2G,QAAO,SAAAsK,GAAC,OAAIA,CAAC,IAAI,KAChGpR,KAAI,SAACqR,EAAoB3P,GAAK,OAC5BJ,EAAAA,cAAA,OAAKK,IAAKD,EAAMkP,YACZtP,EAAAA,cAAA,SAAOM,KAAK,SACLI,MAAOqP,EACPnP,KAAI,iCAAAC,OAAmCT,GAAsB,eAAbuM,EAA4BJ,EAAW5J,OAAS,GAAE,WACzG3C,EAAAA,cAAA,SAAOM,KAAK,SACLI,MAAO,EACPE,KAAI,iCAAAC,OAAmCT,GAAsB,eAAbuM,EAA4BJ,EAAW5J,OAAS,GAAE,iBACvG,IAItB,C,yDClWA,UAAeqN,EAAY,O,yDCqC3B,UA7B8C,SAAHvQ,GAEpC,IADLuB,EAAKvB,EAALuB,MAAOiP,EAAIxQ,EAAJwQ,KAAMC,EAAGzQ,EAAHyQ,IAAKC,EAAI1Q,EAAJ0Q,KAElB,OACEnQ,EAAAA,cAAA,OAAKC,UAAU,iCACbD,EAAAA,cAAA,OAAKC,UAAU,wBACZe,GACChB,EAAAA,cAAA,OAAKC,UAAU,+BACZe,GAGJiP,GACCjQ,EAAAA,cAAA,OAAKC,UAAU,8BACZgQ,GAGJC,GACClQ,EAAAA,cAAA,OAAKC,UAAU,6BACbD,EAAAA,cAAA,KAAGoQ,KAAMF,GAAK,gBAIpBlQ,EAAAA,cAAA,OAAKC,UAAU,gBACZkQ,GAIT,C,yDCnCA,UAAeE,EAAoB,O,oKCM5BC,EAAQ,SAAAhF,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,QAAAuL,EAAA,oJAAAC,KAAA,cAAR8E,EAAQ7E,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,8BAIf,IAAM6E,GAA0BC,EAAAA,EAAAA,GAAgBC,EAAAA,IA0ShD,UAhN8C,SAAHhR,GAqBpC,IApBLiR,EAAsBjR,EAAtBiR,uBACAC,EAAmBlR,EAAnBkR,oBACAhB,EAAGlQ,EAAHkQ,IACAC,EAAGnQ,EAAHmQ,IACArO,EAAQ9B,EAAR8B,SACAqP,EAA2BnR,EAA3BmR,4BACAC,EAA4BpR,EAA5BoR,6BACAC,EAAQrR,EAARqR,SACA/P,EAAQtB,EAARsB,SACArB,EAASD,EAATC,UACAqR,EAAQtR,EAARsR,SACAC,EAASvR,EAATuR,UACAC,EAAUxR,EAAVwR,WACAC,EAAgBzR,EAAhByR,iBACAC,EAAiB1R,EAAjB0R,kBACAC,EAAgB3R,EAAhB2R,iBACAC,EAAwB5R,EAAxB4R,yBACAC,EAAa7R,EAAb6R,cACAC,EAAkB9R,EAAlB8R,mBACAC,EAAM/R,EAAN+R,OAGMC,EAAU,CACd,QAASC,EAAAA,GAGPC,EAAiB,SAAHC,GAEX,IADLhL,EAAKgL,EAALhL,MAEMiL,EAAiB,GAAAhR,OAAMiR,KAAKC,MAAMnL,EAAMgK,4BAA8B,IAAG,KAAA/P,OAAI+F,EAAMgK,4BAA8B,GAAK,EAAIhK,EAAMgK,4BAA8B,GAAK,IAAM,IAC/K,OACE5Q,EAAAA,cAAA,WACG4G,EAAMnG,YACLT,EAAAA,cAAA,UAAQC,UAAU,2BAA2BO,QAAS,kBAAM6Q,EAAyBzK,EAAM,GACzF5G,EAAAA,cAACsQ,EAAQ,OAGZ1J,EAAMoL,oBACLhS,EAAAA,cAAA,OAAKC,UAAU,kCAAiC,8BAClB4R,GAKtC,EAEMI,GAAYC,EAAAA,EAAAA,IAAiB,CACjCC,OAAAA,EAAAA,EACAC,YAAAA,EAAAA,EACAC,MAAAA,EAAAA,EACAC,OAAAA,EAAAA,EACAb,QAAAA,IAGIc,GAAiB7P,EAAAA,EAAAA,UAAQ,WAC7B,IAAM8P,GAASC,EAAAA,EAAAA,GAAkB3B,EAAUnB,GAAO,KAClD,OAAI6C,EAAS,EACL,OAAN3R,OAAc2R,GAER,MAAN3R,OAAa2R,EAEjB,GAAG,CAAC1B,EAAUnB,IAER+C,GAAYhQ,EAAAA,EAAAA,UAAQ,kBAAMiQ,KAAKC,UACnClC,EACGhS,KAAI,SAAAmU,GAAY,MAAK,CAAEC,OAAOC,EAAAA,EAAAA,GAAeF,EAAaC,MAAOhC,GAAUkC,UAAY,IAAMC,KAAKF,EAAAA,EAAAA,GAAeF,EAAaI,IAAKnC,GAAUkC,UAAY,IAAM,IAC/JlJ,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAE+I,MAAQ9I,EAAE8I,KAAK,IACpC,GAAE,CAACpC,IAEJ,OACE1Q,EAAAA,cAACkT,EAAAA,SAAQ,MACLnS,GACAf,EAAAA,cAAA,SAAOM,KAAK,SAASM,KAAK,uBAAuBF,MAAOgS,IAE1D1S,EAAAA,cAAA,OAAKC,UAAS,sBAAAY,OAAwBE,EAAW,WAAa,GAAE,KAAAF,OAAInB,EAAY,YAAc,GAAE,KAAAmB,OAAIkQ,EAAW,WAAa,GAAE,KAAAlQ,OAAImQ,EAAY,YAAc,KACzJzP,EACCvB,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAACmT,EAAAA,QAAkB,CACjBzC,uBAAwBA,EACxBnP,SAAUA,EACVR,SAAUA,EACVkQ,WAAYA,EACZL,4BAA6BA,EAC7BC,6BAA8BA,EAC9BQ,yBAA0BA,KAE1B3R,GACAM,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACoT,EAAAA,QAAc,CAACzC,oBAAqBA,EAAqBpP,SAAUA,EAAU6P,iBAAkBA,IAChGpR,EAAAA,cAAA,OAAKC,UAAU,gBAAgBsS,GAC/BvS,EAAAA,cAAA,OAAKC,UAAU,qBACbD,EAAAA,cAACyQ,EAAAA,GAAQ,CACP4C,OAAQ3C,EACRuB,UAAWA,EACXqB,aAAcpC,EACdqC,YAAaxS,EACbyS,mBAAmB,aACnBC,YAAY,MACZC,MAAO,CAAC,OACR/D,IAAKA,EACLC,IAAKA,EACL+D,SAAS,EACTxD,KAAMQ,EAAoBR,KAC1ByD,WAAY,SAACC,GAAa,OAAKzC,EAAiByC,EAAQ,EACxDhE,KAAM,GACNiE,UAAW,EACXC,mBAAoB,GACpBC,cAAe,SAAC/U,GAAC,OAAKyR,EAAuB5N,SAAQ,SAAAmR,GACnDA,EAAGxT,WAAaxB,IAAMgV,CACxB,GAAE,EACFC,WACE,CAAEtN,MAAO+K,GAEXwC,gBAAiB5C,EACjB6C,cAAe9C,EACf+C,eAAgB/C,EAChBE,OAAQA,OAOlBxR,EAAAA,cAAAA,EAAAA,SAAA,MACIN,IAAcsR,GACdhR,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACoT,EAAAA,QAAc,CAACzC,oBAAqBA,EAAqBpP,SAAUA,EAAU6P,iBAAkBA,IAChGpR,EAAAA,cAAA,OAAKC,UAAU,gBAAgBsS,IAGnCvS,EAAAA,cAAA,OAAKC,UAAW,2BACZ+Q,GACAhR,EAAAA,cAAA,OAAKC,UAAU,sBACXP,IACAqB,EACEf,EAAAA,cAACyQ,EAAAA,GAAQ,CACP4C,OAAQ3C,EACRuB,UAAWA,EACXuB,mBAAmB,aACnBC,YAAY,OACZC,MAAO,CAAC,QACR/D,IAAKA,EACLC,IAAKA,EACL+D,SAAS,EACTC,WAAY,SAACC,GAAa,OAAKzC,EAAiByC,EAAQ,EACxDhE,KAAM,GACNiE,UAAW,EACXI,WACE,CAAEtN,MAAO+K,GAEXwC,gBAAiB5C,EACjB6C,cAAe9C,EACf+C,eAAgB/C,EAChBE,OAAQA,EACRrB,KAAMQ,EAAoBR,OAG5BnQ,EAAAA,cAACuQ,EAAuB,CACtB8C,OAAQ3C,EACRuB,UAAWA,EACXsB,YAAU,EACVC,mBAAmB,aACnBc,WAAS,EACTb,YAAY,OACZC,MAAO,CAAC,QACR/D,IAAKA,EACLC,IAAKA,EACL+D,SAAS,EACTC,WAAY,SAACC,GAAa,OAAKzC,EAAiByC,EAAQ,EACxDhE,KAAM,GACNiE,UAAW,EACXS,YAAapD,EACbmC,aAAcpC,EACdsD,cAAerD,EACf4C,mBAAoB,EACpBC,cAAe,SAAC/U,GAAC,OAAKyR,EAAuB5N,SAAQ,SAAAmR,GACnDA,EAAGxT,WAAaxB,IAAMgV,CACxB,GAAE,EACFC,WACE,CAAEtN,MAAO+K,GAEXwC,gBAAiB5C,EACjB6C,cAAe9C,EACf+C,eAAgB/C,EAChBE,OAAQA,EACRrB,KAAMQ,EAAoBR,SAKpCnQ,EAAAA,cAACmT,EAAAA,QAAkB,CACjBzC,uBAAwBA,EACxBnP,SAAUA,EACVR,SAAUA,EACVkQ,WAAYA,EACZL,4BAA6BA,EAC7BC,6BAA8BA,EAC9BQ,yBAA0BA,OAQ1C,C,ykFCkNA,UA9coD,SAAH5R,GAY1C,IAXwBgV,EAAgChV,EAA7DmR,4BACAE,EAAQrR,EAARqR,SACA4D,EAAYjV,EAAZiV,aACAC,EAAsBlV,EAAtBkV,uBACA5T,EAAQtB,EAARsB,SACArB,EAASD,EAATC,UAC8BkV,EAAuBnV,EAArDoR,6BACAgE,EAAOpV,EAAPoV,QACAC,EAAOrV,EAAPqV,QACA/D,EAAQtR,EAARsR,SACAC,EAASvR,EAATuR,UAEA,IACE+D,KAAKC,oBAAe/J,EAAW,CAAEgK,SAAUnE,GAC7C,CAAE,MAAAoE,IACApE,EAAWiE,KAAKC,iBAAiBG,kBAAkBF,QACrD,CAEA,IAAiHxI,EAAAxH,GAAzCyH,EAAAA,EAAAA,UAAiBkI,GAAwB,GAA1G/D,EAA4BpE,EAAA,GAAE2I,EAA+B3I,EAAA,GACoDI,EAAA5H,GAAlDyH,EAAAA,EAAAA,UAAiB+H,GAAiC,GAAjH7D,EAA2B/D,EAAA,GAAEwI,EAA8BxI,EAAA,GACqBG,EAAA/H,GAA3ByH,EAAAA,EAAAA,UAAwB,IAAG,GAAhFgE,EAAsB1D,EAAA,GAAEsI,EAAyBtI,EAAA,GAClDzL,EAAWK,OAAO2T,WAAa,IAC/BC,GAAQ9S,EAAAA,EAAAA,UAAQ,kBAAM,IAAI+S,IAAM,GAAE,IAClCxE,GAAavO,EAAAA,EAAAA,UAAQ,kBAAMgT,EAAAA,EAAAA,GAAeF,EAAO1E,EAAS,GAAE,CAACA,IAUjE3D,EAAAlI,GARoDyH,EAAAA,EAAAA,WAAS,WAC7D,IAAMiJ,GAAWC,EAAAA,EAAAA,GAAQ3E,EAAY,GACrC,MAAO,CACLd,KAAMwF,EACN3U,MAAOO,GACL4Q,EAAAA,EAAAA,GAAOwD,EAAUE,EAAAA,WAAWC,cAAe,CAAEC,OAAQrE,EAAAA,KACrDS,EAAAA,EAAAA,GAAOwD,EAAUE,EAAAA,WAAWG,UAAW,CAAED,OAAQrE,EAAAA,IAEvD,IAAE,GARKf,EAAmBxD,EAAA,GAAE8I,EAAsB9I,EAAA,GAU5C+I,GAAWxT,EAAAA,EAAAA,UAAQ,kBACvB,IAAI+S,KACFxE,EAAWkF,cACXlF,EAAWmF,WACXnF,EAAWoF,UACXxB,EACD,GACC,CAAC5D,EAAY4D,IAEXyB,GAAW5T,EAAAA,EAAAA,UAAQ,kBACvB,IAAI+S,KACFxE,EAAWkF,cACXlF,EAAWmF,WACXnF,EAAWoF,UACXvB,EACD,GACC,CAAC7D,EAAY6D,KAEjBnO,EAAAA,EAAAA,YAAU,WACRxE,SAAS2E,cAAc,IAAID,MAAM,gCACnC,GAAG,IAEH,IAAMuK,GAAmBmF,EAAAA,EAAAA,cAAY,SAAC1C,GAChCA,GAAW5C,GAAc4C,GAAU2C,EAAAA,EAAAA,GAASvF,EAAY,IAC1DgF,EAAuB,CACrB9F,KAAM0D,EACN7S,MAAOO,GACL4Q,EAAAA,EAAAA,GAAO0B,EAASgC,EAAAA,WAAWC,cAAe,CAAEC,OAAQrE,EAAAA,KACpDS,EAAAA,EAAAA,GAAO0B,EAASgC,EAAAA,WAAWG,UAAW,CAAED,OAAQrE,EAAAA,MAGtD+E,IAEF,GAAG,CAACR,EAAwBhF,KAG5BtK,EAAAA,EAAAA,YAAU,WACR,IAAM+P,EAA+ChG,EAAuBiG,MAAK,SAAC1C,GAAe,OAAKA,EAAGjC,kBAAkB,IACvH0E,GACFE,YAAW,WACTtB,GAA0B,SAACuB,GAEzB,OADAH,EAAgC1E,oBAAqB,EACrD/C,EAAW4H,EACb,GACF,GAAG,IAEP,GAAG,CAACnG,KAEJ/J,EAAAA,EAAAA,YAAU,WACJgO,GACFW,EAA0BX,EAAuBjW,KAAI,SAAAoY,GAAoB,MAAK,CAC5EhE,OAAO4C,EAAAA,EAAAA,IAAeqB,EAAAA,EAAAA,GAAaD,EAAqBhE,OAAQhC,GAChEmC,KAAKyC,EAAAA,EAAAA,IAAeqB,EAAAA,EAAAA,GAAaD,EAAqB7D,KAAMnC,GAC5DkG,YAAaF,EAAqBE,YACnC,IAEL,GAAG,CAACrC,IAGJ,IAAMsC,EAAgC,SAACH,GAAiC,OAAK,SAACjE,GAC5E,OAAIiE,EAAqBhE,QAAUD,EAAaC,OAASgE,EAAqB7D,MAAQJ,EAAaI,MAG/FJ,EAAaI,IAAID,YAAc8D,EAAqBhE,MAAME,WAC5D8D,EAAqBhE,MAAQD,EAAaC,OACnC,KACED,EAAaC,MAAME,WAAa8D,EAAqB7D,IAAID,WAAaH,EAAaC,MAAME,WAAa8D,EAAqBhE,MAAME,aAC1I8D,EAAqB7D,IAAMJ,EAAaI,KACjC,GAGX,CAAC,EAEKiE,GAAuBX,EAAAA,EAAAA,cAAY,SAACM,EAAqBM,EAAqBC,GAElF,IAAKD,EAAUE,MAAQF,EAAUG,OAK/B,OAJAF,EAAgBtE,MAAMyE,SAAS1C,EAAS,GACxCuC,EAAgBnE,IAAIsE,SAASzC,EAAS,GACtCsC,EAAgBnE,KAAMuE,EAAAA,EAAAA,GAAQJ,EAAgBnE,IAAK,GACnD4D,EAAOA,EAAKrR,QAAO,SAAAoB,GAAK,OAAI6Q,EAAAA,EAAAA,GAAS7Q,EAAMkM,OAAOE,aAAcyE,EAAAA,EAAAA,GAASL,EAAgBtE,OAAOE,SAAS,IACnG,GAANnS,OAAAoO,EAAW4H,GAAI,CAAEO,IAGnB,IACIpF,GAAqB,EAGzB,IAJgC0F,EAAAA,EAAAA,GAAoBN,EAAgBnE,IAAKmE,EAAgBtE,OAI3DlC,EAA6B,CACzDwG,EAAgBnE,KAAM0E,EAAAA,EAAAA,GAAWP,EAAgBtE,MAAOlC,GACxDoB,GAAqB,EAGrB,IAAM4F,GAAmBF,EAAAA,EAAAA,GAAoBN,EAAgBnE,IAAK,IAAIwC,KAAK2B,EAAgBnE,KAAKsE,SAASzC,EAAS,IAC9G8C,EAAmB,IACrBR,EAAgBnE,KAAM4E,EAAAA,EAAAA,GAAWT,EAAgBnE,IAAK2E,GACtDR,EAAgBtE,OAAQ+E,EAAAA,EAAAA,GAAWT,EAAgBtE,MAAO8E,GAE9D,CAEA,IAAK,IAAIE,EAAI,EAAGA,EAAIjB,EAAKlU,OAAQmV,IAAK,CACpC,IAAMhB,EAAuBD,EAAKiB,GAClC,GAAIV,EAAgBnE,KAAO6D,EAAqBhE,OAASsE,EAAgBtE,OAASgE,EAAqB7D,KAAOmE,EAAgBtE,OAASgE,EAAqBhE,MAI1J,OAHAgE,EAAqB7D,IAAM,IAAIwC,KAAK3D,KAAKlC,IAAIkH,EAAqB7D,IAAID,UAAWoE,EAAgBnE,IAAID,YACrG8D,EAAqBhE,MAAQ,IAAI2C,KAAK3D,KAAKnC,IAAImH,EAAqBhE,MAAME,UAAWoE,EAAgBtE,MAAME,YAE3G/D,EADA4H,EAAOA,EAAKrR,OAAOyR,EAA8BH,KAE5C,GAAIM,EAAgBtE,OAASgE,EAAqB7D,KAAOmE,EAAgBnE,KAAO6D,EAAqBhE,OAASsE,EAAgBtE,OAASgE,EAAqBhE,MAIjK,OAHAgE,EAAqBhE,MAAQ,IAAI2C,KAAK3D,KAAKnC,IAAImH,EAAqBhE,MAAME,UAAWoE,EAAgBtE,MAAME,YAC3G8D,EAAqB7D,IAAM,IAAIwC,KAAK3D,KAAKlC,IAAIkH,EAAqB7D,IAAID,UAAWoE,EAAgBnE,IAAID,YAErG/D,EADA4H,EAAOA,EAAKrR,OAAOyR,EAA8BH,IAGrD,CAQA,OALI9E,IACF6E,EAAK/T,SAAQ,SAACmR,GAAe,OAAKA,EAAGjC,oBAAqB,CAAK,IAC/DoF,EAAgBpF,oBAAqB,EACrCoF,EAAgBxG,4BAA8BA,GAE1C,GAAN/P,OAAAoO,EAAW4H,GAAI,CAAEO,GACnB,GAAG,CAACxG,IAEEmH,GAAiBxB,EAAAA,EAAAA,cACrB,SAACY,GACC,IAAIpW,EAAJ,CAGA,IAAIqW,EAA+B,CACjCtE,MAAO,IAAI2C,KAAK0B,EAAUrE,OAC1BG,IAAK,IAAIwC,KAAK0B,EAAUlE,KACxB+D,aAAa,GAEf,KAAII,EAAgBtE,MAAQ7B,GACtBmG,EAAgBtE,MAAMuD,YAAcpF,EAAWoF,WAC9Ce,EAAgBtE,MAAMsD,aAAenF,EAAWmF,YAChDgB,EAAgBtE,MAAMqD,gBAAkBlF,EAAWkF,gBACnDwB,EAAAA,EAAAA,GAAWP,EAAgBtE,MAAOlC,GAA6BoC,UAAYsD,EAAStD,WACtFgF,GAAcZ,EAAgBtE,QAC9BsE,EAAgBtE,QAAS8C,EAAAA,EAAAA,IAAQqC,EAAAA,EAAAA,GAASpH,GAA+B,IAN9E,CAUA,IAAIgG,EAAI5H,EAAOyB,GAEf,GAAIyG,EAAUlE,IAAIoD,UAAYc,EAAUrE,MAAMuD,UAAY,EAAG,CAE3D,IADA,IAAM6B,EAAoB,GAAGC,EAAA,WAE3B,IAAMC,EAAyB,CAC7BtF,MAAO,IAAI2C,KAAK2B,EAAgBtE,OAChCG,IAAK,IAAIwC,KAAK2B,EAAgBnE,MAEhCmF,EAAuBtF,MAAMyE,SAAS1C,EAAS,GAC/CuD,EAAuBtF,OAAQ8C,EAAAA,EAAAA,GAAQwC,EAAuBtF,MAAOgF,GACrEM,EAAuBnF,IAAIoF,QAAQD,EAAuBtF,MAAMuD,WAChE+B,EAAuBnF,IAAIsE,SAASzC,EAAS,GAC7C+B,EAAOA,EAAKrR,QAAO,SAAAoB,GAAK,OAAIA,EAAMkM,MAAMuD,YAAc+B,EAAuBtF,MAAMuD,SAAS,IAC5F6B,EAAkBI,KAAKF,EACzB,EAXSN,EAAI,EAAGA,EAAIX,EAAUlE,IAAIoD,UAAYc,EAAUrE,MAAMuD,UAAWyB,IAAGK,IAa5E7C,EAA0B,GAADzU,OAAAoO,EAAK4H,GAASqB,GACzC,MACE5C,EAA0B4B,EAAqBL,EAAMM,EAAWC,GApBlE,CAfA,CAqCF,GACA,CAAC1G,EAAwB4E,EAA2BrE,EAAYqF,EAAUzF,EAA8BD,IAIpG2H,IAAwBhC,EAAAA,EAAAA,cAAY,SAACa,EAA8BoB,GACvE,IAAMC,EAAyB/H,EAAuBlL,QAAO,SAACyO,GAAE,OAC7DuE,EAAuB7B,MAAK,SAAA+B,GAAU,OACrCA,EAAWzF,IAAID,YAAciB,EAAGhB,IAAID,WAAa0F,EAAW5F,MAAME,YAAciB,EAAGnB,MAAME,SAAS,GAAC,IAEvGsC,EAA0B,GAADzU,OAAAoO,EAAKwJ,GAAsB,CAAErB,IACxD,GAAG,CAAC1G,IAEES,IAAoBoF,EAAAA,EAAAA,cAAY,SAAA3E,GAU/B,IATLkB,EAAKlB,EAALkB,MACAG,EAAGrB,EAAHqB,IACArM,EAAKgL,EAALhL,MACA+R,EAAQ/G,EAAR+G,SAOA,IAAI5X,EAAJ,CAGA,IAAM6X,EAAkBlI,EAAuBiG,MAAK,SAAC9D,GAAY,OAC/DA,EAAaC,MAAME,YAAcpM,EAAMkM,MAAME,WAAaH,EAAaI,IAAID,YAAcpM,EAAMqM,IAAID,SAAS,IAExGoE,EAAehU,EAAAA,EAAA,GAChBwV,GAAe,IAClB9F,MAAAA,EACAG,IAAAA,IAGF,KAAImE,EAAgBtE,MAAQ7B,GACtBmG,EAAgBtE,MAAMuD,YAAcpF,EAAWoF,WAC9Ce,EAAgBtE,MAAMsD,aAAenF,EAAWmF,YAChDgB,EAAgBtE,MAAMqD,gBAAkBlF,EAAWkF,gBACnDwB,EAAAA,EAAAA,GAAWP,EAAgBtE,MAAOlC,GAA6BoC,UAAYsD,EAAStD,WACtFgF,GAAcZ,EAAgBtE,QAC9BsE,EAAgBtE,QAAS8C,EAAAA,EAAAA,IAAQqC,EAAAA,EAAAA,GAASpH,GAA+B,IAN9E,CAYA,IAAIgI,EAAU,IAAIpD,KAAK2B,EAAgBnE,KACvC4F,EAAQtB,SAASzC,EAAS,GAE1B,IAAIgE,GAAcpB,EAAAA,EAAAA,GAAoBN,EAAgBnE,IAAKmE,EAAgBtE,OAGvE+F,EAAUzB,EAAgBnE,MAC5BmE,EAAgBnE,IAAM4F,GACtBC,GAAcpB,EAAAA,EAAAA,GAAoBN,EAAgBnE,IAAKmE,EAAgBtE,QACrDlC,IAChBwG,EAAgBtE,OAAQ+E,EAAAA,EAAAA,GAAWT,EAAgBnE,IAAKrC,KAIxDK,EAAamG,EAAgBtE,QAC/BsE,EAAgBtE,OAAQiG,EAAAA,EAAAA,GAAsB9H,EAAY,CAAE+H,UAAW,GAAIC,eAAgB,UAC3FH,GAAcpB,EAAAA,EAAAA,GAAoBN,EAAgBnE,IAAKmE,EAAgBtE,QACrDlC,IAChBwG,EAAgBnE,KAAM0E,EAAAA,EAAAA,GAAW7E,EAAOlC,KAKxC+H,GAAY1H,EAAWiI,iBAAmB9B,EAAgBtE,MAAMoG,iBAClE9B,EAAgBtE,MAAMyE,SAAS1C,EAAS,GACxCuC,EAAgBnE,IAAIsE,SAASzC,EAAS,IAIpCgE,EAAclI,IACZgI,EAAgB9F,MAAME,UAAYoE,EAAgBtE,MAAME,UAC1DoE,EAAgBtE,OAAQ+E,EAAAA,EAAAA,GAAWe,EAAgB3F,IAAKrC,GAExDwG,EAAgBnE,KAAM0E,EAAAA,EAAAA,GAAWiB,EAAgB9F,MAAOlC,GAE1DF,EAAuB5N,SAAQ,SAACmR,GAAe,OAAKA,EAAGjC,oBAAqB,CAAK,IACjF4G,EAAgB5G,oBAAqB,EACrC4G,EAAgBhI,4BAA8BA,GAGhD,IAAM4H,EAAyB,CAACI,GAGhClI,EAAuB5N,SAAQ,SAACgU,GAC1BA,IAAyB8B,IAIzB9B,EAAqB7D,IAAID,WAAaoE,EAAgBtE,MAAME,YAC1D8D,EAAqBhE,MAAME,UAAYoE,EAAgBtE,MAAME,WAC/DoE,EAAgBtE,MAAQgE,EAAqBhE,MAC7C0F,EAAuBF,KAAKxB,IACnBA,EAAqBhE,MAAME,WAAaoE,EAAgBtE,MAAME,WAAa8D,EAAqBhE,MAAME,WAAaoE,EAAgBnE,IAAID,YAC5I8D,EAAqB7D,IAAID,UAAYoE,EAAgBnE,IAAID,YAC3DoE,EAAgBnE,IAAM6D,EAAqB7D,KAE7CuF,EAAuBF,KAAKxB,KAI5BA,EAAqBhE,MAAME,WAAaoE,EAAgBnE,IAAID,YAC1D8D,EAAqB7D,IAAID,UAAYoE,EAAgBnE,IAAID,WAC3DoE,EAAgBnE,IAAM6D,EAAqB7D,IAC3CuF,EAAuBF,KAAKxB,IACnBA,EAAqB7D,IAAID,WAAaoE,EAAgBnE,IAAID,WAAa8D,EAAqB7D,IAAID,WAAaoE,EAAgBtE,MAAME,YACxI8D,EAAqBhE,MAAME,UAAYoE,EAAgBtE,MAAME,YAC/DoE,EAAgBtE,MAAQgE,EAAqBhE,OAE/C0F,EAAuBF,KAAKxB,KAGlC,IAEAyB,GAAsBnB,EAAiBoB,EA5EvC,CAnBA,CAgGF,GAAG,CAACvH,EAAYP,EAAwBE,EAA6BkE,EAASD,EAAShE,IAEjFQ,IAA2BkF,EAAAA,EAAAA,cAAY,SAAC1D,GACxC9R,GAGJuU,GAA0B,SAACuB,GAEzB,OADAA,EAAOA,EAAKrR,QAAO,SAAAyO,GAAE,OAAIA,IAAOpB,CAAY,GAE9C,GACF,GAAG,CAACyC,IAEE0C,IAAgBzB,EAAAA,EAAAA,cAAY,SAACpG,GAAU,QAAOuE,EAAaiC,MAAK,SAAAwC,GACpE,IAAMC,EAAiB,IAAI3D,KAAK0D,GAChC,OAAOC,EAAe/C,YAAclG,EAAKkG,WAAa+C,EAAehD,aAAejG,EAAKiG,YAAcgD,EAAejD,gBAAkBhG,EAAKgG,aAC/I,GAAE,GAAE,CAACzB,IAECpD,IAAgBiF,EAAAA,EAAAA,cAAY,SAACpG,GACjC,OAAI6H,GAAc7H,IAASA,IAAQyF,EAAAA,EAAAA,IAAQqC,EAAAA,EAAAA,GAASpH,GAA+B,GAC1E,CAAE5Q,UAAW,WAEb,CAAC,CAEZ,GAAG,CAAC+X,GAAenH,IAiBbwI,IAAqB3W,EAAAA,EAAAA,UAAQ,WACjC,IAAI4W,EAAoB,GACxB,GAAI/X,EACEyW,GAAcrH,EAAoBR,OAAOmJ,EAAQhB,KAAK,QAG1D,IADA,IAAMiB,GAASnH,EAAAA,EAAAA,GAAY,IAAIqD,KAAK9E,EAAoBR,OAC/C2H,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAM0B,GAAkB5D,EAAAA,EAAAA,GAAQ2D,EAAQzB,GACpCE,GAAcwB,IAAYF,EAAQhB,KAAKR,EAC7C,CAEF,OAAOwB,CACT,GAAG,CAAC3I,KAEJhK,EAAAA,EAAAA,YAAU,WACYxE,SAASsX,iBAAiB,eAChC3W,SAAQ,SAAC4W,EAActZ,GACnC,GAAIiZ,GAAmBlV,SAAS/D,GAAQ,CACtC,IAAMuZ,GAAa/D,EAAAA,EAAAA,IAAQxD,EAAAA,EAAAA,GAAYzB,EAAoBR,MAAO/P,GACrC,IAAzBuZ,EAAWtD,WAA6C,IAA1BsD,EAAWvD,YAAiD,OAA7BuD,EAAWxD,cAC1EuD,EAAaE,YAAc,2BAE3BF,EAAaE,YAAc,0BAE/B,CACF,GACF,GAAG,CAACP,KAEJ,IAAM5C,GAAoB,WACJtU,SAASsX,iBAAiB,eAChC3W,SAAQ,SAAC4W,GACrBA,EAAaE,YAAY,EAC3B,GACF,EAYMC,IAA8BnX,EAAAA,EAAAA,UAAQ,kBA3DH,WAIvC,IAHA,IAAMoX,GAAuBC,EAAAA,EAAAA,IAAwB9I,EAAYJ,GAE7DmJ,EAAQ,EACHlC,EAAI,EAAGA,EAAIpH,EAAuB/N,OAAQmV,IAAK,CACtD,GAAIpH,EAAuBoH,GAAGhF,MAAQgH,EAAsB,CAC1D,IAAMG,GAAuBvC,EAAAA,EAAAA,GAAoBhH,EAAuBoH,GAAG7E,IAAKvC,EAAuBoH,GAAGhF,OAC1GkH,GAASlI,KAAKC,MAAMkI,EAAuBrJ,EAC7C,CACA,GAAIoJ,GAAS,EAAG,OAAO,CACzB,CACA,OAAO,CACT,CAgDEE,EAAkC,GACjC,CAACxJ,EAAwBG,IA2B5B,OAzBAlK,EAAAA,EAAAA,YAAU,WACR,GAAIkT,GAA6B,CAC/B,IAAIjT,EAAQ,IAAIC,MAAM,iCACtB1E,SAAS2E,cAAcF,EACzB,KAAO,CACDA,EAAQ,IAAIC,MAAM,qCACtB1E,SAAS2E,cAAcF,EACzB,CACF,GAAG,CAACiT,KAEJ1X,SAASgY,iBAAiB,4BAA4B,SAAClb,GACrDmW,EAAgCnW,EAAEmb,OACpC,IAEAjY,SAASgY,iBAAiB,gCAAgC,SAAClb,GACzDqW,EAA0BrW,EAAEmb,OAAO1b,KAAI,SAAAoY,GAAoB,MAAK,CAC9DhE,OAAO4C,EAAAA,EAAAA,IAAeqB,EAAAA,EAAAA,GAAaD,EAAqBhE,OAAQhC,GAChEmC,KAAKyC,EAAAA,EAAAA,IAAeqB,EAAAA,EAAAA,GAAaD,EAAqB7D,KAAMnC,GAC7D,IACH,IAEA3O,SAASgY,iBAAiB,yCAAyC,SAAClb,GAClEoW,EAA+BpW,EAAEmb,OACnC,IAGEpa,EAAAA,cAACqa,EAAAA,QAAoB,CACnB3J,uBAAwBA,EACxBC,oBAAqBA,EACrBhB,IAAKuG,EACLtG,IAAK0G,EACL/U,SAAUA,EACVqP,4BAA6BA,EAC7BC,6BAA8BA,EAC9BC,SAAUA,EACV/P,SAAUA,EACVrB,UAAWA,EACXqR,SAAUA,EACVC,UAAWA,EACXC,WAAYA,EACZK,cAAeA,GACfC,mBAvDuB,SAAC3K,GAC1B,OAAKA,EAAMoQ,aAEAsD,EAAAA,EAAAA,IAAerJ,EAAYrK,EAAMkM,MAAOjC,GAC1C,CAAE5Q,UAAW,YAEb,CAAEA,UAAW,cAJb,CAAEA,UAAW,gBAMxB,EAgDIiR,iBAAkB6G,EAClB3G,iBAAkBA,EAClBD,kBAAmBA,GACnBE,yBAA0BA,GAC1BG,OAAQ,kBAAMP,CAAU,GAG9B,C,0GCjgBOsJ,EAAW,SAAAjP,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,KAAAgM,SAAA,WAAAhM,EAAAA,cAAA,QAAAuL,EAAA,0DAAAC,KAAA,UAAAxL,EAAAA,cAAA,YAAAA,EAAAA,cAAA,YAAAnB,GAAA,KAAAmB,EAAAA,cAAA,QAAAwL,KAAA,OAAAD,EAAA,sBAAXgP,EAAW9O,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,kCACX8O,EAAY,SAAAlP,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,KAAAgM,SAAA,WAAAhM,EAAAA,cAAA,QAAAuL,EAAA,qDAAAC,KAAA,UAAAxL,EAAAA,cAAA,YAAAA,EAAAA,cAAA,YAAAnB,GAAA,KAAAmB,EAAAA,cAAA,QAAAwL,KAAA,OAAAD,EAAA,sBAAZiP,EAAY/O,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,8BAwCnB,UAlBwC,SAAHjM,GAAA,IACnCkR,EAAmBlR,EAAnBkR,oBACApP,EAAQ9B,EAAR8B,SACA6P,EAAgB3R,EAAhB2R,iBAAgB,OAEhBpR,EAAAA,cAAA,OAAKC,UAAU,kBACbD,EAAAA,cAAA,OAAKC,UAAU,aACZ0Q,EAAoB3P,OAErBhB,EAAAA,cAACya,EAAAA,QAAU,CAACja,QAAS,kBAAM4Q,EAAiB7P,GAAWiW,EAAAA,EAAAA,GAAQ7G,EAAoBR,KAAM,IAAKuK,EAAAA,EAAAA,GAAS/J,EAAoBR,KAAM,GAAG,GAClInQ,EAAAA,cAACua,EAAW,CAACta,UAAU,UAEzBD,EAAAA,cAACya,EAAAA,QAAU,CAACja,QAAS,kBAAM4Q,EAAiB7P,GAAWqU,EAAAA,EAAAA,GAAQjF,EAAoBR,KAAM,IAAKwK,EAAAA,EAAAA,GAAShK,EAAoBR,KAAM,GAAG,GAClInQ,EAAAA,cAACwa,EAAY,CAACva,UAAU,UAExB,C,8nCCnC0C,IAC3CqQ,EAAQ,SAAAhF,GAAA,OAAAtL,EAAAA,cAAA,MAAAsL,EAAAtL,EAAAA,cAAA,QAAAuL,EAAA,oJAAAC,KAAA,cAAR8E,EAAQ7E,aAAA,CAAA3J,MAAA,KAAAE,OAAA,KAAAwJ,KAAA,OAAAE,MAAA,8BAgJf,UA5G4C,SAAHjM,GAQlC,IA+BGmb,EAtCRlK,EAAsBjR,EAAtBiR,uBACAE,EAA2BnR,EAA3BmR,4BACArP,EAAQ9B,EAAR8B,SACAR,EAAQtB,EAARsB,SACAkQ,EAAUxR,EAAVwR,WACAJ,EAA4BpR,EAA5BoR,6BACAQ,EAAwB5R,EAAxB4R,yBAEyDwJ,EAAA5V,EAArBjF,EAAAA,UAAe,GAAM,GAAlD8a,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAC6DG,EAAA/V,EAA3CjF,EAAAA,SAAsC,MAAK,GAAtFib,EAAiBD,EAAA,GAAEE,EAAoBF,EAAA,GACxCG,EAAenb,EAAAA,SAAc,WACjC,IAAMob,EAAuB1K,EAAuB5G,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAE+I,MAAME,UAAYhJ,EAAE8I,MAAME,SAAS,IAClGqI,EAAQ,CAAC,EAUf,OARAD,EAAqBtY,SAAQ,SAAA+P,GAC3B,IAAMyI,GAAOnJ,EAAAA,EAAAA,GAAmB,OAAZU,QAAY,IAAZA,OAAY,EAAZA,EAAcC,MAAO+C,EAAAA,WAAW0F,cAC/CF,EAAMC,GAGTD,EAAMC,GAAMhD,KAAKzF,GAFjBwI,EAAMC,GAAQ,CAACzI,EAInB,IACOwI,CACT,GAAG,CAAC3K,IAEE8K,EAAkBxb,EAAAA,aAAkB,WACxC,IAAMyb,EAA0B/K,EAAuBhS,KAAI,SAAAmU,GAAY,SAAAhS,QAClEsR,EAAAA,EAAAA,GAAOU,EAAaC,MAAO,OAAM,aAAAjS,QAAYsR,EAAAA,EAAAA,GAAOU,EAAaC,MAAO,SAAQ,KAAAjS,QAAIsR,EAAAA,EAAAA,GAAOU,EAAaI,IAAK,SAAQ,IACxHyI,KAAK,MACPja,UAAUka,UAAUC,UAAUH,GAC9BV,GAAc,GACVE,GACFY,aAAaZ,GAEfC,EAAqBtE,YAAW,kBAAMmE,GAAc,EAAM,GAAE,KAC9D,GAAG,CAACrK,EAAwBuK,EAAmBC,IAmB/C,OACElb,EAAAA,cAAA,OAAKC,UAAWsB,EAAW,+BAAiC,0BAC1DvB,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,OAAKC,UAAU,2BAA2Bc,EAAW,kBAAoB,kBACxEA,GAAY2P,EAAuB/N,OAAS,GAC3C3C,EAAAA,cAAA,OAAKgB,MAAM,mCAAmCf,UAAU,oBAAoBO,QAASgb,GAEjFV,EACE9a,EAAAA,cAAA,OAAKC,UAAU,uBACbD,EAAAA,cAAA,OAAKC,UAAU,2BAA0BD,EAAAA,cAAC8b,EAAAA,EAAe,CAACC,KAAMC,EAAAA,OAAiB,UAInFhc,EAAAA,cAAC8b,EAAAA,EAAe,CAACC,KAAME,EAAAA,QAOE,IAAlCvL,EAAuB/N,QACtB3C,EAAAA,cAAA,OAAKC,UAAU,mBAAkB,qBAEnCD,EAAAA,cAAA,OAAKC,UAAU,0BAAyB,IAAC,GAAAY,OAnCT,WAGlC,IAFA,IAAMiZ,GAA6BC,EAAAA,EAAAA,IAAwB9I,EAAYJ,GACnEqL,EAA8B,EACzBpE,EAAI,EAAGA,EAAIpH,EAAuB/N,OAAQmV,IAAK,CACtD,GAAIpH,EAAuBoH,GAAGhF,MAAQgH,EAEpCoC,IAD6BxE,EAAAA,EAAAA,GAAoBhH,EAAuBoH,GAAG7E,IAAKvC,EAAuBoH,GAAGhF,MAG9G,CACA,OAAOqJ,EAAAA,EAAAA,IAA8BD,EACvC,CAyBiDE,GAA6B,QAAAvb,QAvCtE+Z,EAA0D,EAA9BhK,GAC3BuL,EAAAA,EAAAA,IAA8BvB,IAsC2E,aAAY,KAExHvb,OAAOD,KAAK+b,GAAczc,KAAI,SAAC4c,EAAMlb,GACnC,IAAMic,GAAiB/B,EAAAA,EAAAA,IAAerJ,EAAYkK,EAAaG,GAAM,GAAGxI,MAAOjC,GAC/E,OACE7Q,EAAAA,cAAA,OAAKK,IAAKD,GACRJ,EAAAA,cAAA,OAAKC,UAAWoc,EAAiB,kCAAoClB,EAAaG,GAAM,GAAGtE,YAAc,oCAAsC,wCAAyCsE,GACvLH,EAAaG,GAAM5c,KAAI,SAAA4d,GAAoB,OAC1Ctc,EAAAA,cAAA,OACEK,IAAKic,EAAqBxJ,MAAME,UAChC/S,UAAWoc,EAAiB,kCAAoCC,EAAqBtF,YAAc,oCAAsC,yCAExI7E,EAAAA,EAAAA,GAA2B,OAApBmK,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBxJ,MAAO,UAAY,OAAQX,EAAAA,EAAAA,GAA2B,OAApBmK,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBrJ,IAAK,UAC3FjT,EAAAA,cAAA,UAAQC,UAAU,gCAAgCO,QAAS,kBAAM6Q,EAAyBiL,EAAqB,GAC7Gtc,EAAAA,cAACsQ,EAAQ,OAEP,KAEL+L,GAAkBlB,EAAaG,GAAM,GAAGtE,aACzChX,EAAAA,cAAA,OAAKC,UAAU,4BAA2B,mEAMlD,IAGR,C,yDC9IMwa,EAAaza,EAAAA,YACjB,SAACsL,EAA0BmD,GAAiC,OAC1DzO,EAAAA,cAAA,UACEnB,GAAG,cACHyB,KAAK,SACLmO,IAAKA,EACL8N,MAAO,CACLC,WAAY,OACZC,OAAQ,OACRC,OAAQ,WAEVlc,QAAS,SAACvB,GACRqM,EAAM9K,QAAQvB,EAChB,GAECqM,EAAMqR,SACA,IAIb,W,yDCzBA,UAAeC,EAA0B,O,oFCFlC,IAAK/G,EAAU,SAAVA,GAAU,OAAVA,EAAU,iBAAVA,EAAU,6BAAVA,EAAU,2BAAVA,EAAU,sBAAVA,EAAU,eAAVA,CAAU,K,27CC0EtB,UA9D0C,SAAHpW,GAA0C,IAArCod,EAAepd,EAAfod,gBAAiBC,EAAKrd,EAALqd,MAAOC,EAAMtd,EAANsd,OACYtQ,EAAAxH,GAAhCyH,EAAAA,EAAAA,UAAsB,IAAIpH,KAAM,GAArE0X,EAAcvQ,EAAA,GAAEwQ,EAAiBxQ,EAAA,GAC0CI,EAAA5H,GAAhCyH,EAAAA,EAAAA,UAAsB,IAAIpH,KAAM,GAA3E4X,EAAiBrQ,EAAA,GAAEsQ,EAAoBtQ,EAAA,GAC6BG,EAAA/H,GAA7ByH,EAAAA,EAAAA,UAAwB,MAAK,GAApE0Q,EAAepQ,EAAA,GAAEqQ,EAAkBrQ,EAAA,GAE1CsQ,GAA4C5a,EAAAA,EAAAA,UAAQ,WAGhD,MAAO,CAAE6a,eAFcR,EAAOS,QAAO,SAACC,EAAKC,GAAK,OAAKD,EAAME,WAAWD,EAAME,SAAS,GAAE,GAAKb,EAAOpa,OAE1Ekb,gBADDd,EAAOS,QAAO,SAACC,EAAKC,GAAK,OAAKD,EAAME,WAAWD,EAAMI,UAAU,GAAE,GAAKf,EAAOpa,OAEzG,GAAG,CAACoa,IAJIQ,EAAcD,EAAdC,eAAgBM,EAAeP,EAAfO,gBAMlBE,EAAmB,SAACL,GACtB,IAAMM,EAAS,IAAI1Y,IAAI0X,GACvBgB,EAAOC,IAAIP,EAAM7e,IACjBoe,EAAkBe,GAClBX,EAAmB,KACvB,EAEMa,EAAwB,SAACR,GAC3B,IAAMM,EAAS,IAAI1Y,IAAI0X,GACvBgB,EAAM,OAAQN,EAAM7e,IACpBoe,EAAkBe,GAClBX,EAAmB,KACvB,EAQA,OACErd,EAAAA,cAACme,EAAAA,GAAW,CAAC3R,OAAQqQ,GACjB7c,EAAAA,cAACoe,EAAAA,GAAG,CACF7B,MAAO,CAACza,MAAO,OAAQE,OAAQ,SAC/Bqc,cAAe,CAACC,IAAKf,EAAgBgB,IAAKV,GAC1CW,YAAa,EACbC,gBAAiB,SACjBC,kBAAkB,EAClB5B,MAAOA,EACPtc,QAAS,kBAAM6c,EAAmB,KAAK,GAEpCN,EAAOre,KAAI,SAAAgf,GAAK,OACf1d,EAAAA,cAAC2e,EAAAA,QAAW,CAACte,IAAKqd,EAAM7e,GACX+f,gBAAiBxB,IAAoBM,EAAM7e,GAC3C2B,QAAS,kBAAM6c,EAAmBK,EAAM7e,GAAG,EAC3CggB,QAAS,kBAAMxB,EAAmB,KAAK,EACvCK,MAAOA,EACPoB,WAAY9B,EAAe+B,IAAIrB,EAAM7e,IACrCmgB,mBAAoB9B,EAAkB6B,IAAIrB,EAAM7e,IAChDkf,iBAAkBA,EAClBG,sBAAuBA,GAAwB,KAGlEle,EAAAA,cAAA,SAAOwP,QAAM,EAAC9O,MAAOue,MAAMC,KAAKlC,GAAgBtB,KAAK,KAAM9a,KAAK,cAChEZ,EAAAA,cAAA,UAAQM,KAAK,SAASE,QA9BP,SAACvB,GACpBke,EAAqB,IAAI7X,IAAI,GAADzE,OAAAoO,EAAKiO,GAAiBjO,EAAK+N,MACvDC,EAAkB,IAAI3X,KACtBrG,EAAE8J,OAAOoW,KAAKC,QAChB,EA0BmDnf,UAAU,kBAAkB8N,SAAkC,IAAxBiP,EAAe7T,MAAY,UAKxH,C,mkCCwCA,UAhGqC,SAAH1J,GAE5B,IADHie,EAAKje,EAALie,MAAOld,EAAOf,EAAPe,QAASqe,EAAOpf,EAAPof,QAASD,EAAenf,EAAfmf,gBAAiBE,EAAUrf,EAAVqf,WAAYE,EAAkBvf,EAAlBuf,mBAAoBjB,EAAgBte,EAAhBse,iBAAkBG,EAAqBze,EAArBye,sBAE3CmB,EAAApa,GAAtBqa,EAAAA,EAAAA,MAAsB,GAA3CC,EAASF,EAAA,GAAEG,EAAMH,EAAA,GAElBI,GAAW/c,EAAAA,EAAAA,UAAQ,WACvB,OAAIoc,EACK,SACEE,EACF,UACEtB,EAAMgC,kBAAkB/c,OAAS,EACnC,UAEA,OAEX,GAAG,CAACmc,EAAYpB,EAAMgC,oBAEtB,OACE1f,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC2f,EAAAA,GAAc,CAAClR,IAAK8Q,EACLK,SAAU,CAACtB,IAAKX,WAAWD,EAAME,UAAWW,IAAKZ,WAAWD,EAAMI,YAClEtd,QAASA,GAEvBR,EAAAA,cAAC6f,EAAAA,GAAG,CAACrD,WAAYiD,EAAUK,YAAa,QAASC,WAAY,WAE9DnB,GACC5e,EAAAA,cAACggB,EAAAA,GAAU,CAACC,OAAQT,EAAQU,aAAcrB,GACxC7e,EAAAA,cAAA,SAAG,UAAU,IAACA,EAAAA,cAAA,KAAGoQ,KAAI,gBAAAvP,OAAkB6c,EAAM7e,GAAE,SAASkK,OAAO,UAAU2U,EAAM7e,IAC/EmB,EAAAA,cAAA,WAAM0d,EAAMyC,SAAS,KAAGzC,EAAM0C,OAAO,KACrCpgB,EAAAA,cAAA,WACEA,EAAAA,cAAA,SAAG,gBAAgB,IAAE0d,EAAM2C,YAAY3hB,KAAI,SAAC4hB,GAAU,OAAKA,EAAWC,cAAc,IAAE7E,KAAK,OAE5FgC,EAAM8C,iBACLxgB,EAAAA,cAAA,WACEA,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SAAG,qBAAqB,IAAE0d,EAAM8C,kBAIrC9C,EAAM+C,YAAezgB,EAAAA,cAAA,WAAKA,EAAAA,cAAA,SAAG,eAC5BA,EAAAA,cAAAA,EAAAA,SAAA,KACG0d,EAAMgD,yBACL1gB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,WACEA,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SAAG,0BAA0B,IAAE0d,EAAMgD,2BAGzC1gB,EAAAA,cAAA,WACEA,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,SAAG,wBAAwB,IAAE0d,EAAMiD,0BAKzC3gB,EAAAA,cAAA,WAAKA,EAAAA,cAAA,KAAGC,UAAU,eAAc,gCAIF,IAAnCyd,EAAMgC,kBAAkB/c,OACvB3C,EAAAA,cAAAA,EAAAA,SAAA,MACI8e,GACA9e,EAAAA,cAAA,WACEA,EAAAA,cAAA,UAAQC,UAAW,yBACXO,QAAS,kBAAMud,EAAiBL,EAAM,GAAE,SAMtD1d,EAAAA,cAAA,WACEA,EAAAA,cAAA,SAAG,uBACHA,EAAAA,cAAA,UACG0d,EAAMgC,kBAAkBhhB,KAAI,SAACkiB,EAAOxgB,GAAK,OACxCJ,EAAAA,cAAA,MAAIK,IAAKD,EAAOH,UAAU,eAAe2gB,EAAW,MAK3D5B,GACChf,EAAAA,cAAA,WACEA,EAAAA,cAAA,KAAGC,UAAU,eAAc,sBAG9B6e,GACC9e,EAAAA,cAAA,WACEA,EAAAA,cAAA,UAAQC,UAAW,wBAAyBO,QAAS,kBAAM0d,EAAsBR,EAAM,GAAE,YAQvG,C,yDC5GA,UAAemD,EAAgB,O,unCCS/B,IAAMC,EAAqB,CACzBxC,IAAK,WAAYC,KAAM,YA2DzB,UAtD6C,SAAH9e,GAAgF,IAA1Eme,EAAQne,EAARme,SAAUE,EAASre,EAATqe,UAAqCiD,EAAYthB,EAAtCuhB,yBAAwClE,EAAKrd,EAALqd,MACQjC,EAAA5V,EAAvFjF,EAAAA,SAAe,CAAEse,IAAK2C,OAAOtD,WAAWC,GAAWW,IAAK0C,OAAOtD,WAAWG,KAAa,GAA5GoD,EAAMrG,EAAA,GAAEsG,EAAStG,EAAA,GAC2FG,EAAA/V,EAAnDjF,EAAAA,SAAeihB,OAAOG,SAASL,IAAiB,IAAG,GAA5GC,EAAwBhG,EAAA,GAAEqG,EAA2BrG,EAAA,GAE5D,OACEhb,EAAAA,cAAA,OAAKC,UAAU,gCACbD,EAAAA,cAAA,OAAKC,UAAU,gBACbD,EAAAA,cAACoe,EAAAA,GAAG,CACFvf,GAAG,wBACHwf,cAAe6C,EAAO5C,KAAO4C,EAAO3C,IAAM2C,EAASJ,EACnDtC,YAAa,EACbC,gBAAiB,SACjBC,kBAAkB,EAClB5B,MAAOA,EACPwE,gBAAgB,YAChB9gB,QAAS,SAACvB,GAAC,OAAKkiB,EAAUliB,EAAEmb,OAAO8G,OAAO,GAEzCA,EAAO5C,KAAO4C,EAAO3C,KACpBve,EAAAA,cAACuhB,EAAAA,OAAM,CAACC,OAAQN,EAAQO,OApBZ,QAoBoBT,MAKtChhB,EAAAA,cAAA,WACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAOC,UAAU,SAAQ,YACzBD,EAAAA,cAAA,SAAOnB,GAAG,6BAA6B+B,KAAK,8BAA8BF,MAAa,OAANwgB,QAAM,IAANA,OAAM,EAANA,EAAQ5C,IAAKvd,UAAQ,EAACT,KAAK,SAAS6O,UAAQ,KAE/HnP,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAOC,UAAU,SAAQ,aACzBD,EAAAA,cAAA,SAAOnB,GAAG,8BAA8B+B,KAAK,+BAA+BF,MAAa,OAANwgB,QAAM,IAANA,OAAM,EAANA,EAAQ3C,IAAKxd,UAAQ,EAACT,KAAK,SAAS6O,UAAQ,KAEjInP,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAOC,UAAU,SAAQ,+BACzBD,EAAAA,cAAA,QAAMC,UAAU,uBACdD,EAAAA,cAAA,SAAIghB,EAAyB,YAC7BhhB,EAAAA,cAAA,SAAOnB,GAAG,gDACH+B,KAAK,iDACLkI,SAAU,SAAC7J,GAAC,OAAKoiB,EAA4BpiB,EAAE8J,OAAO2Y,cAAc,EACpEhhB,MAAOsgB,EACP1gB,KAAK,QACLqP,IAAK,GACLC,IAAK,UAS1B,C,0uCC1CA,SAAS+R,EAAUrW,GAAqB,IAADsW,EAEnCphB,EAWE8K,EAXF9K,QACAqhB,EAUEvW,EAVFuW,OACAC,EASExW,EATFwW,YACAC,EAQEzW,EARFyW,UACAC,EAOE1W,EAPF0W,YACAC,EAME3W,EANF2W,WACAC,EAKE5W,EALF4W,gBACAC,EAIE7W,EAJF6W,gBACAV,EAGEnW,EAHFmW,OACAD,EAEElW,EAFFkW,OACGY,E,6WAAaC,CACd/W,EAAKgX,GAEHC,GAAYC,EAAAA,EAAAA,QAA6C,CAAC,GAChEnjB,OAAOojB,OAAOF,EAAUG,QAAS,CAC/BliB,QAAAA,EACAqhB,OAAAA,EACAC,YAAAA,EACAC,UAAAA,EACAC,YAAAA,EACAC,WAAAA,EACAC,gBAAAA,EACAC,gBAAAA,IAGF,IAAMQ,GAASH,EAAAA,EAAAA,QAAO,IAAII,OAAOC,KAAKtB,QAAUmB,QAIhDC,EAAOG,WAAWV,IAElBzb,EAAAA,EAAAA,YAAU,WACH6a,KACAuB,EAAAA,EAAAA,IAAavB,EAAQmB,EAAOK,cAAcL,EAAOM,UAAUzB,GAClE,GAAG,CAACA,KAEJ7a,EAAAA,EAAAA,YAAU,gBACOsE,IAAXwW,GAAmC,OAAXA,GACxBA,IAAWkB,EAAOO,aAAaP,EAAOQ,UAAU1B,EACtD,GAAG,CAACA,IAEJ,IAAM/iB,EAAmC,QAAhCkjB,GAAGwB,EAAAA,EAAAA,YAAWC,EAAAA,WAAkB,IAAAzB,OAAA,EAA7BA,EAA+BljB,IAmD3C,OAhDAiI,EAAAA,EAAAA,YAAU,WACR,GAAKjI,EASL,OAFAikB,EAAOW,OAAO5kB,GAEP,WACLikB,EAAOW,OAAO,KAChB,OAVcrY,IAARvM,GACF6kB,QAAQ3C,MAAM,6CAUpB,GAAG,CAACliB,KAGJiI,EAAAA,EAAAA,YAAU,WACR,GAAKgc,EAAL,CAGA,IAAMa,EAAMZ,OAAOC,KAAKjc,MAuBxB,MAtBA,CACE,CAAC,QAAS,WACV,CAAC,OAAQ,UACT,CAAC,YAAa,eACd,CAAC,UAAW,aACZ,CAAC,YAAa,eACd,CAAC,WAAY,eACb9D,SAAQ,SAAArD,GAAiC,IAADmS,EAAA3M,EAAAxF,EAAA,GAA9BgkB,EAAS7R,EAAA,GAAE8R,EAAa9R,EAAA,GAClC4R,EAAIG,YAAYhB,EAAQc,GAAW,SAACxkB,GAClC,IAAM2kB,EAAWrB,EAAUG,QAAQgB,GAC/BE,GAAUA,EAAS3kB,EACzB,GACF,IACAukB,EAAIG,YAAYhB,EAAQ,kBAAkB,WAAO,IAADkB,EAAAC,EACxCC,EAAYpB,EAAOO,YACQ,QAAjCW,GAAAC,EAAAvB,EAAUG,SAAQR,uBAAe,IAAA2B,GAAjCA,EAAAG,KAAAF,EAAoCC,EACtC,IACAP,EAAIG,YAAYhB,EAAQ,kBAAkB,WAAO,IAADsB,EAAAC,EACxCC,EAAYxB,EAAOK,YACQ,QAAjCiB,GAAAC,EAAA3B,EAAUG,SAAQP,uBAAe,IAAA8B,GAAjCA,EAAAD,KAAAE,EAAoCC,EACtC,IAEO,WACLX,EAAIY,uBAAuBzB,EAC7B,CA5BmB,CA6BrB,GAAG,CAACA,IAEGA,CACT,CAKO,IAAMpB,GAAS8C,EAAAA,EAAAA,aAAW,SAAC/Y,EAAoBmD,GACpD,IAAMkU,EAAShB,EAAUrW,GAIzB,OAFAgZ,EAAAA,EAAAA,qBAAoB7V,GAAK,kBAAMkU,CAAM,IAE9B,IACT,G,6ECjIA,mBAAeljB,GAAA,IAAGme,EAAQne,EAARme,SAAUE,EAASre,EAATqe,UAAWkD,EAAwBvhB,EAAxBuhB,yBAA0BxU,EAAM/M,EAAN+M,OAAQsQ,EAAKrd,EAALqd,MAAK,OAC5E9c,EAAAA,cAACme,EAAAA,GAAW,CAAC3R,OAAQA,GACnBxM,EAAAA,cAACukB,EAAAA,QAAmB,CAAC3G,SAAUA,EAAUE,UAAWA,EAAWkD,yBAA0BA,EAA0BlE,MAAOA,IAE7H,C,4kCCqCD,UA/BuC,SAAHrd,GAO7B,IANLqN,EAAOrN,EAAPqN,QACAwR,EAAG7e,EAAH6e,IACAC,EAAG9e,EAAH8e,IACAiG,EAAY/kB,EAAZ+kB,aACAjE,EAAc9gB,EAAd8gB,eACAkE,EAAShlB,EAATglB,UAEkDpF,EAAApa,GAAtBqa,EAAAA,EAAAA,MAAsB,GAA3CC,EAASF,EAAA,GAAEG,EAAMH,EAAA,GAC2B5S,EAAAxH,GAAfyH,EAAAA,EAAAA,WAAS,GAAM,GAA5CgY,EAAUjY,EAAA,GAAEkY,EAAalY,EAAA,GAC1BmY,GAAYliB,EAAAA,EAAAA,UAAQ,kBAAMmiB,GAAQJ,GAAa,GAAKI,EAAOliB,OAAO,GAAE,CAAC8hB,IAC3E,OACEzkB,EAAAA,cAAC2f,EAAAA,GAAc,CACblR,IAAK8Q,EACLK,SAAU,CAACtB,IAAKA,EAAKC,IAAKA,GAC1B/d,QAAS,kBAAMmkB,GAAeD,EAAW,EAAEzkB,UAAU,iBACrDD,EAAAA,cAAC6f,EAAAA,GAAG,CAACrD,WAAYoI,EAAW9E,YAAa,QAASC,WAAY,UAC7D2E,GACC1kB,EAAAA,cAACggB,EAAAA,GAAU,CAACC,OAAQT,EAAQU,aAAc,kBAAMyE,GAAc,EAAM,GAClE3kB,EAAAA,cAAA,SAAI8M,GACJ9M,EAAAA,cAAA,WAAK,kBAAgBwkB,GACrBxkB,EAAAA,cAAA,WAAK,SAAOugB,GACXkE,GACCzkB,EAAAA,cAAA,WAAK,WAASykB,IAM1B,C,4ECvBM3D,EAAqB,CACzBxC,IAAK,WAAYC,KAAM,YAiDzB,UA9CwC,SAAH9e,GAA8B,IAAzB4gB,EAAW5gB,EAAX4gB,YAAavD,EAAKrd,EAALqd,MAC/Cpe,GAAMomB,EAAAA,EAAAA,IAAO,mBAmBnB,OAjBAne,EAAAA,EAAAA,YAAU,WACR,GAAIjI,EACF,GAAI,IAAI4G,IAAI+a,EAAY3hB,KAAI,SAAC4hB,GAAU,OAAKA,EAAWxT,OAAO,KAAG3D,KAAO,EAAG,CAEzE,IAAImO,EAAS,IAAIsL,OAAOC,KAAKkC,aAC7B1E,EAAYvd,SAAQ,SAAAwd,GAClBhJ,EAAO0N,OAAO,IAAIpC,OAAOC,KAAKoC,OAAO3E,EAAW1C,SAAU0C,EAAWxC,WAEvE,IACApf,EAAIwmB,UAAU5N,EAChB,MACE5Y,EAAIukB,UAAU,CAAC3E,IAAK+B,EAAY,GAAGzC,SAAUW,IAAK8B,EAAY,GAAGvC,YACjEpf,EAAIymB,QAAQ,EAGlB,GAAG,CAACzmB,IAGFsB,EAAAA,cAAA,OAAKC,UAAU,gBACXD,EAAAA,cAACoe,EAAAA,GAAG,CACFvf,GAAI,kBACJwf,cAAeyC,EACftC,YAAa,EACbC,gBAAiB,SACjBC,kBAAkB,EAClB5B,MAAOA,GAENuD,EAAY3hB,KAAI,SAAC4hB,EAAYlgB,GAAK,OACjCJ,EAAAA,cAAColB,EAAAA,QAAa,CACZ9G,IAAKgC,EAAW1C,SAChBW,IAAK+B,EAAWxC,UAChBhR,QAASwT,EAAWxT,QACpB0X,aAAclE,EAAWzhB,GACzB0hB,eAAgBD,EAAWC,eAC3BlgB,IAAG,kBAAAQ,OAAoBT,GACvBqkB,UAAWnE,EAAWmE,WACtB,KAKd,C,6EChEA,mBAAehlB,GAAA,IAAG4gB,EAAW5gB,EAAX4gB,YAAa7T,EAAM/M,EAAN+M,OAAQsQ,EAAKrd,EAALqd,MAAK,OAC1C9c,EAAAA,cAACme,EAAAA,GAAW,CAAC3R,OAAQA,GACnBxM,EAAAA,cAACqlB,EAAAA,QAAc,CAAChF,YAAaA,EAAavD,MAAOA,IAEpD,C,o8CC0FD,UA3FkC,WAChC,IAAMwI,EAAkBtlB,EAAAA,OAAa,MACSyM,EAAAxH,GAApByH,EAAAA,EAAAA,UAAiB,IAAG,GAAvC6Y,EAAK9Y,EAAA,GAAE+Y,EAAQ/Y,EAAA,GACgBI,EAAA5H,GAAdyH,EAAAA,EAAAA,UAAS,MAAK,GAA/ByS,EAAItS,EAAA,GAAE4Y,EAAO5Y,EAAA,GAEd6Y,EAAc,SAACzmB,GACnBA,EAAEgK,iBACFqc,EAAgB5C,QAAQiD,OAC1B,EAgBMC,GAAarP,EAAAA,EAAAA,cAAY,SAACtX,GAC9B,IAAKkgB,EAAM,OAAO,KAElBlgB,EAAEgK,iBAEF,IAAM4c,EAAW,IAAIC,SAAS3G,GAE9BoG,EAAMziB,SAAQ,SAACijB,GACbF,EAASG,OAAO,UAAWD,EAC7B,IAEAF,EAASG,OAAO,OAAQ,QAExBzC,QAAQ0C,IAAIJ,GAEZK,MAAM/G,EAAKxU,OAAQ,CACjBwb,OAAQhH,EAAKgH,OACblW,KAAM4V,IACLO,MAAK,SAACC,GACHA,EAASC,WACX1kB,OAAO2kB,SAASnW,KAAOiW,EAASnW,IAEhCtO,OAAO4kB,MAAM,gFAEjB,GACF,GAAG,CAACrH,EAAMoG,IAgBV,OAdA5e,EAAAA,EAAAA,YAAU,WACR8e,EAAQH,EAAgB5C,QAAQvD,KAClC,GAAG,CAACmG,KAEJ3e,EAAAA,EAAAA,YAAU,WACR,GAAIif,EAGF,OAFAzL,iBAAiB,SAAUyL,GAEpB,WACLa,oBAAoB,SAAUb,EAChC,CAEJ,GAAG,CAACA,IAGF5lB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKC,UAAU,gBAnDQslB,EAAgB7mB,KAAI,SAACqnB,GAC9C,IAAMW,EAAWX,EAAKnlB,KAEtB,OACEZ,EAAAA,cAAA,OAAKK,IAAKqmB,GAAWA,EAEzB,IA+CM1mB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC2mB,EAAAA,GAAQ,CAACC,OAAQ,SAACC,GAAa,OA5DlBC,EA4DoCD,EA3DxDtD,QAAQ0C,IAAIa,QACZtB,EAAS,GAAD3kB,OAAAoO,EAAKsW,GAAKtW,EAAK6X,KAFJ,IAACA,CA4DkD,IAC7D,SAAArnB,GAAA,IAAEsnB,EAAYtnB,EAAZsnB,aAAcC,EAAavnB,EAAbunB,cAAeC,EAAYxnB,EAAZwnB,aAAY,OAC1CjnB,EAAAA,cAAA,MAAS+mB,IACP/mB,EAAAA,cAAA,QAAAX,OAAAojB,OAAA,GAAWuE,IAAe,CAAEvY,IAAK6W,KACjCtlB,EAAAA,cAAA,UAAQC,UAAU,YACVO,QAASklB,EACTnJ,MAAO,CAAC2K,QAAS,OAAQC,WAAY,SAAUC,eAAgB,SAC7DC,gBAAkBJ,EAAe,UAAY,gBAErDjnB,EAAAA,cAAC8b,EAAAA,EAAe,CAACC,KAAMuL,EAAAA,IAAU/K,MAAO,CAAEgL,YAAa,UACtD,6CAEC,MAOpB,C,yDC9FA,UAAeC,EAAe,O,2KCEjBzN,EAA0B,SAAC9I,EAAkBJ,GACxD,IAAIiJ,EACE2N,GAAYC,EAAAA,EAAAA,GAAWzW,GAC7B,GAAIJ,EAA8B,CAChC,IAAM8W,EAAyB,IAAIlS,KAAK5E,GAEtCiJ,GADE8N,EAAAA,EAAAA,GAAiBD,EAAwBF,GAAa,EACjCA,EAEkC,KAAlCnV,EAAAA,EAAAA,IAAOsD,EAAAA,EAAAA,GAAQ6R,EAAW,KAAY7R,EAAAA,EAAAA,GAAQ6R,EAAW,IAAK7R,EAAAA,EAAAA,GAAQ6R,EAAW,EAE5G,MACE3N,EAAyD,KAAlCxH,EAAAA,EAAAA,IAAOsD,EAAAA,EAAAA,GAAQ6R,EAAW,KAAY7R,EAAAA,EAAAA,GAAQ6R,EAAW,IAAK7R,EAAAA,EAAAA,GAAQ6R,EAAW,GAE1G,OAAO3N,CACT,EAGaQ,EAAiB,SAACrJ,EAAkB4W,EAA6BhX,GAC5E,IAAMiJ,EAA6BC,EAAwB9I,EAAYJ,GACvE,QAAIiX,EAAAA,EAAAA,GAASD,EAAuB/N,EAEtC,EAGaqC,EAAgC,SAAC4L,GAC5C,IAAMC,EAAQlW,KAAKC,MAAMgW,EAAoB,IACvCpY,EAAMoY,EAAoB,GAChC,OAAY,IAARpY,EACI,GAAN9O,OAAUmnB,EAAK,OAET,GAANnnB,OAAUmnB,EAAK,QAAAnnB,OAAO8O,EAAG,OAE7B,C","sources":["webpack://app/./app/javascript/components/ sync ^\\.\\/.*$","webpack://app/./app/javascript/components/AccessInfoForm/AccessInfoForm.tsx","webpack://app/./app/javascript/components/AccessInfoForm/AccessInfoFormLoader.tsx","webpack://app/./app/javascript/utils/user.ts","webpack://app/./app/javascript/components/AccessInfoForm/index.tsx","webpack://app/./app/javascript/utils/input.ts","webpack://app/./app/javascript/components/AccessInfoForm/renderInputField.tsx","webpack://app/./app/javascript/components/AccessInfoForm/state.ts","webpack://app/./app/javascript/components/AccessInfoForm/types.ts","webpack://app/./app/javascript/hooks/useTooltips.tsx","webpack://app/./app/javascript/components/AddressUnits/AddressUnits.tsx","webpack://app/./app/javascript/components/AddressUnits/index.tsx","webpack://app/./app/javascript/components/AlertCampaignPreview/AlertCampaignPreview.tsx","webpack://app/./app/javascript/components/AlertCampaignPreview/index.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/AvailabilityCalendar.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/AvailabilityCalendarLoader.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/DateNavigation.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/DatesSelectedPanel.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/IconButton.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/index.tsx","webpack://app/./app/javascript/components/AvailabilityCalendar/types.ts","webpack://app/./app/javascript/components/BundleBuilderMap/BundleBuilderMap.tsx","webpack://app/./app/javascript/components/BundleBuilderMap/OrderMarker.tsx","webpack://app/./app/javascript/components/BundleBuilderMap/index.tsx","webpack://app/./app/javascript/components/ContractorMarketMap/ContractorMarketMap.tsx","webpack://app/./app/javascript/components/ContractorMarketMap/circle.tsx","webpack://app/./app/javascript/components/ContractorMarketMap/index.tsx","webpack://app/./app/javascript/components/InspectionsMap/InspectionPin.tsx","webpack://app/./app/javascript/components/InspectionsMap/InspectionsMap.tsx","webpack://app/./app/javascript/components/InspectionsMap/index.tsx","webpack://app/./app/javascript/components/MultiFilesInput/MultiFilesInput.tsx","webpack://app/./app/javascript/components/MultiFilesInput/index.tsx","webpack://app/./app/javascript/utils/time.ts"],"sourcesContent":["var map = {\n\t\"./AccessInfoForm\": 8351,\n\t\"./AccessInfoForm/\": 8351,\n\t\"./AccessInfoForm/AccessInfoForm\": 1583,\n\t\"./AccessInfoForm/AccessInfoForm.tsx\": 1583,\n\t\"./AccessInfoForm/AccessInfoFormLoader\": 6098,\n\t\"./AccessInfoForm/AccessInfoFormLoader.tsx\": 6098,\n\t\"./AccessInfoForm/index\": 8351,\n\t\"./AccessInfoForm/index.tsx\": 8351,\n\t\"./AccessInfoForm/renderInputField\": 9333,\n\t\"./AccessInfoForm/renderInputField.tsx\": 9333,\n\t\"./AccessInfoForm/state\": 8492,\n\t\"./AccessInfoForm/state.ts\": 8492,\n\t\"./AccessInfoForm/styles\": 9538,\n\t\"./AccessInfoForm/styles.scss\": 9538,\n\t\"./AccessInfoForm/types\": 7192,\n\t\"./AccessInfoForm/types.ts\": 7192,\n\t\"./AddressUnits\": 5474,\n\t\"./AddressUnits/\": 5474,\n\t\"./AddressUnits/AddressUnits\": 6805,\n\t\"./AddressUnits/AddressUnits.tsx\": 6805,\n\t\"./AddressUnits/index\": 5474,\n\t\"./AddressUnits/index.tsx\": 5474,\n\t\"./AddressUnits/styles\": 8207,\n\t\"./AddressUnits/styles.scss\": 8207,\n\t\"./AlertCampaignPreview\": 7279,\n\t\"./AlertCampaignPreview/\": 7279,\n\t\"./AlertCampaignPreview/AlertCampaignPreview\": 2987,\n\t\"./AlertCampaignPreview/AlertCampaignPreview.tsx\": 2987,\n\t\"./AlertCampaignPreview/index\": 7279,\n\t\"./AlertCampaignPreview/index.tsx\": 7279,\n\t\"./AlertCampaignPreview/styles\": 4326,\n\t\"./AlertCampaignPreview/styles.scss\": 4326,\n\t\"./AvailabilityCalendar\": 9840,\n\t\"./AvailabilityCalendar/\": 9840,\n\t\"./AvailabilityCalendar/AvailabilityCalendar\": 8681,\n\t\"./AvailabilityCalendar/AvailabilityCalendar.tsx\": 8681,\n\t\"./AvailabilityCalendar/AvailabilityCalendarLoader\": 5748,\n\t\"./AvailabilityCalendar/AvailabilityCalendarLoader.tsx\": 5748,\n\t\"./AvailabilityCalendar/DateNavigation\": 6016,\n\t\"./AvailabilityCalendar/DateNavigation.tsx\": 6016,\n\t\"./AvailabilityCalendar/DatesSelectedPanel\": 8772,\n\t\"./AvailabilityCalendar/DatesSelectedPanel.tsx\": 8772,\n\t\"./AvailabilityCalendar/IconButton\": 9577,\n\t\"./AvailabilityCalendar/IconButton.tsx\": 9577,\n\t\"./AvailabilityCalendar/index\": 9840,\n\t\"./AvailabilityCalendar/index.tsx\": 9840,\n\t\"./AvailabilityCalendar/overrides\": 7160,\n\t\"./AvailabilityCalendar/overrides.scss\": 7160,\n\t\"./AvailabilityCalendar/styles\": 3333,\n\t\"./AvailabilityCalendar/styles.scss\": 3333,\n\t\"./AvailabilityCalendar/types\": 6721,\n\t\"./AvailabilityCalendar/types.ts\": 6721,\n\t\"./BundleBuilderMap\": 6958,\n\t\"./BundleBuilderMap/\": 6958,\n\t\"./BundleBuilderMap/BundleBuilderMap\": 9557,\n\t\"./BundleBuilderMap/BundleBuilderMap.tsx\": 9557,\n\t\"./BundleBuilderMap/OrderMarker\": 3740,\n\t\"./BundleBuilderMap/OrderMarker.tsx\": 3740,\n\t\"./BundleBuilderMap/index\": 6958,\n\t\"./BundleBuilderMap/index.tsx\": 6958,\n\t\"./BundleBuilderMap/styles\": 2039,\n\t\"./BundleBuilderMap/styles.scss\": 2039,\n\t\"./BundleBuilderMap/types\": 2833,\n\t\"./BundleBuilderMap/types.tsx\": 2833,\n\t\"./ContractorMarketMap\": 3032,\n\t\"./ContractorMarketMap/\": 3032,\n\t\"./ContractorMarketMap/ContractorMarketMap\": 8521,\n\t\"./ContractorMarketMap/ContractorMarketMap.tsx\": 8521,\n\t\"./ContractorMarketMap/circle\": 5246,\n\t\"./ContractorMarketMap/circle.tsx\": 5246,\n\t\"./ContractorMarketMap/index\": 3032,\n\t\"./ContractorMarketMap/index.tsx\": 3032,\n\t\"./ContractorMarketMap/styles\": 2961,\n\t\"./ContractorMarketMap/styles.scss\": 2961,\n\t\"./InspectionsMap\": 8270,\n\t\"./InspectionsMap/\": 8270,\n\t\"./InspectionsMap/InspectionPin\": 417,\n\t\"./InspectionsMap/InspectionPin.tsx\": 417,\n\t\"./InspectionsMap/InspectionsMap\": 5557,\n\t\"./InspectionsMap/InspectionsMap.tsx\": 5557,\n\t\"./InspectionsMap/colors.json\": 2309,\n\t\"./InspectionsMap/index\": 8270,\n\t\"./InspectionsMap/index.tsx\": 8270,\n\t\"./InspectionsMap/styles\": 1607,\n\t\"./InspectionsMap/styles.scss\": 1607,\n\t\"./MultiFilesInput\": 4633,\n\t\"./MultiFilesInput/\": 4633,\n\t\"./MultiFilesInput/MultiFilesInput\": 9097,\n\t\"./MultiFilesInput/MultiFilesInput.tsx\": 9097,\n\t\"./MultiFilesInput/index\": 4633,\n\t\"./MultiFilesInput/index.tsx\": 4633,\n\t\"./MultiFilesInput/styles\": 2316,\n\t\"./MultiFilesInput/styles.scss\": 2316\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6900;","import React from \"react\";\nimport \"./styles.scss\";\nimport { AccessInfoFormProps, AccessInformationDBTypes, AccessType, InputFieldEnum } from \"./types\";\nimport { renderInputField } from \"./renderInputField\";\n\nconst AccessInfoForm: React.FC = ({\n minimized,\n mlsOuids,\n state,\n setState,\n handleShowErrorMessage,\n handleSelectAccessType,\n}) => (\n
\n {Object.values(state).map((accessType: AccessType, index) => (\n handleSelectAccessType(accessType)}\n >\n {accessType.isSelected && (\n \n )}\n
\n \n
\n
\n
{accessType.title}
\n {accessType?.subtitle && (\n
{accessType.subtitle}
\n )}\n {accessType.isSelected && (\n handleShowErrorMessage(accessType)}\n >\n {accessType.inputFields.map((inputField) =>\n <>\n {renderInputField(accessType, inputField, setState, minimized, mlsOuids, index)}\n \n )}\n
\n )}\n
\n \n ))}\n \n);\n\nexport default AccessInfoForm;\n","import React, { useEffect, useMemo, useReducer } from \"react\";\nimport './styles.scss';\nimport {\n AccessInfoFormLoaderProps,\n AccessInformationDBTypes,\n AccessTypeEnum,\n AccessTypeTitleEnum,\n Action,\n AppLockboxBrandEnum,\n InputFieldEnum,\n} from \"./types\";\nimport AccessInfoForm from \"./AccessInfoForm\";\nimport { isUserUsingMobile } from \"../../utils/user\";\nimport { createInitialState, reducer } from \"./state\";\n\n\nconst AccessInfoFormLoader: React.FC = ({\n mlsOuids, accessInformations,\n}) => {\n const minimized = isUserUsingMobile();\n\n const initialStates = useMemo(() => {\n if (accessInformations.length === 0) {\n return createInitialState();\n } else {\n let accessInfoState = createInitialState();\n\n accessInformations.forEach((accessInformation) => {\n switch (accessInformation.type) {\n case AccessInformationDBTypes.appEnabledLockbox:\n accessInfoState[AccessTypeEnum.appEnabledLockbox] = {\n ...accessInfoState.appEnabledLockbox, \n brand: accessInformation.lockbox_brand,\n directions: accessInformation.directions,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.combinationLockbox:\n accessInfoState[AccessTypeEnum.combinationLockbox] = {\n ...accessInfoState.combinationLockbox,\n code: accessInformation.code,\n directions: accessInformation.directions,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.communityAccess:\n accessInfoState[AccessTypeEnum.communityAccess] = {\n ...accessInfoState.communityAccess,\n code: accessInformation.code,\n directions: accessInformation.directions,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.doorCode:\n accessInfoState[AccessTypeEnum.doorCode] = {\n ...accessInfoState.doorCode,\n code: accessInformation.code,\n directions: accessInformation.directions,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.hiddenKey:\n accessInfoState[AccessTypeEnum.hiddenKey] = {\n ...accessInfoState.hiddenKey,\n directions: accessInformation.directions,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.meetContactOnsite:\n accessInfoState[AccessTypeEnum.meetContactOnsite] = {\n ...accessInfoState.meetContactOnsite,\n fullName: accessInformation.contact_name,\n phoneNumber: accessInformation.contact_phone_number?.slice(0, 14),\n extension: accessInformation.contact_phone_number?.includes('ext') ? accessInformation.contact_phone_number.split('ext ')[1] : '',\n email: accessInformation.contact_email,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.showingTime:\n accessInfoState[AccessTypeEnum.showingTime] = {\n ...accessInfoState.showingTime,\n mlsOuid: accessInformation.mls_name,\n mlsId: accessInformation.mls_id,\n isSelected: true,\n }\n break;\n case AccessInformationDBTypes.general:\n accessInfoState[AccessTypeEnum.general] = {\n type: AccessTypeEnum.general,\n title: AccessTypeTitleEnum.general,\n inputFields: [InputFieldEnum.directions],\n showFullDirectionsError: false,\n directions: accessInformation.directions,\n isSelected: true,\n }\n default:\n return accessInfoState;\n }\n });\n return accessInfoState;\n }\n }, [accessInformations]);\n\n const [state, updateState] = useReducer(reducer, initialStates)\n const setState = (key: AccessTypeEnum, value: any) => updateState({ type: Action.Set, key, value });\n\n const selectedAccessTypes = useMemo(() => Object.values(state).filter((accessType) => accessType.isSelected), [state]);\n\n const enableNextButton: boolean = useMemo(() => {\n let communityAccessIsComplete: boolean = false;\n let completedAccessTypesCount: number = 0;\n let selectedAccessTypesCount: number = selectedAccessTypes?.length;\n \n if (selectedAccessTypes?.length > 0) {\n selectedAccessTypes.forEach((accessType: any) => {\n switch (accessType.type) {\n case AccessTypeEnum.appEnabledLockbox:\n if (accessType.brand?.length > 0 && accessType.directions?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.combinationLockbox:\n if (accessType.code?.length > 0 && accessType.directions?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.doorCode:\n if (accessType.code?.length > 0 && accessType.directions?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.communityAccess:\n if (accessType.code?.length > 0 || accessType.directions?.length > 0) {\n communityAccessIsComplete = true;\n return;\n }\n case AccessTypeEnum.hiddenKey:\n if (accessType.directions?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.meetContactOnsite:\n if (accessType.fullName?.length > 0 && accessType.phoneNumber?.length >= 10) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.showingTime:\n if (accessType.mlsOuid?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n case AccessTypeEnum.general:\n if (accessType.directions?.length > 0) {\n completedAccessTypesCount++;\n return;\n }\n default: return;\n }\n })\n \n // Handle community access edge cases\n if (selectedAccessTypes.some((accessType) => accessType.type === AccessTypeEnum.communityAccess)\n && communityAccessIsComplete\n && completedAccessTypesCount === selectedAccessTypesCount - 1\n ) return true; \n\n if (completedAccessTypesCount > 0 && completedAccessTypesCount === selectedAccessTypesCount) return true;\n }\n return false;\n }, [selectedAccessTypes]);\n\n const handleSelectAccessType = (accessType: any) => (\n setState(accessType.type, { ...accessType, isSelected: !accessType.isSelected })\n );\n\n const handleShowErrorMessage = (accessType: any) => {\n if (!accessType.isSelected) {\n return;\n }\n const newAccessTypeState = {...accessType};\n switch (accessType.type) {\n case AccessTypeEnum.appEnabledLockbox:\n if (!Object.values(AppLockboxBrandEnum).includes(accessType.brand)) {\n newAccessTypeState.showBrandError = true;\n }\n if (accessType.directions?.length < 1) {\n newAccessTypeState.showDirectionsError = true;\n }\n break;\n case AccessTypeEnum.combinationLockbox:\n if (accessType.code?.trim().replace(/[^\\w\\d]/g, '').length < 1) {\n newAccessTypeState.showCodeError = true;\n }\n if (accessType.directions?.length < 1) {\n newAccessTypeState.showDirectionsError = true;\n }\n break;\n // Community Access requires either a code or directions (or can have both, but both are not required)\n case AccessTypeEnum.communityAccess:\n if (accessType.code?.trim().replace(/[^\\w\\d]/g, '').length < 1 && accessType.directions?.length < 1) {\n newAccessTypeState.showCodeError = true;\n newAccessTypeState.showDirectionsError = true;\n break;\n }\n if (accessType.code?.length > 0 || accessType.directions?.length > 0) {\n newAccessTypeState.showCodeError = false;\n newAccessTypeState.showDirectionsError = false;\n break;\n }\n case AccessTypeEnum.doorCode:\n if (accessType.code?.trim().replace(/[^\\w\\d]/g, '').length < 1) {\n newAccessTypeState.showCodeError = true;\n }\n if (accessType.directions?.length < 1) {\n newAccessTypeState.showDirectionsError = true;\n }\n break;\n case AccessTypeEnum.hiddenKey:\n if (accessType.directions?.length < 1) {\n newAccessTypeState.showDirectionsError = true;\n }\n break;\n case AccessTypeEnum.meetContactOnsite:\n if (accessType.fullName?.length < 1) {\n newAccessTypeState.showFullNameError = true;\n }\n if (accessType.phoneNumber?.length < 10) {\n newAccessTypeState.showPhoneNumberError = true;\n }\n if (accessType.email?.length > 0 && !/\\S+@\\S+\\.\\S+/.test(accessType.email)) {\n newAccessTypeState.showEmailError = true;\n }\n break;\n case AccessTypeEnum.showingTime:\n if (!Object.values(mlsOuids).includes(accessType.mlsOuid)) {\n newAccessTypeState.showMlsOuidError\n }\n break;\n case AccessTypeEnum.general:\n if (accessType.directions?.length < 1) {\n newAccessTypeState.showDirectionsError = true;\n }\n break;\n default: break;\n }\n setState(accessType.type, newAccessTypeState);\n };\n\n useEffect(() => {\n if (enableNextButton) {\n var event = new Event(\"access_information_complete\");\n document.dispatchEvent(event);\n } else {\n var event = new Event(\"access_information_incomplete\");\n document.dispatchEvent(event);\n }\n }, [enableNextButton]);\n\n return (\n \n );\n}\n\nexport default AccessInfoFormLoader;\n","export const isUserUsingMobile = () => {\n // User agent string method\n let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n // Screen resolution method\n if (!isMobile) {\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n isMobile = (screenWidth < 768 || screenHeight < 768);\n }\n\n // Touch events method\n if (!isMobile) {\n isMobile = (('ontouchstart' in window) || (navigator.maxTouchPoints > 0));\n }\n\n // CSS media queries method\n if (!isMobile) {\n const bodyElement = document.getElementsByTagName('body')[0];\n isMobile = window.getComputedStyle(bodyElement).getPropertyValue('content').indexOf('mobile') !== -1;\n }\n\n return isMobile;\n};","import AccessInfoFormLoader from \"./AccessInfoFormLoader\";\n\nexport default AccessInfoFormLoader;","/*\n Accepts any string input and removes any non-valid phone digits\n Returns only the first 10 integers as a string\n*/\nexport const unformatPhoneNumber = (phoneNumber: string) => phoneNumber.replace(/\\D/g, '').substring(0, 10);\n\n/*\n Accepts any string input and removes any non-valid phone digits\n Returns the phone number input formatted as (XXX) XXX-XXXX\n*/\nexport const formatPhoneNumber = (phoneNumber: string) => {\n if (!phoneNumber) return phoneNumber;\n const digitsOnly = unformatPhoneNumber(phoneNumber);\n\n if (digitsOnly.length < 4) return digitsOnly;\n if (digitsOnly.length < 7) {\n return `(${digitsOnly.slice(0, 3)}) ${digitsOnly.slice(3)}`;\n }\n\n return `(${digitsOnly.slice(0, 3)}) ${digitsOnly.slice(3, 6)}-${digitsOnly.slice(6, 10)}`;\n};","import React from \"react\";\nimport {\n AccessTypeEnum,\n AppLockboxBrandEnum,\n InputFieldEnum,\n InputFieldErrorEnum,\n InputFieldPlaceholderEnum,\n} from \"./types\";\nimport { formatPhoneNumber, unformatPhoneNumber } from \"../../utils/input\";\n\nexport const renderInputField = (\n accessType: any,\n inputField: InputFieldEnum,\n setState: (key: AccessTypeEnum, value: any) => void,\n minimized: boolean,\n mlsOuids: { [id: string]: string },\n index: number,\n) => {\n switch (inputField) {\n case InputFieldEnum.brand:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, brand: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showBrandError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n size={minimized ? 2 : 1}\n >\n \n {Object.values(AppLockboxBrandEnum).map((appLockboxBrand) => (\n \n ))}\n \n {accessType.showBrandError && (\n
\n {InputFieldErrorEnum.brand}\n
\n )}\n
\n
\n );\n case InputFieldEnum.code:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, code: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showCodeError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n {accessType.showCodeError && (\n
\n {InputFieldErrorEnum.code}\n
\n )}\n
\n
\n );\n case InputFieldEnum.directions:\n return (\n
\n
\n \n \n {minimized ? (\n setState(accessType.type, { ...accessType, directions: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showDirectionsError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n ) : (\n setState(accessType.type, { ...accessType, directions: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showDirectionsError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />)\n }\n {accessType.showDirectionsError && (\n
\n {accessType.type === AccessTypeEnum.communityAccess && InputFieldErrorEnum.directionsCommunity}\n {accessType.type === AccessTypeEnum.doorCode && InputFieldErrorEnum.directionsDoor}\n {accessType.type === AccessTypeEnum.hiddenKey && InputFieldErrorEnum.directionsHiddenKey}\n {accessType.type === AccessTypeEnum.appEnabledLockbox && InputFieldErrorEnum.directionsLockbox}\n {accessType.type === AccessTypeEnum.combinationLockbox && InputFieldErrorEnum.directionsLockbox}\n
\n )}\n
\n
\n );\n case InputFieldEnum.fullName:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, fullName: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showFullNameError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n {accessType.showFullNameError && (\n
\n {InputFieldErrorEnum.fullName}\n
\n )}\n
\n
\n );\n case InputFieldEnum.mlsId:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, mlsId: e.target.value })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n
\n
\n );\n case InputFieldEnum.mlsOuid:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, mlsOuid: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showMlsOuidError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n size={minimized ? 2 : 1}\n >\n {Object.values(mlsOuids).sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())).map((mlsName) => (\n \n ))}\n \n {accessType.showMlsOuidError && (\n
\n {InputFieldErrorEnum.mlsOuid}\n
\n )}\n
\n
\n );\n case InputFieldEnum.phoneNumber:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, phoneNumber: unformatPhoneNumber(e.target.value) })}\n onFocus={() => setState(accessType.type, { ...accessType, showPhoneNumberError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n {accessType.showPhoneNumberError && (\n
\n {InputFieldErrorEnum.phoneNumber}\n
\n )}\n
\n
\n );\n case InputFieldEnum.extension:\n return (\n
\n
\n \n setState(accessType.type, { ...accessType, extension: e.target.value })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n
\n
\n );\n case InputFieldEnum.email:\n return (\n
\n
\n \n \n setState(accessType.type, { ...accessType, email: e.target.value })}\n onFocus={() => setState(accessType.type, { ...accessType, showEmailError: false })}\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); }}\n />\n {accessType.showEmailError && (\n
\n {InputFieldErrorEnum.email}\n
\n )}\n
\n
\n )\n default:\n return (\n <>\n );\n }\n};\n","import {\n AccessInfoFormState,\n Action,\n StateDispatchType,\n initialStateAppEnabledLockbox,\n initialStateCombinationLockbox,\n initialStateCommunityAccess,\n initialStateDoorCode,\n initialStateHiddenKey,\n initialStateMeetContactOnsite,\n initialStateShowingTime,\n} from './types';\n\nexport const createInitialState = () : AccessInfoFormState => ({\n combinationLockbox: initialStateCombinationLockbox,\n appEnabledLockbox: initialStateAppEnabledLockbox,\n meetContactOnsite: initialStateMeetContactOnsite,\n hiddenKey: initialStateHiddenKey,\n communityAccess: initialStateCommunityAccess,\n doorCode: initialStateDoorCode,\n showingTime: initialStateShowingTime,\n});\n\nexport const reducer = (state: AccessInfoFormState, action: StateDispatchType): AccessInfoFormState => {\n switch (action.type) {\n case Action.Set:\n return { ...state, [action.key as string]: action.value };\n case Action.SetMulti:\n return { ...state, ...action.value };\n case Action.Reset:\n return createInitialState();\n default:\n return state;\n }\n};\n","// STRING CONSTANTS\nexport enum AccessTypeTitleEnum {\n combinationLockbox = 'Combination lockbox',\n appLockbox = 'App-enabled lockbox',\n meetContactOnsite = 'Meet contact on-site',\n hiddenKey = 'Hidden key',\n communityAccess = 'Community access',\n doorCode = 'Door code',\n showingTime = 'ShowingTime',\n general = 'General access information (legacy)'\n}\n\nexport enum AccessTypeSubtitleEnum {\n appLockbox = 'Examples include: Supra, Rently, SentriLock',\n meetContactOnsite = 'The contact will be on-site at the time of the inspection and provide access. Inspectify will contact them via email and SMS with inspection updates.',\n communityAccess = 'Gate or building access, must be paired with another access type for the property',\n showingTime = 'Inspectify will book the Inspection through ShowingTime.',\n}\n\nexport enum InputFieldEnum {\n code = 'Code',\n directions = 'Directions',\n brand = 'Brand',\n fullName = 'Full name',\n phoneNumber = 'Phone number',\n extension = 'Ext.',\n mlsOuid = 'MLS OUID',\n mlsId = 'MLS ID',\n email = 'Email'\n}\n\nexport enum InputFieldErrorEnum {\n code = 'Add the lock code',\n directionsLockbox = 'Describe the lockbox location on the property',\n directionsHiddenKey = 'Specify where the key is hidden on the property',\n directionsCommunity = 'Describe how to access the community',\n directionsDoor = 'Describe which door the code accesses', \n brand = 'Choose the brand',\n fullName = 'Enter the contact\\'s full name',\n phoneNumber = 'Enter a valid phone number',\n mlsOuid = 'Enter a valid MLS name',\n email = 'Enter a valid contact email'\n}\n\nexport enum InputFieldPlaceholderEnum {\n code = '0000',\n directions = 'ex. Attached to the fence on the west side of the house.',\n brand = 'Select brand',\n fullName = 'John Doe',\n phoneNumber = '(000) 000-0000',\n extension = '000',\n mlsOuid = 'Select MLS Name',\n mlsId = 'ex. 000000',\n email = 'johndoe@example.com'\n}\n \nexport enum AppLockboxBrandEnum {\n supraEkey = 'Supra/Ekey',\n rently = 'Rently',\n sentriLock = 'SentriLock',\n other = 'Other',\n}\n\n// TYPES\nexport type InputField = {\n title: InputFieldEnum,\n placeholder: InputFieldPlaceholderEnum,\n}\n\nexport interface AccessInfoFormLoaderProps {\n mlsOuids: { [id: string]: string },\n accessInformations?: any[],\n requireOnSiteContactEmail: boolean,\n}\n\nexport interface AccessInfoFormProps {\n minimized: boolean,\n mlsOuids: { [id: string]: string },\n state: AccessInfoFormState,\n setState: (key: AccessTypeEnum, value: any) => void,\n handleShowErrorMessage: (accessType: AccessType) => void,\n handleSelectAccessType: (accessType: AccessType) => void,\n}\n\nexport type AccessInfoType = {\n type: AccessTypeEnum,\n title: AccessTypeTitleEnum,\n subtitle: AccessTypeSubtitleEnum | undefined,\n isSelected: boolean,\n inputFields: InputFieldEnum[],\n}\n\nexport interface CombinationLockboxType extends AccessInfoType {\n code: string | undefined,\n directions: string | undefined,\n showCodeError: boolean | undefined,\n showDirectionsError: boolean | undefined,\n}\n\nexport interface AppEnabledLockboxType extends AccessInfoType {\n brand: string | undefined,\n directions: string | undefined,\n showBrandError: boolean | undefined,\n showDirectionsError: boolean | undefined,\n}\n\nexport interface MeetContactOnsiteType extends AccessInfoType {\n fullName: string | undefined,\n phoneNumber: string | undefined,\n extension: string | undefined,\n email: string | undefined,\n showFullNameError: boolean | undefined,\n showPhoneNumberError: boolean | undefined,\n showEmailError: boolean | undefined\n}\n\nexport interface HiddenKeyType extends AccessInfoType {\n directions: string | undefined,\n showDirectionsError: boolean | undefined,\n}\n\nexport interface CommunityAccessType extends AccessInfoType {\n code: string | undefined,\n directions: string | undefined,\n showCodeError: boolean | undefined,\n showDirectionsError: boolean | undefined,\n}\n\nexport interface DoorCodeType extends AccessInfoType {\n code: string | undefined,\n directions: string | undefined,\n showCodeError: boolean | undefined,\n showDirectionsError: boolean | undefined,\n}\n\nexport interface ShowingTimeType extends AccessInfoType {\n mlsOuid: string | undefined,\n mlsId: string | undefined,\n showMlsOuidError: boolean | undefined,\n}\n\nexport type AccessType =\n | AccessInfoType\n | AppEnabledLockboxType\n | CombinationLockboxType\n | CommunityAccessType\n | DoorCodeType\n | HiddenKeyType\n | MeetContactOnsiteType\n | ShowingTimeType;\n\n// STATE\nexport enum Action {\n Set = 'SET',\n SetMulti = 'SET_MULTI',\n Reset = 'RESET',\n}\n\nexport enum AccessTypeEnum {\n combinationLockbox = 'combinationLockbox',\n appEnabledLockbox = 'appEnabledLockbox',\n meetContactOnsite = 'meetContactOnsite',\n hiddenKey = 'hiddenKey',\n communityAccess = 'communityAccess',\n doorCode = 'doorCode',\n showingTime = 'showingTime',\n general = 'general'\n}\n\nexport enum AccessInformationDBTypes {\n combinationLockbox = 'AccessInformation::CombinationLockbox',\n appEnabledLockbox = 'AccessInformation::AppEnabledLockbox',\n meetContactOnsite = 'AccessInformation::MeetContactOnSite',\n hiddenKey = 'AccessInformation::HiddenKey',\n communityAccess = 'AccessInformation::CommunityAccess',\n doorCode = 'AccessInformation::DoorCode',\n showingTime = 'AccessInformation::ShowingTime',\n general = 'AccessInformation'\n}\n\nexport type StateDispatchType = {\n type: Action,\n key?: AccessTypeEnum,\n value?: any,\n}\n\nexport type AccessInfoFormState = {\n combinationLockbox: CombinationLockboxType,\n appEnabledLockbox: AppEnabledLockboxType,\n meetContactOnsite: MeetContactOnsiteType,\n hiddenKey: HiddenKeyType,\n communityAccess: CommunityAccessType,\n doorCode: DoorCodeType,\n showingTime: ShowingTimeType,\n}\n\n// INITIAL STATES\nexport const initialStateAppEnabledLockbox: AppEnabledLockboxType = {\n type: AccessTypeEnum.appEnabledLockbox,\n title: AccessTypeTitleEnum.appLockbox,\n subtitle: AccessTypeSubtitleEnum.appLockbox,\n isSelected: false,\n inputFields: [InputFieldEnum.brand, InputFieldEnum.directions],\n brand: '',\n directions: '',\n showBrandError: false,\n showDirectionsError: false,\n}\n\nexport const initialStateCombinationLockbox: CombinationLockboxType = {\n type: AccessTypeEnum.combinationLockbox,\n title: AccessTypeTitleEnum.combinationLockbox,\n subtitle: undefined,\n isSelected: false,\n inputFields: [InputFieldEnum.code, InputFieldEnum.directions],\n code: '',\n directions: '',\n showCodeError: false,\n showDirectionsError: false,\n}\n\nexport const initialStateMeetContactOnsite: MeetContactOnsiteType = {\n type: AccessTypeEnum.meetContactOnsite,\n title: AccessTypeTitleEnum.meetContactOnsite,\n subtitle: AccessTypeSubtitleEnum.meetContactOnsite,\n isSelected: false,\n inputFields: [InputFieldEnum.fullName, InputFieldEnum.phoneNumber, InputFieldEnum.extension, InputFieldEnum.email],\n fullName: '',\n phoneNumber: '',\n extension: '',\n email: '',\n showFullNameError: false,\n showPhoneNumberError: false,\n showEmailError: false\n}\n\nexport const initialStateHiddenKey: HiddenKeyType = {\n type: AccessTypeEnum.hiddenKey,\n title: AccessTypeTitleEnum.hiddenKey,\n subtitle: undefined,\n isSelected: false,\n inputFields: [InputFieldEnum.directions],\n directions: '',\n showDirectionsError: false,\n}\n\nexport const initialStateCommunityAccess: CommunityAccessType = {\n type: AccessTypeEnum.communityAccess,\n title: AccessTypeTitleEnum.communityAccess,\n subtitle: AccessTypeSubtitleEnum.communityAccess,\n isSelected: false,\n inputFields: [InputFieldEnum.code, InputFieldEnum.directions],\n code: '',\n directions: '',\n showCodeError: false,\n showDirectionsError: false,\n}\n\nexport const initialStateDoorCode: DoorCodeType = {\n type: AccessTypeEnum.doorCode,\n title: AccessTypeTitleEnum.doorCode,\n subtitle: undefined,\n isSelected: false,\n inputFields: [InputFieldEnum.code, InputFieldEnum.directions],\n code: '',\n directions: '',\n showCodeError: false,\n showDirectionsError: false,\n}\n\nexport const initialStateShowingTime: ShowingTimeType = {\n type: AccessTypeEnum.showingTime,\n title: AccessTypeTitleEnum.showingTime,\n subtitle: AccessTypeSubtitleEnum.showingTime,\n isSelected: false,\n inputFields: [InputFieldEnum.mlsOuid, InputFieldEnum.mlsId],\n mlsOuid: '',\n mlsId: '',\n showMlsOuidError: false,\n}\n ","import { useEffect } from \"react\";\n\n// This is needed to avoid a race condition between the application.html.erb initialization\n// and the react components initialization.\n// https://getbootstrap.com/docs/4.0/components/tooltips/#example-enable-tooltips-everywhere\nconst useTooltips = () => {\n useEffect(() => {\n const $ = (window as any).jQuery;\n\n if (!$) return;\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n }, []);\n}\n\nexport default useTooltips;","import React, {ChangeEvent, MouseEventHandler, useEffect, useState} from \"react\";\nimport { usePlacesWidget } from 'react-google-autocomplete';\nimport './styles.scss';\nimport PropManagementSVG from '../../../assets/images/prop management.svg';\nimport EmptyLandSVG from '../../../assets/images/land-vacant.svg';\nimport SingleFamilySVG from '../../../assets/images/single family.svg';\nimport MinusOutlined from '../../../assets/images/minus_outlined.svg';\nimport PlusOutlined from '../../../assets/images/plus_outlined.svg';\nimport useTooltips from \"../../hooks/useTooltips\";\n\ninterface PropertyDetail {\n id: number,\n address: string,\n street2: string\n}\n\ninterface OrderUnit {\n id: string | null,\n name: string,\n occupancyInfo: string | null,\n}\n\ninterface Props {\n showMultiUnit: boolean,\n collectOccupancyInfo: boolean,\n showLot: boolean,\n propertyDetail: PropertyDetail,\n orderUnits: OrderUnit[],\n apiKey?: string,\n}\n\ntype UnitType = 'single_unit' | 'multi_unit' | 'lot';\n\nconst AddressUnits: React.FC = ({showMultiUnit, collectOccupancyInfo, showLot, propertyDetail, orderUnits: initialOrderUnits, apiKey}) => {\n const [unitType, setUnitType] = useState(showMultiUnit && initialOrderUnits.length > 0 ? 'multi_unit' : (propertyDetail.id ? 'single_unit' : null));\n const [address, setAddress] = useState(propertyDetail.address || '')\n const [street2, setStreet2] = useState(propertyDetail.street2 || '')\n const [orderUnits, setOrderUnits] = useState(initialOrderUnits.length > 0 ? initialOrderUnits : [{ name: '', id: null, occupancyInfo: null}, { name: '', id: null, occupancyInfo: null}]);\n const [deletedOrderUnitIds, setDeletedOrderUnitIds] = useState([]);\n const [errors, setErrors] = useState({});\n\n useTooltips();\n\n useEffect(() => {\n const submitButton = document.getElementById('btn-submit-address') as HTMLButtonElement;\n\n if (unitType && Object.keys(errors).length === 0) {\n submitButton.disabled = false;\n } else {\n submitButton.disabled = true;\n }\n }, [unitType, errors])\n\n const { ref: mapRef } = usePlacesWidget({\n apiKey: apiKey,\n onPlaceSelected: (place: any) => {\n setAddress(place.formatted_address);\n },\n options: {\n types: ['geocode'],\n componentRestrictions: {country: ['us', 'ca']}\n },\n });\n\n const unitTypeOnChange = (newUnitType: UnitType) => {\n setUnitType(newUnitType);\n if (newUnitType == 'multi_unit') {\n updateOrderUnitName(street2, 0);\n } else {\n setStreet2(orderUnits[0].name)\n }\n }\n\n const updateOrderUnitName = (name, index) => {\n if (name && orderUnits.map(orderUnit => orderUnit.name).includes(name)) {\n setErrors({...errors, [index]: {unitName: true}});\n } else {\n let newErrors = {...errors};\n delete newErrors[index];\n setErrors(newErrors);\n }\n\n let newOrderUnits = [...orderUnits];\n newOrderUnits[index] = {...orderUnits[index], name};\n setOrderUnits(newOrderUnits);\n }\n\n const updateOrderUnitOccupancyInfo = (occupancyInfo, index) => {\n let newOrderUnits = [...orderUnits];\n newOrderUnits[index] = {...orderUnits[index], occupancyInfo};\n setOrderUnits(newOrderUnits);\n }\n\n const removeOrderUnit = (index) => {\n if (orderUnits[index].id) {\n setDeletedOrderUnitIds([...deletedOrderUnitIds, orderUnits[index].id]);\n }\n let newOrderUnits = [...orderUnits];\n newOrderUnits.splice(index, 1);\n setOrderUnits(newOrderUnits);\n }\n\n const addOrderUnit = () => {\n setOrderUnits([...orderUnits, {id: null, name: '', occupancyInfo: null}])\n }\n\n return (\n <>\n {(showMultiUnit || showLot) && (\n
\n {showMultiUnit && (\n \n )}\n
\n
\n {\n if (e.target.checked) {\n unitTypeOnChange('single_unit')\n }\n }}/>\n \n
\n Please select a property type.\n
\n
\n {showMultiUnit && (\n
\n {\n if (e.target.checked) {\n unitTypeOnChange('multi_unit')\n }\n }}/>\n \n
\n )}\n {showLot && (\n
\n {\n if (e.target.checked) {\n unitTypeOnChange('lot')\n }\n }}/>\n \n
\n )}\n
\n
\n )}\n { /* Conditionally rendering the address field causes problems with the places hook.*/ }\n {unitType !== 'lot' && (\n
\n \n setAddress(e.target.value)}/>\n
\n )}\n\n {unitType === 'single_unit' && (\n
\n \n setStreet2(e.target.value)}/>\n
\n )}\n\n {unitType === 'multi_unit' && (\n <>\n \n\n {orderUnits.map((orderUnit, index) => (\n
\n
\n
\n
\n \n\n {collectOccupancyInfo && (\n\n
\n updateOrderUnitOccupancyInfo(e.target.value, index)}\n id={`order_order_units_attributes_${index}_occupancy_info_occupied`}\n required={true} />\n \n\n updateOrderUnitOccupancyInfo(e.target.value, index)}\n id={`order_order_units_attributes_${index}_occupancy_info_vacant`}\n required={true} />\n \n
\n )}\n
\n
\n {\n updateOrderUnitName(e.target.value, index)\n }}\n name={`order[order_units_attributes][${index}][name]`}\n id={`order_order_units_attributes_${index}_name`} />\n \n
\n {(errors?.[index]?.unitName === true) && (\n
\n The unit has already been added. Please enter a different unit.\n
\n )}\n
\n
\n {collectOccupancyInfo && (\n
\n \n
\n Please select occupancy status options.\n
\n
\n )}\n {orderUnit.id && (\n \n )}\n
\n ))}\n\n
\n \n
\n \n )\n }\n\n {unitType === 'lot' && (\n <>\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n )}\n\n { /* Create destroy form entry for all Ids being deleted, and also for all orderUnits if there\n was orderUnits before and now the user switched back to Single Unit */}\n {[\n ...deletedOrderUnitIds,\n ...(unitType === 'single_unit' ? orderUnits.map((orderUnit) => orderUnit.id).filter(n => n) : [])\n ].map((deletedOrderUnitId, index) => (\n
\n \n \n
\n ))}\n \n )\n};\n\nexport default AddressUnits;\n","import AddressUnits from \"./AddressUnits\";\n\nexport default AddressUnits;\n","import * as React from \"react\";\nimport './styles.scss';\n\ninterface Props {\n title: string | null,\n body: string | null,\n url: string | null\n date: string\n}\n\nconst AlertCampaignPreview: React.FC = ({\n title, body, url, date\n}) => {\n return (\n
\n
\n {title && (\n
\n {title}\n
\n )}\n {body && (\n
\n {body}\n
\n )}\n {url && (\n \n )}\n
\n
\n {date}\n
\n
\n )\n}\n\nexport default AlertCampaignPreview;\n","import AlertCampaignPreview from \"./AlertCampaignPreview\";\n\nexport default AlertCampaignPreview;\n","import DatesSelectedPanel from './DatesSelectedPanel';\nimport DateNavigation from './DateNavigation';\nimport React, { Fragment, HtmlHTMLAttributes, useMemo } from 'react';\nimport { Calendar, SlotInfo, dateFnsLocalizer } from 'react-big-calendar';\nimport withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop';\nimport { startOfWeek, parse, getDay } from 'date-fns';\nimport { getTimezoneOffset, zonedTimeToUtc, format } from 'date-fns-tz';\nimport { enUS } from 'date-fns/locale';\nimport TrashSVG from '../../../assets/images/trash.svg';\nimport { CustomEvent } from './types';\nimport './styles.scss';\n\nconst CalendarWithDragAndDrop = withDragAndDrop(Calendar);\n\ninterface Props {\n /**\n * The list of timeslots when the property is available\n */\n selectedAvailabilities: CustomEvent[],\n /**\n * The date representing the date/week to display on the calendar\n */\n currentViewableDate: {\n date: Date,\n title: string,\n },\n /**\n * The minimum selectable time of day\n */\n min: Date,\n /**\n * The maximum selectable time of day\n */\n max: Date,\n /**\n * The date and time in the user's local timezine\n */\n localToday: Date,\n /**\n * Displays the calendar in mobile mode\n */\n isMobile: boolean,\n /**\n * The minimum inspection duration in minutes\n */\n minimumAvailabilityDuration: number,\n /**\n * ISO formatted date string for the last day inspections can be scheduled\n */\n inspectionSchedulingDeadline?: string,\n /**\n * The property timezone\n */\n timezone: string,\n /**\n * Prevents editing the availabilities\n */\n readOnly: boolean,\n /**\n * Smaller version of the calendar without the dates panel\n */\n minimized: boolean,\n /**\n * Display the layout vertically\n */\n vertical: boolean,\n /**\n * Only display the date panel\n */\n panelOnly?: boolean,\n /**\n * Handler function when a new availability is created\n * @param eventInfo Info about the new availability\n * @returns \n */\n handleSelectSlot: (eventInfo: SlotInfo) => void,\n handleEventUpdate: (args: {\n event: CustomEvent,\n start: Date,\n end: Date,\n isAllDay: boolean,\n }) => void,\n /**\n * Changes the selected date to display on the calendar\n * @param newDate The new week date to display\n * @returns \n */\n handleDateChange: (newDate: Date) => void,\n /**\n * Deletes the availability from the calendar\n * @param availability The availability to delete\n * @returns \n */\n handleDeleteAvailability: (availability: CustomEvent) => void,\n getProperties: (date: Date) => HtmlHTMLAttributes,\n getNow: () => Date,\n getEventProperties: (event: CustomEvent) => HtmlHTMLAttributes;\n}\n\n/**\n * Calendar that defines order availabilities\n */\nconst AvailabilityCalendar: React.FC = ({\n selectedAvailabilities,\n currentViewableDate,\n min,\n max,\n isMobile,\n minimumAvailabilityDuration,\n inspectionSchedulingDeadline,\n timezone,\n readOnly,\n minimized,\n vertical,\n panelOnly,\n localToday,\n handleSelectSlot,\n handleEventUpdate,\n handleDateChange,\n handleDeleteAvailability,\n getProperties,\n getEventProperties,\n getNow,\n}) => {\n\n const locales = {\n 'en-US': enUS,\n }\n\n let EventComponent = ({\n event\n }) => {\n const minimumTimeString = `${Math.floor(event.minimumAvailabilityDuration / 60)}h${event.minimumAvailabilityDuration % 60 > 0 ? event.minimumAvailabilityDuration % 60 + 'm' : ''}`;\n return (\n
\n {event.isSelected && (\n \n )}\n {event.requiresAnnotation && (\n
\n Time slot must be at least {minimumTimeString}\n
\n )}\n
\n )\n };\n\n const localizer = dateFnsLocalizer({\n format,\n startOfWeek,\n parse,\n getDay,\n locales,\n });\n\n const timezoneString = useMemo(() => {\n const offset = getTimezoneOffset(timezone, min) / 3600000;\n if (offset > 0) {\n return `GMT+${offset}`;\n } else {\n return `GMT${offset}`\n }\n }, [timezone, min]);\n\n const formValue = useMemo(() => JSON.stringify(\n selectedAvailabilities\n .map(availability => ({ start: zonedTimeToUtc(availability.start, timezone).getTime() / 1000, end: zonedTimeToUtc(availability.end, timezone).getTime() / 1000 }))\n .sort((a, b) => a.start - b.start)\n ), [selectedAvailabilities]);\n\n return (\n \n {!readOnly && (\n \n )}\n
\n {isMobile ?\n
\n \n {!minimized && (\n <>\n \n
{timezoneString}
\n
\n handleDateChange(newDate)}\n step={15}\n timeslots={4}\n longPressThreshold={80}\n onSelectEvent={(e) => selectedAvailabilities.forEach(av => {\n av.isSelected = e === av;\n })}\n components={\n { event: EventComponent }\n }\n eventPropGetter={getEventProperties}\n dayPropGetter={getProperties}\n slotPropGetter={getProperties}\n getNow={getNow}\n />\n
\n \n )}\n
\n :\n <>\n {!minimized && !panelOnly && (\n <>\n \n
{timezoneString}
\n \n )}\n
\n {!panelOnly && (\n
\n {!minimized && (\n readOnly ? (\n handleDateChange(newDate)}\n step={15}\n timeslots={4}\n components={\n { event: EventComponent }\n }\n eventPropGetter={getEventProperties}\n dayPropGetter={getProperties}\n slotPropGetter={getProperties}\n getNow={getNow}\n date={currentViewableDate.date}\n />\n ) : (\n handleDateChange(newDate)}\n step={15}\n timeslots={4}\n onEventDrop={handleEventUpdate}\n onSelectSlot={handleSelectSlot}\n onEventResize={handleEventUpdate}\n longPressThreshold={0}\n onSelectEvent={(e) => selectedAvailabilities.forEach(av => {\n av.isSelected = e === av;\n })}\n components={\n { event: EventComponent }\n }\n eventPropGetter={getEventProperties}\n dayPropGetter={getProperties}\n slotPropGetter={getProperties}\n getNow={getNow}\n date={currentViewableDate.date}\n />\n ))}\n
\n )}\n \n
\n \n }\n
\n
\n )\n}\n\nexport default AvailabilityCalendar;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { format, endOfDay, subDays, differenceInMinutes, addMinutes, subMinutes, addDays, roundToNearestMinutes, fromUnixTime, addYears, parseISO, startOfWeek } from 'date-fns';\nimport { utcToZonedTime } from 'date-fns-tz';\nimport { enUS } from 'date-fns/locale';\nimport { SlotInfo } from 'react-big-calendar';\nimport AvailabilityCalendar from './AvailabilityCalendar';\nimport { CustomEvent, DateFormat, ExistingAvailability } from './types';\nimport { getEarliestEligibleDate, isDateEligible } from '../../utils/time';\n\ninterface Props {\n /**\n * The minimum inspection duration in minutes\n */\n minimumAvailabilityDuration: number,\n /**\n * The lower hour boundary for availabilities\n */\n minHour: number,\n /**\n * The upper hour boundary for availabilities\n */\n maxHour: number,\n /**\n * The property timezone\n */\n timezone?: string,\n /**\n * Specific dates that cannot be selected by the user (e.g. holidays)\n */\n blockedDates: number[],\n /**\n * List of existing availabilities to load\n */\n existingAvailabilities?: ExistingAvailability[],\n /**\n * Prevents editing the availabilities\n */\n readOnly: boolean,\n /**\n * Smaller version without the dates panel\n */\n minimized: boolean,\n /**\n * ISO formatted date string for the last day inspections can be scheduled\n */\n inspectionSchedulingDeadline?: string,\n /**\n * Display the layout vertically\n */\n vertical?: boolean,\n /**\n * Only display the date panel\n */\n panelOnly?: boolean,\n}\n\nconst AvailabilityCalendarLoader: React.FC = ({\n minimumAvailabilityDuration: propsMinimumAvailabilityDuration,\n timezone,\n blockedDates,\n existingAvailabilities,\n readOnly,\n minimized,\n inspectionSchedulingDeadline: propsSchedulingDeadline,\n minHour,\n maxHour,\n vertical,\n panelOnly,\n}) => {\n try {\n Intl.DateTimeFormat(undefined, { timeZone: timezone });\n } catch {\n timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n }\n\n const [inspectionSchedulingDeadline, setInspectionSchedulingDeadline] = useState(propsSchedulingDeadline);\n const [minimumAvailabilityDuration, setMinimumAvailabilityDuration] = useState(propsMinimumAvailabilityDuration);\n const [selectedAvailabilities, setSelectedAvailabilities] = useState([]);\n const isMobile = window.innerWidth < 1000;\n const today = useMemo(() => new Date(), []);\n const localToday = useMemo(() => utcToZonedTime(today, timezone), [timezone]);\n\n const [currentViewableDate, setCurrentViewableDate] = useState(() => {\n const tomorrow = addDays(localToday, 1);\n return {\n date: tomorrow,\n title: isMobile ?\n format(tomorrow, DateFormat.DateMonthYear, { locale: enUS }) :\n format(tomorrow, DateFormat.MonthYear, { locale: enUS }),\n };\n });\n\n const localMin = useMemo(() =>\n new Date(\n localToday.getFullYear(),\n localToday.getMonth(),\n localToday.getDate(),\n minHour\n )\n , [localToday, minHour]);\n\n const localMax = useMemo(() =>\n new Date(\n localToday.getFullYear(),\n localToday.getMonth(),\n localToday.getDate(),\n maxHour\n )\n , [localToday, maxHour]);\n\n useEffect(() => {\n document.dispatchEvent(new Event('availability_calendar_loaded'));\n }, []);\n\n const handleDateChange = useCallback((newDate: Date) => {\n if (newDate >= localToday && newDate < addYears(localToday, 1)) {\n setCurrentViewableDate({\n date: newDate,\n title: isMobile ?\n format(newDate, DateFormat.DateMonthYear, { locale: enUS }) :\n format(newDate, DateFormat.MonthYear, { locale: enUS }),\n })\n }\n cleanUpSubheaders();\n\n }, [setCurrentViewableDate, localToday]);\n\n // Helper function to clear out the tooltip after 4 seconds\n useEffect(() => {\n const availabilityRequiringAnnotation: CustomEvent = selectedAvailabilities.find((av: CustomEvent) => av.requiresAnnotation);\n if (availabilityRequiringAnnotation) {\n setTimeout(() => {\n setSelectedAvailabilities((prev: CustomEvent[]) => {\n availabilityRequiringAnnotation.requiresAnnotation = false;\n return [...prev];\n });\n }, 4000);\n }\n }, [selectedAvailabilities]);\n\n useEffect(() => {\n if (existingAvailabilities) {\n setSelectedAvailabilities(existingAvailabilities.map(existingAvailability => ({\n start: utcToZonedTime(fromUnixTime(existingAvailability.start), timezone),\n end: utcToZonedTime(fromUnixTime(existingAvailability.end), timezone),\n schedulable: existingAvailability.schedulable\n })));\n }\n }, [existingAvailabilities])\n\n // This function helps merge availabilities in the context where a new event is placed perfectly between two existing availabilities, allowing to merge them\n const mergeOverlapingAvailabilities = (existingAvailability: CustomEvent) => (availability: CustomEvent) => {\n if (existingAvailability.start === availability.start && existingAvailability.end === availability.end) {\n return true;\n }\n if (availability.end.getTime() === existingAvailability.start.getTime()) {\n existingAvailability.start = availability.start;\n return false;\n } else if (availability.start.getTime() <= existingAvailability.end.getTime() && availability.start.getTime() >= existingAvailability.start.getTime()) {\n existingAvailability.end = availability.end;\n return false;\n }\n return true;\n }\n\n const getNewAvailabilities = useCallback((prev: CustomEvent[], eventInfo: SlotInfo, newAvailability: CustomEvent) => {\n // Handle selection of entire day\n if (!eventInfo.box && !eventInfo.bounds) {\n newAvailability.start.setHours(minHour, 0);\n newAvailability.end.setHours(maxHour, 0);\n newAvailability.end = subDays(newAvailability.end, 1);\n prev = prev.filter(event => endOfDay(event.start).getTime() !== endOfDay(newAvailability.start).getTime());\n return [...prev, newAvailability];\n }\n\n const newAvailabilityDuration = differenceInMinutes(newAvailability.end, newAvailability.start);\n let requiresAnnotation = false;\n\n // If the new timeslot is too short, adjust it so that it respects the mininum time duration\n if (newAvailabilityDuration < minimumAvailabilityDuration) {\n newAvailability.end = addMinutes(newAvailability.start, minimumAvailabilityDuration);\n requiresAnnotation = true;\n\n // This is an edge case but if the user selects 4:45PM, we don't want to overflow into 5:xxPM, so we re-ajust the time to fit within the bounds of localMin hour and localMax hour\n const timeslotOverflow = differenceInMinutes(newAvailability.end, new Date(newAvailability.end).setHours(maxHour, 0))\n if (timeslotOverflow > 0) {\n newAvailability.end = subMinutes(newAvailability.end, timeslotOverflow);\n newAvailability.start = subMinutes(newAvailability.start, timeslotOverflow);\n }\n }\n // For each existing availability, verify if they overlap with the new created event, and merge them if needed\n for (let i = 0; i < prev.length; i++) {\n const existingAvailability = prev[i];\n if (newAvailability.end >= existingAvailability.start && newAvailability.start <= existingAvailability.end && newAvailability.start >= existingAvailability.start) {\n existingAvailability.end = new Date(Math.max(existingAvailability.end.getTime(), newAvailability.end.getTime()));\n existingAvailability.start = new Date(Math.min(existingAvailability.start.getTime(), newAvailability.start.getTime()));\n prev = prev.filter(mergeOverlapingAvailabilities(existingAvailability));\n return [...prev];\n } else if (newAvailability.start <= existingAvailability.end && newAvailability.end >= existingAvailability.start && newAvailability.start <= existingAvailability.start) {\n existingAvailability.start = new Date(Math.min(existingAvailability.start.getTime(), newAvailability.start.getTime()));\n existingAvailability.end = new Date(Math.max(existingAvailability.end.getTime(), newAvailability.end.getTime()));\n prev = prev.filter(mergeOverlapingAvailabilities(existingAvailability));\n return [...prev];\n }\n }\n\n // Add tooltip for 5 seconds to indicate that the time slot must be a minimum duration\n if (requiresAnnotation) {\n prev.forEach((av: CustomEvent) => av.requiresAnnotation = false);\n newAvailability.requiresAnnotation = true;\n newAvailability.minimumAvailabilityDuration = minimumAvailabilityDuration;\n }\n return [...prev, newAvailability];\n }, [minimumAvailabilityDuration]);\n\n const handleNewEvent = useCallback(\n (eventInfo: SlotInfo) => {\n if (readOnly) {\n return;\n }\n let newAvailability: CustomEvent = {\n start: new Date(eventInfo.start),\n end: new Date(eventInfo.end),\n schedulable: true,\n };\n if (newAvailability.start < localToday\n || (newAvailability.start.getDate() === localToday.getDate()\n && newAvailability.start.getMonth() === localToday.getMonth()\n && newAvailability.start.getFullYear() === localToday.getFullYear()\n && addMinutes(newAvailability.start, minimumAvailabilityDuration).getTime() > localMax.getTime())\n || isBlockedDate(newAvailability.start)\n || newAvailability.start >= addDays(parseISO(inspectionSchedulingDeadline), 1)\n ) {\n return;\n }\n let prev = [...selectedAvailabilities];\n\n if (eventInfo.end.getDate() - eventInfo.start.getDate() > 1) {\n const newAvailabilities = [];\n for (let i = 0; i < eventInfo.end.getDate() - eventInfo.start.getDate(); i++) {\n const newFullDayAvailability = {\n start: new Date(newAvailability.start),\n end: new Date(newAvailability.end)\n };\n newFullDayAvailability.start.setHours(minHour, 0);\n newFullDayAvailability.start = addDays(newFullDayAvailability.start, i);\n newFullDayAvailability.end.setDate(newFullDayAvailability.start.getDate());\n newFullDayAvailability.end.setHours(maxHour, 0);\n prev = prev.filter(event => event.start.getDate() !== newFullDayAvailability.start.getDate());\n newAvailabilities.push(newFullDayAvailability);\n }\n\n setSelectedAvailabilities([...prev, ...newAvailabilities]);\n } else {\n setSelectedAvailabilities(getNewAvailabilities(prev, eventInfo, newAvailability));\n }\n },\n [selectedAvailabilities, setSelectedAvailabilities, localToday, localMax, inspectionSchedulingDeadline, minimumAvailabilityDuration]\n );\n\n // Helper function to update the selected availabilities\n const refreshAvailabilities = useCallback((newAvailability: CustomEvent, availabilitiesToFilter: CustomEvent[]) => {\n const filteredAvailabilities = selectedAvailabilities.filter((av) =>\n !availabilitiesToFilter.find(avToFilter =>\n avToFilter.end.getTime() === av.end.getTime() && avToFilter.start.getTime() === av.start.getTime()));\n\n setSelectedAvailabilities([...filteredAvailabilities, newAvailability]);\n }, [selectedAvailabilities]);\n\n const handleEventUpdate = useCallback(({\n start,\n end,\n event,\n isAllDay,\n }: {\n start: Date,\n end: Date,\n event: CustomEvent,\n isAllDay: boolean,\n }) => {\n if (readOnly) {\n return;\n }\n const oldAvailability = selectedAvailabilities.find((availability) =>\n availability.start.getTime() === event.start.getTime() && availability.end.getTime() === event.end.getTime());\n\n const newAvailability = {\n ...oldAvailability,\n start,\n end,\n }\n\n if (newAvailability.start < localToday\n || (newAvailability.start.getDate() === localToday.getDate()\n && newAvailability.start.getMonth() === localToday.getMonth()\n && newAvailability.start.getFullYear() === localToday.getFullYear()\n && addMinutes(newAvailability.start, minimumAvailabilityDuration).getTime() > localMax.getTime())\n || isBlockedDate(newAvailability.start)\n || newAvailability.start >= addDays(parseISO(inspectionSchedulingDeadline), 1)\n ) {\n return;\n }\n\n // Handle dragging zone outside of localMin to localMax range\n let maxTime = new Date(newAvailability.end)\n maxTime.setHours(maxHour, 0);\n\n let newDuration = differenceInMinutes(newAvailability.end, newAvailability.start);\n\n // The calendar can drag an event outside of the box so we need to make sure the time doesn't exceed the treshold\n if (maxTime < newAvailability.end) {\n newAvailability.end = maxTime;\n newDuration = differenceInMinutes(newAvailability.end, newAvailability.start);\n if (newDuration < minimumAvailabilityDuration) {\n newAvailability.start = subMinutes(newAvailability.end, minimumAvailabilityDuration);\n }\n }\n\n if (localToday > newAvailability.start) {\n newAvailability.start = roundToNearestMinutes(localToday, { nearestTo: 15, roundingMethod: 'ceil' });\n newDuration = differenceInMinutes(newAvailability.end, newAvailability.start);\n if (newDuration < minimumAvailabilityDuration) {\n newAvailability.end = addMinutes(start, minimumAvailabilityDuration);\n }\n }\n\n // When dragging a date into the day box, convert it into a localMin to localMax slot\n if (isAllDay && localToday.toDateString() !== newAvailability.start.toDateString()) {\n newAvailability.start.setHours(minHour, 0);\n newAvailability.end.setHours(maxHour, 0);\n }\n\n // Handle resizing an availability below the minimum treshold\n if (newDuration < minimumAvailabilityDuration) {\n if (oldAvailability.start.getTime() < newAvailability.start.getTime()) {\n newAvailability.start = subMinutes(oldAvailability.end, minimumAvailabilityDuration);\n } else {\n newAvailability.end = addMinutes(oldAvailability.start, minimumAvailabilityDuration);\n }\n selectedAvailabilities.forEach((av: CustomEvent) => av.requiresAnnotation = false);\n oldAvailability.requiresAnnotation = true;\n oldAvailability.minimumAvailabilityDuration = minimumAvailabilityDuration;\n }\n\n const availabilitiesToFilter = [oldAvailability];\n\n // Handle overlapping availabilities and merge them\n selectedAvailabilities.forEach((existingAvailability) => {\n if (existingAvailability === oldAvailability) {\n return;\n }\n\n if (existingAvailability.end.getTime() >= newAvailability.start.getTime()) {\n if (existingAvailability.start.getTime() < newAvailability.start.getTime()) {\n newAvailability.start = existingAvailability.start;\n availabilitiesToFilter.push(existingAvailability);\n } else if (existingAvailability.start.getTime() >= newAvailability.start.getTime() && existingAvailability.start.getTime() <= newAvailability.end.getTime()) {\n if (existingAvailability.end.getTime() > newAvailability.end.getTime()) {\n newAvailability.end = existingAvailability.end;\n }\n availabilitiesToFilter.push(existingAvailability);\n }\n }\n\n if (existingAvailability.start.getTime() <= newAvailability.end.getTime()) {\n if (existingAvailability.end.getTime() > newAvailability.end.getTime()) {\n newAvailability.end = existingAvailability.end;\n availabilitiesToFilter.push(existingAvailability);\n } else if (existingAvailability.end.getTime() <= newAvailability.end.getTime() && existingAvailability.end.getTime() >= newAvailability.start.getTime()) {\n if (existingAvailability.start.getTime() < newAvailability.start.getTime()) {\n newAvailability.start = existingAvailability.start;\n }\n availabilitiesToFilter.push(existingAvailability);\n }\n }\n });\n\n refreshAvailabilities(newAvailability, availabilitiesToFilter);\n }, [localToday, selectedAvailabilities, minimumAvailabilityDuration, maxHour, minHour, inspectionSchedulingDeadline])\n\n const handleDeleteAvailability = useCallback((availability: CustomEvent) => {\n if (readOnly) {\n return;\n }\n setSelectedAvailabilities((prev) => {\n prev = prev.filter(av => av !== availability);\n return prev;\n })\n }, [setSelectedAvailabilities]);\n\n const isBlockedDate = useCallback((date: Date) => !!blockedDates.find(blockedDate => {\n const blockedDateObj = new Date(blockedDate);\n return blockedDateObj.getDate() === date.getDate() && blockedDateObj.getMonth() === date.getMonth() && blockedDateObj.getFullYear() === date.getFullYear()\n }), [blockedDates]);\n\n const getProperties = useCallback((date) => {\n if (isBlockedDate(date) || date >= addDays(parseISO(inspectionSchedulingDeadline), 1)) {\n return { className: 'blocked' };\n } else {\n return {};\n }\n }, [isBlockedDate, inspectionSchedulingDeadline]);\n\n // Helper function to determine if the user has met requirements to progress past the calendar page\n const checkAvailabilityRequirementsMet = () => {\n const earliestEligibleDate = getEarliestEligibleDate(localToday, inspectionSchedulingDeadline);\n\n let count = 0;\n for (let i = 0; i < selectedAvailabilities.length; i++) {\n if (selectedAvailabilities[i].start > earliestEligibleDate) {\n const availabilityDuration = differenceInMinutes(selectedAvailabilities[i].end, selectedAvailabilities[i].start);\n count += Math.floor(availabilityDuration / minimumAvailabilityDuration);\n }\n if (count >= 2) return true;\n }\n return false;\n };\n\n const blockedDateIndices = useMemo(() => {\n let indices: number[] = [];\n if (isMobile) {\n if (isBlockedDate(currentViewableDate.date)) indices.push(0);\n } else {\n const sunday = startOfWeek(new Date(currentViewableDate.date));\n for (let i = 0; i < 7; i++) {\n const dayOfWeek: Date = addDays(sunday, i);\n if (isBlockedDate(dayOfWeek)) indices.push(i);\n }\n }\n return indices;\n }, [currentViewableDate]);\n\n useEffect(() => {\n let subheaderDivs = document.querySelectorAll('.rbc-day-bg');\n subheaderDivs.forEach((subheaderDiv, index) => {\n if (blockedDateIndices.includes(index)) {\n const actualDate = addDays(startOfWeek(currentViewableDate.date), index);\n if (actualDate.getDate() === 1 && actualDate.getMonth() === 7 && actualDate.getFullYear() === 2024) {\n subheaderDiv.textContent = \"Inspectify Team Training\";\n } else {\n subheaderDiv.textContent = \"Cannot book on a holiday\";\n }\n }\n });\n }, [blockedDateIndices]);\n\n const cleanUpSubheaders = () => {\n let subheaderDivs = document.querySelectorAll('.rbc-day-bg');\n subheaderDivs.forEach((subheaderDiv) => {\n subheaderDiv.textContent=\"\";\n });\n };\n\n const getEventProperties = (event: CustomEvent) => {\n if (!event.schedulable) {\n return { className: 'unschedulable' };\n } else if (isDateEligible(localToday, event.start, inspectionSchedulingDeadline)) {\n return { className: 'eligible' };\n } else {\n return { className: 'ineligible' };\n }\n }\n\n const availabilityRequirementsMet = useMemo(() => (\n checkAvailabilityRequirementsMet()\n ), [selectedAvailabilities, inspectionSchedulingDeadline]);\n\n useEffect(() => {\n if (availabilityRequirementsMet) {\n var event = new Event(\"availability_requirements_met\");\n document.dispatchEvent(event);\n } else {\n var event = new Event(\"availability_requirements_not_met\");\n document.dispatchEvent(event);\n }\n }, [availabilityRequirementsMet]);\n\n document.addEventListener('contingency_date_changed', (e: any) => {\n setInspectionSchedulingDeadline(e.detail);\n });\n\n document.addEventListener('order_availabilities_changed', (e: any) => {\n setSelectedAvailabilities(e.detail.map(existingAvailability => ({\n start: utcToZonedTime(fromUnixTime(existingAvailability.start), timezone),\n end: utcToZonedTime(fromUnixTime(existingAvailability.end), timezone),\n })));\n });\n\n document.addEventListener('minimum_availability_duration_changed', (e: any) => {\n setMinimumAvailabilityDuration(e.detail);\n });\n\n return (\n localToday}\n />\n );\n}\n\nexport default AvailabilityCalendarLoader;\n","import { addDays, addWeeks, subDays, subWeeks } from \"date-fns\";\nimport React from \"react\";\nimport IconButton from \"./IconButton\";\nimport ChevronLeft from '../../../assets/images/chevron-left.svg';\nimport ChevronRight from '../../../assets/images/chevron-right.svg';\n\ninterface Props {\n /**\n * The date representing the date/week to display on the calendar\n */\n currentViewableDate: {\n date: Date,\n title: string,\n },\n /**\n * Displays the calendar in mobile mode\n */\n isMobile: boolean,\n /**\n * Changes the selected date to display on the calendar\n * @param newDate The new week date to display\n * @returns \n */\n handleDateChange: (newDate: Date) => void,\n}\n\nconst DateNavigation: React.FC = ({\n currentViewableDate,\n isMobile,\n handleDateChange,\n}) => (\n
\n
\n {currentViewableDate.title}\n
\n handleDateChange(isMobile ? subDays(currentViewableDate.date, 1) : subWeeks(currentViewableDate.date, 1))}>\n \n \n handleDateChange(isMobile ? addDays(currentViewableDate.date, 1) : addWeeks(currentViewableDate.date, 1))}>\n \n \n
\n)\n\nexport default DateNavigation;","import * as React from \"react\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCopy } from \"@fortawesome/free-regular-svg-icons\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport { differenceInMinutes, format } from \"date-fns\";\nimport './styles.scss';\nimport { CustomEvent, DateFormat } from './types';\nimport TrashSVG from '../../../assets/images/trash.svg';\nimport { getDurationInHoursFromMinutes, getEarliestEligibleDate, isDateEligible } from \"../../utils/time\";\n\ninterface Props {\n /**\n * The list of timeslots when the property is available\n */\n selectedAvailabilities: CustomEvent[];\n /**\n * The minimum inspection duration in minutes\n */\n minimumAvailabilityDuration: number;\n /**\n * ISO formatted date string for the last day inspections can be scheduled\n */\n inspectionSchedulingDeadline?: string,\n /**\n * Displays the calendar in mobile mode\n */\n isMobile: boolean;\n /**\n * Prevents deleting and adds a click to copy button\n */\n readOnly: boolean;\n /**\n * The date and time in the user's local timezine\n */\n localToday: Date;\n /**\n * Deletes the availability from the calendar\n * @param availability The availability to delete\n * @returns \n */\n handleDeleteAvailability: (availability: CustomEvent) => void;\n}\n\nconst DatesSelectedPanel: React.FC = ({\n selectedAvailabilities,\n minimumAvailabilityDuration,\n isMobile,\n readOnly,\n localToday,\n inspectionSchedulingDeadline,\n handleDeleteAvailability\n}) => {\n const [textCopied, setTextCopied] = React.useState(false);\n const [textCopiedTimeout, setTextCopiedTimeout] = React.useState(null);\n const groupedDates = React.useMemo(() => {\n const sortedAvailabilities = selectedAvailabilities.sort((a, b) => a.start.getTime() - b.start.getTime());\n const weeks = {};\n\n sortedAvailabilities.forEach(availability => {\n const week = format(availability?.start, DateFormat.DayMonthDate);\n if (!weeks[week]) {\n weeks[week] = [availability];\n } else {\n weeks[week].push(availability);\n }\n });\n return weeks;\n }, [selectedAvailabilities]);\n\n const copyToClipboard = React.useCallback(() => {\n const formattedAvailabilities = selectedAvailabilities.map(availability =>\n `${format(availability.start, 'M/d')} between ${format(availability.start, 'h:mma')}-${format(availability.end, 'h:mma')}`\n ).join(', ');\n navigator.clipboard.writeText(formattedAvailabilities);\n setTextCopied(true);\n if (textCopiedTimeout) {\n clearTimeout(textCopiedTimeout)\n }\n setTextCopiedTimeout(setTimeout(() => setTextCopied(false), 3000));\n }, [selectedAvailabilities, textCopiedTimeout, setTextCopiedTimeout]);\n\n const requiredAvailabilityInHours = (): string => {\n const requiredAvailabilityInMin = minimumAvailabilityDuration * 2;\n return getDurationInHoursFromMinutes(requiredAvailabilityInMin);\n }\n\n const selectedAvailabilityInHours = (): string => {\n const earliestEligibleDate: Date = getEarliestEligibleDate(localToday, inspectionSchedulingDeadline);\n let selectedAvailabilitiesInMin = 0;\n for (let i = 0; i < selectedAvailabilities.length; i++) {\n if (selectedAvailabilities[i].start > earliestEligibleDate) {\n const availabilityDuration = differenceInMinutes(selectedAvailabilities[i].end, selectedAvailabilities[i].start);\n selectedAvailabilitiesInMin += availabilityDuration;\n }\n }\n return getDurationInHoursFromMinutes(selectedAvailabilitiesInMin);\n }\n\n return (\n
\n
\n
{readOnly ? 'DATES REQUESTED' : 'DATES SELECTED'}
\n {readOnly && selectedAvailabilities.length > 0 && (\n
\n {\n textCopied ? (\n
\n
\n Copied\n
\n ) : (\n \n )\n }\n
\n )}\n
\n\n {selectedAvailabilities.length === 0 && (\n
No dates selected
\n )}\n
{`${selectedAvailabilityInHours()} of ${requiredAvailabilityInHours()} selected`}
\n {\n Object.keys(groupedDates).map((week, index) => {\n const dateIsEligible = isDateEligible(localToday, groupedDates[week][0].start, inspectionSchedulingDeadline);\n return (\n
\n
{week}
\n {groupedDates[week].map(selectedAvailability => (\n \n {format(selectedAvailability?.start, 'h:mm a') + ' - ' + format(selectedAvailability?.end, 'h:mm a')}\n \n
\n ))}\n {(!dateIsEligible && groupedDates[week][0].schedulable) && (\n
\n While feasible, we cannot guarantee an inspection on this date.\n
\n )}\n
\n )\n })}\n \n );\n}\n\nexport default DatesSelectedPanel;\n","import React from 'react';\n\ninterface CustomToggleProps {\n children: React.ReactNode;\n onClick: (event: React.MouseEvent) => void;\n}\n\nconst IconButton = React.forwardRef(\n (props: CustomToggleProps, ref: React.Ref) => (\n {\n props.onClick(e);\n }}\n >\n {props.children}\n \n ),\n);\n\nexport default IconButton;","import AvailabilityCalendarLoader from \"./AvailabilityCalendarLoader\"\n\nexport default AvailabilityCalendarLoader;\n","export enum DateFormat {\n DateDay = 'dd eee',\n DateMonthYear = 'dd MMMM yyyy',\n DayMonthDate = 'EEEE, MMM d',\n MonthYear = 'MMMM yyyy',\n Time = 'hh:mm a',\n}\n\nimport { Event } from \"react-big-calendar\";\n\nexport interface CustomEvent extends Event {\n requiresAnnotation?: boolean;\n minimumAvailabilityDuration?: number;\n isSelected?: boolean;\n schedulable: boolean;\n}\n\nexport type ExistingAvailability = {\n start: number,\n end: number,\n schedulable: boolean\n};\n","import React, {useMemo, useState} from \"react\";\nimport './styles.scss';\nimport {APIProvider, Map, Marker} from \"@vis.gl/react-google-maps\";\nimport OrderMarker from \"./OrderMarker\";\nimport {Order} from \"./types\";\n\ninterface Props {\n googleMapApiKey: string,\n mapId: string,\n orders: Order[],\n}\n\nconst BundleBuilderMap: React.FC = ({googleMapApiKey, mapId, orders}) => {\n const [bundleOrderIds, setBundleOrderIds] = useState>(new Set());\n const [submittedOrderIds, setSubmittedOrderIds] = useState>(new Set());\n const [selectedOrderId, setSelectedOrderId] = useState(null);\n\n const { centerLatitude, centerLongitude } = useMemo(() => {\n const centerLatitude = orders.reduce((acc, order) => acc + parseFloat(order.latitude), 0) / orders.length;\n const centerLongitude = orders.reduce((acc, order) => acc + parseFloat(order.longitude), 0) / orders.length;\n return { centerLatitude, centerLongitude };\n }, [orders]);\n\n const addOrderToBundle = (order: Order) => {\n const newSet = new Set(bundleOrderIds);\n newSet.add(order.id);\n setBundleOrderIds(newSet);\n setSelectedOrderId(null)\n }\n\n const removeOrderFromBundle = (order: Order) => {\n const newSet = new Set(bundleOrderIds);\n newSet.delete(order.id);\n setBundleOrderIds(newSet);\n setSelectedOrderId(null);\n }\n\n const handleSubmit = (e: any) => {\n setSubmittedOrderIds(new Set([...submittedOrderIds, ...bundleOrderIds]));\n setBundleOrderIds(new Set());\n e.target.form.submit();\n }\n\n return (\n \n setSelectedOrderId(null)}\n >\n {orders.map(order => (\n setSelectedOrderId(order.id)}\n onClose={() => setSelectedOrderId(null)}\n order={order}\n isOnBundle={bundleOrderIds.has(order.id)}\n isAlreadySubmitted={submittedOrderIds.has(order.id)}\n addOrderToBundle={addOrderToBundle}\n removeOrderFromBundle={removeOrderFromBundle}/>\n ))}\n \n \n \n \n )\n};\n\nexport default BundleBuilderMap;\n","import React, {useMemo, useState} from \"react\";\nimport './styles.scss';\nimport {AdvancedMarker, InfoWindow, Pin, useAdvancedMarkerRef} from \"@vis.gl/react-google-maps\";\nimport {Order} from \"./types\";\n\ninterface Props {\n order: Order,\n onClick: () => void,\n onClose: () => void,\n infoWindowShown: boolean,\n isOnBundle: boolean,\n isAlreadySubmitted: boolean,\n addOrderToBundle: (order: Order) => void,\n removeOrderFromBundle: (order: Order) => void,\n}\n\nconst OrderMarker: React.FC = (\n {order, onClick, onClose, infoWindowShown, isOnBundle, isAlreadySubmitted, addOrderToBundle, removeOrderFromBundle}\n) => {\n const [markerRef, marker] = useAdvancedMarkerRef();\n\n const pinColor = useMemo(() => {\n if (isOnBundle) {\n return 'purple';\n } else if (isAlreadySubmitted) {\n return '#FF5200';\n } else if (order.eligibilityErrors.length > 0) {\n return '#ffc107';\n } else {\n return 'green';\n }\n }, [isOnBundle, order.eligibilityErrors]);\n\n return (\n <>\n \n \n \n {infoWindowShown && (\n \n Order: {order.id}\n
{order.teamName} ({order.teamId})
\n
\n Inspections: {order.inspections.map((inspection) => inspection.inspectionType).join(', ')}\n
\n {order.contingencyDate &&\n
\n <>\n Contingency Date: {order.contingencyDate}\n \n
\n }\n {order.isGoAnytime ? (
Go Anytime
) : (\n <>\n {order.earliestAvailabilityDate ? (\n <>\n
\n <>\n Earliest Availability: {order.earliestAvailabilityDate}\n \n
\n
\n <>\n Latest Availability: {order.latestAvailabilityDate}\n \n
\n \n ) : (\n
No Upcoming Availabilities
\n )}\n \n )}\n {order.eligibilityErrors.length === 0 ? (\n <>\n {!isOnBundle && (\n
\n \n
\n )}\n \n ) : (\n
\n Eligibility Errors:\n
    \n {order.eligibilityErrors.map((error, index) => (\n
  • {error}
  • \n ))}\n
\n
\n )}\n {isAlreadySubmitted && (\n
\n Already Submitted\n
\n )}\n {isOnBundle && (\n
\n \n
\n )}\n
\n )}\n \n )\n};\n\nexport default OrderMarker;\n","import BundleBuilderMap from \"./BundleBuilderMap\";\n\nexport default BundleBuilderMap;\n","import * as React from \"react\";\nimport { Map, MapMouseEvent } from \"@vis.gl/react-google-maps\";\nimport './styles.scss';\nimport { Circle } from \"./circle\";\n\ninterface Props {\n latitude: string,\n longitude: string,\n serviceAreaRadiusMileage: string,\n mapId?: string,\n}\nconst DEFAULT_USA_COORDS = {\n lat: 39.8097343, lng: -98.5556199\n};\n\nconst METERS_TO_MILES = 1609.34;\n\nconst ContractorMarketMap: React.FC = ({ latitude, longitude, serviceAreaRadiusMileage: propsMileage, mapId }) => {\n const [latLng, setLatLng] = React.useState({ lat: Number.parseFloat(latitude), lng: Number.parseFloat(longitude) });\n const [serviceAreaRadiusMileage, setServiceAreaRadiusMileage] = React.useState(Number.parseInt(propsMileage) || 50);\n\n return (\n
\n
\n setLatLng(e.detail.latLng)}\n >\n {latLng.lat && latLng.lng && (\n \n )}\n \n\n
\n
\n
    \n
  1. \n \n \n
  2. \n
  3. \n \n \n
  4. \n
  5. \n \n \n {serviceAreaRadiusMileage}  \n setServiceAreaRadiusMileage(e.target.valueAsNumber)}\n value={serviceAreaRadiusMileage}\n type=\"range\"\n min={10}\n max={2000} />\n \n\n
  6. \n
\n\n
\n
\n );\n};\n\nexport default ContractorMarketMap;\n","/* eslint-disable complexity */\nimport {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef\n} from 'react';\n\nimport type {Ref} from 'react';\nimport {GoogleMapsContext, latLngEquals} from '@vis.gl/react-google-maps';\n\ntype CircleEventProps = {\n onClick?: (e: google.maps.MapMouseEvent) => void;\n onDrag?: (e: google.maps.MapMouseEvent) => void;\n onDragStart?: (e: google.maps.MapMouseEvent) => void;\n onDragEnd?: (e: google.maps.MapMouseEvent) => void;\n onMouseOver?: (e: google.maps.MapMouseEvent) => void;\n onMouseOut?: (e: google.maps.MapMouseEvent) => void;\n onRadiusChanged?: (r: ReturnType) => void;\n onCenterChanged?: (p: ReturnType) => void;\n};\n\nexport type CircleProps = google.maps.CircleOptions & CircleEventProps;\n\nexport type CircleRef = Ref;\n\nfunction useCircle(props: CircleProps) {\n const {\n onClick,\n onDrag,\n onDragStart,\n onDragEnd,\n onMouseOver,\n onMouseOut,\n onRadiusChanged,\n onCenterChanged,\n radius,\n center,\n ...circleOptions\n } = props;\n // This is here to avoid triggering the useEffect below when the callbacks change (which happen if the user didn't memoize them)\n const callbacks = useRef void>>({});\n Object.assign(callbacks.current, {\n onClick,\n onDrag,\n onDragStart,\n onDragEnd,\n onMouseOver,\n onMouseOut,\n onRadiusChanged,\n onCenterChanged\n });\n\n const circle = useRef(new google.maps.Circle()).current;\n // update circleOptions (note the dependencies aren't properly checked\n // here, we just assume that setOptions is smart enough to not waste a\n // lot of time updating values that didn't change)\n circle.setOptions(circleOptions);\n\n useEffect(() => {\n if (!center) return;\n if (!latLngEquals(center, circle.getCenter())) circle.setCenter(center);\n }, [center]);\n\n useEffect(() => {\n if (radius === undefined || radius === null) return;\n if (radius !== circle.getRadius()) circle.setRadius(radius);\n }, [radius]);\n\n const map = useContext(GoogleMapsContext)?.map;\n\n // create circle instance and add to the map once the map is available\n useEffect(() => {\n if (!map) {\n if (map === undefined)\n console.error(' has to be inside a Map component.');\n\n return;\n }\n\n circle.setMap(map);\n\n return () => {\n circle.setMap(null);\n };\n }, [map]);\n\n // attach and re-attach event-handlers when any of the properties change\n useEffect(() => {\n if (!circle) return;\n\n // Add event listeners\n const gme = google.maps.event;\n [\n ['click', 'onClick'],\n ['drag', 'onDrag'],\n ['dragstart', 'onDragStart'],\n ['dragend', 'onDragEnd'],\n ['mouseover', 'onMouseOver'],\n ['mouseout', 'onMouseOut']\n ].forEach(([eventName, eventCallback]) => {\n gme.addListener(circle, eventName, (e: google.maps.MapMouseEvent) => {\n const callback = callbacks.current[eventCallback];\n if (callback) callback(e);\n });\n });\n gme.addListener(circle, 'radius_changed', () => {\n const newRadius = circle.getRadius();\n callbacks.current.onRadiusChanged?.(newRadius);\n });\n gme.addListener(circle, 'center_changed', () => {\n const newCenter = circle.getCenter();\n callbacks.current.onCenterChanged?.(newCenter);\n });\n\n return () => {\n gme.clearInstanceListeners(circle);\n };\n }, [circle]);\n\n return circle;\n}\n\n/**\n * Component to render a circle on a map\n */\nexport const Circle = forwardRef((props: CircleProps, ref: CircleRef) => {\n const circle = useCircle(props);\n\n useImperativeHandle(ref, () => circle);\n\n return null;\n});\n","import ContractorMarketMap from \"./ContractorMarketMap\";\nimport * as React from \"react\";\nimport {APIProvider} from \"@vis.gl/react-google-maps\";\n\nexport default ({ latitude, longitude, serviceAreaRadiusMileage, apiKey, mapId }) => (\n \n \n \n);\n","import React, {useMemo, useState} from \"react\";\nimport './styles.scss';\nimport colors from './colors.json';\nimport {AdvancedMarker, InfoWindow, Pin, useAdvancedMarkerRef} from \"@vis.gl/react-google-maps\";\n\ninterface Props {\n address: string,\n lat: number,\n lng: number,\n inspectionID: string,\n inspectionType: string,\n bundleKey?: number,\n}\n\nconst InspectionPin: React.FC = ({\n address,\n lat,\n lng,\n inspectionID,\n inspectionType,\n bundleKey,\n}) => {\n const [markerRef, marker] = useAdvancedMarkerRef();\n const [showBubble, setShowBubble] = useState(false);\n const fillColor = useMemo(() => colors[(bundleKey || 0) % colors.length], [bundleKey]);\n return (\n setShowBubble(!showBubble)} className=\"inspectionPin\">\n \n {showBubble &&\n setShowBubble(false)}>\n {address}\n
Inspection ID: {inspectionID}
\n
Type: {inspectionType}
\n {bundleKey && (\n
Bundle #{bundleKey}
\n )}\n
\n }\n \n )\n};\n\nexport default InspectionPin;\n","import * as React from \"react\";\nimport InspectionPin from './InspectionPin';\nimport './styles.scss';\nimport {APIProvider, Map, useMap} from \"@vis.gl/react-google-maps\";\nimport {useEffect} from \"react\";\n\ninterface InspectionMapDetail {\n latitude: number,\n longitude: number,\n address: string,\n inspectionType: string,\n id: string,\n bundleKey?: number,\n}\n\ninterface Props {\n inspections?: InspectionMapDetail[],\n mapId?: string,\n}\n\nconst DEFAULT_USA_COORDS = {\n lat: 39.8097343, lng: -98.5556199\n};\n\nconst InspectionsMap: React.FC = ({inspections, mapId}) => {\n const map = useMap('inspections-map');\n\n useEffect(() => {\n if (map) {\n if (new Set(inspections.map((inspection) => inspection.address)).size > 1) {\n // Use inspection coordinates to fit map to bounds\n let bounds = new google.maps.LatLngBounds();\n inspections.forEach(inspection => {\n bounds.extend(new google.maps.LatLng(inspection.latitude, inspection.longitude));\n\n })\n map.fitBounds(bounds);\n } else {\n map.setCenter({lat: inspections[0].latitude, lng: inspections[0].longitude})\n map.setZoom(8);\n }\n }\n }, [map]);\n\n return (\n
\n \n {inspections.map((inspection, index) => (\n \n ))}\n \n
\n );\n};\n\nexport default InspectionsMap;\n","import InspectionsMap from \"./InspectionsMap\";\nimport * as React from \"react\";\nimport {APIProvider} from \"@vis.gl/react-google-maps\";\n\nexport default ({ inspections, apiKey, mapId }) => (\n \n \n \n);\n","import React, {useCallback, useEffect, useMemo, useState} from \"react\";\nimport Dropzone from 'react-dropzone';\nimport { faUpload } from \"@fortawesome/free-solid-svg-icons\";\n\nimport './styles.scss';\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\n\nconst MultiFilesInput: React.FC = () => {\n const hiddenFileInput = React.useRef(null);\n const [files, setFiles] = useState([]);\n const [form, setForm] = useState(null);\n\n const handleClick = (e: any) => {\n e.preventDefault();\n hiddenFileInput.current.click();\n };\n\n const handleChange = (newFiles: any) => {\n console.log(newFiles);\n setFiles([...files, ...newFiles]);\n };\n\n\n const renderFiles = () => (files as any[]).map((file: any) => {\n const filename = file.name;\n\n return (\n
{filename}
\n );\n });\n\n const submitForm = useCallback((e: SubmitEvent) => {\n if (!form) return null;\n\n e.preventDefault();\n\n const formData = new FormData(form);\n\n files.forEach((file) => {\n formData.append(`files[]`, file);\n });\n\n formData.append('test', 'test');\n\n console.log(formData);\n\n fetch(form.action, {\n method: form.method,\n body: formData,\n }).then((response) => {\n if (response.redirected) {\n window.location.href = response.url;\n } else {\n window.alert(\"There was an error submitting the files. Please try again or contact support.\");\n }\n });\n }, [form, files]);\n\n useEffect(() => {\n setForm(hiddenFileInput.current.form);\n }, [hiddenFileInput]);\n\n useEffect(() => {\n if (submitForm) {\n addEventListener('submit', submitForm);\n\n return () => {\n removeEventListener('submit', submitForm);\n }\n }\n }, [submitForm]);\n\n return (\n <>\n
\n {renderFiles()}\n <>\n handleChange(acceptedFiles)}>\n {({getRootProps, getInputProps, isDragActive}) => (\n
\n \n \n
\n )}\n
\n \n
\n \n );\n};\n\nexport default MultiFilesInput;\n","import MultiFilesInput from \"./MultiFilesInput\";\n\nexport default MultiFilesInput;\n","import { addDays, differenceInDays, getDay, isBefore, startOfDay } from \"date-fns\";\n\n// Helper function to get the earliest Date of an availability that \"counts\"\n// (i.e., is blue and allows the user to progress in the booking flow)\nexport const getEarliestEligibleDate = (localToday: Date, inspectionSchedulingDeadline?: string,) : Date => {\n let earliestEligibleDate: Date;\n const todayDate = startOfDay(localToday);\n if (inspectionSchedulingDeadline) {\n const schedulingDeadlineDate = new Date(inspectionSchedulingDeadline);\n if (differenceInDays(schedulingDeadlineDate, todayDate) < 3) {\n earliestEligibleDate = todayDate;\n } else {\n earliestEligibleDate = getDay(addDays(todayDate, 2)) === 0 ? addDays(todayDate, 3) : addDays(todayDate, 2);\n }\n } else {\n earliestEligibleDate = getDay(addDays(todayDate, 2)) === 0 ? addDays(todayDate, 3) : addDays(todayDate, 2);\n }\n return earliestEligibleDate;\n};\n\n// Helper function to determine if an availability counts towards total selected availability time\nexport const isDateEligible = (localToday: Date, availabilityStartTime: Date, inspectionSchedulingDeadline?: string, ) : boolean => {\n const earliestEligibleDate: Date = getEarliestEligibleDate(localToday, inspectionSchedulingDeadline);\n if (isBefore(availabilityStartTime, earliestEligibleDate)) return false;\n return true;\n};\n\n// Helper function to convert a number of minutes into the format X hours and Y minutes\nexport const getDurationInHoursFromMinutes = (durationInMinutes: number) : string => {\n const hours = Math.floor(durationInMinutes / 60);\n const min = durationInMinutes % 60;\n if (min === 0) {\n return `${hours} hr`;\n } else {\n return `${hours} hr ${min} min`;\n } \n};\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","_ref","minimized","mlsOuids","state","setState","handleShowErrorMessage","handleSelectAccessType","React","className","values","accessType","index","key","type","tabIndex","onClick","isSelected","value","AccessInformationDBTypes","name","concat","checked","readOnly","title","subtitle","onBlur","inputFields","inputField","renderInputField","accessInformations","isMobile","test","navigator","userAgent","screenWidth","window","screen","width","screenHeight","height","maxTouchPoints","bodyElement","document","getElementsByTagName","getComputedStyle","getPropertyValue","indexOf","isUserUsingMobile","initialStates","useMemo","length","createInitialState","accessInfoState","forEach","accessInformation","_accessInformation$co","_accessInformation$co2","appEnabledLockbox","AccessTypeEnum","_objectSpread","brand","lockbox_brand","directions","combinationLockbox","communityAccess","doorCode","hiddenKey","meetContactOnsite","fullName","contact_name","phoneNumber","contact_phone_number","slice","extension","includes","split","email","contact_email","showingTime","mlsOuid","mls_name","mlsId","mls_id","general","AccessTypeTitleEnum","InputFieldEnum","showFullDirectionsError","_useReducer2","_slicedToArray","useReducer","reducer","updateState","Action","Set","selectedAccessTypes","filter","enableNextButton","communityAccessIsComplete","completedAccessTypesCount","selectedAccessTypesCount","_accessType$brand","_accessType$direction","_accessType$code","_accessType$direction2","_accessType$code2","_accessType$direction3","_accessType$code3","_accessType$direction4","_accessType$direction5","_accessType$fullName","_accessType$phoneNumb","_accessType$mlsOuid","_accessType$direction6","some","useEffect","event","Event","dispatchEvent","AccessInfoForm","_accessType$direction7","_accessType$code4","_accessType$direction8","_accessType$code5","_accessType$direction9","_accessType$code6","_accessType$direction10","_accessType$code7","_accessType$direction11","_accessType$direction12","_accessType$fullName2","_accessType$phoneNumb2","_accessType$email","_accessType$direction13","newAccessTypeState","AppLockboxBrandEnum","showBrandError","showDirectionsError","trim","replace","showCodeError","showFullNameError","showPhoneNumberError","showEmailError","showMlsOuidError","AccessInfoFormLoader","unformatPhoneNumber","substring","formatPhoneNumber","digitsOnly","onChange","target","onFocus","preventDefault","stopPropagation","size","InputFieldPlaceholderEnum","appLockboxBrand","InputFieldErrorEnum","placeholder","maxLength","rows","directionsCommunity","directionsDoor","directionsHiddenKey","directionsLockbox","sort","a","b","toLowerCase","localeCompare","mlsName","initialStateCombinationLockbox","initialStateAppEnabledLockbox","initialStateMeetContactOnsite","initialStateHiddenKey","initialStateCommunityAccess","initialStateDoorCode","initialStateShowingTime","action","_defineProperty","SetMulti","Reset","AccessTypeSubtitleEnum","appLockbox","undefined","$","jQuery","tooltip","PropManagementSVG","props","d","fill","defaultProps","xmlns","EmptyLandSVG","stroke","strokeWidth","SingleFamilySVG","MinusOutlined","clipPath","PlusOutlined","showMultiUnit","collectOccupancyInfo","showLot","propertyDetail","initialOrderUnits","orderUnits","apiKey","_useState2","useState","unitType","setUnitType","_useState4","address","setAddress","_useState6","street2","setStreet2","_useState8","occupancyInfo","setOrderUnits","_useState10","deletedOrderUnitIds","setDeletedOrderUnitIds","_useState12","errors","setErrors","useTooltips","submitButton","getElementById","disabled","mapRef","usePlacesWidget","onPlaceSelected","place","formatted_address","options","types","componentRestrictions","country","ref","unitTypeOnChange","newUnitType","updateOrderUnitName","orderUnit","unitName","newErrors","newOrderUnits","_toConsumableArray","updateOrderUnitOccupancyInfo","required","htmlFor","_errors$index","toString","autoComplete","hidden","splice","removeOrderUnit","min","max","step","n","deletedOrderUnitId","AddressUnits","body","url","date","href","AlertCampaignPreview","TrashSVG","CalendarWithDragAndDrop","withDragAndDrop","Calendar","selectedAvailabilities","currentViewableDate","minimumAvailabilityDuration","inspectionSchedulingDeadline","timezone","vertical","panelOnly","localToday","handleSelectSlot","handleEventUpdate","handleDateChange","handleDeleteAvailability","getProperties","getEventProperties","getNow","locales","enUS","EventComponent","_ref2","minimumTimeString","Math","floor","requiresAnnotation","localizer","dateFnsLocalizer","format","startOfWeek","parse","getDay","timezoneString","offset","getTimezoneOffset","formValue","JSON","stringify","availability","start","zonedTimeToUtc","getTime","end","Fragment","DatesSelectedPanel","DateNavigation","events","onSelectSlot","selectable","dayLayoutAlgorithm","defaultView","views","toolbar","onNavigate","newDate","timeslots","longPressThreshold","onSelectEvent","av","components","eventPropGetter","dayPropGetter","slotPropGetter","resizable","onEventDrop","onEventResize","propsMinimumAvailabilityDuration","blockedDates","existingAvailabilities","propsSchedulingDeadline","minHour","maxHour","Intl","DateTimeFormat","timeZone","_unused","resolvedOptions","setInspectionSchedulingDeadline","setMinimumAvailabilityDuration","setSelectedAvailabilities","innerWidth","today","Date","utcToZonedTime","tomorrow","addDays","DateFormat","DateMonthYear","locale","MonthYear","setCurrentViewableDate","localMin","getFullYear","getMonth","getDate","localMax","useCallback","addYears","cleanUpSubheaders","availabilityRequiringAnnotation","find","setTimeout","prev","existingAvailability","fromUnixTime","schedulable","mergeOverlapingAvailabilities","getNewAvailabilities","eventInfo","newAvailability","box","bounds","setHours","subDays","endOfDay","differenceInMinutes","addMinutes","timeslotOverflow","subMinutes","i","handleNewEvent","isBlockedDate","parseISO","newAvailabilities","_loop","newFullDayAvailability","setDate","push","refreshAvailabilities","availabilitiesToFilter","filteredAvailabilities","avToFilter","isAllDay","oldAvailability","maxTime","newDuration","roundToNearestMinutes","nearestTo","roundingMethod","toDateString","blockedDate","blockedDateObj","blockedDateIndices","indices","sunday","dayOfWeek","querySelectorAll","subheaderDiv","actualDate","textContent","availabilityRequirementsMet","earliestEligibleDate","getEarliestEligibleDate","count","availabilityDuration","checkAvailabilityRequirementsMet","addEventListener","detail","AvailabilityCalendar","isDateEligible","ChevronLeft","ChevronRight","IconButton","subWeeks","addWeeks","requiredAvailabilityInMin","_React$useState2","textCopied","setTextCopied","_React$useState4","textCopiedTimeout","setTextCopiedTimeout","groupedDates","sortedAvailabilities","weeks","week","DayMonthDate","copyToClipboard","formattedAvailabilities","join","clipboard","writeText","clearTimeout","FontAwesomeIcon","icon","faCheck","faCopy","selectedAvailabilitiesInMin","getDurationInHoursFromMinutes","selectedAvailabilityInHours","dateIsEligible","selectedAvailability","style","background","border","cursor","children","AvailabilityCalendarLoader","googleMapApiKey","mapId","orders","bundleOrderIds","setBundleOrderIds","submittedOrderIds","setSubmittedOrderIds","selectedOrderId","setSelectedOrderId","_useMemo","centerLatitude","reduce","acc","order","parseFloat","latitude","centerLongitude","longitude","addOrderToBundle","newSet","add","removeOrderFromBundle","APIProvider","Map","defaultCenter","lat","lng","defaultZoom","gestureHandling","disableDefaultUI","OrderMarker","infoWindowShown","onClose","isOnBundle","has","isAlreadySubmitted","Array","from","form","submit","_useAdvancedMarkerRef2","useAdvancedMarkerRef","markerRef","marker","pinColor","eligibilityErrors","AdvancedMarker","position","Pin","borderColor","glyphColor","InfoWindow","anchor","onCloseClick","teamName","teamId","inspections","inspection","inspectionType","contingencyDate","isGoAnytime","earliestAvailabilityDate","latestAvailabilityDate","error","BundleBuilderMap","DEFAULT_USA_COORDS","propsMileage","serviceAreaRadiusMileage","Number","latLng","setLatLng","parseInt","setServiceAreaRadiusMileage","draggableCursor","Circle","center","radius","valueAsNumber","useCircle","_useContext","onDrag","onDragStart","onDragEnd","onMouseOver","onMouseOut","onRadiusChanged","onCenterChanged","circleOptions","_objectWithoutProperties","_excluded","callbacks","useRef","assign","current","circle","google","maps","setOptions","latLngEquals","getCenter","setCenter","getRadius","setRadius","useContext","GoogleMapsContext","setMap","console","gme","eventName","eventCallback","addListener","callback","_callbacks$current$on","_callbacks$current","newRadius","call","_callbacks$current$on2","_callbacks$current2","newCenter","clearInstanceListeners","forwardRef","useImperativeHandle","ContractorMarketMap","inspectionID","bundleKey","showBubble","setShowBubble","fillColor","colors","useMap","LatLngBounds","extend","LatLng","fitBounds","setZoom","InspectionPin","InspectionsMap","hiddenFileInput","files","setFiles","setForm","handleClick","click","submitForm","formData","FormData","file","append","log","fetch","method","then","response","redirected","location","alert","removeEventListener","filename","Dropzone","onDrop","acceptedFiles","newFiles","getRootProps","getInputProps","isDragActive","display","alignItems","justifyContent","backgroundColor","faUpload","marginRight","MultiFilesInput","todayDate","startOfDay","schedulingDeadlineDate","differenceInDays","availabilityStartTime","isBefore","durationInMinutes","hours"],"sourceRoot":""}